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+aWZEZXNjci5vX2J5dGVzKSkgPT0gMCkgewogICAgICAgICByZXR1cm4gKDEpOwogICAgIH0gCi0gICAgYnplcm8oKHZvaWQgKilpcHY2ZSwgc2l6ZW9mKCppcHY2ZSkpOworICAgIG1lbXNldChpcHY2ZSwgJ1wwJywgc2l6ZW9mKCppcHY2ZSkpOwogICAgIHJldHVybiAoMCk7CiB9CiAjZW5kaWYgLyogU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYwppbmRleCA2OTQwMGZjLi5jMjEyOTgxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jCkBAIC0zNyw4ICszNyw4IEBACiAjICAgaW5jbHVkZSAiaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgiCiAjZW5kaWYKIAotb2lkICAgICAgICAgICAgIGlmVGFibGVfb2lkW10gPSB7IElGVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaWZUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaWZUYWJsZV9vaWQpOworY29uc3Qgb2lkICAgICAgIGlmVGFibGVfb2lkW10gPSB7IElGVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaWZUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaWZUYWJsZV9vaWQpOwogCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbiBpZlRhYmxlX3VzZXJfY29udGV4dDsKIHN0YXRpYyBpZlRhYmxlX3JlZ2lzdHJhdGlvbiAqaWZUYWJsZV91c2VyX2NvbnRleHRfcDsKQEAgLTE0Nyw4ICsxNDcsNyBAQAogICAgICAqIHJlZ2lzdGVyIHNjYWxhciBmb3IgaWZOdW1iZXIKICAgICAgKi8KICAgICB7Ci0gICAgICAgIG9pZCAgICAgICAgICAgICByZWdfb2lkW10gPQotICAgICAgICAgICAgeyBJRlRBQkxFX05VTUJFUiB9OworICAgICAgICBjb25zdCBvaWQgICAgICAgcmVnX29pZFtdID0geyBJRlRBQkxFX05VTUJFUiB9OwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKIAogICAgICAgICBteXJlZyA9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKaW5kZXggNmE2ZjBlNS4uMmY5NjI5MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaApAQCAtMzYxLDggKzM2MSw4IEBACiAgICAgaWZUYWJsZV9yb3dyZXFfY3R4ICppZlRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpZlRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpZlRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpZlRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgaWZUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50IGlmVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlmVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggMDUxOTFlNy4uZjhhMjU0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjMsMTIgKzIzLDMwIEBACiAjICAgaW5jbHVkZSAibWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaCIKICNlbmRpZgogCit0eXBlZGVmIHN0cnVjdCBjZF9jb250YWluZXJfcyB7CisgICAgbmV0c25tcF9jb250YWluZXIgKmN1cnJlbnQ7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlbGV0ZWQ7Cit9IGNkX2NvbnRhaW5lcjsKKwogLyoKICAqIGZsYWcgc28gd2Uga25vdyBub3QgdG8gc2V0IHJvdy90YWJsZSBsYXN0IGNoYW5nZSB0aW1lcwogICogZHVyaW5nIHN0YXJ0dXAuCiAgKi8KIHN0YXRpYyBpbnQgICAgICBfZmlyc3RfbG9hZCA9IDE7CiAKKy8qCisgKiBWYWx1ZSBvZiBpbnRlcmZhY2VfZmFkZW91dCBjb25maWcgb3B0aW9uCisgKi8KK3N0YXRpYyBpbnQgZmFkZW91dCA9IElGVEFCTEVfUkVNT1ZFX01JU1NJTkdfQUZURVI7CisvKgorICogVmFsdWUgb2YgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIGNvbmZpZyBvcHRpb24KKyAqLworc3RhdGljIGludCByZXBsYWNlX29sZCA9IDA7CisKK3N0YXRpYyB2b2lkCitfZGVsZXRlX21pc3NpbmdfaW50ZXJmYWNlKGlmVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcik7CisKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAZGVmZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpAQCAtNTAsNiArNjgsMzIgQEAKICAqIE9JRDogLjEuMy42LjEuMi4xLjIuMiwgbGVuZ3RoOiA4CiAgKi8KIAorc3RhdGljIHZvaWQKK3BhcnNlX2ludGVyZmFjZV9mYWRlb3V0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQoreworICAgIGZhZGVvdXQgPSBhdG9pKGxpbmUpOworfQorc3RhdGljIHZvaWQKK3BhcnNlX2ludGVyZmFjZV9yZXBsYWNlX29sZChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKK3sKKyAgICBpZiAoc3RyY21wKGxpbmUsICJ5ZXMiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgInkiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgInRydWUiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgIjEiKSA9PSAwKSB7CisgICAgICAgIHJlcGxhY2Vfb2xkID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RyY21wKGxpbmUsICJubyIpID09IDAKKyAgICAgICAgICAgIHx8IHN0cmNtcChsaW5lLCAibiIpID09IDAKKyAgICAgICAgICAgIHx8IHN0cmNtcChsaW5lLCAiZmFsc2UiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgIjAiKSA9PSAwKSB7CisgICAgICAgIHJlcGxhY2Vfb2xkID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAiSW52YWxpZCB2YWx1ZSBvZiBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgcGFyYW1ldGVyOiAnJXMnXG4iLAorICAgICAgICAgICAgbGluZSk7Cit9CisKIC8qKgogICogaW5pdGlhbGl6YXRpb24gZm9yIGlmVGFibGUgZGF0YSBhY2Nlc3MKICAqCkBAIC03MCw2ICsxMTQsMTAgQEAKICAgICAvKgogICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaWZUYWJsZSBkYXRhLgogICAgICAqLworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJpbnRlcmZhY2VfZmFkZW91dCIsIHBhcnNlX2ludGVyZmFjZV9mYWRlb3V0LCBOVUxMLAorICAgICAgICAgICAgImludGVyZmFjZV9mYWRlb3V0IHNlY29uZHMiKTsKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIiwKKyAgICAgICAgICAgIHBhcnNlX2ludGVyZmFjZV9yZXBsYWNlX29sZCwgTlVMTCwgImludGVyZmFjZV9yZXBsYWNlX29sZCB5ZXN8bm8iKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWZUYWJsZV9pbml0X2RhdGEgKi8KQEAgLTE1MiwxNiArMjAwLDExNSBAQAogICAgICAgICAgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmVGFibGVfY29udGFpbmVyX2luaXQgKi8KIAordm9pZAorc2VuZF9saW5rVXBEb3duTm90aWZpY2F0aW9ucyhvaWQgKm5vdGlmaWNhdGlvbl9vaWQsIHNpemVfdCBub3RpZmljYXRpb25fb2lkX2xlbiwgaW50IGlmX2luZGV4LCBpbnQgaWZfYWRtaW5fc3RhdHVzLCBpbnQgaWZfb3Blcl9zdGF0dXMpCit7CisgICAgLyoKKyAgICAgKiBJbiB0aGUgbm90aWZpY2F0aW9uLCB3ZSBoYXZlIHRvIGFzc2lnbiBvdXIgbm90aWZpY2F0aW9uIE9JRCB0bworICAgICAqIHRoZSBzbm1wVHJhcE9JRC4wIG9iamVjdC4gSGVyZSBpcyBpdCdzIGRlZmluaXRpb24uIAorICAgICAqLworICAgIG9pZCAgICAgICAgICAgICBvYmppZF9zbm1wdHJhcFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwIH07CisgICAgc2l6ZV90ICAgICAgICAgIG9iamlkX3NubXB0cmFwX2xlbiA9IE9JRF9MRU5HVEgob2JqaWRfc25tcHRyYXApOworCisgICAgLyoKKyAgICAgKiBkZWZpbmUgdGhlIE9JRHMgZm9yIHRoZSB2YXJiaW5kcyB3ZSdyZSBnb2luZyB0byBpbmNsdWRlCisgICAgICogIHdpdGggdGhlIG5vdGlmaWNhdGlvbiAtCisgICAgICogSUYtTUlCOjppZkluZGV4LAorICAgICAqIElGLU1JQjo6aWZBZG1pblN0YXR1cywgYW5kCisgICAgICogSUYtTUlCOjppZk9wZXJTdGF0dXMKKyAgICAgKi8KKyAgICBvaWQgICAgICBpZl9pbmRleF9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAxLCAwIH07CisgICAgc2l6ZV90ICAgaWZfaW5kZXhfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaWZfaW5kZXhfb2lkKTsKKyAgICBvaWQgICAgICBpZl9hZG1pbl9zdGF0dXNfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgNywgMCB9OworICAgIHNpemVfdCAgIGlmX2FkbWluX3N0YXR1c19vaWRfbGVuID0gT0lEX0xFTkdUSChpZl9hZG1pbl9zdGF0dXNfb2lkKTsKKyAgICBvaWQgICAgICBpZl9vcGVyX3N0YXR1c19vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCA4LCAwIH07CisgICAgc2l6ZV90ICAgaWZfb3Blcl9zdGF0dXNfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaWZfb3Blcl9zdGF0dXNfb2lkKTsKKworICAgIC8qCisgICAgICogaGVyZSBpcyB3aGVyZSB3ZSBzdG9yZSB0aGUgdmFyaWFibGVzIHRvIGJlIHNlbnQgaW4gdGhlIHRyYXAgCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpub3RpZmljYXRpb25fdmFycyA9IE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgicnN5czpsaW5rVXBEb3duTm90aWZpY2F0aW9ucyIsICJkZWZpbmluZyB0aGUgdHJhcFxuIikpOworCisgICAgLyoKKyAgICAgKiB1cGRhdGUgdGhlIGluc3RhbmNlIGZvciBlYWNoIHZhcmlhYmxlIHRvIGJlIHNlbnQgaW4gdGhlIHRyYXAKKyAgICAgKi8KKyAgICBpZl9pbmRleF9vaWRbMTBdID0gaWZfaW5kZXg7CisgICAgaWZfYWRtaW5fc3RhdHVzX29pZFsxMF0gPSBpZl9pbmRleDsKKyAgICBpZl9vcGVyX3N0YXR1c19vaWRbMTBdID0gaWZfaW5kZXg7CisKKyAgICAvKgorICAgICAqIGFkZCBpbiB0aGUgdHJhcCBkZWZpbml0aW9uIG9iamVjdCAKKyAgICAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgc25tcFRyYXBPSUQuMCB2YXJpYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqaWRfc25tcHRyYXAsIG9iamlkX3NubXB0cmFwX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWx1ZSB0eXBlIGlzIGFuIE9JRCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWx1ZSBjb250ZW50cyBpcyBvdXIgbm90aWZpY2F0aW9uIE9JRCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBub3RpZmljYXRpb25fb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemUgaW4gYnl0ZXMgPSBvaWQgbGVuZ3RoICogc2l6ZW9mKG9pZCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgLyoKKyAgICAgKiBhZGQgaW4gdGhlIGFkZGl0aW9uYWwgb2JqZWN0cyBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIHRyYXAKKyAgICAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9pbmRleF9vaWQsIGlmX2luZGV4X29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZl9pbmRleCkpOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSB3YW50IHRvIGluc2VydCBhZGRpdGlvbmFsIG9iamVjdHMsIHdlIGRvIGl0IGhlcmUgCisgICAgICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmbm90aWZpY2F0aW9uX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfYWRtaW5fc3RhdHVzX29pZCwgaWZfYWRtaW5fc3RhdHVzX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX2FkbWluX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaWZfYWRtaW5fc3RhdHVzKSk7CisKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9vcGVyX3N0YXR1c19vaWQsIGlmX29wZXJfc3RhdHVzX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX29wZXJfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZl9vcGVyX3N0YXR1cykpOworCisgICAgLyoKKyAgICAgKiBzZW5kIHRoZSB0cmFwIG91dC4gIFRoaXMgd2lsbCBzZW5kIGl0IHRvIGFsbCByZWdpc3RlcmVkCisgICAgICogcmVjZWl2ZXJzIChzZWUgdGhlICJTRVRUSU5HIFVQIFRSQVAgQU5EL09SIElORk9STSBERVNUSU5BVElPTlMiCisgICAgICogc2VjdGlvbiBvZiB0aGUgc25tcGQuY29uZiBtYW51YWwgcGFnZS4gCisgICAgICovCisgICAgREVCVUdNU0dUTCgoInJzeXM6bGlua1VwRG93bk5vdGlmaWNhdGlvbnMiLCAic2VuZGluZyB0aGUgdHJhcFxuIikpOworICAgIHNlbmRfdjJ0cmFwKG5vdGlmaWNhdGlvbl92YXJzKTsKKworICAgIC8qCisgICAgICogZnJlZSB0aGUgY3JlYXRlZCBub3RpZmljYXRpb24gdmFyaWFibGUgbGlzdCAKKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgicnN5czpsaW5rVXBEb3duTm90aWZpY2F0aW9ucyIsICJjbGVhbmluZyB1cFxuIikpOworICAgIHNubXBfZnJlZV92YXJiaW5kKG5vdGlmaWNhdGlvbl92YXJzKTsKK30KKwogLyoqCiAgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCiAgKgogICovCiBzdGF0aWMgdm9pZAogX2NoZWNrX2ludGVyZmFjZV9lbnRyeV9mb3JfdXBkYXRlcyhpZlRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqaWZjb250YWluZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkX2NvbnRhaW5lciAqY2RjKQogewogICAgIGNoYXIgICAgICAgICAgICBvcGVyX2NoYW5nZWQgPSAwOwotICAgIHVfbG9uZyBsYXN0Y2hhbmdlID0gcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2U7CisgICAgaW50IGxhc3RjaGFuZ2VkID0gcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2U7CisgICAgbmV0c25tcF9jb250YWluZXIgKmlmY29udGFpbmVyID0gY2RjLT5jdXJyZW50OwogCiAgICAgLyoKICAgICAgKiBjaGVjayBmb3IgbWF0Y2hpbmcgZW50cnkuIFdlIGNhbiBkbyB0aGlzIGRpcmVjdGx5LCBzaW5jZQpAQCAtMTkzLDE2ICszNDAsMzIgQEAKICAgICAgICAgICogZGVsZXRlZCAoYW5kIHRodXMgbmVlZCB0byB1cGRhdGUgaWZUYWJsZUxhc3RDaGFuZ2VkKT8KICAgICAgICAgICovCiAgICAgICAgIGlmICghcm93cmVxX2N0eC0+a25vd25fbWlzc2luZykgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmtub3duX21pc3NpbmcgPSAxOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIG1pc3NpbmcgZW50cnkgJXNcbiIscm93cmVxX2N0eC0+ZGF0YS5pZk5hbWUpKTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZBZG1pblN0YXR1cyA9IElGQURNSU5TVEFUVVNfRE9XTjsKLSAgICAgICAgICAgIGlmICgoIShyb3dyZXFfY3R4LT5kYXRhLmlmZW50cnktPm5zX2ZsYWdzICYgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0xBU1RDSEFOR0UpKQotICAgICAgICAgICAgICAgICYmIChyb3dyZXFfY3R4LT5kYXRhLmlmT3BlclN0YXR1cyAhPSBJRk9QRVJTVEFUVVNfRE9XTikpCi0gICAgICAgICAgICAgICAgb3Blcl9jaGFuZ2VkID0gMTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID0gSUZPUEVSU1RBVFVTX0RPV047CisgICAgICAgICAgICBvcGVyX2NoYW5nZWQgPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nKSB7CisgICAgICAgICAgICB0aW1lX3Qgbm93ID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisgICAgICAgICAgICB1X2xvbmcgZGlmZiA9IChub3cgLSByb3dyZXFfY3R4LT5kYXRhLmlmTGFzdENoYW5nZSkgLyAxMDA7CisgICAgICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTppZlRhYmxlOmFjY2VzcyIsICJtaXNzaW5nIGVudHJ5IGZvciAlbGQgc2Vjb25kc1xuIiwgZGlmZikpOworICAgICAgICAgICAgaWYgKGRpZmYgPj0gZmFkZW91dCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpZlRhYmxlOmFjY2VzcyIsICJtYXJraW5nIG1pc3NpbmcgZW50cnkgJXMgZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVtb3ZhbCBhZnRlciAlZCBzZWNvbmRzXG4iLCByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRlb3V0KSk7CisgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY2RjLT5kZWxldGVkKQorICAgICAgICAgICAgICAgICAgIGNkYy0+ZGVsZXRlZCA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlmVGFibGVfZGVsZXRlZDpsaW5rZWRfbGlzdCIpOworICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNkYy0+ZGVsZXRlZCkKKyAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgY3JlYXRlIGNvbnRhaW5lciBmb3IgZGVsZXRlZCBpbnRlcmZhY2VcbiIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY2RjLT5kZWxldGVkLCByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLCAidXBkYXRpbmcgZXhpc3RpbmcgZW50cnlcbiIpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIGV4aXN0aW5nIGVudHJ5ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSkpOwogCiAjaWZkZWYgVVNJTkdfSUZfTUlCX0lGWFRBQkxFX0lGWFRBQkxFX01PRFVMRQogICAgICAgICB7CkBAIC0yNTMsMTAgKzQxNiw2MyBAQAogICAgIC8qCiAgICAgICogaWYgaWZPcGVyU3RhdHVzIGNoYW5nZWQsIHVwZGF0ZSBpZkxhc3RDaGFuZ2UKICAgICAgKi8KLSAgICBpZiAob3Blcl9jaGFuZ2VkKQorICAgIGlmIChvcGVyX2NoYW5nZWQpIHsKICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2UgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyNpZmRlZiBVU0lOR19JRl9NSUJfSUZYVEFCTEVfSUZYVEFCTEVfTU9EVUxFCisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5kYXRhLmlmTGlua1VwRG93blRyYXBFbmFibGUgPT0gMSkgeworICAgICAgICAgICAgaWYgKHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID09IElGT1BFUlNUQVRVU19VUCkgeworICAgICAgICAgICAgICAgIG9pZCBub3RpZmljYXRpb25fb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDUsIDQgfTsKKyAgICAgICAgICAgICAgICBzZW5kX2xpbmtVcERvd25Ob3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbl9vaWQsIE9JRF9MRU5HVEgobm90aWZpY2F0aW9uX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT50YmxfaWR4LmlmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmQWRtaW5TdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmT3BlclN0YXR1cyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID09IElGT1BFUlNUQVRVU19ET1dOKSB7CisgICAgICAgICAgICAgICAgb2lkIG5vdGlmaWNhdGlvbl9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNSwgMyB9OworICAgICAgICAgICAgICAgIHNlbmRfbGlua1VwRG93bk5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uX29pZCwgT0lEX0xFTkdUSChub3RpZmljYXRpb25fb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZBZG1pblN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCiAgICAgZWxzZQotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTGFzdENoYW5nZSA9IGxhc3RjaGFuZ2U7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZMYXN0Q2hhbmdlID0gbGFzdGNoYW5nZWQ7Cit9CisKKy8qKgorICogUmVtb3ZlIGFsbCBvbGQgaW50ZXJmYWNlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIG5ld2x5IGFkZGVkIG9uZS4KKyAqLworc3RhdGljIHZvaWQKK19jaGVja19hbmRfcmVwbGFjZV9vbGQobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmlmZW50cnksCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICppdDsKKyAgICBpZlRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4OworICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGU7CisKKyAgICB0b19kZWxldGUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpZlRhYmxlX2RlbGV0ZWQ6bGlua2VkX2xpc3QiKTsKKyAgICBpZiAoTlVMTCA9PSB0b19kZWxldGUpIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgY3JlYXRlIGNvbnRhaW5lciBmb3IgZGVsZXRlZCBpbnRlcmZhY2VcbiIpOworICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihjb250YWluZXIpOworICAgIGZvciAocm93cmVxX2N0eCA9IElURVJBVE9SX0ZJUlNUKGl0KTsgcm93cmVxX2N0eDsgcm93cmVxX2N0eCA9IElURVJBVE9SX05FWFQoaXQpKSB7CisgICAgICAgIGlmIChzdHJjbXAoaWZlbnRyeS0+bmFtZSwgcm93cmVxX2N0eC0+ZGF0YS5pZmVudHJ5LT5uYW1lKSA9PSAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAicmVtb3ZpbmcgaW50ZXJmYWNlICVsZCBkdWUgdG8gbmV3ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAobG9uZykgcm93cmVxX2N0eC0+ZGF0YS5pZmVudHJ5LT5pbmRleCwgaWZlbnRyeS0+bmFtZSkpOworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVCh0b19kZWxldGUsIHJvd3JlcV9jdHgpOworICAgICAgICB9CisgICAgfQorICAgIElURVJBVE9SX1JFTEVBU0UoaXQpOworCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKHRvX2RlbGV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9kZWxldGVfbWlzc2luZ19pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKIH0KIAogLyoqCkBAIC0yNzcsNiArNDkzLDkgQEAKICAgICByb3dyZXFfY3R4ID0gaWZUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlmZW50cnkpOwogICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgogICAgICAgICAoTUZEX1NVQ0NFU1MgPT0gaWZUYWJsZV9pbmRleGVzX3NldChyb3dyZXFfY3R4LCBpZmVudHJ5LT5pbmRleCkpKSB7CisgICAgICAgIGlmIChyZXBsYWNlX29sZCkKKyAgICAgICAgICAgICAgICBfY2hlY2tfYW5kX3JlcGxhY2Vfb2xkKGlmZW50cnksIGNvbnRhaW5lcik7CisKICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOwogICAgICAgICBpZiAoMCA9PSBfZmlyc3RfbG9hZCkgewogICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2UgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKQEAgLTMwOCw2ICs1MjcsMjEgQEAKIH0KIAogLyoqCisgKiBhZGQgbmV3IGVudHJ5CisgKi8KK3N0YXRpYyB2b2lkCitfZGVsZXRlX21pc3NpbmdfaW50ZXJmYWNlKGlmVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLCAicmVtb3ZpbmcgbWlzc2luZyBlbnRyeSAlc1xuIiwKKyAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSkpOworCisgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIHJvd3JlcV9jdHgpOworCisgICAgaWZUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9CisKKy8qKgogICogY29udGFpbmVyIHNodXRkb3duCiAgKgogICogQHBhcmFtIGNvbnRhaW5lcl9wdHIgQSBwb2ludGVyIHRvIHRoZSBjb250YWluZXIuCkBAIC0zNzEsNyArNjA1LDcgQEAKIGludAogaWZUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQogewotICAgIG5ldHNubXBfY29udGFpbmVyICppZmNvbnRhaW5lcjsKKyAgICBjZF9jb250YWluZXIgY2RjOwogCiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aWZUYWJsZTppZlRhYmxlX2NvbnRhaW5lcl9sb2FkIiwgImNhbGxlZFxuIikpOwogCkBAIC0zODQsMjMgKzYxOCwzNSBAQAogICAgIC8qCiAgICAgICogaWZUYWJsZSBnZXRzIGl0cyBkYXRhIGZyb20gdGhlIG5ldHNubXBfaW50ZXJmYWNlIEFQSS4KICAgICAgKi8KLSAgICBpZmNvbnRhaW5lciA9CisgICAgY2RjLmN1cnJlbnQgPQogICAgICAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfY29udGFpbmVyX2xvYWQoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0lOVEVSRkFDRV9JTklUX05PRkxBR1MpOwotICAgIGlmIChOVUxMID09IGlmY29udGFpbmVyKQorICAgIGlmIChOVUxMID09IGNkYy5jdXJyZW50KQogICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOyAgICAgICAgLyogbXNnIGFscmVhZHkgbG9nZ2VkICovCiAKKyAgICBjZGMuZGVsZXRlZCA9IE5VTEw7IC8qIGNyZWF0ZWQgYXMgbmVlZGVkICovCisKICAgICAvKgogICAgICAqIHdlIGp1c3QgZ290IGEgZnJlc2ggY29weSBvZiBpbnRlcmZhY2UgZGF0YS4gY29tcGFyZSBpdCB0bwogICAgICAqIHdoYXQgd2UndmUgYWxyZWFkeSBnb3QsIGFuZCBtYWtlIGFueSBhZGp1c3RlbWVudHMuLi4KICAgICAgKi8KICAgICBDT05UQUlORVJfRk9SX0VBQ0goY29udGFpbmVyLCAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikKLSAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrX2ludGVyZmFjZV9lbnRyeV9mb3JfdXBkYXRlcywgaWZjb250YWluZXIpOworICAgICAgICAgICAgICAgICAgICAgICBfY2hlY2tfaW50ZXJmYWNlX2VudHJ5X2Zvcl91cGRhdGVzLCAmY2RjKTsKKworICAgIC8qCisgICAgICogbm93IHJlbW92ZSBhbnkgbWlzc2luZyBpbnRlcmZhY2VzCisgICAgICovCisgICAgaWYgKE5VTEwgIT0gY2RjLmRlbGV0ZWQpIHsKKyAgICAgICBDT05UQUlORVJfRk9SX0VBQ0goY2RjLmRlbGV0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfZGVsZXRlX21pc3NpbmdfaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgICAgIENPTlRBSU5FUl9GUkVFKGNkYy5kZWxldGVkKTsKKyAgICB9CiAKICAgICAvKgogICAgICAqIG5vdyBhZGQgYW55IG5ldyBpbnRlcmZhY2VzCiAgICAgICovCi0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGlmY29udGFpbmVyLAorICAgIENPTlRBSU5FUl9GT1JfRUFDSChjZGMuY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9hZGRfbmV3X2ludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKIApAQCAtNDA4LDExICs2NTQsMTEgQEAKICAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggaWZlbnRyeSwgb3IgcmVsZWFzZWQgaXQsCiAgICAgICogc28gdGhlIGRhbCBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gY2xlYXIgdGhlIGNvbnRhaW5lci4KICAgICAgKi8KLSAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfY29udGFpbmVyX2ZyZWUoaWZjb250YWluZXIsCisgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2NvbnRhaW5lcl9mcmVlKGNkYy5jdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19JTlRFUkZBQ0VfRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aWZUYWJsZTppZlRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlbHUgcmVjb3Jkc1xuIiwgKHVuc2lnbmVkIGxvbmcpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOwogCiAgICAgaWYgKF9maXJzdF9sb2FkKQogICAgICAgICBfZmlyc3RfbG9hZCA9IDA7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmgKaW5kZXggOWFhYTQyZS4uMTRlMzVjZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaApAQCAtNDgsNiArNDgsOCBAQAogICAgICAqLwogI2RlZmluZSBJRlRBQkxFX0NBQ0hFX1RJTUVPVVQgICAxNQogCisjZGVmaW5lIElGVEFCTEVfUkVNT1ZFX01JU1NJTkdfQUZURVIgICAgICg1ICogNjApIC8qIHNlY29uZHMgKi8KKwogICAgIHZvaWQgICAgICAgICAgICBpZlRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipjb250YWluZXJfcHRyX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMjU3NDllMy4uZTM2MmZkYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jCkBAIC0zNzIsNyArMzcyLDcgQEAKICAgICAgKiByZWdpc3RlciBpZlRhYmxlTGFzdENoYW5nZWQKICAgICAgKi8KICAgICB7Ci0gICAgICAgIG9pZCAgICAgICAgICAgICBpZnRsY19vaWRbXSA9IHsgSUZUQUJMRV9MQVNUX0NIQU5HRSB9OworICAgICAgICBjb25zdCBvaWQgICAgICAgaWZ0bGNfb2lkW10gPSB7IElGVEFCTEVfTEFTVF9DSEFOR0UgfTsKICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaWZUYWJsZUxhc3RDaGFuZ2VkIiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZ0bGNfb2lkLCBPSURfTEVOR1RIKGlmdGxjX29pZCksCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCmluZGV4IDhiOWI3Y2UuLjFhMjQyNzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCkBAIC0zOCw5ICszOCw4IEBACiAgKi8KICN1bmRlZiBORVRTTk1QX0VOQUJMRV9QUk9NSVNDVU9VU01PREVfU0VUCiAKLW9pZCAgICAgICAgICAgICBpZlhUYWJsZV9vaWRbXSA9IHsgSUZYVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaWZYVGFibGVfb2lkX3NpemUgPSBPSURfTEVOR1RIKGlmWFRhYmxlX29pZCk7Ci1jb25zdCBjaGFyICAgICAqcm93X3Rva2VuID0gImlmWFRhYmxlIjsKK2NvbnN0IG9pZCAgICAgICBpZlhUYWJsZV9vaWRbXSA9IHsgSUZYVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaWZYVGFibGVfb2lkX3NpemUgPSBPSURfTEVOR1RIKGlmWFRhYmxlX29pZCk7CiAKIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbiBpZlhUYWJsZV91c2VyX2NvbnRleHQ7CiBzdGF0aWMgaWZYVGFibGVfcmVnaXN0cmF0aW9uICppZlhUYWJsZV91c2VyX2NvbnRleHRfcDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKaW5kZXggZTMyYWNjOC4uZjliMjVkNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKQEAgLTk0LDggKzk0LDggQEAKICAgICBpZlhUYWJsZV9yb3dyZXFfY3R4ICppZlhUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaWZYVGFibGVfbWliX2luZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaWZYVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGlmWFRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpZlhUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaWZYVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlmWFRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGQ5YjE4NDcuLjlmMDY0Y2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMKQEAgLTE3ODQsNyArMTc4NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LCB1X2ludCBjb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYpOwogCi1zdGF0aWMgY2hhciAgICAgcm93X3Rva2VuW10gPSAiaWZYVGFibGUiOworc3RhdGljIGNvbnN0IGNoYXIgcm93X3Rva2VuW10gPSAiaWZYVGFibGUiOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAqX2luaXRfcGVyc2lzdGVuY2Ugc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRhYmxlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaAppbmRleCBkYWM3MGNlLi5hMmI0ZWU0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgKQEAgLTIzLDcgKzIzLDcgQEAKIGNvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4KQogY29uZmlnX3JlcXVpcmUoaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwpCiAjZWxzZQotI2Vycm9yICJ0aGUgcm91dGUgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtLiIKK2NvbmZpZ19lcnJvcih0aGUgcm91dGUgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCiAKIC8qKiBuZWVkIGludGVyZmFjZSBmb3IgaWZJbmRleCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYwppbmRleCA5OWIzZGU0Li45NzRkZTU1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYwpAQCAtNDcsMTIgKzQ3LDExIEBACiAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsICJsb2FkXG4iKSk7CiAKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImFjY2Vzczpfcm91dGU6dGFibGVfY29udGFpbmVyIik7CiAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImFjY2Vzczpfcm91dGU6ZmlmbyIpOwotICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3Nfcm91dGVcbiIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19yb3V0ZVxuIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHJjID0gIG5ldHNubXBfYWNjZXNzX3JvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jCmluZGV4IGRlNDI5MjAuLmMyMGUwYWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYwpAQCAtNjksMTAgKzY5LDEwIEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0RTVAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0RTVAogIyAgIGRlZmluZSBydF9kc3QgcnRfbm9kZXMtPnJuX2tleQogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNICisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogIyAgIGRlZmluZSBydF9oYXNoIHJ0X3BhZDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYwppbmRleCA2YmY2YjA0Li5jNWQ3NjMzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMKQEAgLTIwMSw3ICsyMDEsNiBAQAogICAgIEZJTEUgICAgICAgICAgICppbjsKICAgICBjaGFyICAgICAgICAgICAgbGluZVsyNTZdOwogICAgIG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5ID0gTlVMTDsKLSAgICBzdGF0aWMgaW50ICAgICAgbG9nX29wZW5fZXJyID0gMTsKIAogICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAicm91dGVfY29udGFpbmVyX2FyY2hfbG9hZCBpcHY2XG4iKSk7CkBAIC0yMTIsMTggKzIxMSwxMCBAQAogICAgICAqIGZldGNoIHJvdXRlcyBmcm9tIHRoZSBwcm9jIGZpbGUtc3lzdGVtOgogICAgICAqLwogICAgIGlmICghKGluID0gZm9wZW4oIi9wcm9jL25ldC9pcHY2X3JvdXRlIiwgInIiKSkpIHsKLSAgICAgICAgaWYgKDEgPT0gbG9nX29wZW5fZXJyKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY2Fubm90IG9wZW4gL3Byb2MvbmV0L2lwdjZfcm91dGVcbiIpOwotICAgICAgICAgICAgbG9nX29wZW5fZXJyID0gMDsKLSAgICAgICAgfQorICAgICAgICBERUJVR01TR1RMKCgiOTphY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwgImNhbm5vdCBvcGVuIC9wcm9jL25ldC9pcHY2X3JvdXRlXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0gICAgLyoKLSAgICAgKiBpZiB3ZSB0dXJuZWQgb2ZmIGxvZ2dpbmcgb2Ygb3BlbiBlcnJvcnMsIHR1cm4gaXQgYmFjayBvbiBub3cgdGhhdAotICAgICAqIHdlIGhhdmUgYmVlbiBhYmxlIHRvIG9wZW4gdGhlIGZpbGUuCi0gICAgICovCi0gICAgaWYgKDAgPT0gbG9nX29wZW5fZXJyKQotICAgICAgICBsb2dfb3Blbl9lcnIgPSAxOworICAgIAogICAgIGZnZXRzKGxpbmUsc2l6ZW9mKGxpbmUpLGluKTsgLyogc2tpcCBoZWFkZXIgKi8KICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgIGNfbmFtZVtJRk5BTVNJWisxXTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwppbmRleCA0MWI1Yzk1Li5iNDYwODBhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJpbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkW10gPSB7IElORVRDSURSUk9VVEVUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRbXSA9IHsgSU5FVENJRFJST1VURVRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGluZXRDaWRyUm91dGVUYWJsZV9vaWQpOwogCiBpbmV0Q2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uIGluZXRDaWRyUm91dGVUYWJsZV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKaW5kZXggOGQ5MDQ4NS4uYjgxMzJlMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaApAQCAtMjE3LDggKzIxNyw4IEBACiAgICAgICAgICogaW5ldENpZHJSb3V0ZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoaW5ldENpZHJSb3V0ZVRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDk0NjJiZTcuLmJlZWJiMmMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogICAgICAgICBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9jb250YWluZXJfbG9hZChOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ST1VURV9MT0FEX05PRkxBR1MpOwogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldENpZHJSb3V0ZVRhYmxlOmluZXRDaWRyUm91dGVUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShyb3V0ZV9jb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShyb3V0ZV9jb250YWluZXIpKSk7CiAKICAgICBpZiAoTlVMTCA9PSByb3V0ZV9jb250YWluZXIpCiAgICAgICAgIHJldHVybiBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEU7ICAgICAgICAvKiBtc2cgYWxyZWFkeSBsb2dnZWQgKi8KQEAgLTI4Myw3ICsyODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1JPVVRFX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmluZXRDaWRyUm91dGVUYWJsZTppbmV0Q2lkclJvdXRlVGFibGVfY2FjaGVfbG9hZCIsCi0gICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIChpbnQpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGY0ODUzNjAuLmZmZWRiMDggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMTUzLDkgKzE1Myw3IEBACiAjZW5kaWYKIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAotICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyhpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwotCisgICAgICAgICAgICAgICAgX2luZXRDaWRyUm91dGVUYWJsZV9jaGVja19pbmRleGVzKGluZXRDaWRyUm91dGVUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CiAvKioKICAqIEBpbnRlcm5hbAogICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgaW5ldENpZHJSb3V0ZVRhYmxlIApAQCAtMjMwNSw3ICsyMzAzLDcgQEAKICAgICAvKgogICAgICAqIGNhY2hlIGluaXQKICAgICAgKi8KLSAgICBpZl9jdHgtPmNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoSU5FVENJRFJST1VURVRBQkxFX0NBQ0hFX1RJTUVPVVQsCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkX3NpemUpOwpAQCAtMjMxOCwyMCArMjMxNiwxNSBAQAogICAgIGlmX2N0eC0+Y2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOwogCiAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0KCZpZl9jdHgtPmNvbnRhaW5lciwgaWZfY3R4LT5jYWNoZSk7Ci0gICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKICAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQogICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiaW5ldENpZHJSb3V0ZVRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOwotICAgICAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAiaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8qIHNldCBhbGxvdyBkdXBsaWNhdGVzIHRoaXMgbWFrZXMgaW5zZXJ0IE8oMSkgKi8KLSAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChpZl9jdHgtPmNvbnRhaW5lciwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05UQUlORVJfS0VZX0FMTE9XX0RVUExJQ0FURVMpOwotCiAgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKICAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2luZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuYwppbmRleCA3NWZkZTg4Li5hZTdiNzFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwQ2lkclJvdXRlVGFibGVfb2lkW10gPSB7IElQQ0lEUlJPVVRFVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRbXSA9IHsgSVBDSURSUk9VVEVUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXBDaWRyUm91dGVUYWJsZV9vaWQpOwogCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiBpcENpZHJSb3V0ZVRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKaW5kZXggNDk2OTQ4MC4uMmNlMzBiZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKQEAgLTE5NCw4ICsxOTQsOCBAQAogICAgICAgICAqIGlwQ2lkclJvdXRlVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlwQ2lkclJvdXRlVGFibGVfbWliX2luZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBjMjdkMGFhLi5iYjI3Njc1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjcwLDcgKzI3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfUk9VVEVfRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aXBDaWRyUm91dGVUYWJsZTppcENpZHJSb3V0ZVRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGQwNTFjMjUuLjM3YzRhMDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTIyNTQsNyArMjI1NCw3IEBACiAgICAgLyoKICAgICAgKiBjYWNoZSBpbml0CiAgICAgICovCi0gICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKElQQ0lEUlJPVVRFVEFCTEVfQ0FDSEVfVElNRU9VVCwKKyAgICBpZl9jdHgtPmNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMzAsICAgIC8qIHRpbWVvdXQgaW4gc2Vjb25kcyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVfbG9hZCwgX2NhY2hlX2ZyZWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQ2lkclJvdXRlVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZF9zaXplKTsKQEAgLTIyNjcsMjAgKzIyNjcsMTUgQEAKICAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKIAogICAgIGlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKLSAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKQogICAgICAgICBpZl9jdHgtPmNvbnRhaW5lciA9CiAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpcENpZHJSb3V0ZVRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOwotICAgICAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAiaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLyogc2V0IGFsbG93IGR1cGxpY2F0ZXMgdGhpcyBtYWtlcyBpbnNlcnQgTygxKSAqLwotICAgIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0KGlmX2N0eC0+Y29udGFpbmVyLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRBSU5FUl9LRVlfQUxMT1dfRFVQTElDQVRFUyk7Ci0KICAgICBpZiAoTlVMTCAhPSBpZl9jdHgtPmNhY2hlKQogICAgICAgICBpZl9jdHgtPmNhY2hlLT5tYWdpYyA9ICh2b2lkICopIGlmX2N0eC0+Y29udGFpbmVyOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIuaAppbmRleCBiNDVjYmI0Li44Mzc1MmU1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIuaApAQCAtNiw0ICs2LDggQEAKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlKTsKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUpOwogY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwX3NjYWxhcnMpOworI2lmZGVmIGxpbnV4Citjb25maWdfcmVxdWlyZShpcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUpOworY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlKTsKKyNlbmRpZgogY29uZmlnX2FkZF9taWIoSVAtTUlCKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oCmluZGV4IDcwYTQ3M2MuLmU5YzM3MWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgKQEAgLTIzLDggKzIzLDcgQEAKICNlbHNlCiAvKgogICogY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZpbGUhCi0gKiByZXF1aXJlIGEgYm9ndXMgZmlsZSB0byBnZW5lcmF0ZSBhbiBlcnJvci4KICAqLwotY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2FycC11bmtub3duLWFyY2gpCitjb25maWdfZXJyb3IodGhlIGFycCBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMKaW5kZXggYzBjYzY4MC4uYzc5NGMzYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jCkBAIC0xNDMsMyArMTQzLDQxIEBACiB7CiAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoZW50cnkpOwogfQorCisvKioKKyAqIFVwZGF0ZSBnaXZlbiBlbnRyeSB3aXRoIG5ldyBkYXRhLiBDYWxjdWxhdGUgbmV3IGFycF9sYXN0X3VwZGF0ZWQsIGlmIGFueQorICogZmllbGQgaXMgY2hhbmdlZC4KKyAqLwordm9pZCBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfdXBkYXRlKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKKyAgICAgICAgbmV0c25tcF9hcnBfZW50cnkgKm5ld19kYXRhKQoreworICAgIGludCBtb2RpZmllZCA9IDA7CisKKyAgICBpZiAoZW50cnktPmFycF9pcGFkZHJlc3NfbGVuICE9IG5ld19kYXRhLT5hcnBfaXBhZGRyZXNzX2xlbgorICAgICAgICAgICAgfHwgbWVtY21wKGVudHJ5LT5hcnBfaXBhZGRyZXNzLCBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzcywgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKSAhPSAwICkgeworICAgICAgICBtb2RpZmllZCA9IDE7CisgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9IG5ld19kYXRhLT5hcnBfaXBhZGRyZXNzX2xlbjsKKyAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfaXBhZGRyZXNzLCBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzcywgc2l6ZW9mKGVudHJ5LT5hcnBfaXBhZGRyZXNzKSk7CisgICAgfQorICAgIGlmIChlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiAhPSBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzX2xlbiB8fAorICAgICAgICAgICAgbWVtY21wKGVudHJ5LT5hcnBfcGh5c2FkZHJlc3MsIG5ld19kYXRhLT5hcnBfcGh5c2FkZHJlc3MsIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuKSAhPSAwKSB7CisgICAgICAgICBtb2RpZmllZCA9IDE7CisgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IG5ld19kYXRhLT5hcnBfcGh5c2FkZHJlc3NfbGVuOworICAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfcGh5c2FkZHJlc3MsIG5ld19kYXRhLT5hcnBfcGh5c2FkZHJlc3MsIHNpemVvZihlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbikpOworICAgICB9CisgICAgaWYgKGVudHJ5LT5hcnBfc3RhdGUgIT0gbmV3X2RhdGEtPmFycF9zdGF0ZSkgeworICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IG5ld19kYXRhLT5hcnBfc3RhdGU7CisgICAgIH0KKyAgICBpZiAoZW50cnktPmFycF90eXBlICE9IG5ld19kYXRhLT5hcnBfdHlwZSkgeworICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgZW50cnktPmFycF90eXBlID0gbmV3X2RhdGEtPmFycF90eXBlOworICAgICB9CisgICAgaWYgKGVudHJ5LT5mbGFncyAhPSBuZXdfZGF0YS0+ZmxhZ3MpIHsKKyAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgIGVudHJ5LT5mbGFncyA9IG5ld19kYXRhLT5mbGFnczsKKyAgICAgfQorCisgICAgaWYgKG1vZGlmaWVkKQorICAgICAgICBlbnRyeS0+YXJwX2xhc3RfdXBkYXRlZCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jCmluZGV4IDc1ZDk0YzAuLjIwNjllZjEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMKQEAgLTEsNyArMSw1IEBACiAvKgogICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKLSAqCi0gKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgpAQCAtMTQsOSArMTIsMzIgQEAKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8bmV0L2lmX2FycC5oPgogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorI2lmZGVmIEhBVkVfTElOVVhfUlRORVRMSU5LX0gKKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyNkZWZpbmUgTklQNihhZGRyKSBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbMF0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbMV0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbMl0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbM10pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbNF0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbNV0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbNl0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbN10pCisjZGVmaW5lIE5JUDZfRk1UICIlMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHgiCisjZW5kaWYKKyNlbmRpZgogCiBpbnQgX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotCitzdGF0aWMgaW50IF9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICitpbnQgZ2V0X3RyYW5zbGF0aW9uX3RhYmxlX2luZm8gKGludCBzZCwgaW50ICpzdGF0dXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWZmLCBzaXplX3Qgc2l6ZSk7CitpbnQgZmlsbHVwX2VudHJ5X2luZm8obmV0c25tcF9hcnBfZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciAqbmxtcCk7CisjZW5kaWYKIC8qKgogICovCiBpbnQKQEAgLTI4LDExICs0OSwxMCBAQAogICAgIGlmKHJjIDwgMCkgewogICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9GUkVFX0tFRVBfQ09OVEFJTkVSOwogICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLCBmbGFncyk7Ci0gICAgICAgIHJldHVybiByYzsKICAgICB9CiAKLSNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KSAmJiAwIC8qIHh4LXJrczogYXJwIGZvciB2Nj8gKi8KLSAgICBpZHhfb2Zmc2V0ID0gcmM7CisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKyAgICBpZHhfb2Zmc2V0ID0gKHJjIDwgMCkgPyAwIDogcmM7CiAKICAgICByYyA9IF9sb2FkX3Y2KGNvbnRhaW5lciwgaWR4X29mZnNldCk7CiAgICAgaWYocmMgPCAwKSB7CkBAIC02Nyw3ICs4Nyw3IEBACiAKICNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC9hcnAiCiAgICAgaWYgKCEoaW4gPSBmb3BlbihQUk9DRklMRSwgInIiKSkpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKKyAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCJjb3VsZCBub3Qgb3BlbiAiIFBST0NGSUxFICJcbiIpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQogCkBAIC0xOTEsMyArMjExLDIzNSBAQAogCiAgICAgcmV0dXJuIGlkeF9vZmZzZXQ7CiB9CisKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorc3RhdGljIGludAorX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCit7CisgICAgY2hhciAgICAgICAgICAgICAgYnVmZmVyWzE2Mzg0XTsKKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisgICAgc3RydWN0IG5sbXNnaGRyICAgKm5sbXA7CisjZW5kaWYKKyAgICBpbnQgICAgICAgICAgICAgICBzZCA9IDA7CisgICAgaW50ICAgICAgICAgICAgICAgc3RhdHVzID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgICByYyA9IDA7CisgICAgaW50ICAgICAgICAgICAgICAgbGVuLCByZXFfbGVuOworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisgICAgaWYoKHNkID0gc29ja2V0IChQRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKSkgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIlVuYWJsZSB0byBjcmVhdGUgbmV0bGluayBzb2NrZXRcbiIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgaWYoZ2V0X3RyYW5zbGF0aW9uX3RhYmxlX2luZm8gKHNkLCAmc3RhdHVzLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSA8IDApIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJVbmFibGUgdG8gZmV0Y2ggdHJhbnNsYXRpb24gdGFibGUgaW5mb1xuIik7CisgICAgICAgY2xvc2Uoc2QpOworICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICBmb3IgKG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyICopYnVmZmVyOyBzdGF0dXMgPiBzaXplb2YoKm5sbXApOyApIHsKKyAgICAgICAgIGxlbiA9IG5sbXAtPm5sbXNnX2xlbjsKKyAgICAgICAgIHJlcV9sZW4gPSBsZW4gLSBzaXplb2YoKm5sbXApOworICAgICAgICAgaWYgKHJlcV9sZW4gPCAwIHx8IGxlbiA+IHN0YXR1cykgeworICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImludmFsaWQgbGVuZ3RoXG4iKTsKKyAgICAgICAgICAgICByZXR1cm4gLTI7CisgICAgICAgICB9CisgICAgICAgICBpZiAoIU5MTVNHX09LIChubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiTkxNU0cgbm90IE9LXG4iKTsKKyAgICAgICAgICAgICByZXR1cm4gLTI7CisgICAgICAgICB9CisgICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIHJjID0gLTM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgICAgIGVudHJ5LT5uc19hcnBfaW5kZXggPSArK2lkeF9vZmZzZXQ7CisgICAgICAgICBpZihmaWxsdXBfZW50cnlfaW5mbyAoZW50cnksIG5sbXApIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6bG9hZF92NiIsICJza2lwcGluZyBuZXRsaW5rIG1lc3NhZ2UgdGhhdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaWQgbm90IGNvbnRhaW4gdmFsaWQgQVJQIGluZm9ybWF0aW9uXG4iKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfQorICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKyAgICAgICAgIHN0YXR1cyAtPSBOTE1TR19BTElHTihsZW4pOworICAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOworICAgIH0KKworICAgIGNsb3NlKHNkKTsKKyNlbmRpZgorICAgIGlmKHJjPDApIHsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJldHVybiBpZHhfb2Zmc2V0OworfQorI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9SVE5FVExJTktfSCkKK2ludCAKK2dldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChpbnQgc2QsIGludCAqc3RhdHVzLCBjaGFyICpidWZmLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciBuOworICAgICAgICAgICAgICAgIHN0cnVjdCBuZG1zZyByOworICAgICAgICAgICAgICAgIGNoYXIgICBidWZbMTAyNF07CisgICAgfSByZXE7CisgICAgc3RydWN0IHJ0YXR0ciAgICpydGE7CisKKyAgICBtZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworICAgIHJlcS5uLm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSCAoc2l6ZW9mKHN0cnVjdCBuZG1zZykpOworICAgIHJlcS5uLm5sbXNnX2ZsYWdzID0gTkxNX0ZfUkVRVUVTVCB8IE5MTV9GX1JPT1Q7CisgICAgcmVxLm4ubmxtc2dfdHlwZSA9IFJUTV9HRVRORUlHSDsKKworICAgIHJlcS5yLm5kbV9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICBydGEgPSAoc3RydWN0IHJ0YXR0ciAqKSgoKGNoYXIgKikmcmVxKSArIE5MTVNHX0FMSUdOKHJlcS5uLm5sbXNnX2xlbikpOworICAgIHJ0YS0+cnRhX2xlbiA9IFJUQV9MRU5HVEgoMTYpOworCisgICAgaWYoc2VuZChzZCwgJnJlcSwgcmVxLm4ubmxtc2dfbGVuLCAwKSA8IDApIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJTZW5kaW5nIHJlcXVlc3QgZmFpbGVkXG4iKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmKCgqc3RhdHVzID0gcmVjdihzZCwgYnVmZiwgc2l6ZSwgMCkpIDwgMCkgeworICAgICAgIHNubXBfbG9nKExPR19FUlIsIlJlY2lldmluZyByZXF1ZXN0IGZhaWxlZFxuIik7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZigqc3RhdHVzID09IDApIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJFbmQgb2YgZmlsZVxuIik7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitmaWxsdXBfZW50cnlfaW5mbyhuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksIHN0cnVjdCBubG1zZ2hkciAqbmxtcCkKK3sKKyAgICBzdHJ1Y3QgbmRtc2cgICAqcnRtcDsKKyAgICBzdHJ1Y3QgaW42X2FkZHIgKmluNnA7CisgICAgc3RydWN0IHJ0YXR0ciAgKnRiW05EQV9NQVggKyAxXSwgKnJ0YTsKKyAgICBzaXplX3QgICAgICAgICAgaW5fbGVuLCBvdXRfbGVuOworICAgIHVuc2lnbmVkIGludCAgICBpOworICAgIGludCAgICAgICAgICAgICBsZW5ndGg7CisgICAgY2hhciAgICAgICAgICAgIGFkZHJbNDBdOworICAgIHVfY2hhciAgICAgICAgICpidWY7CisgICAgdV9jaGFyICAgICAgICAgKmh3YWRkcjsKKworICAgIHJ0bXAgPSAoc3RydWN0IG5kbXNnICopIE5MTVNHX0RBVEEobmxtcCk7CisgICAgaWYgKG5sbXAtPm5sbXNnX3R5cGUgIT0gUlRNX05FV05FSUdIKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJXcm9uZyBuZXRsaW5rIG1lc3NhZ2UgdHlwZSAlZFxuIiwgbmxtcC0+bmxtc2dfdHlwZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocnRtcC0+bmRtX3N0YXRlICE9IE5VRF9OT0FSUCkgeworICAgICAgICBtZW1zZXQodGIsIDAsIHNpemVvZihzdHJ1Y3QgcnRhdHRyICopICogKE5EQV9NQVggKyAxKSk7CisgICAgICAgIGxlbmd0aCA9IG5sbXAtPm5sbXNnX2xlbiAtIE5MTVNHX0xFTkdUSChzaXplb2YoKnJ0bXApKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJuZXRsaW5rIG1lc3NhZ2UgbGVuZ3RoICVkIDwgJWQgaXMgaW52YWxpZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIG5sbXAtPm5sbXNnX2xlbiwgKGludClOTE1TR19MRU5HVEgoc2l6ZW9mKCpydG1wKSkpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIHRoaXMgaXMgd2hhdCB0aGUga2VybmVsLXJlbW92ZWQgTkRBX1JUQSBkZWZpbmUgZGlkIAorICAgICAgICAgKi8KKyAgICAgICAgcnRhID0gKChzdHJ1Y3QgcnRhdHRyICopICgoKGNoYXIgKikgKHJ0bXApKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkxNU0dfQUxJR04oc2l6ZW9mKHN0cnVjdCBuZG1zZykpKSk7CisgICAgICAgIHdoaWxlIChSVEFfT0socnRhLCBsZW5ndGgpKSB7CisgICAgICAgICAgICBpZiAocnRhLT5ydGFfdHlwZSA8PSBOREFfTUFYKQorICAgICAgICAgICAgICAgIHRiW3J0YS0+cnRhX3R5cGVdID0gcnRhOworICAgICAgICAgICAgcnRhID0gUlRBX05FWFQocnRhLCBsZW5ndGgpOworICAgICAgICB9CisgICAgICAgIGlmIChsZW5ndGgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJSZWNlaXZlZCB1bmV2ZW4gbnVtYmVyIG9mIG5ldGxpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAiIG1lc3NhZ2VzIC0gJWQgYnl0ZXMgcmVtYWluaW5nXG4iLCBsZW5ndGgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIEZpbGwgdXAgdGhlIGluZGV4CisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG1wLT5uZG1faWZpbmRleDsKKyAgICAgICAgLyoKKyAgICAgICAgICogRmlsbCB1cCBpcCBhZGRyZXNzIAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHRiW05EQV9EU1RdKSB7CisgICAgICAgICAgICBtZW1zZXQoJmFkZHIsICdcMCcsIHNpemVvZihhZGRyKSk7CisgICAgICAgICAgICBpbjZwID0gKHN0cnVjdCBpbjZfYWRkciAqKSBSVEFfREFUQSh0YltOREFfRFNUXSk7CisgICAgICAgICAgICBzcHJpbnRmKGFkZHIsIE5JUDZfRk1ULCBOSVA2KCppbjZwKSk7CisgICAgICAgICAgICBpbl9sZW4gPSBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPQorICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+YXJwX2lwYWRkcmVzcyk7CisgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydCgxNiA9PSBpbl9sZW4pOworICAgICAgICAgICAgb3V0X2xlbiA9IDA7CisgICAgICAgICAgICBidWYgPSBlbnRyeS0+YXJwX2lwYWRkcmVzczsKKyAgICAgICAgICAgIGlmICgxICE9IG5ldHNubXBfaGV4X3RvX2JpbmFyeSgmYnVmLCAmaW5fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRfbGVuLCAwLCBhZGRyLCAiOiIpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHBhcnNpbmcgJyVzJywgc2tpcHBpbmdcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KDE2ID09IG91dF9sZW4pOworICAgICAgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuID0gb3V0X2xlbjsKKyAgICAgICAgfQorICAgICAgICBpZiAodGJbTkRBX0xMQUREUl0pIHsKKyAgICAgICAgICAgIG1lbXNldCgmYWRkciwgJ1wwJywgc2l6ZW9mKGFkZHIpKTsKKyAgICAgICAgICAgIGh3YWRkciA9IFJUQV9EQVRBKHRiW05EQV9MTEFERFJdKTsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuID0gUlRBX1BBWUxPQUQodGJbTkRBX0xMQUREUl0pOworICAgICAgICAgICAgYnVmID0gZW50cnktPmFycF9waHlzYWRkcmVzczsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbjsgaSsrKQorICAgICAgICAgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NbaV0gPSBod2FkZHJbaV07CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHJ0bXAtPm5kbV9zdGF0ZSkgeworICAgICAgICBjYXNlIE5VRF9JTkNPTVBMRVRFOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5DT01QTEVURTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgICAgIGNhc2UgTlVEX1BFUk1BTkVOVDoKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1JFQUNIQUJMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9TVEFMRToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1NUQUxFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlVEX0RFTEFZOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfREVMQVk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfUFJPQkU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9QUk9CRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9GQUlMRUQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTlZBTElEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlVEX05PTkU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9VTktOT1dOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVW5yZWNvZ25pemVkIEFSUCBlbnRyeSBzdGF0ZSAlZCIsIHJ0bXAtPm5kbV9zdGF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAocnRtcC0+bmRtX3N0YXRlKSB7CisgICAgICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6CisgICAgICAgIGNhc2UgTlVEX0ZBSUxFRDoKKyAgICAgICAgY2FzZSBOVURfTk9ORToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9JTlZBTElEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlVEX1JFQUNIQUJMRToKKyAgICAgICAgY2FzZSBOVURfU1RBTEU6CisgICAgICAgIGNhc2UgTlVEX0RFTEFZOgorICAgICAgICBjYXNlIE5VRF9QUk9CRToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9EWU5BTUlDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlVEX1BFUk1BTkVOVDoKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9TVEFUSUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9MT0NBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgLyogY291bGQgbm90IGNyZWF0ZSBkYXRhIGZvciB0aGlzIGludGVyZmFjZSAqLworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZGZiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBkZWZhdWx0cm91dGVyIGRhdGEgYWNjZXNzIGhlYWRlcgorICoKKyAqICRJZDogJAorICovCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGNvbmZpZ3VyZSByZXF1aXJlZCBmaWxlcworICoKKyAqIE5vdGVzOgorICoKKyAqIDEpIHByZWZlciBmdW5jdGlvbmFsaXR5IG92ZXIgcGxhdGZvcm0sIHdoZXJlIHBvc3NpYmxlLiBJZiBhIG1ldGhvZAorICogICAgaXMgYXZhaWxhYmxlIGZvciBtdWx0aXBsZSBwbGF0Zm9ybXMsIHRlc3QgdGhhdCBmaXJzdC4gVGhhdCB3YXkKKyAqICAgIHdoZW4gYSBuZXcgcGxhdGZvcm0gaXMgcG9ydGVkLCBpdCB3b24ndCBuZWVkIGEgbmV3IHRlc3QgaGVyZS4KKyAqCisgKiAyKSBkb24ndCBkbyBkZXRhaWwgcmVxdWlyZW1lbnRzIGhlcmUuIElmLCBmb3IgZXhhbXBsZSwKKyAqICAgIEhQVVgxMSBoYWQgZGlmZmVyZW50IHJldWlyZW1lbnRzIHRoYW4gb3RoZXIgSFBVWCwgdGhhdCBzaG91bGQKKyAqICAgIGJlIGhhbmRsZWQgaW4gdGhlICpfaHB1eC5oIGhlYWRlciBmaWxlLgorICovCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24pCisjaWYgZGVmaW5lZCggbGludXggKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXgpCisjZWxzZQorLyoKKyAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQorICovCitjb25maWdfZXJyb3IodGhlIGRlZmF1bHRyb3V0ZXIgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2NvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlODViZmEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24uYwpAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqICBkZWZhdWx0cm91dGVyIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZDokCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcworICovCitzdGF0aWMgaW50IF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9jb21wYXJlX2FkZHIoY29uc3Qgdm9pZCAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnJocyk7CitzdGF0aWMgdm9pZCBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfcmVsZWFzZShuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKiBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVudXNlZCk7CisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogZXh0ZXJuYWwgcGVyLWFyY2hpdGVjdHVyZSBmdW5jdGlvbnMgcHJvdG90eXBlcworICoKKyAqIFRoZXNlIHNob3VsZG4ndCBiZSBjYWxsZWQgYnkgdGhlIGdlbmVyYWwgcHVibGljLCBzbyB0aGV5IGFyZW4ndCBpbgorICogdGhlIGhlYWRlciBmaWxlLgorICovCitleHRlcm4gaW50CituZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9lbnRyeV9pbml0KG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZW50cnkpOworCitleHRlcm4gaW50CituZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7CisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY29udGFpbmVyIGZ1bmN0aW9ucworICovCisvKioKKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfaW5pdCh1X2ludCBmbGFncykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyMTsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjpjb250YWluZXIiLCAiaW5pdFxuIikpOworCisgICAgLyoKKyAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lcnMuIG9uZSBpbmRleGVkIGJ5IGlmSW5kZXgsIHRoZSBvdGhlcgorICAgICAqIGluZGV4ZWQgYnkgaWZOYW1lLgorICAgICAqLworICAgIGNvbnRhaW5lcjEgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3NfZGVmYXVsdHJvdXRlcjp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIxKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkZWZhdWx0cm91dGVyIHByaW1hcnkgY29udGFpbmVyIGlzIG5vdCBmb3VuZFxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBjb250YWluZXIxLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiZHJfaW5kZXgiKTsKKworICAgIGlmIChmbGFncyAmIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfSU5JVF9BRERMX0lEWF9CWV9BRERSKSB7CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIyID0KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImRlZmF1bHRyb3V0ZXJfYWRkcjphY2Nlc3NfZGVmYXVsdHJvdXRlcjp0YWJsZV9jb250YWluZXIiKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyMikgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImRlZmF1bHRyb3V0ZXIgc2Vjb25kYXJ5IGNvbnRhaW5lciBub3QgZm91bmRcbiIpOworICAgICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyMSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRhaW5lcjItPmNvbXBhcmUgPSBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY29tcGFyZV9hZGRyOworICAgICAgICBjb250YWluZXIyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiZHJfYWRkciIpOworCisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2FkZF9pbmRleChjb250YWluZXIxLCBjb250YWluZXIyKTsKKyAgICB9CisKKyAgICByZXR1cm4gY29udGFpbmVyMTsKK30KKworLyoqCisgKiBAcmV0dmFsIE5VTEwgIGVycm9yCisgKiBAcmV0dmFsICFOVUxMIHBvaW50ZXIgdG8gY29udGFpbmVyCisgKi8KK25ldHNubXBfY29udGFpbmVyKgorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYzsKKyAgICAgdV9pbnQgY29udGFpbmVyX2ZsYWdzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjpjb250YWluZXIiLCAibG9hZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIGlmIChsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0FERExfSURYX0JZX0FERFIpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lcl9mbGFncyB8PQorICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfSU5JVF9BRERMX0lEWF9CWV9BRERSOworICAgICAgICB9CisgICAgICAgIGNvbnRhaW5lciA9CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9pbml0KGNvbnRhaW5lcl9mbGFncyk7CisgICAgfQorCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3NfZGVmYXVsdHJvdXRlclxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJjID0gIG5ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9sb2FkKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgaWYgKDAgIT0gcmMpIHsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfTk9GTEFHUyk7CisgICAgICAgIGNvbnRhaW5lciA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBmcmVlX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjpjb250YWluZXIiLCAiZnJlZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmKCEgKGZyZWVfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfRE9OVF9DTEVBUikpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogZnJlZSBhbGwgaXRlbXMuCisgICAgICAgICAqLworICAgICAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfcmVsZWFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KKworICAgIGlmKCEgKGZyZWVfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfS0VFUF9DT05UQUlORVIpKQorICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworfQorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGRlZmF1bHRyb3V0ZXJfZW50cnkgZnVuY3Rpb25zCisgKi8KKy8qKgorICovCisvKioKKyAqLworbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICoKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKHZvaWQpCit7CisgICAgaW50IHJjID0gMDsKKyAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkpOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpkZWZhdWx0cm91dGVyOmVudHJ5IiwgImNyZWF0ZVxuIikpOworCisgICAgaWYoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlbnRyeS0+b2lkX2luZGV4LmxlbiA9IDE7CisgICAgZW50cnktPm9pZF9pbmRleC5vaWRzID0gJmVudHJ5LT5uc19kcl9pbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIGRlZmF1bHRzCisgICAgICovCisgICAgZW50cnktPmRyX2xpZmV0aW1lICAgPSBJUERFRkFVTFRST1VURVJMSUZFVElNRV9NQVg7CisgICAgZW50cnktPmRyX3ByZWZlcmVuY2UgPSBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX01FRElVTTsKKworICAgIHJjID0gbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfZW50cnlfaW5pdChlbnRyeSk7CisgICAgaWYgKFNOTVBfRVJSX05PRVJST1IgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y3JlYXRlIiwiZXJyb3IgJWQgaW4gYXJjaCBpbml0XG4iLCByYykpOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICBlbnRyeSA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkCituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICogZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybjsKKworICAgIGZyZWUoZW50cnkpOworfQorCisvKioKKyAqIHVwZGF0ZSBhbiBvbGQgZGVmYXVsdHJvdXRlcl9lbnRyeSBmcm9tIGEgbmV3IG9uZQorICoKKyAqIEBub3RlOiBvbmx5IG1pYiByZWxhdGVkIGl0ZW1zIGFyZSBjb21wYXJlZC4gSW50ZXJuYWwgb2JqZWN0cworICogc3VjaCBhcyBvaWRfaW5kZXgsIG5zX2RyX2luZGV4IGFuZCBmbGFncyBhcmUgbm90IGNvbXBhcmVkLgorICoKKyAqIEByZXR2YWwgLTEgIDogZXJyb3IKKyAqIEByZXR2YWwgPj0wIDogbnVtYmVyIG9mIGZpZWxkcyB1cGRhdGVkCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV91cGRhdGUobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqcmhzKQoreworICAgIGludCBjaGFuZ2VkID0gMDsKKworICAgIGlmIChsaHMtPmRyX2FkZHJlc3N0eXBlICE9IHJocy0+ZHJfYWRkcmVzc3R5cGUpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmRyX2FkZHJlc3N0eXBlID0gcmhzLT5kcl9hZGRyZXNzdHlwZTsKKyAgICB9CisKKyAgICBpZiAobGhzLT5kcl9hZGRyZXNzX2xlbiAhPSByaHMtPmRyX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIGNoYW5nZWQgKz0gMjsKKyAgICAgICAgbGhzLT5kcl9hZGRyZXNzX2xlbiA9IHJocy0+ZHJfYWRkcmVzc19sZW47CisgICAgICAgIG1lbWNweShsaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzcywgcmhzLT5kcl9hZGRyZXNzX2xlbik7CisgICAgfQorICAgIGVsc2UgaWYgKG1lbWNtcChsaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzcywgcmhzLT5kcl9hZGRyZXNzX2xlbikgIT0gMCkgeworICAgICAgICArK2NoYW5nZWQ7CisgICAgICAgIG1lbWNweShsaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzcywgcmhzLT5kcl9hZGRyZXNzX2xlbik7CisgICAgfQorCisgICAgaWYgKGxocy0+ZHJfaWZfaW5kZXggIT0gcmhzLT5kcl9pZl9pbmRleCkgeworICAgICAgICArK2NoYW5nZWQ7CisgICAgICAgIGxocy0+ZHJfaWZfaW5kZXggPSByaHMtPmRyX2lmX2luZGV4OworICAgIH0KKworICAgIGlmIChsaHMtPmRyX2xpZmV0aW1lICE9IHJocy0+ZHJfbGlmZXRpbWUpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmRyX2xpZmV0aW1lID0gcmhzLT5kcl9saWZldGltZTsKKyAgICB9CisKKyAgICBpZiAobGhzLT5kcl9wcmVmZXJlbmNlICE9IHJocy0+ZHJfcHJlZmVyZW5jZSkgeworICAgICAgICArK2NoYW5nZWQ7CisgICAgICAgIGxocy0+ZHJfcHJlZmVyZW5jZSA9IHJocy0+ZHJfcHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICByZXR1cm4gY2hhbmdlZDsKK30KKworLyoqCisgKiBjb3B5IGFuICBkZWZhdWx0cm91dGVyX2VudHJ5CisgKgorICogQHJldHZhbCAtMSAgOiBlcnJvcgorICogQHJldHZhbCAwICAgOiBubyBlcnJvcgorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY29weShuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqcmhzKQoreworICAgIGxocy0+ZHJfYWRkcmVzc3R5cGUgPSByaHMtPmRyX2FkZHJlc3N0eXBlOworICAgIGxocy0+ZHJfYWRkcmVzc19sZW4gPSByaHMtPmRyX2FkZHJlc3NfbGVuOworICAgIG1lbWNweShsaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzcywgcmhzLT5kcl9hZGRyZXNzX2xlbik7CisgICAgbGhzLT5kcl9pZl9pbmRleCAgICA9IHJocy0+ZHJfaWZfaW5kZXg7CisgICAgbGhzLT5kcl9saWZldGltZSAgICA9IHJocy0+ZHJfbGlmZXRpbWU7CisgICAgbGhzLT5kcl9wcmVmZXJlbmNlICA9IHJocy0+ZHJfcHJlZmVyZW5jZTsKKworICAgIHJldHVybiAwOworfQorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIFV0aWxpdHkgcm91dGluZXMKKyAqLworCisvKioKKyAqLwordm9pZAorX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3JlbGVhc2UobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICogZW50cnksIHZvaWQgKmNvbnRleHQpCit7CisgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKGVudHJ5KTsKK30KKworc3RhdGljIGludCBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY29tcGFyZV9hZGRyKGNvbnN0IHZvaWQgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnJocykKK3sKKyAgICBjb25zdCBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmxoID0gKGNvbnN0IG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqKWxoczsKKyAgICBjb25zdCBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJoID0gKGNvbnN0IG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqKXJoczsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gbGhzKTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJocyk7CisKKyAgICAvKgorICAgICAqIGNvbXBhcmUgYWRkcmVzcyBsZW5ndGgKKyAgICAgKi8KKyAgICBpZiAobGgtPmRyX2FkZHJlc3NfbGVuIDwgcmgtPmRyX2FkZHJlc3NfbGVuKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZSBpZiAobGgtPmRyX2FkZHJlc3NfbGVuID4gcmgtPmRyX2FkZHJlc3NfbGVuKQorICAgICAgICByZXR1cm4gMTsKKworICAgIC8qCisgICAgICogbGVuZ3RoIGVxdWFsLCBjb21wYXJlIGFkZHJlc3MKKyAgICAgKi8KKyAgICByZXR1cm4gbWVtY21wKGxoLT5kcl9hZGRyZXNzLCByaC0+ZHJfYWRkcmVzcywgbGgtPmRyX2FkZHJlc3NfbGVuKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzODAxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jCkBAIC0wLDAgKzEsMzI4IEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6JAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oPgorCisjaW5jbHVkZSAiaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgiCisKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNkZWZpbmUgUkNWQlVGX1NJWkUgMzI3NjgKKyNkZWZpbmUgU05EQlVGX1NJWkUgNTEyCisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisjZGVmaW5lIERSX0FERFJTVFJMRU4gIElORVQ2X0FERFJTVFJMRU4KKyNlbHNlCisjZGVmaW5lIERSX0FERFJTVFJMRU4gIElORVRfQUREUlNUUkxFTgorI2VuZGlmCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogbG9jYWwgc3RhdGljIHByb3RvdHlwZXMKKyAqLworc3RhdGljIGludCBfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKTsKKworCisvKgorICogaW5pdGlhbGl6ZSBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqCisgKiBAcmV0dmFsICAwOiBzdWNjZXNzCisgKiBAcmV0dmFsIDwwOiBlcnJvcgorICovCitpbnQKK25ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2VudHJ5X2luaXQobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgaW50IHJjID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjplbnRyeTphcmNoIiwgImxvYWQgKGxpbnV4KVxuIikpOworCisgICAgcmMgPSBfbG9hZChjb250YWluZXIpOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfS0VFUF9DT05UQUlORVI7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLCBmbGFncyk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCisvKioKKyAqCisgKiBAcmV0dmFsICAwIG5vIGVycm9ycworICogQHJldHZhbCAhMCBlcnJvcnMKKyAqLworc3RhdGljIGludAorX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyNpZm5kZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlciIsCisgICAgICAgICAgICAgICAgImNhbm5vdCBnZXQgZGVmYXVsdCByb3V0ZXIgaW5mb3JtYXRpb24iCisgICAgICAgICAgICAgICAgImFzIG5ldGxpbmsgc29ja2V0IGlzIG5vdCBhdmFpbGFibGVcbiIpKTsKKyAgICByZXR1cm4gLTE7CisjZWxzZQorICAgIGludCByYyA9IDA7CisgICAgaW50IGlkeF9vZmZzZXQgPSAwOworICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZW50cnk7CisgICAgaW50IG5sc2s7CisgICAgc3RydWN0IHNvY2thZGRyX25sIGFkZHI7CisgICAgaW50IHJjdmJ1Zl9zaXplID0gUkNWQlVGX1NJWkU7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgaGRyOworICAgICAgICB1bnNpZ25lZCBjaGFyIHJjdmJ1ZltSQ1ZCVUZfU0laRV07CisgICAgfSByY3ZidWZfdW5pb247CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgaGRyOworICAgICAgICB1bnNpZ25lZCBjaGFyIHNuZGJ1ZltTTkRCVUZfU0laRV07CisgICAgfSBzbmRidWZfdW5pb247CisgICAgdW5zaWduZWQgY2hhciAqY29uc3QgcmN2YnVmID0gcmN2YnVmX3VuaW9uLnJjdmJ1ZjsKKyAgICB1bnNpZ25lZCBjaGFyICpjb25zdCBzbmRidWYgPSBzbmRidWZfdW5pb24uc25kYnVmOworICAgIHN0cnVjdCBubG1zZ2hkciAqaGRyOworICAgIHN0cnVjdCBydG1zZyAqcnRoZHI7CisgICAgaW50IGNvdW50OworICAgIGludCBlbmRfb2ZfbWVzc2FnZSA9IDA7CisgICAgbG9uZyBoeiA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBPcGVuIGEgbmV0bGluayBzb2NrZXQKKyAgICAgKi8KKyAgICBubHNrID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfREdSQU0sIE5FVExJTktfUk9VVEUpOworICAgIGlmIChubHNrIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IG9wZW4gbmV0bGluayBzb2NrZXQgOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChzZXRzb2Nrb3B0KG5sc2ssIFNPTF9TT0NLRVQsIFNPX1JDVkJVRiwKKyAgICAgICAgICAgICAgICAgICAmcmN2YnVmX3NpemUsIHNpemVvZihyY3ZidWZfc2l6ZSkpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IG9wZW4gbmV0bGluayBzb2NrZXQgOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgY2xvc2Uobmxzayk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgbWVtc2V0KCZhZGRyLCAnXDAnLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX25sKSk7CisgICAgYWRkci5ubF9mYW1pbHkgPSBBRl9ORVRMSU5LOworCisgICAgbWVtc2V0KHNuZGJ1ZiwgJ1wwJywgU05EQlVGX1NJWkUpOworICAgIGhkciA9ICZzbmRidWZfdW5pb24uaGRyOworICAgIGhkci0+bmxtc2dfdHlwZSA9IFJUTV9HRVRST1VURTsKKyAgICBoZHItPm5sbXNnX3BpZCA9IGdldHBpZCgpOworICAgIGhkci0+bmxtc2dfc2VxID0gMDsKKyAgICBoZHItPm5sbXNnX2ZsYWdzID0gTkxNX0ZfUk9PVCB8IE5MTV9GX01BVENIIHwgTkxNX0ZfUkVRVUVTVDsKKyAgICBoZHItPm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSChzaXplb2Yoc3RydWN0IHJ0bXNnKSk7CisgICAgcnRoZHIgPSAoc3RydWN0IHJ0bXNnICopTkxNU0dfREFUQShoZHIpOworICAgIHJ0aGRyLT5ydG1fdGFibGUgPSBSVF9UQUJMRV9NQUlOOworCisgICAgLyoKKyAgICAgKiBTZW5kIGEgcmVxdWVzdCB0byB0aGUga2VybmVsIHRvIGR1bXAgdGhlIHJvdXRpbmcgdGFibGUgdG8gdXMKKyAgICAgKi8KKyAgICBjb3VudCA9IHNlbmR0byhubHNrLCBzbmRidWYsIGhkci0+bmxtc2dfbGVuLCAwLAorICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCkpOworICAgIGlmIChjb3VudCA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuYWJsZSB0byBzZW5kIG5ldGxpbmsgbWVzc2FnZSB0byBrZXJuZWwgOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgY2xvc2Uobmxzayk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5vdyBsaXN0ZW4gZm9yIHJlc3BvbnNlCisgICAgICovCisgICAgZG8geworICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5sbWhwOworICAgICAgICBzdHJ1Y3QgcnRtc2cgKnJ0bXA7CisgICAgICAgIHN0cnVjdCBydGF0dHIgKnJ0YXA7CisgICAgICAgIHN0cnVjdCBydGFfY2FjaGVpbmZvICpydGNpOworICAgICAgICBzb2NrbGVuX3Qgc29ja19sZW47CisgICAgICAgIGludCBydGNvdW50OworCisgICAgICAgIG1lbXNldChyY3ZidWYsICdcMCcsIFJDVkJVRl9TSVpFKTsKKyAgICAgICAgc29ja19sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX25sKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgdGhlIG1lc3NhZ2UKKyAgICAgICAgICovCisgICAgICAgIGNvdW50ID0gcmVjdmZyb20obmxzaywgcmN2YnVmLCBSQ1ZCVUZfU0laRSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsICZzb2NrX2xlbik7CisgICAgICAgIGlmIChjb3VudCA8IDApIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmFibGUgdG8gcmVjZWl2ZSBuZXRsaW5rIG1lc3NhZ2VzOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICByYyA9IC0xOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBXYWxrIGFsbCBvZiB0aGUgcmV0dXJuZWQgbWVzc2FnZXMKKyAgICAgICAgICovCisgICAgICAgIG5sbWhwID0gJnJjdmJ1Zl91bmlvbi5oZHI7CisgICAgICAgIHdoaWxlIChOTE1TR19PSyhubG1ocCwgY291bnQpKSB7CisgICAgICAgICAgICB1X2NoYXIgYWRkcmVzc3R5cGU7CisgICAgICAgICAgICBjaGFyICAgYWRkcmVzc1tORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0JVRl9TSVpFICsgMV07CisgICAgICAgICAgICBzaXplX3QgYWRkcmVzc19sZW4gPSAgMDsKKyAgICAgICAgICAgIGludCAgICBpZl9pbmRleCAgICA9IC0xOworICAgICAgICAgICAgdV9sb25nIGxpZmV0aW1lICAgID0gIDA7CisgICAgICAgICAgICBpbnQgICAgcHJlZmVyZW5jZSAgPSAtMzsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIE1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBpcyBvaworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAobmxtaHAtPm5sbXNnX3R5cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAia2VybmVsIHByb2R1Y2VkIG5sbXNnIGVyclxuIik7CisgICAgICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEVuZCBvZiBtZXNzYWdlLCB3ZSdyZSBkb25lCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChubG1ocC0+bmxtc2dfdHlwZSAmIE5MTVNHX0RPTkUpIHsKKyAgICAgICAgICAgICAgICBlbmRfb2ZfbWVzc2FnZSA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIHJ0bXNnIHN0cnVjdAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBydG1wID0gTkxNU0dfREFUQShubG1ocCk7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB6ZXJvIGxlbmd0aCBkZXN0aW5hdGlvbiBpcyBhIGRlZmF1bHQgcm91dGUKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHJ0bXAtPnJ0bV9kc3RfbGVuICE9IDApCisgICAgICAgICAgICAgICAgZ290byBuZXh0X25sbXNnaGRyOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RhcnQgc2Nhbm5pbmcgdGhlIGF0dHJpYnV0ZXMgZm9yIG5lZWRlZCBpbmZvCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChydG1wLT5ydG1fZmFtaWx5ID09IEFGX0lORVQpIHsKKyAgICAgICAgICAgICAgICBhZGRyZXNzdHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworICAgICAgICAgICAgICAgIGxpZmV0aW1lID0gSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfTUFYOyAgICAgLyogaW5maW5pdHkgKi8KKyAgICAgICAgICAgIH0KKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICBlbHNlIGlmIChydG1wLT5ydG1fZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgICAgICAgICAgICAgYWRkcmVzc3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKyAgICAgICAgICAgICAgICAvKiByb3V0ZXIgbGlmZXRpbWUgZm9yIElQdjYgaXMgcmV0cmlldmVkIGJ5IFJUQV9DQUNIRUlORk8gKi8KKyAgICAgICAgICAgICAgICBsaWZldGltZSA9IDA7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfbmxtc2doZHI7IC8qIHNraXAsIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhpcyByb3V0ZSAqLworCisgICAgICAgICAgICBwcmVmZXJlbmNlID0gMDsgICAgIC8qIHByZWZlcmVuY2UgaXMgbWVkaXVtKDApIGZvciBub3cgKi8KKworICAgICAgICAgICAgcnRhcCA9IFJUTV9SVEEocnRtcCk7CisgICAgICAgICAgICBydGNvdW50ID0gUlRNX1BBWUxPQUQobmxtaHApOworICAgICAgICAgICAgd2hpbGUgKFJUQV9PSyhydGFwLCBydGNvdW50KSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocnRhcC0+cnRhX3R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBSVEFfT0lGOgorICAgICAgICAgICAgICAgICAgICAgICAgaWZfaW5kZXggPSAqKGludCAqKShSVEFfREFUQShydGFwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIFJUQV9HQVRFV0FZOgorICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRChydGFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChhZGRyZXNzLCAnXDAnLCBzaXplb2YoYWRkcmVzcykpOworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGFkZHJlc3MsIFJUQV9EQVRBKHJ0YXApLCBhZGRyZXNzX2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBSVEFfQ0FDSEVJTkZPOgorICAgICAgICAgICAgICAgICAgICAgICAgcnRjaSA9IFJUQV9EQVRBKHJ0YXApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChydG1wLT5ydG1fZmxhZ3MgJiBSVE1fRl9DTE9ORUQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ0Y2kgJiYgcnRjaS0+cnRhX2V4cGlyZXMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlmZXRpbWUgPSBydGNpLT5ydGFfZXhwaXJlcyAvIGh6OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfSAgIC8qIHN3aXRjaCAqLworCisgICAgICAgICAgICAgICAgcnRhcCA9IFJUQV9ORVhUKHJ0YXAsIHJ0Y291bnQpOworICAgICAgICAgICAgfSAvKiB3aGlsZSBSVEFfT0socnRhcCkgKi8KKworICAgICAgICAgICAgaWYgKGFkZHJlc3NfbGVuICE9IDAgJiYgaWZfaW5kZXggIT0gLTEgJiYKKyAgICAgICAgICAgICAgICBsaWZldGltZSAhPSAwICYmIHByZWZlcmVuY2UgIT0gLTMgKSB7CisgICAgICAgICAgICAgICAgREVCVUdJRigiYWNjZXNzOmRlZmF1bHRyb3V0ZXIiKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYWRkcl9zdHJbRFJfQUREUlNUUkxFTl07CisgICAgICAgICAgICAgICAgICAgIG1lbXNldChhZGRyX3N0ciwgJ1wwJywgRFJfQUREUlNUUkxFTik7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0bXAtPnJ0bV9mYW1pbHkgPT0gQUZfSU5FVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvcChBRl9JTkVULCBhZGRyZXNzLCBhZGRyX3N0ciwgRFJfQUREUlNUUkxFTik7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoQUZfSU5FVDYsIGFkZHJlc3MsIGFkZHJfc3RyLCBEUl9BRERSU1RSTEVOKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91bmQgZGVmYXVsdCByb3V0ZTogJXMgaWZfaW5kZXggJWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlmZXRpbWUgJWx1IHByZWZlcmVuY2UgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfc3RyLCBpZl9pbmRleCwgbGlmZXRpbWUsIHByZWZlcmVuY2UpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW50cnktPm5zX2RyX2luZGV4ICAgID0gKytpZHhfb2Zmc2V0OworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9hZGRyZXNzdHlwZSA9IGFkZHJlc3N0eXBlOworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9hZGRyZXNzX2xlbiA9IGFkZHJlc3NfbGVuOworICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+ZHJfYWRkcmVzcywgYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSk7CisgICAgICAgICAgICAgICAgZW50cnktPmRyX2lmX2luZGV4ICAgID0gaWZfaW5kZXg7CisgICAgICAgICAgICAgICAgZW50cnktPmRyX2xpZmV0aW1lICAgID0gbGlmZXRpbWU7CisgICAgICAgICAgICAgICAgZW50cnktPmRyX3ByZWZlcmVuY2UgID0gcHJlZmVyZW5jZTsKKworICAgICAgICAgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciB3aXRoIGRlZmF1bHRyb3V0ZXJfZW50cnk6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCituZXh0X25sbXNnaGRyOgorICAgICAgICAgICAgbmxtaHAgPSBOTE1TR19ORVhUKG5sbWhwLCBjb3VudCk7CisgICAgICAgIH0gLyogd2hpbGUgTkxNU0dfT0sobmxtaHApICovCisKKyAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgfSB3aGlsZSAoIWVuZF9vZl9tZXNzYWdlKTsKKworICAgIGNsb3NlKG5sc2spOworICAgIHJldHVybiByYzsKKyNlbmRpZiAgLyogSEFWRV9MSU5VWF9SVE5FVExJTktfSCAqLworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCmluZGV4IGM2NmYxNjEuLjljZjgxODEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKQEAgLTIwLDExICsyMCw5IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbikKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4KQorI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMikKICNlbHNlCi0vKgotICogY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZpbGUhCi0gKiByZXF1aXJlIGEgYm9ndXMgZmlsZSB0byBnZW5lcmF0ZSBhbiBlcnJvci4KLSAqLwotY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy11bmtub3duLWFyY2gpCitjb25maWdfZXJyb3IodGhlIGlwYWRkcmVzcyBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMKaW5kZXggMzE3NjU0ZS4uYWM2MmM0MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jCkBAIC0yMTEsNyArMjExLDcgQEAKICAgICAgKiBtYWtlIHN1cmUgaW50ZXJmYWNlIGFuZCBpZkluZGV4IG1hdGNoIHVwCiAgICAgICovCiAgICAgaWYgKE5VTEwgPT0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX25hbWVfZmluZChlbnRyeS0+aWZfaW5kZXgpKSB7Ci0gICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6c2V0IiwgImNhbnQgZmluZCBuYW1lIGZvciBpbmRleCAlZFxuIiwKKyAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpzZXQiLCAiY2FudCBmaW5kIG5hbWUgZm9yIGluZGV4ICVsZFxuIiwKICAgICAgICAgICAgICAgICAgIGVudHJ5LT5pZl9pbmRleCkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzA0LDYgKzMwNCwyNyBAQAogICAgICAgICArK2NoYW5nZWQ7CiAgICAgICAgIGxocy0+aWFfb3JpZ2luID0gcmhzLT5pYV9vcmlnaW47CiAgICAgfQorICAgCisgICAgaWYgKGxocy0+aWFfb25saW5rX2ZsYWcgIT0gcmhzLT5pYV9vbmxpbmtfZmxhZykgeworICAgICAgICArK2NoYW5nZWQ7CisgICAgICAgIGxocy0+aWFfb25saW5rX2ZsYWcgPSByaHMtPmlhX29ubGlua19mbGFnOworICAgIH0KKworICAgIGlmIChsaHMtPmlhX2F1dG9ub21vdXNfZmxhZyAhPSByaHMtPmlhX2F1dG9ub21vdXNfZmxhZykgeworICAgICAgICArK2NoYW5nZWQ7CisgICAgICAgIGxocy0+aWFfYXV0b25vbW91c19mbGFnID0gcmhzLT5pYV9hdXRvbm9tb3VzX2ZsYWc7CisgICAgfQorCisgICAgaWYgKGxocy0+aWFfcHJlZmVyZWRfbGlmZXRpbWUgIT0gcmhzLT5pYV9wcmVmZXJlZF9saWZldGltZSkgeworICAgICAgICArK2NoYW5nZWQ7CisgICAgICAgIGxocy0+aWFfcHJlZmVyZWRfbGlmZXRpbWUgPSByaHMtPmlhX3ByZWZlcmVkX2xpZmV0aW1lOworICAgIH0KKworICAgIGlmIChsaHMtPmlhX3ZhbGlkX2xpZmV0aW1lICE9IHJocy0+aWFfdmFsaWRfbGlmZXRpbWUpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX3ZhbGlkX2xpZmV0aW1lID0gcmhzLT5pYV92YWxpZF9saWZldGltZTsKKyAgICB9CisKIAogICAgIHJldHVybiBjaGFuZ2VkOwogfQpAQCAtNDMxLDMgKzQ1Miw0OSBAQAogICAgICAqLwogICAgIHJldHVybiBtZW1jbXAobGgtPmlhX2FkZHJlc3MsIHJoLT5pYV9hZGRyZXNzLCBsaC0+aWFfYWRkcmVzc19sZW4pOwogfQorCitpbnQKK25ldHNubXBfaXBhZGRyZXNzX2ZsYWdzX2NvcHkodV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZQcmVmZXJyZWRMaWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlhX3ByZWZlcmVkX2xpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlhX3ZhbGlkX2xpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKmlhX29ubGlua19mbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKmlhX2F1dG9ub21vdXNfZmxhZykKK3sKKworICAgIC8qQ29weSBhbGwgdGhlIGZsYWdzKi8KKyAgICAqaXBBZGRyZXNzUHJlZml4QWR2UHJlZmVycmVkTGlmZXRpbWUgPSAqaWFfcHJlZmVyZWRfbGlmZXRpbWU7CisgICAgKmlwQWRkcmVzc1ByZWZpeEFkdlZhbGlkTGlmZXRpbWUgPSAqaWFfdmFsaWRfbGlmZXRpbWU7CisgICAgKmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWcgPSAqaWFfb25saW5rX2ZsYWc7CisgICAgKmlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnID0gKmlhX2F1dG9ub21vdXNfZmxhZzsKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2lwYWRkcmVzc19wcmVmaXhfb3JpZ2luX2NvcHkodV9sb25nICppcEFkZHJlc3NQcmVmaXhPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIGlhX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGlwQWRkcmVzc0FkZHJUeXBlKQoreworICAgIGlmKGlwQWRkcmVzc0FkZHJUeXBlID09IElORVRBRERSRVNTVFlQRV9JUFY0KXsKKyAgICAgICBpZihpYV9vcmlnaW4gPT0gNikgLypSYW5kb20qLworICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luKSA9IDMgLypJUEFERFJFU1NQUkVGSVhPUklHSU5UQ19XRUxMS05PV04qLzsKKyAgICAgICBlbHNlCisgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW4pID0gaWFfb3JpZ2luOworICAgIH0gZWxzZSB7CisgICAgICAgaWYoaWFfb3JpZ2luID09IDUpIHsgLypMaW5rIExheWVyKi8KKyAgICAgICAgICBpZighZmxhZ3MpIC8qR2xvYmFsIGFkZHJlc3MgYXNzaWduZWQgYnkgcm91dGVyIGFkdiovCisgICAgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW4pID0gNSAvKklQQUREUkVTU1BSRUZJWE9SSUdJTlRDX1JPVVRFUkFEViovOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbikgPSAzIC8qSVBBRERSRVNTUFJFRklYT1JJR0lOVENfV0VMTEtOT1dOKi87CisgICAgICAgfQorICAgICAgIGVsc2UgaWYoaWFfb3JpZ2luID09IDYpIC8qUmFuZG9tKi8KKyAgICAgICAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbikgPSA1IC8qSVBBRERSRVNTUFJFRklYT1JJR0lOVENfUk9VVEVSQURWKi87CisgICAgICAgZWxzZQorICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luKSA9IGlhX29yaWdpbjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYwppbmRleCBiMTk3ODZkLi41N2ZiOWJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCkBAIC0xMzUsNyArMTM1LDggQEAKICAgICBzdHJ1Y3QgaWZyZXEgICAqaWZycDsKICAgICBzdHJ1Y3Qgc29ja2FkZHIgc2F2ZV9hZGRyOwogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqIHNpOwotICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8gYWRkcl9pbmZvOworICAgIGluX2FkZHJfdCAgICAgICBpcHZhbDsKICAgICBfaW9jdGxfZXh0cmFzICAgICAgICAgICAqZXh0cmFzOwogCiAgICAgaWYgKChzZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKSkgPCAwKSB7CkBAIC0xNTQsOSArMTU1LDE4IEBACiAKICAgICBpZnJwID0gaWZjLmlmY19yZXE7CiAgICAgZm9yKGk9MDsgaSA8IGludGVyZmFjZXM7ICsraSwgKytpZnJwKSB7CisgICAgICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSwgKmJjYXN0ZW50cnkgPSBOVUxMOwogCiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICIgaW50ZXJmYWNlICVkLCAlc1xuIiwgaSwgaWZycC0+aWZyX25hbWUpKTsKKworICAgICAgICBpZiAoQUZfSU5FVCAhPSBpZnJwLT5pZnJfYWRkci5zYV9mYW1pbHkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nICVzOyBub24gQUZfSU5FVCBmYW1pbHkgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpZnJwLT5pZnJfbmFtZSwgaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9jcmVhdGUoKTsKQEAgLTE4MSw5ICsxOTEsOSBAQAogICAgICAgICAvKgogICAgICAgICAgKiBzZXQgaW5kZXhlcwogICAgICAgICAgKi8KLSAgICAgICAgbmV0c25tcF9hc3NlcnQoQUZfSU5FVCA9PSBpZnJwLT5pZnJfYWRkci5zYV9mYW1pbHkpOwogICAgICAgICBzaSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJmlmcnAtPmlmcl9hZGRyOwogICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPSBzaXplb2Yoc2ktPnNpbl9hZGRyLnNfYWRkcik7CisgICAgICAgIGlwdmFsID0gc2ktPnNpbl9hZGRyLnNfYWRkcjsKICAgICAgICAgbWVtY3B5KGVudHJ5LT5pYV9hZGRyZXNzLCAmc2ktPnNpbl9hZGRyLnNfYWRkciwKICAgICAgICAgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CiAKQEAgLTIyMCw2ICsyMzAsMjYgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qCisgICAgICAgICAqIGdldCBicm9hZGNhc3QKKyAgICAgICAgICovCisgICAgICAgIG1lbXNldCgmYWRkcl9pbmZvLCAwLCBzaXplb2Yoc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvKSk7CisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKyAgICAgICAgYWRkcl9pbmZvID0gbmV0c25tcF9hY2Nlc3Nfb3RoZXJfaW5mb19nZXQoZW50cnktPmlmX2luZGV4LCBBRl9JTkVUKTsKKyAgICAgICAgaWYoYWRkcl9pbmZvLmJjYXN0ZmxnKSB7CisgICAgICAgICAgIGJjYXN0ZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CisgICAgICAgICAgIGlmKE5VTEwgPT0gYmNhc3RlbnRyeSkgeworICAgICAgICAgICAgICByYyA9IC0zOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgfQorICAgICAgICAgICBiY2FzdGVudHJ5LT5pZl9pbmRleCA9IGVudHJ5LT5pZl9pbmRleDsKKyAgICAgICAgICAgYmNhc3RlbnRyeS0+bnNfaWFfaW5kZXggPSArK2lkeF9vZmZzZXQ7CisgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKGFkZHJfaW5mby5hZGRyKTsKKyAgICAgICAgICAgbWVtY3B5KGJjYXN0ZW50cnktPmlhX2FkZHJlc3MsICZhZGRyX2luZm8uYWRkciwKKyAgICAgICAgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgLyoKICAgICAgICAgICogZ2V0IG5ldG1hc2sKICAgICAgICAgICovCiAgICAgICAgIGlmcnAtPmlmcl9hZGRyID0gc2F2ZV9hZGRyOwpAQCAtMjMzLDYgKzI2Myw5IEBACiAgICAgICAgIHNpID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSAmaWZycC0+aWZyX2FkZHI7CiAgICAgICAgIGVudHJ5LT5pYV9wcmVmaXhfbGVuID0KICAgICAgICAgICAgIG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbihzaS0+c2luX2FkZHIuc19hZGRyKTsKKyAgICAgICAgaWYoYmNhc3RlbnRyeSkKKyAgICAgICAgICAgYmNhc3RlbnRyeS0+aWFfcHJlZml4X2xlbiA9IGVudHJ5LT5pYV9wcmVmaXhfbGVuOworCiAKICAgICAgICAgLyoKICAgICAgICAgICogZ2V0IGZsYWdzCkBAIC0yNDYsNyArMjc5LDEyIEBACiAgICAgICAgIH0KICAgICAgICAgZXh0cmFzLT5mbGFncyA9IGlmcnAtPmlmcl9mbGFnczsKIAotICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsgLyogYXNzdW1lIHVuaWNhc3Q/ICovCisgICAgICAgIGlmKGJjYXN0ZW50cnkpCisgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX0JST0FEQ0FTVDsKKyAgICAgICAgaWYoYWRkcl9pbmZvLmFueWNhc3RmbGcpCisgICAgICAgICAgIGVudHJ5LT5pYV90eXBlID0gSVBBRERSRVNTVFlQRV9BTllDQVNUOworICAgICAgICBlbHNlCisgICAgICAgICAgIGVudHJ5LT5pYV90eXBlID0gSVBBRERSRVNTVFlQRV9VTklDQVNUOwogCiAgICAgICAgIC8qKiBlbnRyeS0+aWFfcHJlZml4X29pZCA/ICovCiAKQEAgLTI1NiwxMiArMjk0LDIzIEBACiAgICAgICAgICAqICAgYWx3YXlzIHByZWZlcnJlZCgxKS4KICAgICAgICAgICovCiAgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7CisgICAgICAgIGlmKGJjYXN0ZW50cnkpCisgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX3N0YXR1cyA9IElQQUREUkVTU1NUQVRVU1RDX1BSRUZFUlJFRDsKIAogICAgICAgICAvKgogICAgICAgICAgKiBjYW4gd2UgZmlndXJlIG91dCBpZiBhbiBhZGRyZXNzIGlzIGZyb20gREhDUD8KICAgICAgICAgICogdXNlIG1hbnVhbCB1bnRpbCB0aGVuLi4uCiAgICAgICAgICAqLwotICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworICAgICAgICBpZihJU19BUElQQShpcHZhbCkpIHsKKyAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX1JBTkRPTTsKKyAgICAgICAgICAgaWYoYmNhc3RlbnRyeSkKKyAgICAgICAgICAgICAgYmNhc3RlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfUkFORE9NOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworICAgICAgICAgICBpZihiY2FzdGVudHJ5KQorICAgICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19NQU5VQUw7CisgICAgICAgIH0KIAogICAgICAgICBERUJVR0lGKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIpIHsKICAgICAgICAgICAgIERFQlVHTVNHVF9OQygoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwKQEAgLTI3OSw4ICszMjgsMTcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogYWRkIGVudHJ5IHRvIGNvbnRhaW5lcgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKQotICAgICAgICB7CisgICAgICAgIGlmKGJjYXN0ZW50cnkpeworICAgICAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBiY2FzdGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCJlcnJvciB3aXRoIGlwYWRkcmVzc19lbnRyeTogaW5zZXJ0IGJyb2FkY2FzdCBlbnRyeSBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoYmNhc3RlbnRyeSk7CisgICAgICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYmNhc3RlbnRyeSA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsImVycm9yIHdpdGggaXBhZGRyZXNzX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOwogICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0zNjgsMTAgKzQyNiwxMyBAQAogICAgICAgICBmb3Ioaz0wO2s8ajsrK2spCiAgICAgICAgICAgICBpZiAoYWxpYXNfbGlzdFtrXSA9PSBpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoayA9PSBqKQorICAgICAgICBpZiAoayA9PSBqKSB7CisgICAgICAgICAgICBmcmVlKGFsaWFzX2xpc3QpOwogICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KICAgICB9CiAKKyAgICBmcmVlKGFsaWFzX2xpc3QpOwogICAgIHJldHVybiBpbnRlcmZhY2VzICsgMTsKIH0KIApAQCAtNTkxLDQgKzY1MiwzIEBACiAgICAgaWYodW5rbm93bikKICAgICAgICAgREVCVUdNU0dUX05DKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCIgIHVua25vd24gMHgleFxuIiwgdW5rbm93bikpOwogfQotCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgKaW5kZXggYTdhMGVhMi4uZmM2ZTc3MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaApAQCAtMiw2ICsyLDE3IEBACiBleHRlcm4gICAgICAgICAgIkMiIHsKICNlbmRpZgogCisvKgorICogc3RydWN0IGZvciBuZXRsaW5rIGV4dHJhcworICovCitzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8geworICAgIGludCBiY2FzdGZsZzsKKyAgICBpbnQgYW55Y2FzdGZsZzsKKyAgICBpbl9hZGRyX3QgYWRkcjsKK307CisgCisjZGVmaW5lIElTX0FQSVBBKGEpICAoKChpbl9hZGRyX3QpKGEgPDwgMTYpKSA9PSAweEZFQTkwMDAwKQorCiBpbnQKIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19jb250YWluZXJfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWR4X29mZnNldCk7CkBAIC0xMyw2ICsyNCw4IEBACiBpbnQKIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19pb2N0bF9nZXRfaW50ZXJmYWNlX2NvdW50KGludCBzZCwgc3RydWN0IGlmY29uZiAqIGlmYyk7CiAKK3N0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbworbmV0c25tcF9hY2Nlc3Nfb3RoZXJfaW5mb19nZXQoaW50IGluZGV4LCBpbnQgZmFtaWx5KTsKIAogLyoKICAqIHN0cnVjdCBpb2N0bCBmb3IgYXJjaF9kYXRhCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMKaW5kZXggZTc4YzhiZC4uOGIzNGU4NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYwpAQCAtMTIsNiArMTIsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oPgogCiAjaW5jbHVkZSAiaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaCIKKyNpbmNsdWRlICJtaWJncm91cC91dGlsX2Z1bmNzLmgiCiAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgpAQCAtMTksMTIgKzIxLDI3IEBACiAjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9SVE5FVExJTktfSCkKKyNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CiAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjaWZkZWYgUlRNR1JQX0lQVjZfUFJFRklYCisjZGVmaW5lIFNVUFBPUlRfUFJFRklYX0ZMQUdTIDEKKyNlbmRpZiAvKiBSVE1HUlBfSVBWNl9QUkVGSVggKi8KKyNlbmRpZiAvKiBIQVZFX0xJTlVYX1JUTkVUTElOS19IICovCiAjZW5kaWYKIAogI2luY2x1ZGUgImlwYWRkcmVzc19pb2N0bC5oIgotCisjaWZkZWYgU1VQUE9SVF9QUkVGSVhfRkxBR1MKK2V4dGVybiBwcmVmaXhfY2J4ICpwcmVmaXhfaGVhZF9saXN0OworI2VuZGlmCiBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOworI2lmZGVmIEhBVkVfTElOVVhfUlRORVRMSU5LX0gKK2ludAorbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2V4dHJhX3ByZWZpeF9pbmZvKGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKnByZWZlcmVkbHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmcgKnZhbGlkbHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcik7CisjZW5kaWYKIAogLyoKICAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCkBAIC0xNzksNiArMTk2LDEyIEBACiBpbnQKIF9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQogeworI2lmbmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGdldCBpcCBhZGRyZXNzIGluZm9ybWF0aW9uIgorICAgICAgICAgICAgICAgICJhcyBuZXRsaW5rIHNvY2tldCBpcyBub3QgYXZhaWxhYmxlXG4iKSk7CisgICAgcmV0dXJuIC0xOworI2Vsc2UKICAgICBGSUxFICAgICAgICAgICAqaW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbODBdLCBhZGRyWzQwXTsKICAgICBjaGFyICAgICAgICAgICAgaWZfbmFtZVtJRk5BTVNJWisxXTsvKiArMSBmb3IgJ1wwJyBiZWNhdXNlIG9mIHRoZSB1Z2x5IHNzY2FuZiBiZWxvdyAqLyAKQEAgLTE4NywyNCArMjEwLDE1IEBACiAgICAgc2l6ZV90ICAgICAgICAgIGluX2xlbiwgb3V0X2xlbjsKICAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnk7CiAgICAgX2lvY3RsX2V4dHJhcyAgICAgICAgICAgKmV4dHJhczsKLSAgICBzdGF0aWMgaW50ICAgICAgbG9nX29wZW5fZXJyID0gMTsKKyAgICBzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8gYWRkcl9pbmZvOwogICAgIAogICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKIAogI2RlZmluZSBQUk9DRklMRSAiL3Byb2MvbmV0L2lmX2luZXQ2IgogICAgIGlmICghKGluID0gZm9wZW4oUFJPQ0ZJTEUsICJyIikpKSB7Ci0gICAgICAgIGlmICgxID09IGxvZ19vcGVuX2VycikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKLSAgICAgICAgICAgIGxvZ19vcGVuX2VyciA9IDA7Ci0gICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0gICAgLyoKLSAgICAgKiBpZiB3ZSBoYWRuJ3QgYmVlbiBhYmxlIHRvIG9wZW4gZmlsZSBhbmQgdHVybmVkIG9mIGVyciBsb2dnaW5nLAotICAgICAqIHR1cm4gaXQgYmFjayBvbiBub3cgdGhhdCB3ZSBvcGVuZWQgdGhlIGZpbGUuCi0gICAgICovCi0gICAgaWYgKDAgPT0gbG9nX29wZW5fZXJyKQotICAgICAgICBsb2dfb3Blbl9lcnIgPSAxOwogCiAgICAgLyoKICAgICAgKiBhZGRyZXNzIGluZGV4IHByZWZpeF9sZW4gc2NvcGUgc3RhdHVzIGlmX25hbWUKQEAgLTI0MSw2ICsyNTUsNyBAQAogICAgICAgICBpbl9sZW4gPSBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPSBzaXplb2YoZW50cnktPmlhX2FkZHJlc3MpOwogICAgICAgICBuZXRzbm1wX2Fzc2VydCgxNiA9PSBpbl9sZW4pOwogICAgICAgICBvdXRfbGVuID0gMDsKKyAgICAgICAgZW50cnktPmZsYWdzID0gZmxhZ3M7CiAgICAgICAgIGJ1ZiA9IGVudHJ5LT5pYV9hZGRyZXNzOwogICAgICAgICBpZigxICE9IG5ldHNubXBfaGV4X3RvX2JpbmFyeSgmYnVmLCAmaW5fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0X2xlbiwgMCwgYWRkciwgIjoiKSkgewpAQCAtMjY4LDYgKzI4Myw4IEBACiAgICAgICAgICAqIGV2ZXJ5IHRpbWUgaXQgaXMgY2FsbGVkLgogICAgICAgICAgKi8KICAgICAgICAgZW50cnktPmlmX2luZGV4ID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2luZGV4X2ZpbmQoaWZfbmFtZSk7CisgICAgICAgIG1lbXNldCgmYWRkcl9pbmZvLCAwLCBzaXplb2Yoc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvKSk7CisgICAgICAgIGFkZHJfaW5mbyA9IG5ldHNubXBfYWNjZXNzX290aGVyX2luZm9fZ2V0KGVudHJ5LT5pZl9pbmRleCwgQUZfSU5FVDYpOwogCiAgICAgICAgIC8qCiAgICAgICAgICAgI2RlZmluZSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQgIDEKQEAgLTI3OCw4ICsyOTUsMTIgQEAKICAgICAgICAgICAjZGVmaW5lIElQQUREUkVTU1NUQVRVU1RDX1RFTlRBVElWRSAgNgogICAgICAgICAgICNkZWZpbmUgSVBBRERSRVNTU1RBVFVTVENfRFVQTElDQVRFICA3CiAgICAgICAgICovCi0gICAgICAgIGlmKGZsYWdzICYgSUZBX0ZfUEVSTUFORU5UKQorICAgICAgICBpZigoZmxhZ3MgJiBJRkFfRl9QRVJNQU5FTlQpIHx8ICghZmxhZ3MpKQogICAgICAgICAgICAgZW50cnktPmlhX3N0YXR1cyA9IElQQUREUkVTU1NUQVRVU1RDX1BSRUZFUlJFRDsgLyogPz8gKi8KKyNpZmRlZiBJRkFfRl9URU1QT1JBUlkKKyAgICAgICAgZWxzZSBpZihmbGFncyAmIElGQV9GX1RFTVBPUkFSWSkKKyAgICAgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7IC8qID8/ICovCisjZW5kaWYKICAgICAgICAgZWxzZSBpZihmbGFncyAmIElGQV9GX0RFUFJFQ0FURUQpCiAgICAgICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfREVQUkVDQVRFRDsKICAgICAgICAgZWxzZSBpZihmbGFncyAmIElGQV9GX1RFTlRBVElWRSkKQEAgLTI5NCw3ICszMTUsNyBAQAogICAgICAgICAgKiBpZiBpdCdzIG5vdCBtdWx0aSwgaXQgbXVzdCBiZSB1bmkuCiAgICAgICAgICAqICAoYW4gaXB2NiBhZGRyZXNzIGlzIG5ldmVyIGJyb2FkY2FzdCkKICAgICAgICAgICovCi0gICAgICAgIGlmIChJTjZfSVNfQUREUl9NVUxUSUNBU1QoZW50cnktPmlhX2FkZHJlc3MpKQorICAgICAgICBpZihhZGRyX2luZm8uYW55Y2FzdGZsZykKICAgICAgICAgICAgIGVudHJ5LT5pYV90eXBlID0gSVBBRERSRVNTVFlQRV9BTllDQVNUOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsKQEAgLTMxNCwxMyArMzM1LDQ4IEBACiAgICAgICAgICAqCiAgICAgICAgICAqIGFyZSAnbG9jYWwnIGFkZHJlc3MgYXNzaWduZWQgYnkgbGluayBsYXllcj8/CiAgICAgICAgICAqLwotICAgICAgICBpZiAoSU42X0lTX0FERFJfTElOS0xPQ0FMKGVudHJ5LT5pYV9hZGRyZXNzKSB8fAotICAgICAgICAgICAgSU42X0lTX0FERFJfU0lURUxPQ0FMKGVudHJ5LT5pYV9hZGRyZXNzKSkKLSAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19MSU5LTEFZRVI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19NQU5VQUw7CisgICAgICAgICBpZiAoIWZsYWdzKQorICAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19MSU5LTEFZRVI7CisjaWZkZWYgSUZBX0ZfVEVNUE9SQVJZCisgICAgICAgICBlbHNlIGlmIChmbGFncyAmIElGQV9GX1RFTVBPUkFSWSkKKyAgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfUkFORE9NOworI2VuZGlmCisgICAgICAgICBlbHNlIGlmIChJTjZfSVNfQUREUl9MSU5LTE9DQUwoZW50cnktPmlhX2FkZHJlc3MpKQorICAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19MSU5LTEFZRVI7CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKworICAgICAgICAgaWYoZW50cnktPmlhX29yaWdpbiA9PSBJUEFERFJFU1NPUklHSU5UQ19MSU5LTEFZRVIpCisgICAgICAgICAgICBlbnRyeS0+aWFfc3RvcmFnZXR5cGUgPSBTVE9SQUdFVFlQRV9QRVJNQU5FTlQ7CiAKICAgICAgICAgLyogeHh4LXJrczogd2hhdCBjYW4gd2UgZG8gd2l0aCBzY29wZT8gKi8KKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisgICAgICAgIGlmKG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19leHRyYV9wcmVmaXhfaW5mbyhlbnRyeS0+aWZfaW5kZXgsICZlbnRyeS0+aWFfcHJlZmVyZWRfbGlmZXRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmZW50cnktPmlhX3ZhbGlkX2xpZmV0aW1lLCBhZGRyKSA8IDApeworICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAidW5hYmxlIHRvIGZldGNoIGV4dHJhIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGVudHJ5LT5pYV9wcmVmZXJlZF9saWZldGltZSA9IDA7CisgICAgICAgIGVudHJ5LT5pYV92YWxpZF9saWZldGltZSA9IDA7CisjZW5kaWYKKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUworICAgICAgICB7CisgICAgICAgIHByZWZpeF9jYnggICAgICBwcmVmaXhfdmFsOworICAgICAgICBtZW1zZXQoJnByZWZpeF92YWwsIDAsIHNpemVvZihwcmVmaXhfY2J4KSk7CisgICAgICAgIGlmKG5ldF9zbm1wX2ZpbmRfcHJlZml4X2luZm8oJnByZWZpeF9oZWFkX2xpc3QsIGFkZHIsICZwcmVmaXhfdmFsKSA8IDApIHsKKyAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgInVuYWJsZSB0byBmaW5kIGluZm9cbiIpKTsKKyAgICAgICAgICAgZW50cnktPmlhX29ubGlua19mbGFnID0gMTsgIC8qU2V0IGJ5IGRlZmF1bHQgYXMgdHJ1ZSovCisgICAgICAgICAgIGVudHJ5LT5pYV9hdXRvbm9tb3VzX2ZsYWcgPSAyOyAvKlNldCBieSBkZWZhdWx0IGFzIGZhbHNlKi8KKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICBlbnRyeS0+aWFfb25saW5rX2ZsYWcgPSBwcmVmaXhfdmFsLmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWc7IAorICAgICAgICAgICBlbnRyeS0+aWFfYXV0b25vbW91c19mbGFnID0gcHJlZml4X3ZhbC5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZzsKKyAgICAgICAgfQorICAgICAgICB9CisjZWxzZQorICAgICAgICBlbnRyeS0+aWFfb25saW5rX2ZsYWcgPSAxOyAgLypTZXQgYnkgZGVmYXVsdCBhcyB0cnVlKi8KKyAgICAgICAgZW50cnktPmlhX2F1dG9ub21vdXNfZmxhZyA9IDI7IC8qU2V0IGJ5IGRlZmF1bHQgYXMgZmFsc2UqLworI2VuZGlmCiAKICAgICAgICAgLyoKICAgICAgICAgICogYWRkIGVudHJ5IHRvIGNvbnRhaW5lcgpAQCAtMzM5LDQgKzM5NSwxOTAgQEAKIAogICAgIHJldHVybiBpZHhfb2Zmc2V0OwogfQorCitzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8KK25ldHNubXBfYWNjZXNzX290aGVyX2luZm9fZ2V0KGludCBpbmRleCwgaW50IGZhbWlseSkKK3sKKyAgIHN0cnVjdCB7CisgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciBuOworICAgICAgICAgICBzdHJ1Y3QgaWZhZGRybXNnIHI7CisgICAgICAgICAgIGNoYXIgICBidWZbMTAyNF07CisgICB9IHJlcTsKKyAgIHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbyBhZGRyOworICAgc3RydWN0IHJ0YXR0ciAgICAqcnRhOworICAgaW50ICAgIHN0YXR1czsKKyAgIGNoYXIgICBidWZbMTYzODRdOworICAgc3RydWN0IG5sbXNnaGRyICAqbmxtcDsKKyAgIHN0cnVjdCBpZmFkZHJtc2cgKnJ0bXA7CisgICBzdHJ1Y3QgcnRhdHRyICAgICpydGF0cDsKKyAgIGludCAgICBydGF0dHJsZW47CisgICBpbnQgICAgc2Q7CisKKyAgIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbykpOworICAgc2QgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSk7CisgICBpZihzZCA8IDApIHsKKyAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3Qgb3BlbiBuZXRsaW5rIHNvY2tldFxuIik7CisgICAgICByZXR1cm4gYWRkcjsKKyAgIH0KKworICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgIHJlcS5uLm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSChzaXplb2Yoc3RydWN0IGlmYWRkcm1zZykpOworICAgcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgTkxNX0ZfUk9PVDsKKyAgIHJlcS5uLm5sbXNnX3R5cGUgPSBSVE1fR0VUQUREUjsKKyAgIHJlcS5yLmlmYV9mYW1pbHkgPSBmYW1pbHk7CisgICBydGEgPSAoc3RydWN0IHJ0YXR0ciAqKSgoKGNoYXIgKikmcmVxKSArIE5MTVNHX0FMSUdOKHJlcS5uLm5sbXNnX2xlbikpOworICAgaWYoZmFtaWx5ID09IEFGX0lORVQpCisgICAgICBydGEtPnJ0YV9sZW4gPSBSVEFfTEVOR1RIKDQpOworICAgZWxzZQorICAgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7CisKKyAgICBzdGF0dXMgPSBzZW5kKHNkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3Qgc2VuZCBuZXRsaW5rIHJlcXVlc3RcbiIpOworICAgICAgICByZXR1cm4gYWRkcjsKKyAgICB9CisKKyAgICBzdGF0dXMgPSByZWN2KHNkLCBidWYsIHNpemVvZihidWYpLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImNvdWxkIG5vdCByZWNpZXZlIG5ldGxpbmsgcmVxdWVzdFxuIik7CisgICAgICAgIHJldHVybiBhZGRyOworICAgIH0KKworICAgIGlmKHN0YXR1cyA9PSAwKSB7CisgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJub3RoaW5nIHRvIHJlYWRcbiIpOworICAgICAgIHJldHVybiBhZGRyOworICAgIH0KKworICAgIGZvcihubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1Zjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTspIHsKKyAgICAgICAgaW50IGxlbiA9IG5sbXAtPm5sbXNnX2xlbjsKKyAgICAgICAgaW50IHJlcV9sZW4gPSBsZW4gLSBzaXplb2YoKm5sbXApOworCisgICAgICAgIGlmIChyZXFfbGVuIDwgMCB8fCBsZW4gPiBzdGF0dXMpIHsKKyAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiaW52YWxpZCBuZXRsaW5rIG1lc3NhZ2VcbiIpOworICAgICAgICAgICAgcmV0dXJuIGFkZHI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIU5MTVNHX09LKG5sbXAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiaW52YWxpZCBOTE1TRyBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRyOworICAgICAgICB9CisgICAgICAgIHJ0bXAgPSAoc3RydWN0IGlmYWRkcm1zZyAqKU5MTVNHX0RBVEEobmxtcCk7CisgICAgICAgIHJ0YXRwID0gKHN0cnVjdCBydGF0dHIgKilJRkFfUlRBKHJ0bXApOworICAgICAgICBydGF0dHJsZW4gPSBJRkFfUEFZTE9BRChubG1wKTsKKyAgICAgICAgaWYoaW5kZXggPT0gcnRtcC0+aWZhX2luZGV4KXsKKyAgICAgICAgICAgZm9yICg7IFJUQV9PSyhydGF0cCwgcnRhdHRybGVuKTsgcnRhdHAgPSBSVEFfTkVYVChydGF0cCwgcnRhdHRybGVuKSkgeworICAgICAgICAgICAgICAgIGlmKHJ0YXRwLT5ydGFfdHlwZSA9PSBJRkFfQlJPQURDQVNUKXsKKyAgICAgICAgICAgICAgICAgICBhZGRyLmFkZHIgPSAoKHN0cnVjdCBpbl9hZGRyICopUlRBX0RBVEEocnRhdHApKS0+c19hZGRyOworICAgICAgICAgICAgICAgICAgIGFkZHIuYmNhc3RmbGcgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihydGF0cC0+cnRhX3R5cGUgPT0gSUZBX0FOWUNBU1QpeworICAgICAgICAgICAgICAgICAgIGFkZHIuYWRkciA9ICgoc3RydWN0IGluX2FkZHIgKilSVEFfREFUQShydGF0cCkpLT5zX2FkZHI7CisgICAgICAgICAgICAgICAgICAgYWRkci5hbnljYXN0ZmxnID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOworICAgIH0KKyAgICBjbG9zZShzZCk7CisgICAgcmV0dXJuIGFkZHI7CiAjZW5kaWYKK30KKworI2lmZGVmIEhBVkVfTElOVVhfUlRORVRMSU5LX0gKK2ludAorbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2V4dHJhX3ByZWZpeF9pbmZvKGludCBpbmRleCwgdV9sb25nICpwcmVmZXJlZGx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nICp2YWxpZGx0LCBjaGFyICphZGRyKQoreworCisgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciBubGhkcjsKKyAgICAgICAgICAgIHN0cnVjdCBpZmFkZHJtc2cgaWZhY2VpbmZvOworICAgICAgICAgICAgY2hhciAgIGJ1ZlsxMDI0XTsKKyAgICB9IHJlcTsKKworICAgIHN0cnVjdCBydGF0dHIgICAgICAgICpydGE7CisgICAgaW50ICAgICAgICAgICAgICAgICAgc3RhdHVzOworICAgIGNoYXIgICAgICAgICAgICAgICAgIGJ1ZlsxNjM4NF07CisgICAgY2hhciAgICAgICAgICAgICAgICAgdG1wYWRkcls0MF07CisgICAgc3RydWN0IG5sbXNnaGRyICAgICAgKm5sbXA7CisgICAgc3RydWN0IGlmYWRkcm1zZyAgICAgKnJ0bXA7CisgICAgc3RydWN0IHJ0YXR0ciAgICAgICAgKnJ0YXRwOworICAgIHN0cnVjdCBpZmFfY2FjaGVpbmZvICpjYWNoZV9pbmZvOworICAgIHN0cnVjdCBpbjZfYWRkciAgICAgICppbjZwOworICAgIGludCAgICAgICAgICAgICAgICAgIHJ0YXR0cmxlbjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBzZDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICByZXFhZGRyID0gMDsKKyAgICBzZCA9IHNvY2tldChQRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKTsKKyAgICBpZihzZCA8IDApIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IG9wZW4gbmV0bGluayBzb2NrZXRcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgICByZXEubmxoZHIubmxtc2dfbGVuID0gTkxNU0dfTEVOR1RIKHNpemVvZihzdHJ1Y3QgaWZhZGRybXNnKSk7CisgICAgcmVxLm5saGRyLm5sbXNnX2ZsYWdzID0gTkxNX0ZfUkVRVUVTVCB8IE5MTV9GX1JPT1Q7CisgICAgcmVxLm5saGRyLm5sbXNnX3R5cGUgPSBSVE1fR0VUQUREUjsKKyAgICByZXEuaWZhY2VpbmZvLmlmYV9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICBydGEgPSAoc3RydWN0IHJ0YXR0ciAqKSgoKGNoYXIgKikmcmVxKSArIE5MTVNHX0FMSUdOKHJlcS5ubGhkci5ubG1zZ19sZW4pKTsKKyAgICBydGEtPnJ0YV9sZW4gPSBSVEFfTEVOR1RIKDE2KTsgLypGb3IgaXB2NiovCisKKyAgICBzdGF0dXMgPSBzZW5kIChzZCwgJnJlcSwgcmVxLm5saGRyLm5sbXNnX2xlbiwgMCk7CisgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBzZW5kIG5ldGxpbmsgcmVxdWVzdFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgc3RhdHVzID0gcmVjdiAoc2QsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIDApOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiY291bGQgbm90IHJlY2lldmUgbmV0bGluayByZXF1ZXN0XG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc3RhdHVzID09IDApIHsKKyAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgIm5vdGhpbmcgdG8gcmVhZFxuIik7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmb3IgKG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyICopYnVmOyBzdGF0dXMgPiBzaXplb2YoKm5sbXApOyApeworCisgICAgICAgIGludCBsZW4gPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgIGludCByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKworICAgICAgICBpZiAocmVxX2xlbiA8IDAgfHwgbGVuID4gc3RhdHVzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgbmV0bGluayBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghTkxNU0dfT0sgKG5sbXAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiaW52YWxpZCBOTE1TRyBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBydG1wID0gKHN0cnVjdCBpZmFkZHJtc2cgKilOTE1TR19EQVRBKG5sbXApOworICAgICAgICBydGF0cCA9IChzdHJ1Y3QgcnRhdHRyICopSUZBX1JUQShydG1wKTsKKyAgICAgICAgcnRhdHRybGVuID0gSUZBX1BBWUxPQUQobmxtcCk7CisgICAgICAgIGlmKGluZGV4ID09IHJ0bXAtPmlmYV9pbmRleCkgeworICAgICAgICAgICBmb3IgKDsgUlRBX09LKHJ0YXRwLCBydGF0dHJsZW4pOyBydGF0cCA9IFJUQV9ORVhUKHJ0YXRwLCBydGF0dHJsZW4pKSB7CisgICAgICAgICAgICAgICAgaWYocnRhdHAtPnJ0YV90eXBlID09IElGQV9BRERSRVNTKSB7CisgICAgICAgICAgICAgICAgICAgaW42cCA9IChzdHJ1Y3QgaW42X2FkZHIgKilSVEFfREFUQShydGF0cCk7CisgICAgICAgICAgICAgICAgICAgc3ByaW50Zih0bXBhZGRyLCAiJTA0eCUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCUwNHgiLCBOSVA2KCppbjZwKSk7CisgICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcCh0bXBhZGRyICxhZGRyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxYWRkciA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKHJ0YXRwLT5ydGFfdHlwZSA9PSBJRkFfQ0FDSEVJTkZPKSB7CisgICAgICAgICAgICAgICAgICAgY2FjaGVfaW5mbyA9IChzdHJ1Y3QgaWZhX2NhY2hlaW5mbyAqKVJUQV9EQVRBKHJ0YXRwKTsKKyAgICAgICAgICAgICAgICAgICBpZihyZXFhZGRyKSB7CisgICAgICAgICAgICAgICAgICAgICAgcmVxYWRkciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgKnZhbGlkbHQgPSBjYWNoZV9pbmZvLT5pZmFfdmFsaWQ7CisgICAgICAgICAgICAgICAgICAgICAgKnByZWZlcmVkbHQgPSBjYWNoZV9pbmZvLT5pZmFfcHJlZmVyZWQ7CisgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOworICAgIH0KKyAgICBjbG9zZShzZCk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJkOGUwYgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYwpAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqICBJUC1NSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKworI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaCIKKworI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKKworc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjaWYgZGVmaW5lZCggTkVUU05NUF9FTkFCTEVfSVBWNiApCitzdGF0aWMgaW50IF9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKKyNlbmRpZgorCisvKgorICogaW5pdGlhbGl6ZSBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqCisgKiBAcmV0dmFsICAwOiBzdWNjZXNzCisgKiBAcmV0dmFsIDwwOiBlcnJvcgorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfZW50cnlfaW5pdChuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaW5pdF9rZXJuZWxfc3Vub3M1KCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBjbGVhbnVwIGFyY2ggc3BlY2lmaWMgc3RvcmFnZQorICovCit2b2lkCituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2NsZWFudXAobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIC8qCisgICAgICogTm90aGluZyB0byBkby4KKyAgICAgKi8KK30KKworLyoKKyAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jb3B5KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKnJocykKK3sKKyAgICAvKgorICAgICAqIE5vdGhpbmcgdG8gZG8uIAorICAgICAqLworICAgIHJldHVybiAwOworfQorCisvKgorICogY3JlYXRlIGEgbmV3IGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19jcmVhdGUobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOmNyZWF0ZSIsICJub3QgYXBwbGljYWJsZVxuIikpOworICAgICAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIGRlbGV0ZSBhbiBlbnRyeQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfZGVsZXRlKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAibm90IGFwcGxpY2FibGVcbiIpKTsKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYyA9IDAsIGlkeF9vZmZzZXQgPSAwOworCisgICAgaWYgKCEobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX0lQQUREUkVTU19MT0FEX0lQVjZfT05MWSkpIHsKKyAgICAgICAgcmMgPSBfbG9hZF92NChjb250YWluZXIsIGlkeF9vZmZzZXQpOworICAgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfSVBBRERSRVNTX0ZSRUVfS0VFUF9DT05UQUlORVI7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLCBmbGFncyk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKKworICAgIGlmICghKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfTE9BRF9JUFY0X09OTFkpKSB7CisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICByYyA9IDA7CisKKyAgICAgICAgaWR4X29mZnNldCA9IHJjOworCisgICAgICAgIHJjID0gX2xvYWRfdjYoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKKyAgICAgICAgaWYocmMgPCAwKSB7CisgICAgICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX0lQQUREUkVTU19GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICAvKgorICAgICAqIHJldHVybiBubyBlcnJvcnMgKDApIGlmIHdlIGZvdW5kIGFueSBpbnRlcmZhY2VzCisgICAgICovCisgICAgaWYocmMgPiAwKQorICAgICAgICByYyA9IDA7CisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogQHJldHZhbCA+PWlkeF9vZmZzZXQgb2sKKyAqIEByZXR2YWwgLTEgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IKKyAqIEByZXR2YWwgLTIgaW50ZXJmYWNlIGxvb2t1cCBlcnJvcgorICogQHJldHZhbCAtMyBjb250YWluZXIgZXJyb3IKKyAqLworc3RhdGljIGludAorX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCit7CisgICAgbWliMl9pcEFkZHJFbnRyeV90ICAgICAgaXBhZTsKKyAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnk7CisgICAgcmVxX2UgICAgICAgICAgICAgICAgICAgcmVxID0gR0VUX0ZJUlNUOworICAgIGludCAgICAgICAgICAgICAgICAgICAgIHJjID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJsb2FkaW5nIHY0XG4iKSk7CisgICAgd2hpbGUgKChyYyA9IGdldE1pYnN0YXQoTUlCX0lQX0FERFIsICZpcGFlLCBzaXplb2YoaXBhZSksIHJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR2V0X2V2ZXJ5dGhpbmcsIE5VTEwpKSA9PSAwKSB7CisgICAgICAgIHJlcSA9IEdFVF9ORVhUOworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKGVudHJ5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKC0xKTsgICAgCisgICAgICAgIGlmIChpcGFlLmlwQWRFbnRBZGRyID09IElOQUREUl9BTlkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpcGFlLmlwQWRFbnRJZkluZGV4Lm9fYnl0ZXNbaXBhZS5pcEFkRW50SWZJbmRleC5vX2xlbmd0aF0gPSAnXDAnOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAiZm91bmQgaWYgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwYWUuaXBBZEVudElmSW5kZXgub19ieXRlcykpOworICAgICAgICAvKiBPYnRhaW4gaW50ZXJmYWNlIGluZGV4ICovCisgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IAorICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2luZGV4X2ZpbmQoaXBhZS5pcEFkRW50SWZJbmRleC5vX2J5dGVzKTsKKyAgICAgICAgaWYgKGVudHJ5LT5pZl9pbmRleCA9PSAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAiY2Fubm90IGZpbmQgaWYgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpcGFlLmlwQWRFbnRJZkluZGV4KSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICByZXR1cm4gKC0yKTsgICAgCisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RyY2hyKChjb25zdCBjaGFyICopJmlwYWUuaXBBZEVudElmSW5kZXgub19ieXRlcywgJzonKSAhPSAwKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfQUNDRVNTX0lQQUREUkVTU19JU0FMSUFTOworCisgICAgICAgIC8qIEdldCB0aGUgYWRkcmVzcyAqLworICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPSBzaXplb2YoaXBhZS5pcEFkRW50QWRkcik7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9PSA0ICYmCisgICAgICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPD0gc2l6ZW9mKGVudHJ5LT5pYV9hZGRyZXNzKSk7CisgICAgICAgIG1lbWNweSgmZW50cnktPmlhX2FkZHJlc3MsICZpcGFlLmlwQWRFbnRBZGRyLCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOworCisgICAgICAgIC8qIHByZWZpeCAqLworICAgICAgICBlbnRyeS0+aWFfcHJlZml4X2xlbiA9IGlwYWUuaXBBZEVudEluZm8uYWVfc3VibmV0X2xlbjsKKworICAgICAgICAvKiBzZXQgdGhlIE9yaWdpbiAqLworICAgICAgICBpZiAoaXBhZS5pcEFkRW50SW5mby5hZV9mbGFncyAmIElGRl9ESENQUlVOTklORykKKyAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19ESENQOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworCisgICAgICAgIC8qIHNldCBpcHY0IGNvbnN0YW50cyAqLworICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsKKyAgICAgICAgZW50cnktPmlhX3N0YXR1cyA9IElQQUREUkVTU1NUQVRVU1RDX1BSRUZFUlJFRDsKKworICAgICAgICBlbnRyeS0+bnNfaWFfaW5kZXggPSArK2lkeF9vZmZzZXQ7CisKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImluc2VydCBpZiAlIiBORVRTTk1QX1BSSW8gInUsIGFkZHJsZW4gJWRcbiIsIAorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWZfaW5kZXgsIGVudHJ5LT5pYV9hZGRyZXNzX2xlbikpOworCisgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgInVuYWJsZSB0byBpbnNlcnQgJXNcbiIsIAorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZS5pcEFkRW50SWZJbmRleC5vX2J5dGVzKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICByZXR1cm4gKC0zKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKGlkeF9vZmZzZXQpOworfQorCisvKgorICogQHJldHZhbCA+PWlkeF9vZmZzZXQgb2sKKyAqIEByZXR2YWwgLTEgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IKKyAqIEByZXR2YWwgLTIgaW50ZXJmYWNlIGxvb2t1cCBlcnJvcgorICogQHJldHZhbCAtMyBjb250YWluZXIgZXJyb3IKKyAqLworI2lmIGRlZmluZWQoIE5FVFNOTVBfRU5BQkxFX0lQVjYgKQorc3RhdGljIGludAorX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCit7CisgICAgbWliMl9pcHY2QWRkckVudHJ5X3QgICAgaXA2YWU7CisgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5OworICAgIHJlcV9lICAgICAgICAgICAgICAgICAgIHJlcSA9IEdFVF9GSVJTVDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAibG9hZGluZyB2Ni4uLiBjYWNoZSAlZFxuIiwKKyAgICAgICAgICAgICAgICBNSUJfSVA2X0FERFIpKTsKKyAgICB3aGlsZSAoKHJjID0gZ2V0TWlic3RhdChNSUJfSVA2X0FERFIsICZpcDZhZSwgc2l6ZW9mKGlwNmFlKSwgcmVxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZHZXRfZXZlcnl0aGluZywgTlVMTCkpID09IDApIHsKKyAgICAgICAgcmVxID0gR0VUX05FWFQ7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAoLTEpOyAgICAKKyAgICAgICAgaWYgKG1lbWNtcCgoY29uc3Qgdm9pZCAqKSZpcDZhZS5pcHY2QWRkckFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikmaW42YWRkcl9hbnksCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChpcDZhZS5pcHY2QWRkckFkZHJlc3MpKSA9PSAwKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaXA2YWUuaXB2NkFkZHJJZkluZGV4Lm9fYnl0ZXNbaXA2YWUuaXB2NkFkZHJJZkluZGV4Lm9fbGVuZ3RoXSA9ICdcMCc7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJmb3VuZCBpZiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXA2YWUuaXB2NkFkZHJJZkluZGV4Lm9fYnl0ZXMpKTsKKworICAgICAgICAvKiBPYnRhaW4gaW50ZXJmYWNlIGluZGV4ICovCisgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IAorICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2luZGV4X2ZpbmQoCisgICAgICAgICAgICBpcDZhZS5pcHY2QWRkcklmSW5kZXgub19ieXRlcyk7CisgICAgICAgIGlmIChlbnRyeS0+aWZfaW5kZXggPT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImNhbm5vdCBmaW5kIGlmICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICByZXR1cm4gKC0yKTsgICAgCisgICAgICAgIH0KKworICAgICAgICAvKiBHZXQgdGhlIGFkZHJlc3MgKi8KKyAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKGlwNmFlLmlwdjZBZGRyQWRkcmVzcyk7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9PSAxNiAmJgorICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPD0gc2l6ZW9mKGVudHJ5LT5pYV9hZGRyZXNzKSk7CisgICAgICAgIG1lbWNweSgmZW50cnktPmlhX2FkZHJlc3MsICZpcDZhZS5pcHY2QWRkckFkZHJlc3MsIAorICAgICAgICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKyAgICAgICAgICAgICAgIAorICAgICAgICAvKiBwcmVmaXggKi8KKyAgICAgICAgZW50cnktPmlhX3ByZWZpeF9sZW4gPSBpcDZhZS5pcHY2QWRkclBmeExlbmd0aDsKKworICAgICAgICAvKiB0eXBlIGlzIGFueWNhc3Q/IChtaWIyLmg6IDEgPSB5ZXMsIDIgPSBubykgKi8KKyAgICAgICAgZW50cnktPmlhX3R5cGUgPSAoaXA2YWUuaXB2NkFkZHJBbnljYXN0RmxhZyA9PSAxKSA/IAorICAgICAgICAgICAgSVBBRERSRVNTVFlQRV9BTllDQVNUIDogSVBBRERSRVNTVFlQRV9VTklDQVNUOworCisgICAgICAgIC8qIG9yaWdpbiAobWliMi5oOiAxID0gc3RhdGVsZXNzLCAyID0gc3RhdGVmdWwsIDMgPSB1bmtub3duKSAqLworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAib3JpZ2luICVkXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwNmFlLmlwdjZBZGRyVHlwZSkpOworICAgICAgICBpZiAoaXA2YWUuaXB2NkFkZHJUeXBlID09IDEpCisgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOworICAgICAgICBlbHNlIGlmIChpcDZhZS5pcHY2QWRkckluZm8uYWVfZmxhZ3MgJiBJRkZfREhDUFJVTk5JTkcpCisgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfREhDUDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKyAgICAgICAgCisgICAgICAgIC8qIHN0YXR1cyAqLworICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gaXA2YWUuaXB2NkFkZHJTdGF0dXM7CisKKyAgICAgICAgZW50cnktPm5zX2lhX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImluc2VydCBpZiAlIiBORVRTTk1QX1BSSW8gInUsIGFkZHJsZW4gJWRcbiIsIAorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWZfaW5kZXgsIGVudHJ5LT5pYV9hZGRyZXNzX2xlbikpOworCisgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgInVuYWJsZSB0byBpbnNlcnQgJXNcbiIsIAorICAgICAgICAgICAgICAgICAgICAgICAgaXA2YWUuaXB2NkFkZHJJZkluZGV4Lm9fYnl0ZXMpKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgIHJldHVybiAoLTMpOworICAgICAgICB9CisgICAgfSAgICAKKyAgICByZXR1cm4gKGlkeF9vZmZzZXQpOworfQorI2VuZGlmIC8qIGRlZmluZWQoIE5FVFNOTVBfRU5BQkxFX0lQVjYgKSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ4MWIzZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIHNjb3Blem9uZSBkYXRhIGFjY2VzcyBoZWFkZXIKKyAqCisgKiAkSWQ6IGlwdjZzY29wZXpvbmUuaCAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBjb25maWd1cmUgcmVxdWlyZWQgZmlsZXMKKyAqCisgKiBOb3RlczoKKyAqCisgKiAxKSBwcmVmZXIgZnVuY3Rpb25hbGl0eSBvdmVyIHBsYXRmb3JtLCB3aGVyZSBwb3NzaWJsZS4gSWYgYSBtZXRob2QKKyAqICAgIGlzIGF2YWlsYWJsZSBmb3IgbXVsdGlwbGUgcGxhdGZvcm1zLCB0ZXN0IHRoYXQgZmlyc3QuIFRoYXQgd2F5CisgKiAgICB3aGVuIGEgbmV3IHBsYXRmb3JtIGlzIHBvcnRlZCwgaXQgd29uJ3QgbmVlZCBhIG5ldyB0ZXN0IGhlcmUuCisgKgorICogMikgZG9uJ3QgZG8gZGV0YWlsIHJlcXVpcmVtZW50cyBoZXJlLiBJZiwgZm9yIGV4YW1wbGUsCisgKiAgICBIUFVYMTEgaGFkIGRpZmZlcmVudCByZXVpcmVtZW50cyB0aGFuIG90aGVyIEhQVVgsIHRoYXQgc2hvdWxkCisgKiAgICBiZSBoYW5kbGVkIGluIHRoZSAqX2hwdXguaCBoZWFkZXIgZmlsZS4KKyAqLworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfY29tbW9uKQorI2lmIGRlZmluZWQoIGxpbnV4ICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2xpbnV4KQorI2Vsc2UKKy8qCisgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKKyAqIHJlcXVpcmUgYSBib2d1cyBmaWxlIHRvIGdlbmVyYXRlIGFuIGVycm9yLgorICovCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS11bmtub3duLWFyY2gpOworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmNzEyYgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2NvbW1vbi5jCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogIGlwdjZTY29wZUluZGV4VGFibGUgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkOiBpcHY2c2NvcGV6b25lX2NvbW1vbi5jIDE0MTcwIDIwMDctMDQtMjkgMDI6MjI6MTJaIHZhcnVuX2MgJAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmg+CisvKgorICogbG9jYWwgc3RhdGljIHByb3RvdHlwZXMKKyAqLworc3RhdGljIHZvaWQgX2VudHJ5X3JlbGVhc2UobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqIGVudHJ5LCB2b2lkICp1bnVzZWQpOworCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogZXh0ZXJuYWwgcGVyLWFyY2hpdGVjdHVyZSBmdW5jdGlvbnMgcHJvdG90eXBlcworICoKKyAqIFRoZXNlIHNob3VsZG4ndCBiZSBjYWxsZWQgYnkgdGhlIGdlbmVyYWwgcHVibGljLCBzbyB0aGV5IGFyZW4ndCBpbgorICogdGhlIGhlYWRlciBmaWxlLgorICovCitleHRlcm4gaW50CituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7CitleHRlcm4gdm9pZAorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2FyY2hfaW5pdCh2b2lkKTsKKworLyoqCisgKiBpbml0aWFsaXplIHN5c3RlbXN0YXRzIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lciAqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsICJpbml0XG4iKSk7CisgICAgLyoKKyAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lcnMuIG9uZSBpbmRleGVkIGJ5IGlmSW5kZXgsIHRoZSBvdGhlcgorICAgICAqIGluZGV4ZWQgYnkgaWZOYW1lLgorICAgICAqLworICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImFjY2Vzc19zY29wZXpvbmU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBjb250YWluZXI7Cit9CisKKy8qKgorICogbG9hZCBzY29wZXpvbmUgaW5mb3JtYXRpb24gaW4gc3BlY2lmaWVkIGNvbnRhaW5lcgorICoKKyAqIEBwYXJhbSBjb250YWluZXIgZW1wdHkgY29udGFpbmVyLCBvciBOVUxMIHRvIGhhdmUgb25lIGNyZWF0ZWQgZm9yIHlvdQorICogQHBhcmFtIGxvYWRfZmxhZ3MgZmxhZ3MgdG8gbW9kaWZ5IGJlaGF2aW91ci4KKyAqCisgKiBAcmV0dmFsIE5VTEwgIGVycm9yCisgKiBAcmV0dmFsICFOVUxMIHBvaW50ZXIgdG8gY29udGFpbmVyCisgKi8KK25ldHNubXBfY29udGFpbmVyKgorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgaW50IHJjOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzY29wZXpvbmU6Y29udGFpbmVyIiwgImxvYWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikKKyAgICAgICAgY29udGFpbmVyID0gbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9pbml0KGxvYWRfZmxhZ3MpOworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3Njb3Blem9uZVxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJjID0gIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfYXJjaF9sb2FkKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgaWYgKDAgIT0gcmMpIHsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9GUkVFX05PRkxBR1MpOworICAgICAgICBjb250YWluZXIgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBjb250YWluZXI7Cit9CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmcmVlX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsICJmcmVlXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfU0NPUEVaT05FX0ZSRUVfRE9OVF9DTEVBUikpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogZnJlZSBhbGwgaXRlbXMuCisgICAgICAgICAqLworICAgICAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfZW50cnlfcmVsZWFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KKworICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7Cit9CisKKy8qKgorICovCituZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5ICoKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9jcmVhdGUodm9pZCkKK3sKKyAgICBuZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5ICplbnRyeSA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSk7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTplbnRyeSIsICJjcmVhdGVcbiIpKTsKKworICAgIGlmKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisKKyAgICBlbnRyeS0+b2lkX2luZGV4LmxlbiA9IDE7CisgICAgZW50cnktPm9pZF9pbmRleC5vaWRzID0gICZlbnRyeS0+bnNfc2NvcGV6b25lX2luZGV4OworCisgICAgcmV0dXJuIGVudHJ5OworfQorCisvKioKKyAqLwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2ZyZWUobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqIGVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmVudHJ5IiwgImZyZWVcbiIpKTsKKworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm47CisKKworICAgIGZyZWUoZW50cnkpOworfQorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIFV0aWxpdHkgcm91dGluZXMKKyAqLworCisvKioKKyAqIFxpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2VudHJ5X3JlbGVhc2UobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQoreworICAgIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKGVudHJ5KTsKK30KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2xpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxNGY2MAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2xpbnV4LmMKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZDogaXB2NnNjb3Blem9uZV9saW51eC5jIDE0MTcwIDIwMDctMDQtMjkgMDI6MjI6MTJaIHZhcnVuX2MgJAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmg+CisKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorc3RhdGljIGludCBfc2NvcGV6b25lX3Y2KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKKyNlbmRpZgorCisvKgorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBvcGVuIGZpbGUKKyAqIEByZXR2YWwgLTMgY291bGQgbm90IGNyZWF0ZSBlbnRyeSAocHJvYmFibHkgbWFsbG9jKQorICogQHJldHZhbCAtNCBmaWxlIGZvcm1hdCBlcnJvcgorICovCitpbnQKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYzEgPSAwLCBpZHhfb2Zmc2V0ID0gMDsKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3Nfc2NvcGV6b25lX1xuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByYzEgPSBfc2NvcGV6b25lX3Y2KGNvbnRhaW5lciwgaWR4X29mZnNldCk7CisjZW5kaWYKKyAgICBpZihyYzEgPiAwKQorICAgICAgICByYzEgPSAwOworICAgIHJldHVybiByYzE7Cit9CisKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorCisvKiBzY29wZSBpZGVudGlmaWVycywgZnJvbSBrZXJuZWwgLSBpbmNsdWRlL25ldC9pcHY2LmggKi8KKyNkZWZpbmUgSVBWNl9BRERSX0xPT1BCQUNLICAgICAgMHgwMDEwVQorI2RlZmluZSBJUFY2X0FERFJfTElOS0xPQ0FMICAgICAweDAwMjBVCisjZGVmaW5lIElQVjZfQUREUl9TSVRFTE9DQUwgICAgIDB4MDA0MFUKKworc3RhdGljIGludAorX3Njb3Blem9uZV92NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCkKK3sKKworICAgIC8qCisgICAgICogT24gTGludXgsIHdlIHN1cHBvcnQgb25seSBsaW5rLWxvY2FsIHNjb3BlIHpvbmVzLgorICAgICAqIEVhY2ggaW50ZXJmYWNlLCB3aGljaCBoYXMgbGluay1sb2NhbCBhZGRyZXNzLCBnZXRzIHVuaXF1ZSBzY29wZQorICAgICAqIHpvbmUgaW5kZXguCisgICAgICovCisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzgwXSwgYWRkcls0MF07CisgICAgaW50ICAgICAgICAgICAgIGlmX2luZGV4LCBwZnhfbGVuLCBzY29wZSwgZmxhZ3MsIHJjID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgbGFzdF9pZl9pbmRleCA9IC0xOworICAgIG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKmVudHJ5OworICAgIAorICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworI2RlZmluZSBQUk9DRklMRSAiL3Byb2MvbmV0L2lmX2luZXQ2IgorICAgIGlmICghKGluID0gZm9wZW4oUFJPQ0ZJTEUsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIikpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogYWRkcmVzcyBpbmRleCBwcmVmaXhfbGVuIHNjb3BlIHN0YXR1cyBpZl9uYW1lCisgICAgICovCisgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZlODAwMDAwMDAwMDAwMDAwMjAwZThmZmZlNWI1YzkzIDA1IDQwIDIwIDgwIGV0aDAKKyAgICAgICAgICogICAgICAgICAgICAgQSAgICAgICAgICAgICAgICAgICAgRCAgUCAgUyAgRiAgSQorICAgICAgICAgKiBBOiBhZGRyZXNzCisgICAgICAgICAqIEQ6IGRldmljZSBudW1iZXIKKyAgICAgICAgICogUDogcHJlZml4IGxlbgorICAgICAgICAgKiBTOiBzY29wZSAoc2VlIGluY2x1ZGUvbmV0L2lwdjYuaCwgbmV0L2lwdjYvYWRkcmNvbmYuYykKKyAgICAgICAgICogRjogZmxhZ3MgKHNlZSBpbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oLCBuZXQvaXB2Ni9hZGRyY29uZi5jKQorICAgICAgICAgKiBJOiBpbnRlcmZhY2UKKyAgICAgICAgICovCisgICAgICAgIHJjID0gc3NjYW5mKGxpbmUsICIlMzlzICUwNHggJTAyeCAlMDJ4ICUwMnhcbiIsCisgICAgICAgICAgICAgICAgICAgIGFkZHIsICZpZl9pbmRleCwgJnBmeF9sZW4sICZzY29wZSwgJmZsYWdzKTsKKyAgICAgICAgaWYoIDUgIT0gcmMgKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCBQUk9DRklMRSAiIGRhdGEgZm9ybWF0IGVycm9yICglZCE9NSksIGxpbmUgPT18JXN8XG4iLAorICAgICAgICAgICAgICAgICAgICAgcmMsIGxpbmUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpzY29wZXpvbmU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgImFkZHIgJXMsIGluZGV4ICVkLCBwZnggJWQsIHNjb3BlICVkLCBmbGFncyAweCVYXG4iLAorICAgICAgICAgICAgICAgICAgICBhZGRyLCBpZl9pbmRleCwgcGZ4X2xlbiwgc2NvcGUsIGZsYWdzKSk7CisKKyAgICAgICAgaWYgKCEgKHNjb3BlICYgSVBWNl9BRERSX0xJTktMT0NBTCkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsIAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBhZGRyZXNzIGlzIG5vdCBsaW5rLWxvY2FsLCBza2lwcGluZ1xuIikpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLyogCisgICAgICAgICAqIENoZWNrIHRoYXQgdGhlIGludGVyZmFjZSB3YXMgbm90IGluc2VydGVkIGJlZm9yZSwganVzdCBpbiBjYXNlCisgICAgICAgICAqIG9uZSBpbnRlcmZhY2UgaGFzIHR3byBvciBtb3JlIGxpbmstbG9jYWwgYWRkcmVzc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGxhc3RfaWZfaW5kZXggPT0gaWZfaW5kZXgpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsIAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2Ugd2FzIGFscmVhZHkgaW5zZXJ0ZWQsIHNraXBwaW5nXG4iKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxhc3RfaWZfaW5kZXggPSBpZl9pbmRleDsgCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICByYyA9IC0zOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZW50cnktPm5zX3Njb3Blem9uZV9pbmRleCA9ICsraWR4X29mZnNldDsKKyAgICAgICAgZW50cnktPmluZGV4ID0gaWZfaW5kZXg7CisgICAgICAgIGVudHJ5LT5zY29wZXpvbmVfbGlua2xvY2FsID0gaWZfaW5kZXg7CisgCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgfQorICAgIGZjbG9zZShpbik7CisgICAgaWYocmM8MCkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgcmV0dXJuIGlkeF9vZmZzZXQ7Cit9CisjZW5kaWYgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYwppbmRleCBkOWMzOTE0Li4wMmM0MTZhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMKQEAgLTgsNyArOCw3NiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oPgogCi1zdGF0aWMgY29uc3QgY2hhciBpcGZ3X25hbWVbXSA9ICIvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9hbGwvZm9yd2FyZGluZyI7CitzdGF0aWMgY29uc3QgY2hhciBpcGZ3X25hbWVbXSA9ICIvcHJvYy9zeXMvbmV0L2lwdjQvY29uZi9hbGwvZm9yd2FyZGluZyI7CitzdGF0aWMgY29uc3QgY2hhciBpcGZ3Nl9uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvYWxsL2ZvcndhcmRpbmciOworCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisKKyAgICBmaWxlcCA9IGZvcGVuKGlwZndfbmFtZSwgInIiKTsKKyAgICBpZiAoTlVMTCA9PSBmaWxlcCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICByYyA9IGZzY2FuZihmaWxlcCwgIiVsZCIsIHZhbHVlKTsKKyAgICBmY2xvc2UoZmlsZXApOworICAgIGlmICgxICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCByZWFkICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKworICAgIGlmICgoMCAhPSAqdmFsdWUpICYmICgxICE9ICp2YWx1ZSkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAidW5leHBlY3RlZCB2YWx1ZSAlbGQgaW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXBmd19uYW1lKSk7CisgICAgICAgIHJldHVybiAtNDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoMSA9PSB2YWx1ZSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKDIgPT0gdmFsdWUpCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiYmFkIHZhbHVlICVsZCBmb3IgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBpcGZ3X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgZmlsZXAgPSBmb3BlbihpcGZ3X25hbWUsICJ3Iik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICB9CisKKyAgICByYyA9IGZwcmludGYoZmlsZXAsICIlbGQiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgd3JpdGUgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJldHVybiAwOworfQogCiBpbnQKIG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCkBAIC0yMCwxMCArODksMTAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAKLSAgICBmaWxlcCA9IGZvcGVuKGlwZndfbmFtZSwgInIiKTsKKyAgICBmaWxlcCA9IGZvcGVuKGlwZnc2X25hbWUsICJyIik7CiAgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCBvcGVuICVzXG4iLAotICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgaXBmdzZfbmFtZSkpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQogCkBAIC0zMSwxMyArMTAwLDEzIEBACiAgICAgZmNsb3NlKGZpbGVwKTsKICAgICBpZiAoMSAhPSByYykgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwdjZJcEZvcndhcmRpbmciLCAiY291bGQgbm90IHJlYWQgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICAgICAgICAgICAgICBpcGZ3Nl9uYW1lKSk7CiAgICAgICAgIHJldHVybiAtMzsKICAgICB9CiAKICAgICBpZiAoKDAgIT0gKnZhbHVlKSAmJiAoMSAhPSAqdmFsdWUpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsICJ1bmV4cGVjdGVkIHZhbHVlICVsZCBpbiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgKnZhbHVlLCBpcGZ3X25hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgKnZhbHVlLCBpcGZ3Nl9uYW1lKSk7CiAgICAgICAgIHJldHVybiAtNDsKICAgICB9CiAKQEAgLTYwLDEwICsxMjksMTAgQEAKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CiAgICAgfQogCi0gICAgZmlsZXAgPSBmb3BlbihpcGZ3X25hbWUsICJ3Iik7CisgICAgZmlsZXAgPSBmb3BlbihpcGZ3Nl9uYW1lLCAidyIpOwogICAgIGlmIChOVUxMID09IGZpbGVwKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGlwZnc2X25hbWUpKTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CiAgICAgfQogCkBAIC03MSw3ICsxNDAsNyBAQAogICAgIGZjbG9zZShmaWxlcCk7CiAgICAgaWYgKDEgIT0gcmMpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCB3cml0ZSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGlwZnc2X25hbWUpKTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKaW5kZXggNmJiYTZkOS4uMjg4MTBlMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKQEAgLTIwLDExICsyMCw4IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eCkKKyNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMikKICNlbHNlCi0vKgotICogY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZpbGUhCi0gKiByZXF1aXJlIGEgYm9ndXMgZmlsZSB0byBnZW5lcmF0ZSBhbiBlcnJvci4KLSAqLwotY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLXVua25vd24tYXJjaCk7Citjb25maWdfZXJyb3IodGhlIHN5c3RlbXN0YXRzIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKICNlbmRpZgotCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKaW5kZXggZjI3ZTBlYS4uZjdjMDIxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgU3lzdGVtc3RhdHMgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKiAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcElmU3RhdHNUYWJsZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKICAqCiAgKiAkSWQkCiAgKi8KQEAgLTE2Myw3ICsxNjMsNyBAQAogLyoqCiAgKi8KIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKgotbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKGludCB2ZXJzaW9uKQorbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKGludCB2ZXJzaW9uLCBpbnQgaWZfaW5kZXgpCiB7CiAgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPQogICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkpOwpAQCAtMTczLDEwICsxNzMsMTAgQEAKICAgICBpZihOVUxMID09IGVudHJ5KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGVudHJ5LT5uc19pcF92ZXJzaW9uID0gdmVyc2lvbjsKLQotICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMTsKLSAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAob2lkICopICYgZW50cnktPm5zX2lwX3ZlcnNpb247CisgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAyOworICAgIGVudHJ5LT5vaWRfaW5kZXgub2lkcyA9IGVudHJ5LT5pbmRleDsKKyAgICBlbnRyeS0+aW5kZXhbMF0gPSB2ZXJzaW9uOworICAgIGVudHJ5LT5pbmRleFsxXSA9IGlmX2luZGV4OwogCiAgICAgcmV0dXJuIGVudHJ5OwogfQpAQCAtMjE3LDYgKzIxNyw2MiBAQAogICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoZW50cnkpOwogfQogCisvKgorICogQ2FsY3VsYXRlcyB0aGUgZW50cmllcywgd2hpY2ggYXJlIG5vdCBwcm92aWRlZCBieSBPUywgYnV0IGNhbiBiZSAKKyAqIGNvbXB1dGVkIGZyb20gdGhlIG90aGVycy4KKyAqLworc3RhdGljIHZvaWQKK19jYWxjdWxhdGVfZW50cmllcyhuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICogZW50cnkpCit7CisgICAgLyoKKyAgICAgKiBIQ0luRm9yd0RhdGFncmFtcyA9IEhDSW5Ob1JvdXRlcyArIEhDT3V0Rm9yd0RhdGFncmFtcworICAgICAqLworICAgIGlmICghZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lORk9SV0RBVEFHUkFNU10KKyAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk5PUk9VVEVTXSkgeworICAgICAgICAKKyAgICAgICAgZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zID0gZW50cnktPnN0YXRzLkhDSW5Ob1JvdXRlczsKKyAgICAgICAgdTY0SW5jcigmZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLCAmZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcyk7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdID0gMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEhDT3V0RnJhZ1JlcWRzID0gSENPdXRGcmFnT0tzICsgSENPdXRGcmFnRmFpbHMKKyAgICAgKi8KKyAgICBpZiAoIWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXQorICAgICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSkgeworICAgICAgICAKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ1JlcWRzID0gZW50cnktPnN0YXRzLkhDT3V0RnJhZ09LczsKKyAgICAgICAgdTY0SW5jcigmZW50cnktPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLCAmZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzKTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdSRVFEU10gPSAxOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIEhDT3V0VHJhbnNtaXRzID0gSENPdXRSZXF1ZXN0cyAgKyBIQ091dEZvcndEYXRhZ3JhbXMgKyBIQ091dEZyYWdDcmVhdGVzICAKKyAgICAgKiAgICAgICAgICAgICAgICAgIC0gSENPdXRGcmFnUmVxZHMgLSBIQ091dE5vUm91dGVzICAtIEhDT3V0RGlzY2FyZHMKKyAgICAgKi8KKyAgICBpZiAoIWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10KKyAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdCisgICAgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdCisgICAgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10KKyAgICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdKSB7CisKKyAgICAgICAgVTY0IHRtcCwgdG1wMiwgdG1wMzsKKyAgICAgICAgdG1wID0gZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHM7CisgICAgICAgIHU2NEluY3IoJnRtcCwgJmVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMpOworICAgICAgICB1NjRJbmNyKCZ0bXAsICZlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcyk7CisgICAgICAgIAorICAgICAgICB1NjRTdWJ0cmFjdCgmdG1wLCAmZW50cnktPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLCAmdG1wMik7CisgICAgICAgIHU2NFN1YnRyYWN0KCZ0bXAyLCAmZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMsICZ0bXAzKTsKKyAgICAgICAgdTY0U3VidHJhY3QoJnRtcDMsICZlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcywgJmVudHJ5LT5zdGF0cy5IQ091dFRyYW5zbWl0cyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdID0gMTsKKyAgICB9Cit9CisKIC8qKgogICogdXBkYXRlIGVudHJ5IHN0YXRzIChjaGVja2luZyBmb3IgY291bnRlciB3cmFwKQogICoKQEAgLTIzMyw3ICsyODksOCBAQAogICAgICAqIHNhbml0eSBjaGVja3MKICAgICAgKi8KICAgICBpZiAoKE5VTEwgPT0gcHJldl92YWxzKSB8fCAoTlVMTCA9PSBuZXdfdmFscykgfHwKLSAgICAgICAgKHByZXZfdmFscy0+bnNfaXBfdmVyc2lvbiAhPSBuZXdfdmFscy0+bnNfaXBfdmVyc2lvbikpCisgICAgICAgIChwcmV2X3ZhbHMtPmluZGV4WzBdICE9IG5ld192YWxzLT5pbmRleFswXSkKKyAgICAgICAgfHwgKHByZXZfdmFscy0+aW5kZXhbMV0gIT0gbmV3X3ZhbHMtPmluZGV4WzFdKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgLyoKQEAgLTI0MSw2ICsyOTgsNyBAQAogICAgICAqLwogICAgIGlmICgwID09IG5lZWRfd3JhcF9jaGVjaykgewogICAgICAgICBtZW1jcHkoJnByZXZfdmFscy0+c3RhdHMsICZuZXdfdmFscy0+c3RhdHMsIHNpemVvZihuZXdfdmFscy0+c3RhdHMpKTsKKyAgICAgICAgX2NhbGN1bGF0ZV9lbnRyaWVzKHByZXZfdmFscyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMjU4LDggKzMxNiw4IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHVwZGF0ZSBzdHJhaWdodCAzMiBiaXQgY291bnRlcnMKICAgICAgICAgICovCisgICAgICAgIG1lbWNweSgmcHJldl92YWxzLT5zdGF0cy5jb2x1bW5BdmFpbFswXSwgJm5ld192YWxzLT5zdGF0cy5jb2x1bW5BdmFpbFswXSwgc2l6ZW9mKG5ld192YWxzLT5zdGF0cy5jb2x1bW5BdmFpbCkpOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLkluSGRyRXJyb3JzID0gbmV3X3ZhbHMtPnN0YXRzLkluSGRyRXJyb3JzOwotICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLkluTm9Sb3V0ZXMgPSBuZXdfdmFscy0+c3RhdHMuSW5Ob1JvdXRlczsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JbkFkZHJFcnJvcnMgPSBuZXdfdmFscy0+c3RhdHMuSW5BZGRyRXJyb3JzOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLkluVW5rbm93blByb3RvcyA9IG5ld192YWxzLT5zdGF0cy5JblVua25vd25Qcm90b3M7CiAgICAgICAgIHByZXZfdmFscy0+c3RhdHMuSW5UcnVuY2F0ZWRQa3RzID0gbmV3X3ZhbHMtPnN0YXRzLkluVHJ1bmNhdGVkUGt0czsKQEAgLTI2NywxNiArMzI1LDM4IEBACiAgICAgICAgIHByZXZfdmFscy0+c3RhdHMuUmVhc21PS3MgPSBuZXdfdmFscy0+c3RhdHMuUmVhc21PS3M7CiAgICAgICAgIHByZXZfdmFscy0+c3RhdHMuUmVhc21GYWlscyA9IG5ld192YWxzLT5zdGF0cy5SZWFzbUZhaWxzOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLkluRGlzY2FyZHMgPSBuZXdfdmFscy0+c3RhdHMuSW5EaXNjYXJkczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXROb1JvdXRlcyA9IG5ld192YWxzLT5zdGF0cy5PdXROb1JvdXRlczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXREaXNjYXJkcyA9IG5ld192YWxzLT5zdGF0cy5PdXREaXNjYXJkczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXRGcmFnUmVxZHMgPSBuZXdfdmFscy0+c3RhdHMuT3V0RnJhZ1JlcWRzOwotICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLk91dEZyYWdPS3MgPSBuZXdfdmFscy0+c3RhdHMuT3V0RnJhZ09LczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXRGcmFnRmFpbHMgPSBuZXdfdmFscy0+c3RhdHMuT3V0RnJhZ0ZhaWxzOwotICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLk91dEZyYWdDcmVhdGVzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdDcmVhdGVzOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHVwZGF0ZSA2NGJpdCBjb3VudGVycwogICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDSW5Ob1JvdXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENJbk5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ0luTm9Sb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0Tm9Sb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDT3V0RGlzY2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDT3V0RGlzY2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0RGlzY2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dEZyYWdSZXFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENPdXRGcmFnUmVxZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ09LcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENPdXRGcmFnT0tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dEZyYWdPS3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dEZyYWdGYWlscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENPdXRGcmFnRmFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKyAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0RnJhZ0NyZWF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKICAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLkhDSW5SZWNlaXZlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENJblJlY2VpdmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ0luUmVjZWl2ZXMsCkBAIC0zMzQsMjAgKzQxNCwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dEJjYXN0UGt0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZWVkX3dyYXBfY2hlY2spOwogICAgIH0KLSAgICAKKwogICAgIC8qCiAgICAgICogaWYgd2UndmUgZGVjaWRlZCB3ZSBubyBsb25nZXIgbmVlZCB0byBjaGVjayB3cmFwcywgZnJlZSBvbGQgc3RhdHMKICAgICAgKi8KICAgICBpZiAoMCA9PSBuZWVkX3dyYXBfY2hlY2spIHsKICAgICAgICAgU05NUF9GUkVFKHByZXZfdmFscy0+b2xkX3N0YXRzKTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogdXBkYXRlIG9sZCBzdGF0cyBmcm9tIG5ldyBzdGF0cy4KICAgICAgICAgICogY2FyZWZ1bCAtIG9sZF9zdGF0cyBpcyBhIHBvaW50ZXIgdG8gc3RhdHMuLi4KICAgICAgICAgICovCiAgICAgICAgIG1lbWNweShwcmV2X3ZhbHMtPm9sZF9zdGF0cywgJm5ld192YWxzLT5zdGF0cywgc2l6ZW9mKG5ld192YWxzLT5zdGF0cykpOwogICAgIH0KKworICAgIF9jYWxjdWxhdGVfZW50cmllcyhwcmV2X3ZhbHMpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM2OCw3ICs0NTAsOCBAQAogICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLCAiY29weVxuIikpOwogICAgIAogICAgIGlmICgoTlVMTCA9PSBsaHMpIHx8IChOVUxMID09IHJocykgfHwKLSAgICAgICAgKGxocy0+bnNfaXBfdmVyc2lvbiAhPSByaHMtPm5zX2lwX3ZlcnNpb24pKQorICAgICAgICAobGhzLT5pbmRleFswXSAhPSByaHMtPmluZGV4WzBdKQorICAgICAgICB8fCAobGhzLT5pbmRleFsxXSAhPSByaHMtPmluZGV4WzFdKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKaW5kZXggM2UwZmQ4Ny4uM2JhODY0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqICBpcFN5c3RlbVN0YXRzVGFibGUgYW5kIGlwSWZTdGF0c1RhYmxlIGludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKICAqCiAgKiAkSWQkCiAgKi8KQEAgLTEwLDEyICsxMCwyMCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oPgogCisjaW5jbHVkZSAiLi4vaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oIgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogc3RhdGljIGludCBfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncyk7CitzdGF0aWMgaW50IF9hZGRpdGlvbmFsX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkqIGVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKTsKKwogI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCiBzdGF0aWMgaW50IF9zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKTsKICNlbmRpZgogCi0KIHZvaWQKIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2FyY2hfaW5pdCh2b2lkKQogewpAQCAtNjIsNyArNzAsNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3N5c3RlbXN0YXRzX1xuIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0KKyAgICAKICAgICAvKgogICAgICAqIGxvYWQgdjQgYW5kIHY2IHN0YXRzLiBFdmVuIGlmIG9uZSBmYWlscywgdHJ5IHRoZSBvdGhlci4KICAgICAgKiBJZiB0aGV5IGhhdmUgdGhlIHNhbWUgcmMsIHJldHVybiBpdC4gaWYgdGhlIGRpZmZlciwgcmV0dXJuCkBAIC04MSw2ICs4OSw5IEBACiAjZW5kaWYKIH0KIAorLyoKKyAqIEJhc2VkIG9uIGxvYWRfZmxhZ3MsIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIG9yIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY0IGVudHJpZXMuIAorICovCiBzdGF0aWMgaW50CiBfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKIHsKQEAgLTkyLDExICsxMDMsMTYgQEAKICAgICBpbnQgICAgICAgICAgICAgbGVuOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzY2FuX3ZhbHNbMTldOwogCi0gICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY0IChmbGFncyAlcClcbiIsCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY0IChmbGFncyAleClcbiIsCiAgICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOwogCiAgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCiAKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkgeworICAgICAgICAvKiB3ZSBkbyBub3Qgc3VwcG9ydCBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoIShkZXZpbiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcCIsICJyIikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLAogICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGxvYWQgU3lzdGVtc3RhdHMgVGFibGUgKGxpbnV4MSlcbiIpKTsKQEAgLTE0NCw3ICsxNjAsNyBAQAogICAgICAgICB3aGlsZSAoKnN0YXRzID09ICcgJykgLyogc2tpcCBzcGFjZXMgYmVmb3JlIHN0YXRzICovCiAgICAgICAgICAgICBzdGF0cysrOwogCi0gICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDEpOworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgxLCAwKTsKICAgICAgICAgaWYoTlVMTCA9PSBlbnRyeSkgewogICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9OT0ZMQUdTKTsKQEAgLTE4NSwyMyArMjAxLDU0IEBACiAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IHNjYW5fdmFsc1syXSA+PiAzMjsKICAgICAgICAgZW50cnktPnN0YXRzLkluSGRyRXJyb3JzID0gc2Nhbl92YWxzWzNdOwogICAgICAgICBlbnRyeS0+c3RhdHMuSW5BZGRyRXJyb3JzID0gc2Nhbl92YWxzWzRdOwotICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93ID0gc2Nhbl92YWxzWzVdICYgMHhmZmZmZmZmZjsKLSAgICAgICAgZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmhpZ2ggPSBzY2FuX3ZhbHNbNV0gPj4gMzI7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93ID0gc2Nhbl92YWxzWzVdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gc2Nhbl92YWxzWzVdID4+IDMyOwogICAgICAgICBlbnRyeS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zID0gc2Nhbl92YWxzWzZdOwogICAgICAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IHNjYW5fdmFsc1s3XTsKICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5sb3cgPSBzY2FuX3ZhbHNbOF0gJiAweGZmZmZmZmZmOwogICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2ggPSBzY2FuX3ZhbHNbOF0gPj4gMzI7CiAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmxvdyA9IHNjYW5fdmFsc1s5XSAmIDB4ZmZmZmZmZmY7CiAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmhpZ2ggPSBzY2FuX3ZhbHNbOV0gPj4gMzI7Ci0gICAgICAgIGVudHJ5LT5zdGF0cy5PdXREaXNjYXJkcyA9IHNjYW5fdmFsc1sxMF07Ci0gICAgICAgIGVudHJ5LT5zdGF0cy5PdXROb1JvdXRlcyA9IHNjYW5fdmFsc1sxMV07CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdyA9IHNjYW5fdmFsc1sxMF0gJiAweGZmZmZmZmZmOzsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IHNjYW5fdmFsc1sxMF0gPj4gMzI7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IHNjYW5fdmFsc1sxMV0gJiAweGZmZmZmZmZmOzsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMuaGlnaCA9IHNjYW5fdmFsc1sxMV0gPj4gMzI7CiAgICAgICAgIC8qIGVudHJ5LT5zdGF0cy4gPSBzY2FuX3ZhbHNbMTJdOyAvICogUmVhc21UaW1lb3V0ICovCiAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbVJlcWRzID0gc2Nhbl92YWxzWzEzXTsKICAgICAgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gc2Nhbl92YWxzWzE0XTsKICAgICAgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBzY2FuX3ZhbHNbMTVdOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ09LcyA9IHNjYW5fdmFsc1sxNl07Ci0gICAgICAgIGVudHJ5LT5zdGF0cy5PdXRGcmFnRmFpbHMgPSBzY2FuX3ZhbHNbMTddOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ0NyZWF0ZXMgPSBzY2FuX3ZhbHNbMThdOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IHNjYW5fdmFsc1sxNl0gJiAweGZmZmZmZmZmOzsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gc2Nhbl92YWxzWzE2XSA+PiAzMjsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IHNjYW5fdmFsc1sxN10gJiAweGZmZmZmZmZmOzsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBzY2FuX3ZhbHNbMTddID4+IDMyOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBzY2FuX3ZhbHNbMThdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBzY2FuX3ZhbHNbMThdID4+IDMyOworCisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5IRFJFUlJPUlNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlVOS05PV05QUk9UT1NdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE5PUk9VVEVTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01SRVFEU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0RJU0NPTlRJTlVJVFlUSU1FXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgICAgICAvKgorICAgICAgICAgKiBsb2FkIGFkZHRpb25hbCBzdGF0aXN0aWNzIGRlZmluZWQgYnkgUkZDIDQyOTMKKyAgICAgICAgICogQXMgdGhlc2UgYXJlIHN1cHBvcnRlZCBsaW51eCAyLjYuMjIgb3IgbGF0ZXIsIGl0IGlzIG5vIHByb2JsZW0KKyAgICAgICAgICogaWYgbG9hZGluZyB0aGVtIGFyZSBmYWlsZWQuCisgICAgICAgICAqLworICAgICAgICBfYWRkaXRpb25hbF9zeXN0ZW1zdGF0c192NChlbnRyeSwgbG9hZF9mbGFncyk7CiAKICAgICAgICAgLyoKICAgICAgICAgICogYWRkIHRvIGNvbnRhaW5lcgpAQCAtMjE2LDQ4ICsyNjMsMTIxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCi0jaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKyNkZWZpbmUgSVBfRVhUX0hFQUQgIklwRXh0OiIKIHN0YXRpYyBpbnQKLV9zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQorX2FkZGl0aW9uYWxfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSogZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQogewogICAgIEZJTEUgICAgICAgICAgICpkZXZpbjsKICAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKLSAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7Ci0gICAgY2hhciAgICAgICAgICAgKnN0YXRzLCAqc3RhcnQgPSBsaW5lOwotICAgIGludCAgICAgICAgICAgICBsZW4sIHJjOwotICAgIHVpbnRtYXhfdCAgICAgICBzY2FuX3ZhbDsKLSAgICBjb25zdCBjaGFyICAgICAqZmlsZW5hbWUgPSAiL3Byb2MvbmV0L3NubXA2IjsKLSAgICBzdGF0aWMgaW50ICAgICAgd2FybmVkX29wZW4gPSAwOworICAgIGludCAgICAgICAgICAgICBzY2FuX2NvdW50OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzY2FuX3ZhbHNbMTJdOworICAgIGludCAgICAgICAgICAgICByZXR2YWwgPSAwOwogCi0gICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY2IChmbGFncyAldSlcbiIsCi0gICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICJsb2FkIGFkZHRpb25hbCB2NCAoZmxhZ3MgJXUpXG4iLCBsb2FkX2ZsYWdzKSk7CiAKLSAgICBuZXRzbm1wX2Fzc2VydChjb250YWluZXIgIT0gTlVMTCk7IC8qIGxvYWQgZnVuY3Rpb24gc2hvdWxkYSBjaGVja2VkIHRoaXMgKi8KLQotICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDIpOwotICAgIGlmKE5VTEwgPT0gZW50cnkpCi0gICAgICAgIHJldHVybiAtMzsKLSAgICAKLSAgICAvKgotICAgICAqIHRyeSB0byBvcGVuIGZpbGUuIElmIHdlIGNhbid0LCB0aGF0J3Mgb2sgLSBtYXliZSB0aGUgbW9kdWxlIGhhc24ndAotICAgICAqIGJlZW4gbG9hZGVkIHlldC4KLSAgICAgKi8KLSAgICBpZiAoIShkZXZpbiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSkgeworICAgIGlmICghKGRldmluID0gZm9wZW4oIi9wcm9jL25ldC9uZXRzdGF0IiwgInIiKSkpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0cyIsCi0gICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbG9hZCBTeXN0ZW1zdGF0cyBUYWJsZSAobGludXgxKVxuIikpOwotICAgICAgICBpZighd2FybmVkX29wZW4pIHsKLSAgICAgICAgICAgICsrd2FybmVkX29wZW47Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY2Fubm90IG9wZW4gJXMgLi4uXG4iLCBmaWxlbmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZShlbnRyeSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICAiY2Fubm90IG9wZW4gL3Byb2MvbmV0L25ldHN0YXRcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIAogICAgIC8qCi0gICAgICogVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBzdGF0aXN0aWNzIGZvciBlYWNoIHN5c3RlbXN0YXRzLgorICAgICAqIEdldCBoZWFkZXIgYW5kIHN0YXQgbGluZXMKKyAgICAgKi8KKyAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkZXZpbikpIHsKKyAgICAgICAgaWYgKHN0cm5jbXAoSVBfRVhUX0hFQUQsIGxpbmUsIHNpemVvZihJUF9FWFRfSEVBRCkgLSAxKSA9PSAwKSB7CisgICAgICAgICAgICAvKiBuZXh0IGxpbmUgc2hvdWxkIGluY2x1ZGVzIElQdjQgYWRkdGlvbmFsIHN0YXRpc3RpY3MgKi8KKyAgICAgICAgICAgIGlmICgoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkZXZpbikpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSAtNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdHJuY21wKElQX0VYVF9IRUFELCBsaW5lLCBzaXplb2YoSVBfRVhUX0hFQUQpIC0gMSkgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IC00OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZW1zZXQoc2Nhbl92YWxzLCAweDAsIHNpemVvZihzY2FuX3ZhbHMpKTsKKyAgICAgICAgICAgIHNjYW5fY291bnQgPSBzc2NhbmYobGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUqcyIgICAvKiBpZ25vcmUgYElwRXh0OicgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjYW5fdmFsc1swXSwgJnNjYW5fdmFsc1sxXSwgJnNjYW5fdmFsc1syXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjYW5fdmFsc1szXSwgJnNjYW5fdmFsc1s0XSwgJnNjYW5fdmFsc1s1XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjYW5fdmFsc1s2XSwgJnNjYW5fdmFsc1s3XSwgJnNjYW5fdmFsc1s4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjYW5fdmFsc1s5XSwgJnNjYW5fdmFsc1sxMF0sICZzY2FuX3ZhbHNbMTFdKTsKKyAgICAgICAgICAgIGlmIChzY2FuX2NvdW50IDwgNikgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3Igc2Nhbm5pbmcgYWRkdGlvbmFsIHN5c3RlbXN0YXRzIGRhdGEiCisgICAgICAgICAgICAgICAgICAgICAgICAiKG1pbmltdW0gZXhwZWN0ZWQgJWQsIGdvdCAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICA2LCBzY2FuX2NvdW50KTsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSAtNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5Ob1JvdXRlcy5sb3cgICAgPSBzY2FuX3ZhbHNbMF0gJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5Ob1JvdXRlcy5oaWdoICAgPSBzY2FuX3ZhbHNbMF0gPj4gMzI7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSW5UcnVuY2F0ZWRQa3RzICAgICA9IHNjYW5fdmFsc1sxXTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdyAgID0gc2Nhbl92YWxzWzJdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmhpZ2ggID0gc2Nhbl92YWxzWzJdID4+IDMyOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdyAgPSBzY2FuX3ZhbHNbM10gJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbHNbM10gPj4gMzI7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3cgICA9IHNjYW5fdmFsc1s0XSAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkJjYXN0UGt0cy5oaWdoICA9IHNjYW5fdmFsc1s0XSA+PiAzMjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEJjYXN0UGt0cy5sb3cgID0gc2Nhbl92YWxzWzVdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEJjYXN0UGt0cy5oaWdoID0gc2Nhbl92YWxzWzVdID4+IDMyOworCisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10gPSAxOworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlRSVU5DQVRFRFBLVFNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUUEtUU10gPSAxOworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10gPSAxOworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOQkNBU1RQS1RTXSA9IDE7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSA9IDE7CisJICAgIGlmIChzY2FuX2NvdW50ID49IDEyKSB7CisJCWVudHJ5LT5zdGF0cy5IQ0luT2N0ZXRzLmxvdyAgICAgICAgPSBzY2FuX3ZhbHNbNl0gJiAweGZmZmZmZmZmOworCQllbnRyeS0+c3RhdHMuSENJbk9jdGV0cy5oaWdoICAgICAgID0gc2Nhbl92YWxzWzZdID4+IDMyOworCQllbnRyeS0+c3RhdHMuSENPdXRPY3RldHMubG93ICAgICAgID0gc2Nhbl92YWxzWzddICYgMHhmZmZmZmZmZjsKKwkJZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2ggICAgICA9IHNjYW5fdmFsc1s3XSA+PiAzMjsKKwkJZW50cnktPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5sb3cgICA9IHNjYW5fdmFsc1s4XSAmIDB4ZmZmZmZmZmY7CisJCWVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMuaGlnaCAgPSBzY2FuX3ZhbHNbOF0gPj4gMzI7CisJCWVudHJ5LT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdyAgPSBzY2FuX3ZhbHNbOV0gJiAweGZmZmZmZmZmOworCQllbnRyeS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5oaWdoID0gc2Nhbl92YWxzWzldID4+IDMyOworCQkvKiAxMCBhbmQgMTEgYXJlIEluL091dEJjYXN0T2N0ZXRzICovCisJCWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUU10gPSAxOworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSA9IDE7CisJCWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUT0NURVRTXSA9IDE7CisJCWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVE9DVEVUU10gPSAxOworCSAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmY2xvc2UoZGV2aW4pOworCisgICAgaWYgKHJldHZhbCA8IDApCisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLAorICAgICAgICAgICAgICAgICAgICAiL3Byb2MvbmV0L25ldHN0YXQgZG9lcyBub3QgaW5jbHVkZSBhZGR0aW9uYWwgc3RhdHNcbiIpKTsKKworICAgIHJldHVybiByZXR2YWw7Cit9CisgICAKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorCisvKgorICogTG9hZCBvbmUgL3Byb2MvbmV0L3NubXA2IC0gbGlrZSBmaWxlIChlLmcuIC9wcm9jL25ldC9kZXZfc25tcDYpCisgKi8gCitzdGF0aWMgaW50IAorX3N5c3RlbXN0YXRzX3Y2X2xvYWRfZmlsZShuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSwgRklMRSAqZGV2aW4pCit7CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CisgICAgY2hhciAgICAgICAgICAgKnN0YXRzLCAqc3RhcnQgPSBsaW5lOworICAgIGludCAgICAgICAgICAgICBsZW4sIHJjOworICAgIHVpbnRtYXhfdCAgICAgICBzY2FuX3ZhbDsKKworICAgIC8qCiAgICAgICogUmVhZCBpbiBlYWNoIGxpbmUgaW4gdHVybiwgaXNvbGF0ZSB0aGUgc3lzdGVtc3RhdHMgbmFtZQogICAgICAqICAgYW5kIHJldHJpZXZlIChvciBjcmVhdGUpIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgc3RydWN0dXJlLgogICAgICAqLworICAgIHJjID0gMDsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBzdGFydCA9IGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZGV2aW4pOwogICAgICAgICBpZiAoTlVMTCA9PSBzdGFydCkKQEAgLTI4Nyw3NyArNDA3LDEyMyBAQAogICAgICAgICAgKiAgICAgIGRhdGEgc3RydWN0dXJlIGFjY29yZGluZ2x5LgogICAgICAgICAgKi8KICAgICAgICAgc2Nhbl92YWwgPSBhdG9sbChzdGF0cyk7Ci0gICAgICAgIGlmICgwID09IHNjYW5fdmFsKQotICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgcmMgPSAwOwogICAgICAgICBpZiAoJ0knID09IGxpbmVbM10pIHsgLyogSW4gKi8KICAgICAgICAgICAgIGlmICgnQScgPT0gbGluZVs1XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5JbkFkZHJFcnJvcnMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOQUREUkVSUk9SU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnRCcgPT0gbGluZVs1XSkgewogICAgICAgICAgICAgICAgIGlmICgnZScgPT0gbGluZVs2XSkgewogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2knID09IGxpbmVbNl0pCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSA9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnaScgPT0gbGluZVs2XSkgewogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IHNjYW5fdmFsOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJjID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ0gnID09IGxpbmVbNV0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdNJyA9PSBsaW5lWzVdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgaWYgKCdQJyA9PSBsaW5lWzEwXSkgeworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUUEtUU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ08nID09IGxpbmVbMTBdKSB7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUT0NURVRTXSA9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJjID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ04nID09IGxpbmVbNV0pIHsKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSW5Ob1JvdXRlcyA9IHNjYW5fdmFsOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk5PUk9VVEVTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdSJyA9PSBsaW5lWzVdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ1QnID09IGxpbmVbNV0pIHsKICAgICAgICAgICAgICAgICBpZiAoJ3InID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluVHJ1bmNhdGVkUGt0cyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSA9IDE7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnbycgPT0gbGluZVs2XSkKICAgICAgICAgICAgICAgICAgICAgOyAvKiBUb29CaWcgaXNuJ3QgaW4gdGhlIE1JQiwgc28gaWdub3JlIGl0ICovCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdVJyA9PSBsaW5lWzVdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluVW5rbm93blByb3RvcyA9IHNjYW5fdmFsOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSA9IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzVdKSB7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5PY3RldHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luT2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCAgPj4gMzI7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAoJ08nID09IGxpbmVbM10pIHsgLyogT3V0ICovCiAgICAgICAgICAgICBpZiAoJ0QnID09IGxpbmVbNl0pIHsKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RGlzY2FyZHMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnRicgPT0gbGluZVs2XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOwogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdNJyA9PSBsaW5lWzZdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRNY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGlmICgnUCcgPT0gbGluZVsxMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ08nID09IGxpbmVbMTFdKSB7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmMgPSAtMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ04nID09IGxpbmVbNl0pIHsKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuT3V0Tm9Sb3V0ZXMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnUicgPT0gbGluZVs2XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFJFUVVFU1RTXSA9IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzZdKSB7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRPY3RldHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRPQ1RFVFNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJjID0gMTsKICAgICAgICAgfSBlbHNlIGlmICgnUicgPT0gbGluZVszXSkgeyAvKiBSZWFzbSAqLwogICAgICAgICAgICAgaWYgKCdGJyA9PSBsaW5lWzhdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ08nID09IGxpbmVbOF0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuUmVhc21PS3MgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdSJyA9PSBsaW5lWzhdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLlJlYXNtUmVxZHMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ1QnID09IGxpbmVbOF0pIHsKICAgICAgICAgICAgICAgICA7IC8qIG5vIG1pYiBlbnRyeSBmb3IgcmVhc20gdGltZW91dCAqLwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmMgPSAxOwogICAgICAgICB9IGVsc2UgaWYgKCdGJyA9PSBsaW5lWzNdKSB7IC8qIEZyYWcgKi8KLSAgICAgICAgICAgIGlmICgnQycgPT0gbGluZVs3XSkKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ0NyZWF0ZXMgPSBzY2FuX3ZhbDsKLSAgICAgICAgICAgIGVsc2UgaWYgKCdPJyA9PSBsaW5lWzddKQotICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5PdXRGcmFnT0tzID0gc2Nhbl92YWw7Ci0gICAgICAgICAgICBlbHNlIGlmICgnRicgPT0gbGluZVs3XSkKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ0ZhaWxzID0gc2Nhbl92YWw7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoJ0MnID09IGxpbmVbN10pIHsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnTycgPT0gbGluZVs3XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSA9IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCdGJyA9PSBsaW5lWzddKSB7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdID0gMTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJjID0gMTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByYyA9IDE7CkBAIC0zNjUsNiArNTMxLDQyIEBACiAgICAgICAgIGlmIChyYykKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLCAidW5rbm93biBzdGF0ICVzXG4iLCBsaW5lKSk7CiAgICAgfQorICAgIC8qCisgICAgICogTGV0IERpc2NvbnRpbnVpdHlUaW1lIGFuZCBSZWZyZXNoUmF0ZSBhY3RpdmUKKyAgICAgKi8KKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0RJU0NPTlRJTlVJVFlUSU1FXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURV0gPSAxOworCisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcworICovCitzdGF0aWMgaW50IAorX3N5c3RlbXN0YXRzX3Y2X2xvYWRfc3lzdGVtc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBGSUxFICpkZXZpbjsKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAgICAgKmZpbGVuYW1lID0gIi9wcm9jL25ldC9zbm1wNiI7CisgICAgaW50IHJjID0gMDsKKyAgICAKKyAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgyLCAwKTsKKyAgICBpZihOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTM7CisgICAgCisgICAgLyoKKyAgICAgKiB0cnkgdG8gb3BlbiBmaWxlLiBJZiB3ZSBjYW4ndCwgdGhhdCdzIG9rIC0gbWF5YmUgdGhlIG1vZHVsZSBoYXNuJ3QKKyAgICAgKiBiZWVuIGxvYWRlZCB5ZXQuCisgICAgICovCisgICAgaWYgKCEoZGV2aW4gPSBmb3BlbihmaWxlbmFtZSwgInIiKSkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0cyIsCisgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBsb2FkIFN5c3RlbXN0YXRzIFRhYmxlIChsaW51eDEpLCBjYW5ub3Qgb3BlbiAlc1xuIiwKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgcmMgPSBfc3lzdGVtc3RhdHNfdjZfbG9hZF9maWxlKGVudHJ5LCBkZXZpbik7CiAKICAgICBmY2xvc2UoZGV2aW4pOwogCkBAIC0zODAsNCArNTgyLDExNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorCisjZGVmaW5lIERFVl9TTk1QNl9ESVJOQU1FICAgIi9wcm9jL25ldC9kZXZfc25tcDYiCisjZGVmaW5lIElGSU5ERVhfTElORSAgICAgICAgImlmSW5kZXgiCisjZGVmaW5lIERFVl9GSUxFTkFNRV9MRU4gICAgNjQKKworLyoKKyAqIGxvYWQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcworICovCitzdGF0aWMgaW50IAorX3N5c3RlbXN0YXRzX3Y2X2xvYWRfaWZzdGF0cyhuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIERJUiAgICAgICAgICAgICpkZXZfc25tcDZfZGlyOworICAgIHN0cnVjdCBkaXJlbnQgICpkZXZfc25tcDZfZW50cnk7CisgICAgY2hhciAgICAgICAgICAgZGV2X2ZpbGVuYW1lW0RFVl9GSUxFTkFNRV9MRU5dOworICAgIEZJTEUgICAgICAgICAgICpkZXZpbjsKKyAgICBjaGFyICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIGNoYXIgICAgICAgICAgICpzdGFydCA9IGxpbmU7CisgICAgY2hhciAgICAgICAgICAgKnNjYW5fc3RyOworICAgIHVpbnRtYXhfdCAgICAgICBzY2FuX3ZhbDsKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgICAgICAgICAKKyAgICAvKgorICAgICAqIHRyeSB0byBvcGVuIC9wcm9jL25ldC9kZXZfc25tcDYgZGlyZWN0b3J5LiBJZiB3ZSBjYW4ndCwgdGhhdCcgb2sgLQorICAgICAqIG1heWJlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgcnVubmluZyBrZXJuZWwuCisgICAgICovCisgICAgaWYgKChkZXZfc25tcDZfZGlyID0gb3BlbmRpcihERVZfU05NUDZfRElSTkFNRSkpID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppZnN0YXRzIiwKKyAgICAgICAgIkZhaWxlZCB0byBsb2FkIElQdjYgSWZTdGF0cyBUYWJsZSAobGludXgpXG4iKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIFJlYWQgZWFjaCBwZXIgaW50ZXJmYWNlIHN0YXRpc3RpY3MgcHJvYyBmaWxlCisgICAgICovCisgICAgd2hpbGUgKChkZXZfc25tcDZfZW50cnkgPSByZWFkZGlyKGRldl9zbm1wNl9kaXIpKSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChkZXZfc25tcDZfZW50cnktPmRfbmFtZVswXSA9PSAnLicpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAKKyAgICAgICAgaWYgKHNucHJpbnRmKGRldl9maWxlbmFtZSwgREVWX0ZJTEVOQU1FX0xFTiwgIiVzLyVzIiwgREVWX1NOTVA2X0RJUk5BTUUsCisgICAgICAgICAgICAgICAgZGV2X3NubXA2X2VudHJ5LT5kX25hbWUpID4gREVWX0ZJTEVOQU1FX0xFTikgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkludGVyZmFjZSBuYW1lICVzIGlzIHRvbyBsb25nXG4iLAorICAgICAgICAgICAgICAgICAgICBkZXZfc25tcDZfZW50cnktPmRfbmFtZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTlVMTCA9PSAoZGV2aW4gPSBmb3BlbihkZXZfZmlsZW5hbWUsICJyIikpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4gJXNcbiIsIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBJZiBhIHN0YXQgZmlsZSBuYW1lIGlzIG1hZGUgb2YgZGlnaXRzLCB0aGUgbmFtZSBpcyBpbnRlcmZhY2UgaW5kZXguCisgICAgICAgICAqIElmIGl0IGlzIGFuIGludGVyZmFjZSBuYW1lLCB0aGUgZmlsZSBpbmNsdWRlcyBhIGxpbmUgbGFiZWxlZCBpZkluZGV4LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGlzZGlnaXQoZGV2X3NubXA2X2VudHJ5LT5kX25hbWVbMF0pKSB7CisgICAgICAgICAgICBzY2FuX3ZhbCA9IHN0cnRvdWxsKGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lLCBOVUxMLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChOVUxMID09IChzdGFydCA9IGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZGV2aW4pKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICIlcyBkb2Vzbid0IGluY2x1ZGUgYW55IGxpbmVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYgKDAgIT0gc3RybmNtcChzdGFydCwgSUZJTkRFWF9MSU5FLCA3KSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICIlcyBkb2Vzbid0IGluY2x1ZGUgaWZJbmRleCBsaW5lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2Nhbl9zdHIgPSBzdHJyY2hyKGxpbmUsICcgJyk7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBzY2FuX3N0cikgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICIlcyBpcyB3cm9uZyBmb3JtYXQiLCBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzY2FuX3ZhbCA9IHN0cnRvdWxsKHNjYW5fc3RyLCBOVUxMLCAwKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMiwgc2Nhbl92YWwpOworICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgY2xvc2VkaXIoZGV2X3NubXA2X2Rpcik7CisgICAgICAgICAgICByZXR1cm4gLTM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIF9zeXN0ZW1zdGF0c192Nl9sb2FkX2ZpbGUoZW50cnksIGRldmluKTsKKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKyAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICB9CisgICAgY2xvc2VkaXIoZGV2X3NubXA2X2Rpcik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBCYXNlZCBvbiBsb2FkX2ZsYWdzLCBsb2FkIGlwU3lzdGVtU3RhdHNUYWJsZSBvciBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NiBlbnRyaWVzLiAKKyAqLworc3RhdGljIGludAorX3N5c3RlbXN0YXRzX3Y2KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY2IChmbGFncyAldSlcbiIsCisgICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOworCisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCisKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkgeworICAgICAgICAvKiBsb2FkIGlwSWZTdGF0c1RhYmxlICovCisgICAgICAgIHJldHVybiBfc3lzdGVtc3RhdHNfdjZfbG9hZF9pZnN0YXRzKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgKi8KKyAgICAgICAgcmV0dXJuIF9zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgfQorfQogI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyYWIxYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jCkBAIC0wLDAgKzEsMjEyIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmg+CisKKyNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCisKK3N0YXRpYyBpbnQgX3N5c3RlbXN0YXRzKG1pYmdyb3VwX2UsIG5ldHNubXBfY29udGFpbmVyICosIHVfaW50KTsKK3N0YXRpYyB2b2lkIF9hZGRfaXBzdGF0cyhtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKiwgbWliMl9pcElmU3RhdHNFbnRyeV90ICopOworc3RhdGljIGludCBfaW5zZXJ0X2VudHJ5KG5ldHNubXBfY29udGFpbmVyICosIG1pYjJfaXBJZlN0YXRzRW50cnlfdCAqKTsKKwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfYXJjaF9pbml0KHZvaWQpCit7CisgICAgaW5pdF9rZXJuZWxfc3Vub3M1KCk7Cit9CisKKy8qCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgY29udGFpbmVyIGVycm9yCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBjcmVhdGUgZW50cnkgKHByb2JhYmx5IG1hbGxvYykKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYzsgCisgICAgCisgICAgaWYgKGNvbnRhaW5lciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKC0xKTsKKworICAgIGlmIChsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfTE9BRF9JRlRBQkxFKQorCXJldHVybiAwOyAvKiB3ZSBkbyBub3Qgc3VwcG9ydCBpcElmU3RhdHNUYWJsZSB5ZXQgKi8KKworICAgIGlmICgocmMgPSBfc3lzdGVtc3RhdHMoTUlCX0lQX1RSQUZGSUNfU1RBVFMsIGNvbnRhaW5lciwgbG9hZF9mbGFncykpIDwgMCkKKyAgICAgICAgcmV0dXJuIChyYyk7CisjaWYgZGVmaW5lZChORVRTTk1QX0VOQUJMRV9JUFY2KQorICAgIGlmICgocmMgPSBfc3lzdGVtc3RhdHMoTUlCX0lQNiwgY29udGFpbmVyLCBsb2FkX2ZsYWdzKSkgPCAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShjb250YWluZXIsCisgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9OT0ZMQUdTKTsKKyAgICAgICAgcmV0dXJuIChyYyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuICgwKTsKK30KKworLyoKKyAqIEByZXR2YWwgMCBzdWNjZXNzIAorICogQHJldHZhbCA8MCBlcnJvcgorICovCitzdGF0aWMgaW50Citfc3lzdGVtc3RhdHMobWliZ3JvdXBfZSBtaWIsIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgbWliMl9pcElmU3RhdHNFbnRyeV90IGlwZSwgaXB0b3Q7CisgICAgcmVxX2UgcmVxID0gR0VUX0ZJUlNUOworICAgIGludCBpcHZlcnNpb24gPSAobWliID09IE1JQl9JUDYpID8gTUlCMl9JTkVUQUREUkVTU1RZUEVfaXB2NiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSUIyX0lORVRBRERSRVNTVFlQRV9pcHY0OworICAgIG1lbXNldCgmaXB0b3QsICdcMCcsIHNpemVvZihpcHRvdCkpOworCisgICAgd2hpbGUgKGdldE1pYnN0YXQobWliLCAmaXBlLCBzaXplb2YoaXBlKSwgcmVxLCAKKyAgICAgICAgICAgICAgICAgICAgICAmR2V0X2V2ZXJ5dGhpbmcsIE5VTEwpID09IDApIHsgCisgICAgICAgIHJlcSA9IEdFVF9ORVhUOworICAgICAgICBuZXRzbm1wX2Fzc2VydChpcGUuaXBJZlN0YXRzSVBWZXJzaW9uID09IGlwdmVyc2lvbik7CisgICAgICAgIF9hZGRfaXBzdGF0cygmaXB0b3QsICZpcGUpOworICAgIH0KKyAgICBpcHRvdC5pcElmU3RhdHNJUFZlcnNpb24gPSBpcHZlcnNpb247CisgICAgcmV0dXJuIF9pbnNlcnRfZW50cnkoY29udGFpbmVyLCAmaXB0b3QpOworfQorCitzdGF0aWMgdm9pZAorX2FkZF9pcHN0YXRzKG1pYjJfaXBJZlN0YXRzRW50cnlfdCAqbzEsIG1pYjJfaXBJZlN0YXRzRW50cnlfdCAqbzIpCit7CisgICAgbzEtPmlwSWZTdGF0c0luSGRyRXJyb3JzICs9IG8yLT5pcElmU3RhdHNJbkhkckVycm9yczsKKyAgICBvMS0+aXBJZlN0YXRzSW5Ub29CaWdFcnJvcnMgKz0gbzItPmlwSWZTdGF0c0luVG9vQmlnRXJyb3JzOworICAgIG8xLT5pcElmU3RhdHNJbk5vUm91dGVzICs9IG8yLT5pcElmU3RhdHNJbk5vUm91dGVzOworICAgIG8xLT5pcElmU3RhdHNJbkFkZHJFcnJvcnMgKz0gbzItPmlwSWZTdGF0c0luQWRkckVycm9yczsKKyAgICBvMS0+aXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zICs9IG8yLT5pcElmU3RhdHNJblVua25vd25Qcm90b3M7CisgICAgbzEtPmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cyArPSBvMi0+aXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzOworICAgIG8xLT5pcElmU3RhdHNJbkRpc2NhcmRzICs9IG8yLT5pcElmU3RhdHNJbkRpc2NhcmRzOworICAgIG8xLT5pcElmU3RhdHNPdXREaXNjYXJkcyArPSBvMi0+aXBJZlN0YXRzT3V0RGlzY2FyZHM7CisgICAgbzEtPmlwSWZTdGF0c091dEZyYWdPS3MgKz0gbzItPmlwSWZTdGF0c091dEZyYWdPS3M7CisgICAgbzEtPmlwSWZTdGF0c091dEZyYWdGYWlscyArPSBvMi0+aXBJZlN0YXRzT3V0RnJhZ0ZhaWxzOworICAgIG8xLT5pcElmU3RhdHNPdXRGcmFnQ3JlYXRlcyArPSBvMi0+aXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXM7CisgICAgbzEtPmlwSWZTdGF0c1JlYXNtUmVxZHMgKz0gbzItPmlwSWZTdGF0c1JlYXNtUmVxZHM7CisgICAgbzEtPmlwSWZTdGF0c1JlYXNtT0tzICs9IG8yLT5pcElmU3RhdHNSZWFzbU9LczsKKyAgICBvMS0+aXBJZlN0YXRzUmVhc21GYWlscyArPSBvMi0+aXBJZlN0YXRzUmVhc21GYWlsczsKKyAgICBvMS0+aXBJZlN0YXRzT3V0Tm9Sb3V0ZXMgKz0gbzItPmlwSWZTdGF0c091dE5vUm91dGVzOworICAgIG8xLT5pcElmU3RhdHNSZWFzbUR1cGxpY2F0ZXMgKz0gbzItPmlwSWZTdGF0c1JlYXNtRHVwbGljYXRlczsKKyAgICBvMS0+aXBJZlN0YXRzUmVhc21QYXJ0RHVwcyArPSBvMi0+aXBJZlN0YXRzUmVhc21QYXJ0RHVwczsKKyAgICBvMS0+aXBJZlN0YXRzRm9yd1Byb2hpYml0cyArPSBvMi0+aXBJZlN0YXRzRm9yd1Byb2hpYml0czsKKyAgICBvMS0+dWRwSW5Da3N1bUVycnMgKz0gbzItPnVkcEluQ2tzdW1FcnJzOworICAgIG8xLT51ZHBJbk92ZXJmbG93cyArPSBvMi0+dWRwSW5PdmVyZmxvd3M7CisgICAgbzEtPnJhd2lwSW5PdmVyZmxvd3MgKz0gbzItPnJhd2lwSW5PdmVyZmxvd3M7CisgICAgbzEtPmlwSWZTdGF0c0luV3JvbmdJUFZlcnNpb24gKz0gbzItPmlwSWZTdGF0c0luV3JvbmdJUFZlcnNpb247CisgICAgbzEtPmlwSWZTdGF0c091dFdyb25nSVBWZXJzaW9uICs9IG8yLT5pcElmU3RhdHNPdXRXcm9uZ0lQVmVyc2lvbjsKKyAgICBvMS0+aXBJZlN0YXRzT3V0U3dpdGNoSVBWZXJzaW9uICs9IG8yLT5pcElmU3RhdHNPdXRTd2l0Y2hJUFZlcnNpb247CisgICAgbzEtPmlwSWZTdGF0c0hDSW5SZWNlaXZlcyArPSBvMi0+aXBJZlN0YXRzSENJblJlY2VpdmVzOworICAgIG8xLT5pcElmU3RhdHNIQ0luT2N0ZXRzICs9IG8yLT5pcElmU3RhdHNIQ0luT2N0ZXRzOworICAgIG8xLT5pcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtcyArPSBvMi0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXM7CisgICAgbzEtPmlwSWZTdGF0c0hDSW5EZWxpdmVycyArPSBvMi0+aXBJZlN0YXRzSENJbkRlbGl2ZXJzOworICAgIG8xLT5pcElmU3RhdHNIQ091dFJlcXVlc3RzICs9IG8yLT5pcElmU3RhdHNIQ091dFJlcXVlc3RzOworICAgIG8xLT5pcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgKz0gbzItPmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtczsKKyAgICBvMS0+aXBJZlN0YXRzT3V0RnJhZ1JlcWRzICs9IG8yLT5pcElmU3RhdHNPdXRGcmFnUmVxZHM7CisgICAgbzEtPmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzICs9IG8yLT5pcElmU3RhdHNIQ091dFRyYW5zbWl0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRPY3RldHMgKz0gbzItPmlwSWZTdGF0c0hDT3V0T2N0ZXRzOworICAgIG8xLT5pcElmU3RhdHNIQ0luTWNhc3RQa3RzICs9IG8yLT5pcElmU3RhdHNIQ0luTWNhc3RQa3RzOworICAgIG8xLT5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHMgKz0gbzItPmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRNY2FzdFBrdHMgKz0gbzItPmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzOworICAgIG8xLT5pcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzICs9IG8yLT5pcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzOworICAgIG8xLT5pcElmU3RhdHNIQ0luQmNhc3RQa3RzICs9IG8yLT5pcElmU3RhdHNIQ0luQmNhc3RQa3RzOworICAgIG8xLT5pcElmU3RhdHNIQ091dEJjYXN0UGt0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRCY2FzdFBrdHM7CisgICAgbzEtPmlwc2VjSW5TdWNjZWVkZWQgKz0gbzItPmlwc2VjSW5TdWNjZWVkZWQ7CisgICAgbzEtPmlwc2VjSW5GYWlsZWQgKz0gbzItPmlwc2VjSW5GYWlsZWQ7CisgICAgbzEtPmlwSW5Da3N1bUVycnMgKz0gbzItPmlwSW5Da3N1bUVycnM7CisgICAgbzEtPnRjcEluRXJycyArPSBvMi0+dGNwSW5FcnJzOworICAgIG8xLT51ZHBOb1BvcnRzICs9IG8yLT51ZHBOb1BvcnRzOworfQorCisvKgorICogQHJldHZhbCAwIGVudHJ5IHdhcyBzdWNjZXNzZnVsbHkgaW5zZXJ0ZWQgaW4gdGhlIGNvbnRhaW5lciAKKyAqIEByZXR2YWwgLTEgY29udGFpbmVyIGVycm9yCisgKiBAcmV0dmFsIC0yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yCisgKi8KK3N0YXRpYyBpbnQgCitfaW5zZXJ0X2VudHJ5KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIG1pYjJfaXBJZlN0YXRzRW50cnlfdCAqaXBlKQoreworICAgIGludCBpOworICAgIAorICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVwID0KKyAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKGlwZS0+aXBJZlN0YXRzSVBWZXJzaW9uLCAwKTsgCisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzOmFyY2giLCAiaW5zZXJ0IGVudHJ5IGZvciB2JWRcbiIsCisgICAgICAgICAgICAgICAgaXBlLT5pcElmU3RhdHNJUFZlcnNpb24pKTsgCisgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOnN5c3RlbXN0YXRzOmFyY2giLCAiaW5zZXJ0IGZhaWxlZCAoYWxsb2MpIikpOworICAgICAgICByZXR1cm4gKC0yKTsKKyAgICB9CisKKyAgICBlcC0+c3RhdHMuSENJblJlY2VpdmVzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5SZWNlaXZlcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDSW5SZWNlaXZlcy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ0luUmVjZWl2ZXMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDSW5PY3RldHMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbk9jdGV0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDSW5PY3RldHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENJbk9jdGV0cyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuSW5IZHJFcnJvcnMgPSBpcGUtPmlwSWZTdGF0c0luSGRyRXJyb3JzOworICAgIGVwLT5zdGF0cy5JbkFkZHJFcnJvcnMgPSBpcGUtPmlwSWZTdGF0c0luQWRkckVycm9yczsKKyAgICBlcC0+c3RhdHMuSW5Vbmtub3duUHJvdG9zID0gaXBlLT5pcElmU3RhdHNJblVua25vd25Qcm90b3M7CisgICAgZXAtPnN0YXRzLkluVHJ1bmNhdGVkUGt0cyA9IGlwZS0+aXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzOworICAgIGVwLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmhpZ2ggPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtcyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuUmVhc21SZXFkcyA9IGlwZS0+aXBJZlN0YXRzUmVhc21SZXFkczsgCisgICAgZXAtPnN0YXRzLlJlYXNtT0tzID0gaXBlLT5pcElmU3RhdHNSZWFzbU9LczsgCisgICAgZXAtPnN0YXRzLlJlYXNtRmFpbHMgPSBpcGUtPmlwSWZTdGF0c1JlYXNtRmFpbHM7IAorICAgIGVwLT5zdGF0cy5JbkRpc2NhcmRzID0gaXBlLT5pcElmU3RhdHNJbkRpc2NhcmRzOworICAgIGVwLT5zdGF0cy5IQ0luRGVsaXZlcnMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbkRlbGl2ZXJzICYgMHhmZmZmZmZmZjsgCisgICAgZXAtPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbkRlbGl2ZXJzID4+IDMyOyAKKyAgICBlcC0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ091dFJlcXVlc3RzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0cyA+PiAzMjsgCisgICAgZXAtPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93ID0gaXBlLT5pcElmU3RhdHNPdXROb1JvdXRlcyAmIDB4ZmZmZmZmZmY7IAorICAgIGVwLT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSAwOworICAgIGVwLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmhpZ2ggPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gaXBlLT5pcElmU3RhdHNPdXREaXNjYXJkcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IDA7IAorICAgIGVwLT5zdGF0cy5IQ091dEZyYWdPS3MubG93ID0gaXBlLT5pcElmU3RhdHNPdXRGcmFnT0tzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnT0tzLmhpZ2ggPSAwOworICAgIGVwLT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3cgPSBpcGUtPmlwSWZTdGF0c091dEZyYWdGYWlscyAmIDB4ZmZmZmZmZmY7IAorICAgIGVwLT5zdGF0cy5IQ091dEZyYWdGYWlscy5oaWdoID0gMDsKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBpcGUtPmlwSWZTdGF0c091dEZyYWdDcmVhdGVzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5oaWdoID0gMDsKKyAgICBlcC0+c3RhdHMuSENPdXRUcmFuc21pdHMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRUcmFuc21pdHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ091dFRyYW5zbWl0cyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuSENPdXRPY3RldHMubG93ID0gaXBlLT5pcElmU3RhdHNIQ091dE9jdGV0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0T2N0ZXRzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdyA9IGlwZS0+aXBJZlN0YXRzSENJbk1jYXN0UGt0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDSW5NY2FzdFBrdHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENJbk1jYXN0UGt0cyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRNY2FzdFBrdHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENPdXRNY2FzdFBrdHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3cgPSBpcGUtPmlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luQmNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRCY2FzdFBrdHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgPj4gMzI7CisKKyAgICBmb3IgKGk9MDsgaTw9SVBTWVNURU1TVEFUU1RBQkxFX0xBU1Q7IGkrKykKKyAgICAgICAgZXAtPnN0YXRzLmNvbHVtbkF2YWlsW2ldID0gMTsKKyAgICAKKyAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVwKSA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOnN5c3RlbXN0YXRzOmFyY2giLCAidW5hYmxlIHRvIGluc2VydCBlbnRyeSIpKTsgCisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoZXApOyAKKyAgICAgICAgcmV0dXJuICgtMSk7CisgICAgfQorICAgIHJldHVybiAoMCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmMKaW5kZXggNjVhYThlMy4uYWFhZTJlMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfb2lkW10gPSB7IElORVRORVRUT01FRElBVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRbXSA9IHsgSU5FVE5FVFRPTUVESUFUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWQpOwogCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbiBpbmV0TmV0VG9NZWRpYVRhYmxlX3VzZXJfY29udGV4dDsKQEAgLTE1OSwxMCArMTU5LDEwIEBACiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCIsICJjYWxsZWRcbiIpKTsKIAogICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7Ci0KICAgICAvKgogICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGluZXROZXRUb01lZGlhVGFibGUgcm93cmVxIGNsZWFudXAuCiAgICAgICovCisgICAgU05NUF9GUkVFKHJvd3JlcV9jdHgtPmRhdGEpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCAqLwogCiAvKioKQEAgLTUzNiwxMSArNTM2LDcgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5ldE5ldFRvTWVkaWFMYXN0VXBkYXRlZCBkYXRhLgogICAgICAqIGNvcHkgKCogaW5ldE5ldFRvTWVkaWFMYXN0VXBkYXRlZF92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCi0gICAgLyoKLSAgICAgKiB4eHgtcmtzOiBnZXQgdGhpcyB2YWx1ZT8KLSAgICAgKi8KLSAgICByZXR1cm4gTUZEX1NLSVA7Ci0KKyAgICAqaW5ldE5ldFRvTWVkaWFMYXN0VXBkYXRlZF92YWxfcHRyID0gcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2xhc3RfdXBkYXRlZDsKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWRfZ2V0ICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAppbmRleCA3ZjNmY2UyLi42MzI4NTRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCkBAIC0xNTUsNiArMTU1LDkgQEAKICAgICAgICAgaW50ICAgICAgICAgICAgIGluZXROZXRUb01lZGlhUm93U3RhdHVzLAogICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFSb3dTdGF0dXNfdW5kbzsKIAorICAgICAgICAvKiBmbGFnLCBpZiB0aGUgcm93IHdhcyBwcmVzZW50IGluIGxhc3QgcmVhZCBmcm9tIG9wZXJhdGluZyBzeXN0ZW0gKi8KKyAgICAgICAgaW50IHZhbGlkOworCiAgICAgICAgIC8qCiAgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KICAgICAgICAgICovCkBAIC0yMDAsOCArMjAzLDggQEAKICAgICAgICAgKiBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoaW5ldE5ldFRvTWVkaWFUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDgxOTQ1MzQuLmUxOGY5OGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTEyOSwxNyArMTI5LDM0IEBACiAgICAgICogY2FjaGUtPmVuYWJsZWQgdG8gMC4KICAgICAgKi8KICAgICBjYWNoZS0+dGltZW91dCA9IElORVRORVRUT01FRElBVEFCTEVfQ0FDSEVfVElNRU9VVDsgLyogc2Vjb25kcyAqLworCisgICAgLyogV2Ugd2FudCB0byBtYW51YWxseSBkZWxldGUgZW50cmllcyBpbiB0aGUgY2FjaGUgdG8ga2VlcCBMYXN0VXBkYXRlZAorICAgICAqIHRpbWVzdGFtcC4gKi8KKyAgICBjYWNoZS0+ZmxhZ3MgfD0gTkVUU05NUF9DQUNIRV9ET05UX0ZSRUVfQkVGT1JFX0xPQUQKKyAgICAgICAgICAgICAgICAgICAgfCBORVRTTk1QX0NBQ0hFX0FVVE9fUkVMT0FEOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9pbml0ICovCiAKIC8qKgotICogY2hlY2sgZW50cnkgZm9yIHVwZGF0ZQotICoKKyAqIFB1dCBhbGwgZW50cmllcyB3aXRoIHZhbGlkICE9MSB0byB0aGUgbGlzdCB0byBkZWxldGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fc25hcmZfYXJwX2VudHJ5KG5ldHNubXBfYXJwX2VudHJ5ICphcnBfZW50cnksCitfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHgsCisgICAgICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGUpCit7CisgICAgaWYgKGN0eC0+dmFsaWQpCisgICAgICAgICAgICBjdHgtPnZhbGlkID0gMDsKKyAgICBlbHNlCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQodG9fZGVsZXRlLCBjdHgpOworfQorCisvKioKKyAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK19hZGRfb3JfdXBkYXRlX2FycF9lbnRyeShuZXRzbm1wX2FycF9lbnRyeSAqYXJwX2VudHJ5LAogICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQogewotICAgIGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsICpvbGQ7CiAgICAgaW50ICAgICAgICAgICAgIGluZXRBZGRyZXNzVHlwZTsKIAogICAgIERFQlVHVFJBQ0U7CkBAIC0xNTUsNyArMTcyLDcgQEAKICAgICAgICAgaW5ldEFkZHJlc3NUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSA2OgorICAgIGNhc2UgMTY6CiAgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OwogICAgICAgICBicmVhazsKIApAQCAtMTY2LDggKzE4Myw4IEBACiAgICAgfQogCiAgICAgLyoKLSAgICAgKiBhbGxvY2F0ZSBhbiByb3cgY29udGV4dCBhbmQgc2V0IHRoZSBpbmRleChlcyksIHRoZW4gYWRkIGl0IHRvCi0gICAgICogdGhlIGNvbnRhaW5lcgorICAgICAqIGFsbG9jYXRlIGFuIHJvdyBjb250ZXh0IGFuZCBzZXQgdGhlIGluZGV4KGVzKSwgdGhlbiB0cnkgdG8gZmluZCBpdCBpbgorICAgICAqIHRoZSBjYWNoZS4KICAgICAgKi8KICAgICByb3dyZXFfY3R4ID0gaW5ldE5ldFRvTWVkaWFUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGFycF9lbnRyeSwgTlVMTCk7CiAgICAgaWYgKChOVUxMICE9IHJvd3JlcV9jdHgpICYmCkBAIC0xNzUsOCArMTkyLDIzIEBACiAgICAgICAgICAocm93cmVxX2N0eCwgcm93cmVxX2N0eC0+ZGF0YS0+aWZfaW5kZXgsIGluZXRBZGRyZXNzVHlwZSwKICAgICAgICAgICAoY2hhciAqKSByb3dyZXFfY3R4LT5kYXRhLT5hcnBfaXBhZGRyZXNzLAogICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9pcGFkZHJlc3NfbGVuKSkpIHsKLSAgICAgICAgcm93cmVxX2N0eC0+aW5ldE5ldFRvTWVkaWFSb3dTdGF0dXMgPSBST1dTVEFUVVNfQUNUSVZFOwotICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisKKyAgICAgICAgLyogdHJ5IHRvIGZpbmQgb2xkIGVudHJ5ICovCisgICAgICAgIG9sZCA9IENPTlRBSU5FUl9GSU5EKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIGlmIChvbGQgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogdGhlIGVudHJ5IGlzIGFscmVhZHkgdGhlcmUsIHVwZGF0ZSBpdCAqLworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShvbGQtPmRhdGEsIGFycF9lbnRyeSk7CisgICAgICAgICAgICBvbGQtPnZhbGlkID0gMTsgLyogZG8gbm90IGRlbGV0ZSBpdCBpbiBmb2xsb3dpbmcgc3dlZXAgKi8KKyAgICAgICAgICAgIC8qIGRlbGV0ZSB0aGUgYXV4aWxpYXJ5IGNvbnRleHQgd2UgdXNlZCB0byBmaW5kIHRoZSBlbnRyeQorICAgICAgICAgICAgICogKHRoaXMgZGVsZXRlcyBhbHNvIGFycF9lbnRyeSkgKi8KKyAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogY3JlYXRlIG5ldyBlbnRyeSBhbmQgYWRkIGl0IHRvIHRoZSBjYWNoZSovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5pbmV0TmV0VG9NZWRpYVJvd1N0YXR1cyA9IFJPV1NUQVRVU19BQ1RJVkU7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5hcnBfbGFzdF91cGRhdGVkID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisgICAgICAgICAgICByb3dyZXFfY3R4LT52YWxpZCA9IDE7IC8qIGRvIG5vdCBkZWxldGUgaXQgaW4gZm9sbG93aW5nIHN3ZWVwICovCisgICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAocm93cmVxX2N0eCkgewogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCkBAIC0yNTMsNiArMjg1LDcgQEAKIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqYXJwX2NvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlID0gbmV0c25tcF9jb250YWluZXJfZmluZCgibGlmbyIpOwogCiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLCAiY2FsbGVkXG4iKSk7CiAKQEAgLTI3MiwxNyArMzA1LDMzIEBACiAgICAgICogd2UganVzdCBnb3QgYSBmcmVzaCBjb3B5IG9mIGRhdGEuIHNuYXJmIGRhdGEKICAgICAgKi8KICAgICBDT05UQUlORVJfRk9SX0VBQ0goYXJwX2NvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9zbmFyZl9hcnBfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CiAKICAgICAvKgorICAgICAqIERlbGV0ZSBhbGwgY2FjaGVkIGVudHJpZXMsIHdoaWNoIHdlcmUgbm90IHByb3ZpZGVkIGJ5CisgICAgICogbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9sb2FkCisgICAgICovCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb2xsZWN0X2ludmFsaWRfYXJwX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgdG9fZGVsZXRlKTsKKyAgICB3aGlsZSAoQ09OVEFJTkVSX1NJWkUodG9fZGVsZXRlKSkgeworICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKmN0eCA9IENPTlRBSU5FUl9GSVJTVCh0b19kZWxldGUpOworICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgY3R4KTsKKyAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoY3R4KTsKKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRSh0b19kZWxldGUsIE5VTEwpOworICAgIH0KKyAgICBDT05UQUlORVJfRlJFRSh0b19kZWxldGUpOworCisgICAgLyoKICAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggZW50cnksIG9yIHJlbGVhc2VkIGl0LAogICAgICAqIHNvIHRoZSBhY2Nlc3MgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGNsZWFyIHRoZSBjb250YWluZXIuCiAgICAgICovCiAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGFycF9jb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0FSUF9GUkVFX0RPTlRfQ0xFQVIpOwogCi0gICAgREVCVUdNU0dUKCgidmVyYm9zZTppbmV0TmV0VG9NZWRpYVRhYmxlOmluZXROZXRUb01lZGlhVGFibGVfY2FjaGVfbG9hZCIsICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgREVCVUdNU0dUKCgidmVyYm9zZTppbmV0TmV0VG9NZWRpYVRhYmxlOmluZXROZXRUb01lZGlhVGFibGVfY2FjaGVfbG9hZCIsCisgICAgICAgICAgICAgICAiJSIgTkVUU05NUF9QUkl6ICJ1IHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNDJlYmNjMC4uMThjYzMzYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCkBAIC03MzUsNiArNzM1LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3Bvc3RfcmVxdWVzdCAqLwogCisKIC8qKgogICogQGludGVybmFsCiAgKiB3cmFwcGVyCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jCmluZGV4IDE2ZTIyMDAuLjE2ZGI1MDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJpcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZFtdID0geyBJUEFERFJFU1NQUkVGSVhUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkW10gPSB7IElQQUREUkVTU1BSRUZJWFRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkKTsKIAogaXBBZGRyZXNzUHJlZml4VGFibGVfcmVnaXN0cmF0aW9uIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3VzZXJfY29udGV4dDsKQEAgLTM5NSwxMCArMzk1LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBBZGRyZXNzUHJlZml4T3JpZ2luIGRhdGEuCiAgICAgICogY29weSAoKiBpcEFkZHJlc3NQcmVmaXhPcmlnaW5fdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLwotICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pcEFkZHJlc3NQcmVmaXhPcmlnaW47Ci0KLSAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CisgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW5fdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLmlwQWRkcmVzc1ByZWZpeE9yaWdpbjsKKyAgICAKKyAgICAgICAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcEFkZHJlc3NQcmVmaXhPcmlnaW5fZ2V0ICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oCmluZGV4IGRmZTk3M2UuLjIwMWU1NTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oCkBAIC0yMTEsOCArMjExLDggQEAKICAgICAgICAgKiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGlwQWRkcmVzc1ByZWZpeFRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaAppbmRleCA2NmYyMTA5Li41ZWNhZGU0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnN0YW50cy5oCkBAIC0xMzcsMyArMTM3LDE3IEBACiB9CiAjZW5kaWYKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBBRERSRVNTUFJFRklYVEFCTEVfT0lEU19IICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBBZGRpdGlvbmFsIGNvbnN0YW50cyBhbmQgZGVmaW5pdGlvbnMgZm9yIGNvbW1vbiBpbXBsZW1lbnRhdGlvbgorKi8KKyNkZWZpbmUgSU5GSU5JVFlfTElGRV9USU1FICAgICAgMHhGRkZGRkZGRlUKKyNkZWZpbmUgTklQNihhZGRyKSBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbMF0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbMV0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbMl0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbM10pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbNF0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbNV0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbNl0pLCBcCisgICAgICAgIG50b2hzKChhZGRyKS5zNl9hZGRyMTZbN10pCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggMmY2NGNiZS4uOTE1OWUxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI1MSw2ICsyNTEsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWFfYWRkcmVzc19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+ZGF0YS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX3ByZWZpeF9sZW4pOworICAgICAgICBuZXRzbm1wX2lwYWRkcmVzc19mbGFnc19jb3B5KCZyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeEFkdlZhbGlkTGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvd3JlcV9jdHgtPmRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4T25MaW5rRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZywgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX3ByZWZlcmVkX2xpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX3ZhbGlkX2xpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX29ubGlua19mbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX2F1dG9ub21vdXNfZmxhZyk7CisKICAgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9CiAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9pbmRleGVzX3NldChyb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KQEAgLTI3OCw4ICsyOTUsMTQgQEAKICAgICAgICAgICogVE9ETzozNTI6cjogfCAgIHwtPiBwb3B1bGF0ZSBpcEFkZHJlc3NQcmVmaXhUYWJsZSBkYXRhIGNvbnRleHQuCiAgICAgICAgICAqIFBvcHVsYXRlIGRhdGEgY29udGV4dCBoZXJlLiAob3B0aW9uYWxseSwgZGVsYXkgdW50aWwgcm93IHByZXApCiAgICAgICAgICAqLwotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlwQWRkcmVzc1ByZWZpeE9yaWdpbiA9Ci0gICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPmlhX29yaWdpbjsKKyAgICAgICAgICAgbmV0c25tcF9pcGFkZHJlc3NfcHJlZml4X29yaWdpbl9jb3B5KCZyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+ZGF0YS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+dGJsX2lkeC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc0FkZHJUeXBlKTsKIAogICAgICAgICAvKiogZGVmZXIgdGhlIHJlc3QgdGlsIHJvdyBwcmVwICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMKaW5kZXggODQ4YzYzZC4uYzFmYWQ3NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgImlwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgaXBBZGRyZXNzVGFibGVfb2lkW10gPSB7IElQQUREUkVTU1RBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwQWRkcmVzc1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpcEFkZHJlc3NUYWJsZV9vaWQpOworY29uc3Qgb2lkICAgICAgIGlwQWRkcmVzc1RhYmxlX29pZFtdID0geyBJUEFERFJFU1NUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaXBBZGRyZXNzVGFibGVfb2lkKTsKIAogaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uIGlwQWRkcmVzc1RhYmxlX3VzZXJfY29udGV4dDsKIHN0YXRpYyBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKmlwQWRkcmVzc1RhYmxlX3VzZXJfY29udGV4dF9wOwpAQCAtOTQ0LDcgKzk0NCwxMCBAQAogICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBBZGRyZXNzUm93U3RhdHVzX3ZhbF9wdHIpOwogCiAgICAgLyoqIFdBUk5JTkc6IHRoaXMgY29kZSBtaWdodCBub3Qgd29yayBmb3IgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKi8KLSAgICAoKmlwQWRkcmVzc1Jvd1N0YXR1c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmlwQWRkcmVzc1Jvd1N0YXR1czsKKyAgICBpZihyb3dyZXFfY3R4LT5kYXRhLT5pZl9pbmRleCkKKyAgICAgICAoKmlwQWRkcmVzc1Jvd1N0YXR1c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmlwQWRkcmVzc1Jvd1N0YXR1czsKKyAgICBlbHNlCisgICAgICAgKCppcEFkZHJlc3NSb3dTdGF0dXNfdmFsX3B0cikgPSBST1dTVEFUVVNfTk9UUkVBRFk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwQWRkcmVzc1Jvd1N0YXR1c19nZXQgKi8KQEAgLTE0ODYsNyArMTQ4OSw3IEBACiAgICAgICogZmluZCBuYW1lIGZvciBpZkluZGV4CiAgICAgICovCiAgICAgaWYgKE5VTEwgPT0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX25hbWVfZmluZChpcEFkZHJlc3NJZkluZGV4X3ZhbCkpIHsKLSAgICAgICAgREVCVUdNU0dUKCgiaXBBZGRyZXNzVGFibGUiLCAiY2FudCBmaW5kIG5hbWUgZm9yIGluZGV4ICVkXG4iLAorICAgICAgICBERUJVR01TR1QoKCJpcEFkZHJlc3NUYWJsZSIsICJjYW50IGZpbmQgbmFtZSBmb3IgaW5kZXggJWxkXG4iLAogICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc0lmSW5kZXhfdmFsKSk7CiAgICAgICAgIHJldHVybiBNRkRfTk9UX1ZBTElEX05PVzsKICAgICB9CkBAIC0yMDMyLDcgKzIwMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUm93U3RhdHVzX3ZhbCk7CiAgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJpcEFkZHJlc3NUYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJyb3cgc3RhdHVzIHRyYW5zaXRpb24gZnJvbSAlZCB0byAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgInJvdyBzdGF0dXMgdHJhbnNpdGlvbiBmcm9tICVkIHRvICVsdVxuIiwKICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+aXBBZGRyZXNzUm93U3RhdHVzLAogICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NSb3dTdGF0dXNfdmFsKSk7CiAgICAgICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKaW5kZXggNTBhZDE4OC4uNzQwZjRmYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKQEAgLTE5Nyw4ICsxOTcsOCBAQAogICAgICAgICAqIGlwQWRkcmVzc1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcEFkZHJlc3NUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXBBZGRyZXNzVGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwQWRkcmVzc1RhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGEwZDhjNGEuLjdhNGEyM2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0zOTUsNyArMzk1LDcgQEAKICAgICB9CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlwQWRkcmVzc1RhYmxlOmlwQWRkcmVzc1RhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlbHUgcmVjb3Jkc1xuIiwgKHVuc2lnbmVkIGxvbmcpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jCmluZGV4IDBjODUwNzMuLmUyNGU0NmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTY4Niw2ICs2ODYsNyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwQWRkcmVzc1RhYmxlX3Bvc3RfcmVxdWVzdCAqLwogCisKIC8qKgogICogQGludGVybmFsCiAgKiB3cmFwcGVyCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZWQ4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUuaApAQCAtMCwwICsxLDUgQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZSkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwZTMxNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5jCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKgorICogXHNlY3Rpb24gaW50cm8gSW50cm9kdWN0aW9uCisgKiBJbnRyb2R1Y3RvcnkgdGV4dC4KKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oIgorCitjb25zdCBvaWQgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkW10gPSB7IElQREVGQVVMVFJPVVRFUlRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZF9zaXplID0KK09JRF9MRU5HVEgoaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkKTsKKworaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uIGlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dDsKK3N0YXRpYyBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKmlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dF9wOworCit2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKTsKKworCisvKioKKyAqIEluaXRpYWxpemVzIHRoZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBtb2R1bGUKKyAqLwordm9pZAoraW5pdF9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmluaXRfaXBEZWZhdWx0Um91dGVyVGFibGUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDA6bzogUGVyZm9ybSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJpcERlZmF1bHRSb3V0ZXJUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlKCk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9pcERlZmF1bHRSb3V0ZXJUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgaXBEZWZhdWx0Um91dGVyVGFibGUgbW9kdWxlIChhZ2VudCBpcyBleGl0aW5nKQorICovCit2b2lkCitzaHV0ZG93bl9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKQoreworICAgIGlmIChzaG91bGRfaW5pdCgiaXBEZWZhdWx0Um91dGVyVGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUoKTsKKworfQorCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppbml0aWFsaXplX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMTpvOiBQZXJmb3JtIGlwRGVmYXVsdFJvdXRlclRhYmxlIG9uZS10aW1lIHRhYmxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMjpvOiB8LT5Jbml0aWFsaXplIGlwRGVmYXVsdFJvdXRlclRhYmxlIHVzZXIgY29udGV4dAorICAgICAqIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiBhIHBvaW50ZXIgdG8gc29tZSBkYXRhIGZvciB0aGlzCisgICAgICogdGFibGUsIGFsbG9jYXRlIG9yIHNldCBpdCB1cCBoZXJlLgorICAgICAqLworICAgIC8qCisgICAgICogYSBuZXRzbm1wX2RhdGFfbGlzdCBpcyBhIHNpbXBsZSB3YXkgdG8gc3RvcmUgdm9pZCBwb2ludGVycy4gQSBzaW1wbGUKKyAgICAgKiBzdHJpbmcgdG9rZW4gaXMgdXNlZCB0byBhZGQsIGZpbmQgb3IgcmVtb3ZlIHBvaW50ZXJzLgorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dF9wID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJpcERlZmF1bHRSb3V0ZXJUYWJsZSIsIE5VTEwsIE5VTEwpOworCisgICAgLyoKKyAgICAgKiBObyBzdXBwb3J0IGZvciBhbnkgZmxhZ3MgeWV0LCBidXQgaW4gdGhlIGZ1dHVyZSB5b3Ugd291bGQKKyAgICAgKiBzZXQgYW55IGZsYWdzIGhlcmUuCisgICAgICovCisgICAgZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisJKGlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUgKi8KKworLyoqCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUgCisgKi8KK3ZvaWQKK3NodXRkb3duX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX3NodXRkb3duX2ludGVyZmFjZQorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfaW5pdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LCB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfaW5pdCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjEwOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwRGVmYXVsdFJvdXRlclRhYmxlIHJvd3JlcSBpbml0aWFsaXphdGlvbi4gKGVnIERFRlZBTFMpCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfaW5pdCAqLworCisvKioKKyAqIGV4dHJhIGNvbnRleHQgY2xlYW51cAorICoKKyAqLwordm9pZAoraXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwIiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMTE6bzogfC0+IFBlcmZvcm0gZXh0cmEgaXBEZWZhdWx0Um91dGVyVGFibGUgcm93cmVxIGNsZWFudXAuCisgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKHJvd3JlcV9jdHgtPmRhdGEpOworICAgIHJvd3JlcV9jdHgtPmRhdGEgPSBOVUxMOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KKworLyoqCisgKiBwcmUtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTA6bzogUGVyZm9ybSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBwcmUtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIHBvc3QtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqIE5vdGU6CisgKiAgIE5ldyByb3dzIGhhdmUgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBjb250YWluZXIsIGFuZAorICogICBkZWxldGVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyIGFuZAorICogICByZWxlYXNlZC4KKyAqCisgKiBAcGFyYW0gdXNlcl9jb250ZXh0CisgKiBAcGFyYW0gcmMgOiBNRkRfU1VDQ0VTUyBpZiBhbGwgcmVxdWVzdHMgc3VjY2VlZGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogb3RoZXIgZXJyb3IgKGlnbm9yZWQpCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jb250ZXh0LCBpbnQgcmMpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMTpvOiBQZXJmb3JtIGlwRGVmYXVsdFJvdXRlclRhYmxlIHBvc3QtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3QgKi8KKworCisvKiogQHsgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJlZjI5YQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUlRBQkxFX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworLyoqIEBhZGR0b2dyb3VwIG1pc2MgbWlzYzogTWlzY2VsbGFuZW91cyByb3V0aW5lcworICoKKyAqIEB7CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmg+CisKKyAgICAvKgorICAgICAqIG90aGVyIHJlcXVpcmVkIG1vZHVsZSBjb21wb25lbnRzIAorICAgICAqLworICAgIC8qICpJTkRFTlQtT0ZGKiAgKi8KK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZSkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2VzcykKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldCkKKyAgICAvKiAqSU5ERU5ULU9OKiAgKi8KKworICAgIC8qCisgICAgICogT0lEIGFuZCBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZSAKKyAgICAgKi8KKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmgiCisKKyAgICAvKgorICAgICAqIGVudW0gZGVmaW5pb25zIAorICAgICAqLworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2VudW1zLmgiCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgaW5pdF9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25faXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZSBpcyBzdWJpZCAzNyBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNywgbGVuZ3RoOiA4CisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogV2hlbiB5b3UgcmVnaXN0ZXIgeW91ciBtaWIsIHlvdSBnZXQgdG8gcHJvdmlkZSBhIGdlbmVyaWMKKyAgICAgKiBwb2ludGVyIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3UgZm9yIG1vc3Qgb2YgdGhlCisgICAgICogZnVuY3Rpb25zIGNhbGxzLgorICAgICAqCisgICAgICogVE9ETzoxMDA6cjogUmV2aWV3IGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFRPRE86MTAxOm86IHwtPiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RhdGFfbGlzdCBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb247CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogVE9ETzoxMTA6cjogfC0+IFJldmlldyBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhIGNvbnRleHQgc3RydWN0dXJlLgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBkYXRhIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhOworCisKKyAgICAvKgorICAgICAqIFRPRE86MTIwOnI6IHwtPiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgbWliIGluZGV4LgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBpbmRleCBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4X3MgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKDEpL0luZXRBZGRyZXNzVHlwZS9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvYS93L0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZTsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzKDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgLyoqIDEyOCAtIDIob3RoZXIgaW5kZXhlcykgLSBvaWQgbGVuZ3RoKDEwKSA9IDExNSAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc1sxMTVdOworICAgICAgICBzaXplX3QgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW47CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBEZWZhdWx0Um91dGVySWZJbmRleCgzKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICAgICAqLworICAgICAgICBsb25nICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVySWZJbmRleDsKKworCisgICAgfSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXg7CisKKyAgICAvKgorICAgICAqIFRPRE86MTIxOnI6IHwgICB8LT4gUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIG1heCBpbmRleCBsZW5ndGguCisgICAgICogSWYgeW91IEtOT1cgdGhhdCB5b3VyIGluZGV4ZXMgd2lsbCBuZXZlciBleGNlZWQgYSBjZXJ0YWluCisgICAgICogbGVuZ3RoLCB1cGRhdGUgdGhpcyBtYWNybyB0byB0aGF0IGxlbmd0aC4KKyAgICAgKgorICAgICAqIEJFIFZFUlkgQ0FSRUZVTCBUTyBUQUtFIElOVE8gQUNDT1VOVCBUSEUgTUFYSU1VTQorICAgICAqIFBPU1NJQkxFIExFTkdIVCBGT1IgRVZFUlkgVkFSSUFCTEUgTEVOR1RIIElOREVYIQorICAgICAqIEd1ZXNzaW5nIDEyOCAtIGNvbC9lbnRyeSgyKSAgLSBvaWQgbGVuKDgpCisgICAgICovCisjZGVmaW5lIE1BWF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9JRFhfTEVOICAgICAxMTgKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBpcERlZmF1bHRSb3V0ZXJUYWJsZSBSb3cgcmVxdWVzdCAocm93cmVxKSBjb250ZXh0LgorICAgICAqIFdoZW4geW91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgeW91IHdpbGwgYmUgcGFzc2VkIGEKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9JRFhfTEVOXTsKKworICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICpkYXRhOworCisgICAgICAgIC8qCisgICAgICAgICAqIGZsYWdzIHBlciByb3cuIEN1cnJlbnRseSwgdGhlIGZpcnN0IChsb3dlcikgOCBiaXRzIGFyZSByZXNlcnZlZAorICAgICAgICAgKiBmb3IgdGhlIHVzZXIuIFNlZSBtZmQuaCBmb3Igb3RoZXIgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICB1X2ludCAgICAgICAgICAgcm93cmVxX2ZsYWdzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86MTMxOm86IHwgICB8LT4gQWRkIHVzZWZ1bCBkYXRhIHRvIGlwRGVmYXVsdFJvdXRlclRhYmxlIHJvd3JlcSBjb250ZXh0LgorICAgICAgICAgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9saXN0OworCisgICAgfSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVmX3Jvd3JlcV9jdHhfcyB7CisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWZfcm93cmVxX2N0eDsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jb250ZXh0KTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2NvbnRleHQsIGludCByYyk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9pbml0CisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGEgKmlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YShpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpOworCisKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICppcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOworCisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaCIKKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5oIgorCisgICAgLyoKKyAgICAgKiBEVU1NWSBtYXJrZXJzLCBpZ25vcmUKKyAgICAgKgorICAgICAqIFRPRE86MDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjE5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoyOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mzk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjQ5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlRBQkxFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzU0YzNkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTAsMCArMSw0MjAgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaCIKKworLyoqIEBpbmdyb3VwIGludGVyZmFjZQorICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCisgKgorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gbG9jYXRlIHRoZSBkYXRhIHVzZWQgdG8gc2F0aXNmeQorICogcmVxdWVzdHMuCisgKiAKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUgaXMgc3ViaWQgMzcgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM3LCBsZW5ndGg6IDgKKyAqLworCisvKioKKyAqIGluaXRpYWxpemF0aW9uIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhIGFjY2VzcworICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBzdGFydHVwIHRvIGFsbG93IHlvdSB0bworICogYWxsb2NhdGUgYW55IHJlc291cmNlcyB5b3UgbmVlZCBmb3IgdGhlIGRhdGEgdGFibGUuCisgKgorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZworICogICAgICAgIFBvaW50ZXIgdG8gaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogdW5yZWNvdmVyYWJsZSBlcnJvci4KKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWcpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdF9kYXRhIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMzpvOiBJbml0aWFsaXplIGlwRGVmYXVsdFJvdXRlclRhYmxlIGRhdGEuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRfZGF0YSAqLworCisvKioKKyAqIGNvbnRhaW5lciBvdmVydmlldworICoKKyAqLworCisvKioKKyAqIGNvbnRhaW5lciBpbml0aWFsaXphdGlvbgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyX3B0ciBBIHBvaW50ZXIgdG8gYSBjb250YWluZXIgcG9pbnRlci4gSWYgeW91CisgKiAgICAgICAgY3JlYXRlIGEgY3VzdG9tIGNvbnRhaW5lciwgdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHJldHVybiBpdAorICogICAgICAgIHRvIHRoZSBNRkQgaGVscGVyLiBJZiBzZXQgdG8gTlVMTCwgdGhlIE1GRCBoZWxwZXIgd2lsbAorICogICAgICAgIGFsbG9jYXRlIGEgY29udGFpbmVyIGZvciB5b3UuCisgKiBAcGFyYW0gIGNhY2hlIEEgcG9pbnRlciB0byBhIGNhY2hlIHN0cnVjdHVyZS4gWW91IGNhbiBzZXQgdGhlIHRpbWVvdXQKKyAqICAgICAgICAgYW5kIG90aGVyIGNhY2hlIGZsYWdzIHVzaW5nIHRoaXMgcG9pbnRlci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuIElmIG5vIGN1c3RvbQorICogIGNvbnRhaW5lciBpcyBhbGxvY2F0ZWQsIHRoZSBNRkQgY29kZSB3aWxsIGNyZWF0ZSBvbmUgZm9yIHlvdXIuCisgKgorICogIFRoaXMgaXMgYWxzbyB0aGUgcGxhY2UgdG8gc2V0IHVwIGNhY2hlIGJlaGF2aW9yLiBUaGUgZGVmYXVsdCwgdG8KKyAqICBzaW1wbHkgc2V0IHRoZSBjYWNoZSB0aW1lb3V0LCB3aWxsIHdvcmsgd2VsbCB3aXRoIHRoZSBkZWZhdWx0CisgKiAgY29udGFpbmVyLiBJZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIGNvbnRhaW5lciwgeW91IG1heSB3YW50IHRvCisgKiAgbG9vayBhdCB0aGUgY2FjaGUgaGVscGVyIGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkKKyAqICBmbGFncyB5b3Ugd2FudCB0byBzZXQuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGluaXRpYWxpemF0aW9uIG5lZWRlZAorICogIGZvciB5b3UgZGF0YSBzb3VyY2UuIEZvciBleGFtcGxlLCBvcGVuaW5nIGEgY29ubmVjdGlvbiB0byBhbm90aGVyCisgKiAgcHJvY2VzcyB0aGF0IHdpbGwgc3VwcGx5IHRoZSBkYXRhLCBvcGVuaW5nIGEgZGF0YWJhc2UsIGV0Yy4KKyAqLwordm9pZAoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKiogY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXJfcHRyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNvbnRhaW5lciBwYXJhbSB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiB1c2UgYSBjdXN0b20gY29udGFpbmVyLiBJZiB5b3UKKyAgICAgKiBkbyBub3QgY3JlYXRlIG9uZSwgb25lIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LgorICAgICAqLworICAgICpjb250YWluZXJfcHRyX3B0ciA9IE5VTEw7CisKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNhY2hlIHBhcmFtIHRvIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogVE9ETzozNDU6QTogU2V0IHVwIGlwRGVmYXVsdFJvdXRlclRhYmxlIGNhY2hlIHByb3BlcnRpZXMuCisgICAgICoKKyAgICAgKiBBbHNvIGZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiBzZXQgcGFyYW1ldGVycyBmb3IgdGhlCisgICAgICogY2FjaGUuIERvIG5vdCBjaGFuZ2UgdGhlIG1hZ2ljIHBvaW50ZXIsIGFzIGl0IGlzIHVzZWQKKyAgICAgKiBieSB0aGUgTUZEIGhlbHBlci4gVG8gY29tcGxldGVseSBkaXNhYmxlIGNhY2hpbmcsIHNldAorICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCisgICAgICovCisgICAgY2FjaGUtPnRpbWVvdXQgPSBJUERFRkFVTFRST1VURVJUQUJMRV9DQUNIRV9USU1FT1VUOyAgICAgICAgLyogc2Vjb25kcyAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIGNvbnRhaW5lciBzaHV0ZG93bgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyIEEgcG9pbnRlciB0byB0aGUgY29udGFpbmVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzaHV0ZG93biB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZSgpLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBjbGVhbnVwIG5lZWRlZAorICogIGZvciB5b3UgZGF0YSBzb3VyY2UuIEZvciBleGFtcGxlLCBjbG9zaW5nIGEgY29ubmVjdGlvbiB0byBhbm90aGVyCisgKiAgcHJvY2VzcyB0aGF0IHN1cHBsaWVkIHRoZSBkYXRhLCBjbG9zaW5nIGEgZGF0YWJhc2UsIGV0Yy4KKyAqLwordm9pZAoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyX3B0cikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgcGFyYW1zIHRvIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKy8qKgorICogY2hlY2sgZW50cnkgZm9yIHVwZGF0ZQorICovCitzdGF0aWMgdm9pZAorX2NoZWNrX2VudHJ5X2Zvcl91cGRhdGVzKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqZGVmYXVsdHJvdXRlcl9jb250YWluZXIgPSBtYWdpY1swXTsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlID0gKG5ldHNubXBfY29udGFpbmVyICopIG1hZ2ljWzFdOworCisgICAgLyoKKyAgICAgKiBjaGVjayBmb3IgbWF0Y2hpbmcgZW50cnkgdXNpbmcgc2Vjb25kYXJ5IGluZGV4LgorICAgICAqLworICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZGVmYXVsdHJvdXRlcl9lbnRyeSA9CisgICAgICAgIENPTlRBSU5FUl9GSU5EKGRlZmF1bHRyb3V0ZXJfY29udGFpbmVyLCByb3dyZXFfY3R4LT5kYXRhKTsKKyAgICBpZiAoTlVMTCA9PSBkZWZhdWx0cm91dGVyX2VudHJ5KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTphY2Nlc3MiLCAicmVtb3ZpbmcgbWlzc2luZyBlbnRyeVxuIikpOworCisgICAgICAgIGlmIChOVUxMID09IHRvX2RlbGV0ZSkgeworICAgICAgICAgICAgbWFnaWNbMV0gPSB0b19kZWxldGUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJsaWZvIik7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSB0b19kZWxldGUpCisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkbid0IGNyZWF0ZSBkZWxldGUgY29udGFpbmVyXG4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTlVMTCAhPSB0b19kZWxldGUpCisgICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKHRvX2RlbGV0ZSwgcm93cmVxX2N0eCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImlwRGVmYXVsdFJvdXRlclRhYmxlOmFjY2VzcyIsICJ1cGRhdGluZyBleGlzdGluZyBlbnRyeVxuIikpOworCisgICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIGZvciBjaGFuZ2VzICYgdXBkYXRlCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3VwZGF0ZShyb3dyZXFfY3R4LT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cm91dGVyX2VudHJ5KTsKKworICAgICAgICAvKgorICAgICAgICAgKiByZW1vdmUgZW50cnkgZnJvbSBpZmNvbnRhaW5lcgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwgZGVmYXVsdHJvdXRlcl9lbnRyeSk7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShkZWZhdWx0cm91dGVyX2VudHJ5KTsKKyAgICB9Cit9CisKKy8qKgorICogYWRkIG5ldyBlbnRyeQorICovCitzdGF0aWMgdm9pZAorX2FkZF9uZXdfZW50cnkobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpkZWZhdWx0cm91dGVyX2VudHJ5LAorICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworCisgICAgREVCVUdNU0dUTCgoImlwRGVmYXVsdFJvdXRlclRhYmxlOmFjY2VzcyIsICJjcmVhdGluZyBuZXcgZW50cnlcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZGVmYXVsdHJvdXRlcl9lbnRyeSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBhbGxvY2F0ZSBhbiByb3cgY29udGV4dCBhbmQgc2V0IHRoZSBpbmRleChlcykKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4ID0gaXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChkZWZhdWx0cm91dGVyX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgorICAgICAgICAgICAgKE1GRF9TVUNDRVNTID09CisgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgZGVmYXVsdHJvdXRlcl9lbnRyeS0+ZHJfYWRkcmVzc3R5cGUsCisgICAgICAgICAgICAgICAgIGRlZmF1bHRyb3V0ZXJfZW50cnktPmRyX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgIGRlZmF1bHRyb3V0ZXJfZW50cnktPmRyX2FkZHJlc3NfbGVuLAorICAgICAgICAgICAgICAgICBkZWZhdWx0cm91dGVyX2VudHJ5LT5kcl9pZl9pbmRleCkpKSB7CisgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCkgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaXBBZGRyZXNzVGFibGU6YWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFpbmVyIGluc2VydCBmYWlsZWQgZm9yIG5ldyBlbnRyeVxuIikpOworICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gcm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZSBjYWNoZS5cbiIpOworICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCB3aGlsZSBsb2FkaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZSBjYWNoZS5cbiIpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKGRlZmF1bHRyb3V0ZXJfZW50cnkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworLyoqCisgKiBsb2FkIGluaXRpYWwgZGF0YQorICoKKyAqIFRPRE86MzUwOk06IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhIGxvYWQKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGJlIGNhbGxlZCBieSB0aGUgY2FjaGUgaGVscGVyIHRvIGxvYWQKKyAqIHRoZSBjb250YWluZXIgYWdhaW4gKGFmdGVyIHRoZSBjb250YWluZXIgZnJlZSBmdW5jdGlvbiBoYXMgYmVlbgorICogY2FsbGVkIHRvIGZyZWUgdGhlIHByZXZpb3VzIGNvbnRlbnRzKS4KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGNvbnRhaW5lciB0byB3aGljaCBpdGVtcyBzaG91bGQgYmUgaW5zZXJ0ZWQKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRSA6IENhbid0IGFjY2VzcyBkYXRhIHNvdXJjZQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgaW5kZXgoZXMpIChhbmQgZGF0YSwgb3B0aW9uYWxseSkKKyAqICBmb3IgdGhlIGV2ZXJ5IHJvdyBpbiB0aGUgZGF0YSBzZXQuCisgKgorICogQHJlbWFyaworICogIFdoaWxlIGxvYWRpbmcgdGhlIGRhdGEsIHRoZSBvbmx5IGltcG9ydGFudCB0aGluZyBpcyB0aGUgaW5kZXhlcy4KKyAqICBJZiBhY2Nlc3MgdG8geW91ciBkYXRhIGlzIGNoZWFwL2Zhc3QgKGUuZy4geW91IGhhdmUgYSBwb2ludGVyIHRvIGEKKyAqICBzdHJ1Y3R1cmUgaW4gbWVtb3J5KSwgaXQgd291bGQgbWFrZSBzZW5zZSB0byB1cGRhdGUgdGhlIGRhdGEgaGVyZS4KKyAqICBJZiwgaG93ZXZlciwgdGhlIGFjY2Vzc2luZyB0aGUgZGF0YSBpbnZvdmxlcyBtb3JlIHdvcmsgKGUuZy4gcGFyc2luZworICogIHNvbWUgb3RoZXIgZXhpc3RpbmcgZGF0YSwgb3IgcGVmb3JtaW5nIGNhbGN1bGF0aW9ucyB0byBkZXJpdmUgdGhlIGRhdGEpLAorICogIHRoZW4geW91IGNhbiBsaW1pdCB5b3Vyc2VsZiB0byBzZXR0aW5nIHRoZSBpbmRleGVzIGFuZCBzYXZpbmcgYW55CisgKiAgaW5mb3JtYXRpb24geW91IHdpbGwgbmVlZCBsYXRlci4gVGhlbiB1c2UgdGhlIHNhdmVkIGluZm9ybWF0aW9uIGluCisgKiAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAoKSBmb3IgcG9wdWxhdGluZyBkYXRhLgorICoKKyAqIEBub3RlCisgKiAgSWYgeW91IG5lZWQgY29uc2lzdGVuY3kgYmV0d2VlbiByb3dzIChsaWtlIHlvdSB3YW50IHN0YXRpc3RpY3MKKyAqICBmb3IgZWFjaCByb3cgdG8gYmUgZnJvbSB0aGUgc2FtZSB0aW1lIGZyYW1lKSwgeW91IHNob3VsZCBzZXQgYWxsCisgKiAgZGF0YSBoZXJlLgorICoKKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqZGVmYXVsdHJvdXRlcl9jb250YWluZXI7CisgICAgdm9pZCAgICAgICAgICAgICAgKnRtcF9wdHJbMl07CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozNTE6TTogfC0+IExvYWQvdXBkYXRlIGRhdGEgaW4gdGhlIGlwRGVmYXVsdFJvdXRlclRhYmxlIGNvbnRhaW5lci4KKyAgICAgKiBsb29wIG92ZXIgeW91ciBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhLCBhbGxvY2F0ZSBhIHJvd3JlcSBjb250ZXh0LAorICAgICAqIHNldCB0aGUgaW5kZXgoZXMpIFthbmQgZGF0YSwgb3B0aW9uYWxseV0gYW5kIGluc2VydCBpbnRvCisgICAgICogdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKyAgICBkZWZhdWx0cm91dGVyX2NvbnRhaW5lciA9CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfTE9BRF9BRERMX0lEWF9CWV9BRERSKTsKKworICAgIGlmIChOVUxMID09IGRlZmF1bHRyb3V0ZXJfY29udGFpbmVyKQorICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOyAgICAgICAgLyogbXNnIGFscmVhZHkgbG9nZ2VkICovCisKKyAgICAvKgorICAgICAqIHdlIGp1c3QgZ290IGEgZnJlc2ggY29weSBvZiBpbnRlcmZhY2UgZGF0YS4gY29tcGFyZSBpdCB0bworICAgICAqIHdoYXQgd2UndmUgYWxyZWFkeSBnb3QsIGFuZCBtYWtlIGFueSBhZGp1c3RtZW50cywgc2F2aW5nCisgICAgICogbWlzc2luZyBhZGRyZXNzZXMgdG8gYmUgZGVsZXRlZC4KKyAgICAgKi8KKyAgICB0bXBfcHRyWzBdID0gZGVmYXVsdHJvdXRlcl9jb250YWluZXItPm5leHQ7CisgICAgdG1wX3B0clsxXSA9IE5VTEw7CisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jaGVja19lbnRyeV9mb3JfdXBkYXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgdG1wX3B0cik7CisKKyAgICAvKgorICAgICAqIG5vdyBhZGQgYW55IG5ldyBpbnRlcmZhY2VzCisgICAgICovCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGRlZmF1bHRyb3V0ZXJfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2FkZF9uZXdfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGNvbnRhaW5lci4gd2UndmUgZWl0aGVyIGNsYWltZWQgZWFjaCBlbnRyeSwgb3IgcmVsZWFzZWQgaXQsCisgICAgICogc28gdGhlIGFjY2VzcyBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gY2xlYXIgdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9mcmVlKGRlZmF1bHRyb3V0ZXJfY29udGFpbmVyLAorICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9ET05UX0NMRUFSKTsKKworICAgIC8qCisgICAgICogcmVtb3ZlIGRlbGV0ZWQgYWRkcmVzc2VzIGZyb20gdGFibGUgY29udGFpbmVyCisgICAgICovCisgICAgaWYgKE5VTEwgIT0gdG1wX3B0clsxXSkgeworICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG1wX2NvbnRhaW5lciA9CisgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXIgKikgdG1wX3B0clsxXTsKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqdG1wX2N0eDsKKworICAgICAgICAvKgorICAgICAgICAgKiB0aGlzIHdvcmtzIGJlY2F1c2UgdGhlIHRtcF9jb250YWluZXIgaXMgYSBsaW5rZWQgbGlzdCwKKyAgICAgICAgICogd2hpY2ggY2FuIGJlIHVzZWQgbGlrZSBhIHN0YWNrLi4uCisgICAgICAgICAqLworICAgICAgICB3aGlsZSAoQ09OVEFJTkVSX1NJWkUodG1wX2NvbnRhaW5lcikpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBnZXQgZnJvbSBkZWxldGUgbGlzdAorICAgICAgICAgICAgICovCisgICAgICAgICAgICB0bXBfY3R4ID0gQ09OVEFJTkVSX0ZJUlNUKHRtcF9jb250YWluZXIpOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogcmVsZWFzZSBjb250ZXh0LCBkZWxldGUgZnJvbSB0YWJsZSBjb250YWluZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIHRtcF9jdHgpOworICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHRtcF9jdHgpOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogcG9wIG9mZiBkZWxldGUgbGlzdAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBDT05UQUlORVJfUkVNT1ZFKHRtcF9jb250YWluZXIsIE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgREVCVUdNU0dUKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfbG9hZCIsCisgICAgICAgICAgICAgICAiJSIgTkVUU05NUF9QUkl6ICJkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30KKworLyoqCisgKiBjb250YWluZXIgY2xlYW4gdXAKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGNvbnRhaW5lciB3aXRoIGFsbCBjdXJyZW50IGl0ZW1zCisgKgorICogIFRoaXMgb3B0aW9uYWwgY2FsbGJhY2sgaXMgY2FsbGVkIHByaW9yIHRvIGFsbAorICogIGl0ZW0ncyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lci4gSWYgeW91CisgKiAgbmVlZCB0byBkbyBhbnkgcHJvY2Vzc2luZyBiZWZvcmUgdGhhdCwgZG8gaXQgaGVyZS4KKyAqCisgKiBAbm90ZQorICogIFRoZSBNRkQgaGVscGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlbGVhc2luZyBhbGwgdGhlIHJvdyBjb250ZXh0cy4KKyAqCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM4MDpNOiBGcmVlIGlwRGVmYXVsdFJvdXRlclRhYmxlIGNvbnRhaW5lciBkYXRhLgorICAgICAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIHByZXBhcmUgcm93IGZvciBwcm9jZXNzaW5nLgorICoKKyAqICBXaGVuIHRoZSBhZ2VudCBoYXMgbG9jYXRlZCB0aGUgcm93IGZvciBhIHJlcXVlc3QsIHRoaXMgZnVuY3Rpb24gaXMKKyAqICBjYWxsZWQgdG8gcHJlcGFyZSB0aGUgcm93IGZvciBwcm9jZXNzaW5nLiBJZiB5b3UgZnVsbHkgcG9wdWxhdGVkCisgKiAgdGhlIGRhdGEgY29udGV4dCBkdXJpbmcgdGhlIGluZGV4IHNldHVwIHBoYXNlLCB5b3UgbWF5IG5vdCBuZWVkIHRvCisgKiAgZG8gYW55dGhpbmcuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggcG9pbnRlciB0byBhIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dfcHJlcChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dfcHJlcCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzkwOm86IFByZXBhcmUgcm93IGZvciByZXF1ZXN0LgorICAgICAqIElmIHBvcHVsYXRpbmcgcm93IGRhdGEgd2FzIGRlbGF5ZWQsIHRoaXMgaXMgdGhlIHBsYWNlIHRvCisgICAgICogZmlsbCBpbiB0aGUgcm93IGZvciB0aGlzIHJlcXVlc3QuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19wcmVwICovCisKKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDAzM2YwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0FDQ0VTU19ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0RBVEFfQUNDRVNTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlIGlzIHN1YmlkIDM3IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM3LCBsZW5ndGg6IDgKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRfZGF0YShpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnKTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjE4MDpvOiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgY2FjaGUgdGltZW91dC4KKyAgICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBjYWNoZSB0aW1lcyBvdXQKKyAgICAgKi8KKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfQ0FDSEVfVElNRU9VVCAgIDYwCisKKyAgICB2b2lkICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZSk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jYWNoZV9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jYWNoZV9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dfcHJlcChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0FDQ0VTU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNzc4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuYwpAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGlwRGVmYXVsdFJvdXRlclRhYmxlIGdldCByb3V0aW5lcy4KKyAqIFRPRE86MjQwOk06IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZSBpcyBzdWJpZCAzNyBvZiBpcC4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcsIGxlbmd0aDogOAorICovCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICogVE9ETzoyMDA6cjogSW1wbGVtZW50IGlwRGVmYXVsdFJvdXRlclRhYmxlIGRhdGEgY29udGV4dCBmdW5jdGlvbnMuCisgKi8KKy8qCisgKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhCisgKgorICogUHVycG9zZTogY3JlYXRlIG5ldyBpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhLgorICovCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCkKK3sKKyAgICAvKgorICAgICAqIFRPRE86MjAxOnI6IHwtPiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqcnRuID0KKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9jcmVhdGUoKTsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX2RhdGEiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBydG4pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuYWJsZSB0byBtYWxsb2MgbWVtb3J5IGZvciBuZXcgIgorICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YS5cbiIpOworICAgIH0KKworICAgIHJldHVybiBydG47Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX2RhdGEgKi8KKworLyoKKyAqIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YQorICoKKyAqIFB1cnBvc2U6IHJlbGVhc2UgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YS4KKyAqLwordm9pZAoraXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9kYXRhKGlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGEgKiBkYXRhKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMDI6cjogfC0+IHJlbGVhc2UgbWVtb3J5IGZvciB0aGUgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBjb250ZXh0LgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShkYXRhKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9kYXRhICovCisKKworCisvKioKKyAqIHNldCBtaWIgaW5kZXgoZXMpCisgKgorICogQHBhcmFtIHRibF9pZHggbWliIGluZGV4IHN0cnVjdHVyZQorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbAorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfcHRyCisgKiBAcGFyYW0gaXBEZWZhdWx0Um91dGVyQWRkcmVzc19wdHJfbGVuCisgKiBAcGFyYW0gaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGlzIHVzZWZ1bCBmb3Igc2V0dGluZyBhbGwgdGhlIE1JQiBpbmRleAorICogIGNvbXBvbmVudHMgd2l0aCBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsLiBJdCBpcyBhc3N1bWUgdGhhdCB0aGUgQyB2YWx1ZXMKKyAqICBoYXZlIGFscmVhZHkgYmVlbiBtYXBwZWQgZnJvbSB0aGVpciBuYXRpdmUvcmF3Zm9ybWF0IHRvIHRoZSBNSUIgZm9ybWF0LgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcERlZmF1bHRSb3V0ZXJJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSgxKS9JbmV0QWRkcmVzc1R5cGUvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oIAorICAgICAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqLworICAgIHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlID0gaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGVfdmFsOworCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzKDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaCAKKyAgICAgKi8KKyAgICB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzX2xlbiA9IHNpemVvZih0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzKSAvIHNpemVvZih0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzWzBdKTsgLyogbWF4IGxlbmd0aCAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqLworICAgIC8qCisgICAgICogbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBmb3IgaXBEZWZhdWx0Um91dGVyQWRkcmVzcyBkYXRhCisgICAgICovCisgICAgaWYgKChOVUxMID09IHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MpIHx8CisgICAgICAgICh0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzX2xlbiA8CisgICAgICAgICAoaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbikpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJub3QgZW5vdWdoIHNwYWNlIGZvciB2YWx1ZVxuIik7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorICAgIHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuID0KKyAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbjsKKyAgICBtZW1jcHkodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcywgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHJfbGVuICoKKyAgICAgICAgICAgc2l6ZW9mKGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0clswXSkpOworCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4KDMpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0ggCisgICAgICovCisgICAgLyoqIFdBUk5JTkc6IHRoaXMgY29kZSBtaWdodCBub3Qgd29yayBmb3IgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICovCisgICAgdGJsX2lkeC0+aXBEZWZhdWx0Um91dGVySWZJbmRleCA9IGlwRGVmYXVsdFJvdXRlcklmSW5kZXhfdmFsOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNldCByb3cgY29udGV4dCBpbmRleGVzCisgKgorICogQHBhcmFtIHJlcXJlcV9jdHggdGhlIHJvdyBjb250ZXh0IHRoYXQgbmVlZHMgdXBkYXRlZCBpbmRleGVzCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBtaWIgaW5kZXhzLCB0aGVuIHVwZGF0ZXMgdGhlIG9pZCBpbmRleHMKKyAqICBmcm9tIHRoZSBtaWIgaW5kZXguCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcERlZmF1bHRSb3V0ZXJJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPQorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KCZyb3dyZXFfY3R4LT50YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJJZkluZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyRW50cnkuaXBEZWZhdWx0Um91dGVyTGlmZXRpbWUKKyAqIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lIGlzIHN1YmlkIDQgb2YgaXBEZWZhdWx0Um91dGVyRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNy4xLjQKKyAqIERlc2NyaXB0aW9uOgorVGhlIHJlbWFpbmluZyBsZW5ndGggb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCB0aGlzIHJvdXRlcgorICAgICAgICAgICAgd2lsbCBjb250aW51ZSB0byBiZSB1c2VmdWwgYXMgYSBkZWZhdWx0IHJvdXRlci4gIEEgdmFsdWUgb2YKKyAgICAgICAgICAgIHplcm8gaW5kaWNhdGVzIHRoYXQgaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCBhcyBhIGRlZmF1bHQKKyAgICAgICAgICAgIHJvdXRlci4gIEl0IGlzIGxlZnQgdG8gdGhlIGltcGxlbWVudGVyIG9mIHRoZSBNSUIgYXMgdG8KKyAgICAgICAgICAgIHdoZXRoZXIgYSByb3V0ZXIgd2l0aCBhIGxpZmV0aW1lIG9mIHplcm8gaXMgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICAgICAgbGlzdC4KKworICAgICAgICAgICAgRm9yIElQdjYsIHRoaXMgdmFsdWUgc2hvdWxkIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSByb3V0ZXIKKyAgICAgICAgICAgIGFkdmVydGlzZW1lbnQgbWVzc2FnZXMuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDEgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKiBSYW5nZXM6ICAwIC0gNjU1MzU7CisgKgorICogSXRzIHN5bnRheCBpcyBVTlNJR05FRDMyIChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBEZWZhdWx0Um91dGVyTGlmZXRpbWUgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfZ2V0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBEZWZhdWx0Um91dGVyTGlmZXRpbWUgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS0+ZHJfbGlmZXRpbWU7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJFbnRyeS5pcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlCisgKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlIGlzIHN1YmlkIDUgb2YgaXBEZWZhdWx0Um91dGVyRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNy4xLjUKKyAqIERlc2NyaXB0aW9uOgorQW4gaW5kaWNhdGlvbiBvZiBwcmVmZXJlbmNlIGdpdmVuIHRvIHRoaXMgcm91dGVyIGFzIGEKKyAgICAgICAgICAgIGRlZmF1bHQgcm91dGVyIGFzIGRlc2NyaWJlZCBpbiBoZSBEZWZhdWx0IFJvdXRlcgorICAgICAgICAgICAgUHJlZmVyZW5jZXMgZG9jdW1lbnQuICBUcmVhdGluZyB0aGUgdmFsdWUgYXMgYQorICAgICAgICAgICAgMiBiaXQgc2lnbmVkIGludGVnZXIgYWxsb3dzIGZvciBzaW1wbGUgYXJpdGhtZXRpYworICAgICAgICAgICAgY29tcGFyaXNvbnMuCisKKyAgICAgICAgICAgIEZvciBJUHY0IHJvdXRlcnMgb3IgSVB2NiByb3V0ZXJzIHRoYXQgYXJlIG5vdCB1c2luZyB0aGUKKyAgICAgICAgICAgIHVwZGF0ZWQgcm91dGVyIGFkdmVydGlzZW1lbnQgZm9ybWF0LCB0aGlzIG9iamVjdCBpcyBzZXQgdG8KKyAgICAgICAgICAgIG1lZGl1bSAoMCkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMSAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKiBFbnVtIHJhbmdlOiAzLzguIFZhbHVlczogIHJlc2VydmVkKC0yKSwgbG93KC0xKSwgbWVkaXVtKDApLCBoaWdoKDEpCisgKgorICogSXRzIHN5bnRheCBpcyBJTlRFR0VSIChiYXNlZCBvbiBwZXJsdHlwZSBJTlRFR0VSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0lOVEVHRVIuIFRoZSBDIHR5cGUgZGVjbCBpcyBsb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBsb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2UgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZV92YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEtPmRyX3ByZWZlcmVuY2U7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfZ2V0ICovCisKKworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY5ODY3NQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDEyMDg4ICQgb2YgJAorICoKKyAqICRJZDokCisgKgorICogQGZpbGUgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaAorICoKKyAqIEBhZGR0b2dyb3VwIGdldAorICoKKyAqIFByb3RvdHlwZXMgZm9yIGdldCBmdW5jdGlvbnMKKyAqCisgKiBAeworICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUlRBQkxFX0RBVEFfR0VUX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfREFUQV9HRVRfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBHRVQgZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBHRVQgVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUgaXMgc3ViaWQgMzcgb2YgaXAuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcsIGxlbmd0aDogOAorICAgICAqLworICAgIC8qCisgICAgICogaW5kZXhlcworICAgICAqLworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfZ2V0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIpOworCisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeAorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4ICogdGJsX2lkeCwKKyAgICAgICAgIHVfbG9uZyBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICBjaGFyICppcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHIsCisgICAgICAgICBzaXplX3QgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiwKKyAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcERlZmF1bHRSb3V0ZXJJZkluZGV4X3ZhbCk7CisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlRBQkxFX0RBVEFfR0VUX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudW1zLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjQ2ZDEwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudW1zLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBnZW5lcmljLXRhYmxlLWVudW1zLm0yYyAxMjUyNiAyMDA1LTA3LTE1IDIyOjQxOjE2WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfRU5VTVNfSAorI2RlZmluZSBJUERFRkFVTFRST1VURVJUQUJMRV9FTlVNU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICogTk9URVMgb24gZW51bXMKKyAgICAgKiA9PT09PT09PT09PT09PQorICAgICAqCisgICAgICogVmFsdWUgTWFwcGluZworICAgICAqIC0tLS0tLS0tLS0tLS0KKyAgICAgKiBJZiB0aGUgdmFsdWVzIGZvciB5b3VyIGRhdGEgdHlwZSBkb24ndCBleGFjdGx5IG1hdGNoIHRoZQorICAgICAqIHBvc3NpYmxlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBtaWIsIHlvdSBzaG91bGQgbWFwIHRoZW0KKyAgICAgKiBiZWxvdy4gRm9yIGV4YW1wbGUsIGEgYm9vbGVhbiBmbGFnICgxLzApIGlzIHVzdWFsbHkgcmVwcmVzZW50ZWQKKyAgICAgKiBhcyBhIFRydXRoVmFsdWUgaW4gYSBNSUIsIHdoaWNoIG1hcHMgdG8gdGhlIHZhbHVlcyAoMS8yKS4KKyAgICAgKgorICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogZW51bSBkZWZpbml0aW9ucyBmb3IgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lIChVTlNJR05FRDMyIC8gQVNOX1VOU0lHTkVEKQorICoKKyAqIHNpbmNlIGEgVGV4dHVhbCBDb252ZW50aW9uIG1heSBiZSByZWZlcmVuY2VkIG1vcmUgdGhhbiBvbmNlIGluIGEKKyAqIE1JQiwgcHJvdGVjdCBhZ2FpbnQgcmVkZWZpbml0aW9ucyBvZiB0aGUgZW51bSB2YWx1ZXMuCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfRU5VTVMKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfRU5VTVMKKworI2RlZmluZSBJUERFRkFVTFRST1VURVJMSUZFVElNRV9NSU4gIDAKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfTUFYICAweEZGRkZGRkZGVUwKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJMSUZFVElNRV9FTlVNUyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlIChJbmV0QWRkcmVzc1R5cGUgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIElORVRBRERSRVNTVFlQRV9FTlVNUworI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfRU5VTVMKKworI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfVU5LTk9XTiAgMAorI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfSVBWNCAgMQorI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfSVBWNiAgMgorI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfSVBWNFogIDMKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjZaICA0CisjZGVmaW5lIElORVRBRERSRVNTVFlQRV9ETlMgIDE2CisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5FVEFERFJFU1NUWVBFX0VOVU1TICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSAoSU5URUdFUiAvIEFTTl9JTlRFR0VSKQorICoKKyAqIHNpbmNlIGEgVGV4dHVhbCBDb252ZW50aW9uIG1heSBiZSByZWZlcmVuY2VkIG1vcmUgdGhhbiBvbmNlIGluIGEKKyAqIE1JQiwgcHJvdGVjdCBhZ2FpbnQgcmVkZWZpbml0aW9ucyBvZiB0aGUgZW51bSB2YWx1ZXMuCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9FTlVNUworI2RlZmluZSBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX0VOVU1TCisKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9SRVNFUlZFRCAgLTIKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9MT1cgIC0xCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfTUVESVVNICAwCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfSElHSCAgMQorCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfRU5VTVMgKi8KKworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSVEFCTEVfRU5VTVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYTdiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwxMDIxIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRISVMgRklMRSBET0VTIE5PVCBDT05UQUlOIEFOWSBVU0VSIEVESVRBQkxFIENPREUuICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRIRSBHRU5FUkFURUQgQ09ERSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiwgQU5EICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgIElTIFNVQkpFQ1QgVE8gQ0hBTkdFIFdJVEhPVVQgV0FSTklORyBJTiBGVVRVUkUgUkVMRUFTRVMuICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlIGlzIHN1YmlkIDM3IG9mIGlwLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNywgbGVuZ3RoOiA4CisgKi8KK3R5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHhfcyB7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworICAgIG5ldHNubXBfY2FjaGUgICpjYWNoZTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqdXNlcl9jdHg7CisKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIHRibF9pbmZvOworCisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzIGFjY2Vzc19tdWx0aXBsZXhlcjsKKworfSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4OworCitzdGF0aWMgaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eCBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHg7CisKK3N0YXRpYyB2b2lkICAgIAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CitzdGF0aWMgdm9pZCAgICAKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlmX2N0eCk7CisKKworbmV0c25tcF9jb250YWluZXIgKgoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQoreworICAgIHJldHVybiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyOworfQorCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgoraXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQoreworICAgIHJldHVybiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHg7Cit9CisKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKK3sKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKm9sZCA9CisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC51c2VyX2N0eDsKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CisgICAgcmV0dXJuIG9sZDsKK30KKworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQoreworICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKK30KKworLyoKKyAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcworICovCitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXA7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfdmFsdWVzOworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyLCB1X2xvbmcgZmxhZ3MpCit7CisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzICphY2Nlc3NfbXVsdGlwbGV4ZXIgPQorICAgICAgICAmaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmFjY2Vzc19tdWx0aXBsZXhlcjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YmxfaW5mbyA9CisgICAgICAgICZpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudGJsX2luZm87CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIGludCAgICAgICAgICAgICBtZmRfbW9kZXMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZSIsICJjYWxsZWRcbiIpKTsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNhdmUgaW50ZXJmYWNlIGNvbnRleHQgZm9yIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgICAgICovCisgICAgLyoKKyAgICAgKiBTZXR0aW5nIHVwIHRoZSB0YWJsZSdzIGRlZmluaXRpb24KKyAgICAgKi8KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YmxfaW5mbywgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogaXBEZWZhdWx0Um91dGVyQWRkcmVzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwRGVmYXVsdFJvdXRlcklmSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIC8qCisgICAgICogRGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2Vzc2libGUgY29sdW1ucy4gIFRoaXMKKyAgICAgKiBvcHRpbWl6ZXMgcmV0cml2YWwuIAorICAgICAqLworICAgIHRibF9pbmZvLT5taW5fY29sdW1uID0gSVBERUZBVUxUUk9VVEVSVEFCTEVfTUlOX0NPTDsKKyAgICB0YmxfaW5mby0+bWF4X2NvbHVtbiA9IElQREVGQVVMVFJPVVRFUlRBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IHJlZ19wdHI7CisKKyAgICAvKgorICAgICAqIGNhbGwgZGF0YSBhY2Nlc3MgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRfZGF0YShyZWdfcHRyKTsKKworICAgIC8qCisgICAgICogc2V0IHVwIHRoZSBjb250YWluZXIKKyAgICAgKi8KKyAgICBfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQoJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eCk7CisgICAgaWYgKE5VTEwgPT0gaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiY291bGQgbm90IGluaXRpYWxpemUgY29udGFpbmVyIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFjY2Vzc19tdWx0aXBsZXhlcjogUkVRVUlSRUQgd3JhcHBlciBmb3IgZ2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXAgPQorICAgICAgICBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5nZXRfdmFsdWVzID0gX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfdmFsdWVzOworCisgICAgLyoKKyAgICAgKiBubyB3cmFwcGVycyB5ZXQKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0ID0KKyAgICAgICAgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9CisgICAgICAgIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0OworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogQ3JlYXRlIGEgcmVnaXN0cmF0aW9uLCBzYXZlIG91ciByZWcgZGF0YSwgcmVnaXN0ZXIgdGFibGUuCisgICAgICovCisgICAgREVCVUdNU0dUTCgoImlwRGVmYXVsdFJvdXRlclRhYmxlOmluaXRfaXBEZWZhdWx0Um91dGVyVGFibGUiLAorICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyBpcERlZmF1bHRSb3V0ZXJUYWJsZSBhcyBhIG1pYnMtZm9yLWR1bW1pZXMgdGFibGUuXG4iKSk7CisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXJfZ2V0KGFjY2Vzc19tdWx0aXBsZXhlcik7CisgICAgcmVnaW5mbyA9CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJpcERlZmF1bHRSb3V0ZXJUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVnaW5mby0+bXlfcmVnX3ZvaWQgPSAmaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNldCB1cCBiYWJ5IHN0ZXBzIGhhbmRsZXIsIGNyZWF0ZSBpdCBhbmQgaW5qZWN0IGl0CisgICAgICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DTEVBTlVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFM7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5yb3dfY3JlYXRpb24pCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUk9XX0NSRUFURTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfQ09OU0lTVEVOQ1k7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKyNlbmRpZgorCisgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IHJvd19tZXJnZSBoZWxwZXIgd2l0aCBwcmVmaXggcm9vdG9pZF9sZW4gKyAyIChlbnRyeS5jb2wpCisgICAgICovCisgICAgaGFuZGxlciA9IG5ldHNubXBfZ2V0X3Jvd19tZXJnZV9oYW5kbGVyKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMik7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YmxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY2FjaGUgaGVscGVyCisgICAgICovCisgICAgaWYgKE5VTEwgIT0gaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNhY2hlKSB7CisgICAgICAgIGhhbmRsZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICovCit2b2lkCitfaXBEZWZhdWx0Um91dGVyVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlZ19wdHIpCit7CisgICAgLyoKKyAgICAgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bigmaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4KTsKK30KKwordm9pZAoraXBEZWZhdWx0Um91dGVyVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnRibF9pbmZvLnZhbGlkX2NvbHVtbnMgPSB2YzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfdmFsaWRfY29sdW1uc19zZXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGNvbnZlcnQgdGhlIGluZGV4IGNvbXBvbmVudCBzdG9yZWQgaW4gdGhlIGNvbnRleHQgdG8gYW4gb2lkCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSgxKS9JbmV0QWRkcmVzc1R5cGUvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZTsKKyAgICAvKgorICAgICAqIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MoMikvSW5ldEFkZHJlc3MvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML2Evdy9lL1IvZC9oCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzOworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVySWZJbmRleCgzKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSwgMHgwMCwKKyAgICAgICAgICAgc2l6ZW9mKHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSkpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZS50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgbWVtc2V0KCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcywgMHgwMCwKKyAgICAgICAgICAgc2l6ZW9mKHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzKSk7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MudHlwZSA9IEFTTl9PQ1RFVF9TVFI7CisgICAgbWVtc2V0KCZ2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleCwgMHgwMCwKKyAgICAgICAgICAgc2l6ZW9mKHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4KSk7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLm5leHRfdmFyaWFibGUgPQorICAgICAgICAmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3M7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MubmV4dF92YXJpYWJsZSA9ICZ2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleDsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfdG9fb2lkIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSgxKS9JbmV0QWRkcmVzc1R5cGUvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSkpOworCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzKDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gKgorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1swXSkpOworCisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4KDMpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlcklmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJJZkluZGV4KSk7CisKKworICAgIGVyciA9IGJ1aWxkX29pZF9ub2FsbG9jKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwgJm9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKTsKKyAgICBpZiAoZXJyKQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgJWQgY29udmVydGluZyBpbmRleCB0byBvaWRcbiIsIGVycik7CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGU7CisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzKDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzczsKKyAgICAvKgorICAgICAqIGlwRGVmYXVsdFJvdXRlcklmSW5kZXgoMykvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUudHlwZSA9IEFTTl9JTlRFR0VSOworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcykpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLnR5cGUgPSBBU05fT0NURVRfU1RSOworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleCkpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZS5uZXh0X3ZhcmlhYmxlID0KKyAgICAgICAgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLm5leHRfdmFyaWFibGUgPSAmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X2Zyb21fb2lkIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBwYXJzZSB0aGUgb2lkIGludG8gdGhlIGluZGl2aWR1YWwgaW5kZXggY29tcG9uZW50cworICAgICAqLworICAgIGVyciA9IHBhcnNlX29pZF9pbmRleGVzKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSA9CisgICAgICAgICAgICAqKCh1X2xvbmcgKikgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLnZhbC5zdHJpbmcpOworICAgICAgICAvKgorICAgICAgICAgKiBOT1RFOiB2YWxfbGVuIGlzIGluIGJ5dGVzLCBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX2xlbiBtaWdodCBub3QgYmUKKyAgICAgICAgICovCisgICAgICAgIGlmICh2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy52YWxfbGVuID4KKyAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzKSkKKyAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLnZhbF9sZW4pOworICAgICAgICAgICAgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gPQorICAgICAgICAgICAgICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLnZhbF9sZW4gLworICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzWzBdKTsKKyAgICAgICAgfQorICAgICAgICBtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJJZkluZGV4ID0KKyAgICAgICAgICAgICooKGxvbmcgKikgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgudmFsLnN0cmluZyk7CisKKworICAgIH0KKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSk7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4CisgKi8KK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgoraXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhICIKKyAgICAgICAgICAgICAgICAgImlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHguXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gZGF0YSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHRyYWNrIGlmIHdlIGdvdCBkYXRhIGZyb20gdXNlcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19EQVRBX0ZST01fVVNFUjsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEgPSBkYXRhOworICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0KKyAgICAgICAgICAgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YSA9CisgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX2RhdGEoKSkpIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiB1bmRvIGNvbnRleHQgd2lsbCBiZSBhbGxvY2F0ZWQgd2hlbiBuZWVkZWQgKGluICpfdW5kb19zZXR1cCkKKyAgICAgKi8KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2xpc3QgPSBOVUxMOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBhbGxvY2F0ZWQgZGF0YSwgY2FsbCBpbml0IHJvdXRpbmUKKyAgICAgKi8KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkgeworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9CisgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2luaXRfY3R4KSkgeworICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgcm93cmVxX2N0eCA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCAqLworCisvKgorICogQGludGVybmFsCisgKiByZWxlYXNlIHJlc291cmNlcyBmb3IgYSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4CisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBmb3Igbm9uLXRyYW5zaWVudCBkYXRhLCBkb24ndCBmcmVlIGRhdGEgd2UgZ290IGZyb20gdGhlIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoKHJvd3JlcV9jdHgtPmRhdGEpICYmCisgICAgICAgICEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YShyb3dyZXFfY3R4LT5kYXRhKTsKKworICAgIC8qCisgICAgICogZnJlZSBpbmRleCBvaWQgcG9pbnRlcgorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgIT0gcm93cmVxX2N0eC0+b2lkX3RtcCkKKyAgICAgICAgZnJlZShyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMpOworCisgICAgU05NUF9GUkVFKHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19maXJzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZSIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImlwRGVmYXVsdFJvdXRlclRhYmxlX3ByZV9yZXF1ZXN0XG4iLCByYykpOworICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjLCBwYWNrZXRfcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHJlbGVhc2Ugcm93IGNvbnRleHQsIGlmIGRlbGV0ZWQKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eCAmJiAocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19ERUxFVEVEKSkKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiB3YWl0IGZvciBsYXN0IGNhbGwgYmVmb3JlIGNhbGxpbmcgdXNlcgorICAgICAqLworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19sYXN0KHJlZ2luZm8sIGFndHJlcV9pbmZvKSkgeworICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAid2FpdGluZyBmb3IgbGFzdCBwb3N0X3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcGFja2V0X3JjID0gbmV0c25tcF9jaGVja19hbGxfcmVxdWVzdHNfZXJyb3IoYWd0cmVxX2luZm8tPmFzcCwgMCk7CisgICAgcmMgPSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3QoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4LCBwYWNrZXRfcmMpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXBEZWZhdWx0Um91dGVyVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfb2JqZWN0X2xvb2t1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfb2JqZWN0X2xvb2t1cCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZ2V0IG91ciBjb250ZXh0IGZyb20gbWZkCisgICAgICogaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eCAqaWZfY3R4ID0KKyAgICAgKiAgICAgICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eCAqKXJlZ2luZm8tPm15X3JlZ192b2lkOworICAgICAqLworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICByYyA9IFNOTVBfRVJSX05PQ1JFQVRJT047CisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAocm93cmVxX2N0eCk7CisKKyAgICByZXR1cm4gU05NUF9WQUxJREFURV9FUlIocmMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXAgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogR0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF9jb2x1bW4oaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF9jb2x1bW4iLCAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lKDQpL1VOU0lHTkVEMzIvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUERFRkFVTFRST1VURVJMSUZFVElNRToKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlKDUpL0lOVEVHRVIvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL0Evdy9FL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUERFRkFVTFRST1VURVJQUkVGRVJFTkNFOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZV9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElQREVGQVVMVFJPVVRFUlRBQkxFX01JTl9DT0wgPD0gY29sdW1uCisgICAgICAgICAgICAmJiBjb2x1bW4gPD0gSVBERUZBVUxUUk9VVEVSVEFCTEVfTUFYX0NPTCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtbiIsICJhc3N1bWUgY29sdW1uICVkIGlzIHJlc2VydmVkXG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJjID0gTUZEX1NLSVA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICAgICAgY29sdW1uKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uICovCisKK2ludAorX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfdmFsdWVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgIHVfY2hhciAgICAgICAgICpvbGRfc3RyaW5nOworICAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlcyIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2F2ZSBvbGQgcG9pbnRlciwgc28gd2UgY2FuIGZyZWUgaXQgaWYgcmVwbGFjZWQKKyAgICAgICAgICovCisgICAgICAgIG9sZF9zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nOworICAgICAgICBkYXRhRnJlZUhvb2sgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5kYXRhRnJlZUhvb2s7CisgICAgICAgIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWY7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYgPT0KKyAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiAhPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpKQorICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBjb2x1bW4gZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmktPmNvbG51bSk7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgaWYgKE1GRF9TS0lQID09IHJjKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSA9IFNOTVBfTk9TVUNISU5TVEFOQ0U7CisgICAgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIk5VTEwgdmFyYmluZCBkYXRhIHBvaW50ZXIhXG4iKTsKKyAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIGlmIChyYykKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaWYgdGhlIGJ1ZmZlciB3YXNuJ3QgdXNlZCBwcmV2aW91c2x5IGZvciB0aGUgb2xkIGRhdGEgKGkuZS4gaXQKKyAgICAgICAgICogd2FzIGFsbGNvYXRlZCBtZW1vcnkpICBhbmQgdGhlIGdldCByb3V0aW5lIHJlcGxhY2VkIHRoZSBwb2ludGVyLAorICAgICAgICAgKiB3ZSBuZWVkIHRvIGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgICAgICAgICAqLworICAgICAgICBpZiAob2xkX3N0cmluZyAmJiAob2xkX3N0cmluZyAhPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpICYmCisgICAgICAgICAgICAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZyAhPSBvbGRfc3RyaW5nKSkgeworICAgICAgICAgICAgaWYgKGRhdGFGcmVlSG9vaykKKyAgICAgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKG9sZF9zdHJpbmcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyZWUob2xkX3N0cmluZyk7CisgICAgICAgIH0KKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIHJlc3VsdHMgKi8KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF92YWx1ZXMgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFNFVCBQUk9DRVNTSU5HIE5PVCBBUFBMSUNBQkxFIChwZXIgTUlCIG9yIHVzZXIgc2V0dGluZykKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogREFUQSBBQ0NFU1MKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCAgICAgX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIGFuIGludmFsaWQgb3IgZXhwaXJlZCBjYWNoZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KCgwID09IGNhY2hlLT52YWxpZCkgfHwgKDEgPT0gY2FjaGUtPmV4cGlyZWQpKTsKKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICByZXR1cm4gaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQoKG5ldHNubXBfY29udGFpbmVyICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLT5tYWdpYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X2NhY2hlX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY2FjaGUgaW4gaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9jb250YWluZXJfaXRlbV9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KQorICAgICAgICByZXR1cm47CisKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfaXRlbV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9jb250YWluZXJfZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBpbiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuIGluZWZmaWNpZW50LCBidXQgZWFzeS4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbnRhaW5lcl9pdGVtX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQoaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGNhY2hlIGluaXQKKyAgICAgKi8KKyAgICBpZl9jdHgtPmNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMzAsICAgIC8qIHRpbWVvdXQgaW4gc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVfbG9hZCwgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkX3NpemUpOworCisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZXJyb3IgY3JlYXRpbmcgY2FjaGUgZm9yIGlwRGVmYXVsdFJvdXRlclRhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmX2N0eC0+Y2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiaXBEZWZhdWx0Um91dGVyVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCisgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoTlVMTCAhPSBpZl9jdHgtPmNhY2hlKQorICAgICAgICBpZl9jdHgtPmNhY2hlLT5tYWdpYyA9ICh2b2lkICopIGlmX2N0eC0+Y29udGFpbmVyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNodXRkb3duIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmX2N0eC0+Y29udGFpbmVyKTsKKworICAgIF9jb250YWluZXJfZnJlZShpZl9jdHgtPmNvbnRhaW5lcik7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgoraXBEZWZhdWx0Um91dGVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKK3sKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9PSURfTEVOXTsKKyAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICAvKgorICAgICAqIHNldCB1cCBzdG9yYWdlIGZvciBPSUQKKyAgICAgKi8KKyAgICBvaWRfaWR4Lm9pZHMgPSBvaWRfdG1wOworICAgIG9pZF9pZHgubGVuID0gc2l6ZW9mKG9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQKKyAgICAgKi8KKyAgICByYyA9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCgmb2lkX2lkeCwgbWliX2lkeCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJvd3JlcV9jdHggPQorICAgICAgICBDT05UQUlORVJfRklORChpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyLCAmb2lkX2lkeCk7CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzgwNDkxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKy8qKiBAaW5ncm91cCBpbnRlcmZhY2U6IFJvdXRpbmVzIHRvIGludGVyZmFjZSB0byBOZXQtU05NUAorICoKKyAqIFx3YXJuaW5nIFRoaXMgY29kZSBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCBjYWxsZWQgZGlyZWN0bHksCisgKiAgICAgICAgICBvciB1c2VkIHRvIGludGVycHJldCBmdW5jdGlvbmFsaXR5LiBJdCBpcyBzdWJqZWN0IHRvCisgKiAgICAgICAgICBjaGFuZ2UgYXQgYW55IHRpbWUuCisgKiAKKyAqIEB7CisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9JTlRFUkZBQ0VfSAorI2RlZmluZSBJUERFRkFVTFRST1VURVJUQUJMRV9JTlRFUkZBQ0VfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlLmgiCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqIFBVQkxJQyBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZSAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2N0eCwgdV9sb25nIGZsYWdzKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX3NodXRkb3duX2ludGVyZmFjZQorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jdHgpOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICppcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICppcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb25fc2V0CisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpOworCisgICAgbmV0c25tcF9jb250YWluZXIgKmlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCk7CisgICAgaW50ICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICosIHZvaWQgKik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eAorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisgICAgaW50ICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X2Zyb21fb2lkKG5ldHNubXBfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBtaWJfaWR4KTsKKworICAgIC8qCisgICAgICogYWNjZXNzIHRvIGNlcnRhaW4gaW50ZXJuYWxzLiB1c2Ugd2l0aCBjYXV0aW9uIQorICAgICAqLworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV92YWxpZF9jb2x1bW5zX3NldChuZXRzbm1wX2NvbHVtbl9pbmZvICp2Yyk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSVEFCTEVfSU5URVJGQUNFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX29pZHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxNGU3MQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBnZW5lcmljLXRhYmxlLW9pZHMubTJjIDEyODU1IDIwMDUtMDktMjcgMTU6NTY6MDhaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9PSURTX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfT0lEU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSAKKyAgICAgKi8KKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfT0lEICAgICAgICAgICAgICAxLDMsNiwxLDIsMSw0LDM3CisKKyNkZWZpbmUgQ09MVU1OX0lQREVGQVVMVFJPVVRFUkFERFJFU1NUWVBFICAgICAgICAgMQorCisjZGVmaW5lIENPTFVNTl9JUERFRkFVTFRST1VURVJBRERSRVNTICAgICAgICAgMgorCisjZGVmaW5lIENPTFVNTl9JUERFRkFVTFRST1VURVJJRklOREVYICAgICAgICAgMworCisjZGVmaW5lIENPTFVNTl9JUERFRkFVTFRST1VURVJMSUZFVElNRSAgICAgICAgIDQKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRSAgICAgICAgIDUKKworCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX01JTl9DT0wgICBDT0xVTU5fSVBERUZBVUxUUk9VVEVSTElGRVRJTUUKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfTUFYX0NPTCAgIENPTFVNTl9JUERFRkFVTFRST1VURVJQUkVGRVJFTkNFCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJUQUJMRV9PSURTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGExZDg1YwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS5oCkBAIC0wLDAgKzEsOCBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZSkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2VzcykKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkODA3ZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGlwSWZTdGF0c1RhYmxlCisgKgorICogXHNlY3Rpb24gaW50cm8gSW50cm9kdWN0aW9uCisgKiBJbnRyb2R1Y3RvcnkgdGV4dC4KKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCitjb25zdCBvaWQgICAgICAgaXBJZlN0YXRzVGFibGVfb2lkW10gPSB7IElQSUZTVEFUU1RBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlwSWZTdGF0c1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpcElmU3RhdHNUYWJsZV9vaWQpOworCitpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gaXBJZlN0YXRzVGFibGVfdXNlcl9jb250ZXh0Oworc3RhdGljIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqaXBJZlN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwSWZTdGF0c1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX2lwSWZTdGF0c1RhYmxlKHZvaWQpOworCisKKy8qKgorICogSW5pdGlhbGl6ZXMgdGhlIGlwSWZTdGF0c1RhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2lwSWZTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aW5pdF9pcElmU3RhdHNUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDA6bzogUGVyZm9ybSBpcElmU3RhdHNUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJpcElmU3RhdHNUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwSWZTdGF0c1RhYmxlKCk7CisKKyAgICAvKgorICAgICAqIGxhc3QgY2hhbmdlZCBzaG91bGQgYmUgMCBhdCBzdGFydHVwCisgICAgICovCisgICAgaXBJZlN0YXRzVGFibGVfbGFzdENoYW5nZV9zZXQoMCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRfaXBJZlN0YXRzVGFibGUgKi8KKworLyoqCisgKiBTaHV0LWRvd24gdGhlIGlwSWZTdGF0c1RhYmxlIG1vZHVsZSAoYWdlbnQgaXMgZXhpdGluZykKKyAqLwordm9pZAorc2h1dGRvd25faXBJZlN0YXRzVGFibGUodm9pZCkKK3sKKyAgICBpZiAoc2hvdWxkX2luaXQoImlwSWZTdGF0c1RhYmxlIikpCisgICAgICAgIHNodXRkb3duX3RhYmxlX2lwSWZTdGF0c1RhYmxlKCk7CisKK30KKworLyoqCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcElmU3RhdHNUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitpbml0aWFsaXplX3RhYmxlX2lwSWZTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgdV9sb25nICAgICAgICAgIGZsYWdzOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMTpvOiBQZXJmb3JtIGlwSWZTdGF0c1RhYmxlIG9uZS10aW1lIHRhYmxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMjpvOiB8LT5Jbml0aWFsaXplIGlwSWZTdGF0c1RhYmxlIHVzZXIgY29udGV4dAorICAgICAqIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiBhIHBvaW50ZXIgdG8gc29tZSBkYXRhIGZvciB0aGlzCisgICAgICogdGFibGUsIGFsbG9jYXRlIG9yIHNldCBpdCB1cCBoZXJlLgorICAgICAqLworICAgIC8qCisgICAgICogYSBuZXRzbm1wX2RhdGFfbGlzdCBpcyBhIHNpbXBsZSB3YXkgdG8gc3RvcmUgdm9pZCBwb2ludGVycy4gQSBzaW1wbGUKKyAgICAgKiBzdHJpbmcgdG9rZW4gaXMgdXNlZCB0byBhZGQsIGZpbmQgb3IgcmVtb3ZlIHBvaW50ZXJzLgorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wCisJPSBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QoImlwSWZTdGF0c1RhYmxlIiwgTlVMTCwgTlVMTCk7CisKKyAgICAvKgorICAgICAqIE5vIHN1cHBvcnQgZm9yIGFueSBmbGFncyB5ZXQsIGJ1dCBpbiB0aGUgZnV0dXJlIHlvdSB3b3VsZAorICAgICAqIHNldCBhbnkgZmxhZ3MgaGVyZS4KKyAgICAgKi8KKyAgICBmbGFncyA9IDA7CisKKyAgICAvKgorICAgICAqIGNhbGwgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBfaXBJZlN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKwkoaXBJZlN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3AsIGZsYWdzKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSAqLworCisvKioKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBpcElmU3RhdHNUYWJsZSAKKyAqLwordm9pZAorc2h1dGRvd25fdGFibGVfaXBJZlN0YXRzVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGNhbGwgaW50ZXJmYWNlIHNodXRkb3duIGNvZGUKKyAgICAgKi8KKyAgICBfaXBJZlN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShpcElmU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgaXBJZlN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3AgPSBOVUxMOworfQorCisvKioKKyAqIGV4dHJhIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gKGVnIGRlZmF1bHQgdmFsdWVzKQorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4ICAgIDogcm93IHJlcXVlc3QgY29udGV4dAorICogQHBhcmFtIHVzZXJfaW5pdF9jdHggOiB2b2lkIHBvaW50ZXIgZm9yIHVzZXIgKHBhcmFtZXRlciB0byByb3dyZXFfY3R4X2FsbG9jYXRlKQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgIDogbm8gZXJyb3JzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICA6IGVycm9yIChjb250ZXh0IGFsbG9jYXRlIHdpbGwgZmFpbCkKKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjEwOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwSWZTdGF0c1RhYmxlIHJvd3JlcSBpbml0aWFsaXphdGlvbi4gKGVnIERFRlZBTFMpCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdCAqLworCisvKioKKyAqIGV4dHJhIGNvbnRleHQgY2xlYW51cAorICoKKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMTE6bzogfC0+IFBlcmZvcm0gZXh0cmEgaXBJZlN0YXRzVGFibGUgcm93cmVxIGNsZWFudXAuCisgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShyb3dyZXFfY3R4LT5kYXRhKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhID0gTlVMTDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMDpvOiBQZXJmb3JtIGlwSWZTdGF0c1RhYmxlIHByZS1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogcG9zdC1yZXF1ZXN0IGNhbGxiYWNrCisgKgorICogTm90ZToKKyAqICAgTmV3IHJvd3MgaGF2ZSBiZWVuIGluc2VydGVkIGludG8gdGhlIGNvbnRhaW5lciwgYW5kCisgKiAgIGRlbGV0ZWQgcm93cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIgYW5kCisgKiAgIHJlbGVhc2VkLgorICoKKyAqIEBwYXJhbSB1c2VyX2NvbnRleHQKKyAqIEBwYXJhbSByYyA6IE1GRF9TVUNDRVNTIGlmIGFsbCByZXF1ZXN0cyBzdWNjZWVkZWQKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBvdGhlciBlcnJvciAoaWdub3JlZCkKKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYykKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBpcElmU3RhdHNUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKworLyoqIEB7ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYTk1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaApAQCAtMCwwICsxLDIwMCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmg+CisKKyAgICAvKgorICAgICAqIG90aGVyIHJlcXVpcmVkIG1vZHVsZSBjb21wb25lbnRzIAorICAgICAqLworICAgIC8qICpJTkRFTlQtT0ZGKiAgKi8KK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQpCisgICAgLyogKklOREVOVC1PTiogICovCisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgaXBJZlN0YXRzVGFibGUgCisgICAgICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfb2lkcy5oIgorCisgICAgLyoKKyAgICAgKiBlbnVtIGRlZmluaW9ucyAKKyAgICAgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfaXBJZlN0YXRzVGFibGUodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX2lwSWZTdGF0c1RhYmxlKHZvaWQpOworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXBJZlN0YXRzVGFibGUgaXMgc3ViaWQgMyBvZiBpcFRyYWZmaWNTdGF0cy4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLCBsZW5ndGg6IDkKKyAgICAgKi8KKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBXaGVuIHlvdSByZWdpc3RlciB5b3VyIG1pYiwgeW91IGdldCB0byBwcm92aWRlIGEgZ2VuZXJpYworICAgICAqIHBvaW50ZXIgdGhhdCB3aWxsIGJlIHBhc3NlZCBiYWNrIHRvIHlvdSBmb3IgbW9zdCBvZiB0aGUKKyAgICAgKiBmdW5jdGlvbnMgY2FsbHMuCisgICAgICoKKyAgICAgKiBUT0RPOjEwMDpyOiBSZXZpZXcgYWxsIGNvbnRleHQgc3RydWN0dXJlcworICAgICAqLworICAgIC8qCisgICAgICogVE9ETzoxMDE6bzogfC0+IFJldmlldyBpcElmU3RhdHNUYWJsZSByZWdpc3RyYXRpb24gY29udGV4dC4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGF0YV9saXN0IGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbjsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBUT0RPOjExMDpyOiB8LT4gUmV2aWV3IGlwSWZTdGF0c1RhYmxlIGRhdGEgY29udGV4dCBzdHJ1Y3R1cmUuCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGRhdGEgZm9yIGlwSWZTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSBpcElmU3RhdHNUYWJsZV9kYXRhOworCisKKyAgICAvKgorICAgICAqIFRPRE86MTIwOnI6IHwtPiBSZXZpZXcgaXBJZlN0YXRzVGFibGUgbWliIGluZGV4LgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBpbmRleCBmb3IgaXBJZlN0YXRzVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBJZlN0YXRzVGFibGVfbWliX2luZGV4X3MgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0lQVmVyc2lvbigxKS9JbmV0VmVyc2lvbi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvYS93L0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBpcElmU3RhdHNJUFZlcnNpb247CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSWZJbmRleCgyKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICAgICAqLworICAgICAgICBsb25nICAgICAgICAgICAgaXBJZlN0YXRzSWZJbmRleDsKKworCisgICAgfSBpcElmU3RhdHNUYWJsZV9taWJfaW5kZXg7CisKKyAgICAvKgorICAgICAqIFRPRE86MTIxOnI6IHwgICB8LT4gUmV2aWV3IGlwSWZTdGF0c1RhYmxlIG1heCBpbmRleCBsZW5ndGguCisgICAgICogSWYgeW91IEtOT1cgdGhhdCB5b3VyIGluZGV4ZXMgd2lsbCBuZXZlciBleGNlZWQgYSBjZXJ0YWluCisgICAgICogbGVuZ3RoLCB1cGRhdGUgdGhpcyBtYWNybyB0byB0aGF0IGxlbmd0aC4KKyAgICAgKi8KKyNkZWZpbmUgTUFYX2lwSWZTdGF0c1RhYmxlX0lEWF9MRU4gICAgIDIKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBpcElmU3RhdHNUYWJsZSBSb3cgcmVxdWVzdCAocm93cmVxKSBjb250ZXh0LgorICAgICAqIFdoZW4geW91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgeW91IHdpbGwgYmUgcGFzc2VkIGEKKyAgICAgKiBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9pcElmU3RhdHNUYWJsZV9JRFhfTEVOXTsKKworICAgICAgICBpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBpcElmU3RhdHNUYWJsZV9kYXRhICpkYXRhOworCisgICAgICAgIC8qCisgICAgICAgICAqIGZsYWdzIHBlciByb3cuIEN1cnJlbnRseSwgdGhlIGZpcnN0IChsb3dlcikgOCBiaXRzIGFyZSByZXNlcnZlZAorICAgICAgICAgKiBmb3IgdGhlIHVzZXIuIFNlZSBtZmQuaCBmb3Igb3RoZXIgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICB1X2ludCAgICAgICAgICAgcm93cmVxX2ZsYWdzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86MTMxOm86IHwgICB8LT4gQWRkIHVzZWZ1bCBkYXRhIHRvIGlwSWZTdGF0c1RhYmxlIHJvd3JlcSBjb250ZXh0LgorICAgICAgICAgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgIGtub3duX21pc3Npbmc7CisgICAgICAgIHVpbnQzMl90ICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZTsKKyAgICAgICAgdWludDMyX3QgICAgICAgIGlwSWZTdGF0c1JlZnJlc2hSYXRlOworCisgICAgICAgIC8qCisgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICppcElmU3RhdHNUYWJsZV9kYXRhX2xpc3Q7CisKKyAgICB9IGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHg7CisKKyAgICB0eXBlZGVmIHN0cnVjdCBpcElmU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eF9zIHsKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICB9IGlwSWZTdGF0c1RhYmxlX3JlZl9yb3dyZXFfY3R4OworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gcHJvdG90eXBlcworICAgICAqLworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2NvbnRleHQpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZXJfY29udGV4dCwgaW50IHJjKTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LCB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpcElmU3RhdHNUYWJsZV9kYXRhICppcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEoaXBJZlN0YXRzVGFibGVfZGF0YSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKKworCisgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXBJZlN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCk7CisKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXBJZlN0YXRzVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwSWZTdGF0c1RhYmxlX29pZF9zaXplOworCisKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgorI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgiCisKKyAgICAvKgorICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQorICAgICAqCisgICAgICogVE9ETzowOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjI5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzozOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86NDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYTZhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZS5oIgorCisKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgorCitzdGF0aWMgaW50ICAgICAgaXBpc19jYWNoZV9yZWZyZXNoID0gSVBJRlNUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVDsKKworLyoqIEBpbmdyb3VwIGludGVyZmFjZQorICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCisgKgorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gbG9jYXRlIHRoZSBkYXRhIHVzZWQgdG8gc2F0aXNmeQorICogcmVxdWVzdHMuCisgKiAKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcElmU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXBJZlN0YXRzVGFibGUgaXMgc3ViaWQgMyBvZiBpcFRyYWZmaWNTdGF0cy4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgaXBJZlN0YXRzVGFibGUgZGF0YSBhY2Nlc3MKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8KKyAqIGFsbG9jYXRlIGFueSByZXNvdXJjZXMgeW91IG5lZWQgZm9yIHRoZSBkYXRhIHRhYmxlLgorICoKKyAqIEBwYXJhbSBpcElmU3RhdHNUYWJsZV9yZWcKKyAqICAgICAgICBQb2ludGVyIHRvIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfaW5pdF9kYXRhKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIGlwSWZTdGF0c1RhYmxlX3JlZykKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbml0X2RhdGEiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDM6bzogSW5pdGlhbGl6ZSBpcElmU3RhdHNUYWJsZSBkYXRhLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2luaXQoKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfaW5pdF9kYXRhICovCisKKy8qKgorICogY29udGFpbmVyIG92ZXJ2aWV3CisgKgorICovCisKKy8qKgorICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKKyAqICAgICAgICBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyLCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGl0CisgKiAgICAgICAgdG8gdGhlIE1GRCBoZWxwZXIuIElmIHNldCB0byBOVUxMLCB0aGUgTUZEIGhlbHBlciB3aWxsCisgKiAgICAgICAgYWxsb2NhdGUgYSBjb250YWluZXIgZm9yIHlvdS4KKyAqIEBwYXJhbSAgY2FjaGUgQSBwb2ludGVyIHRvIGEgY2FjaGUgc3RydWN0dXJlLiBZb3UgY2FuIHNldCB0aGUgdGltZW91dAorICogICAgICAgICBhbmQgb3RoZXIgY2FjaGUgZmxhZ3MgdXNpbmcgdGhpcyBwb2ludGVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzdGFydHVwIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4gSWYgbm8gY3VzdG9tCisgKiAgY29udGFpbmVyIGlzIGFsbG9jYXRlZCwgdGhlIE1GRCBjb2RlIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91ci4KKyAqCisgKiAgVGhpcyBpcyBhbHNvIHRoZSBwbGFjZSB0byBzZXQgdXAgY2FjaGUgYmVoYXZpb3IuIFRoZSBkZWZhdWx0LCB0bworICogIHNpbXBseSBzZXQgdGhlIGNhY2hlIHRpbWVvdXQsIHdpbGwgd29yayB3ZWxsIHdpdGggdGhlIGRlZmF1bHQKKyAqICBjb250YWluZXIuIElmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gY29udGFpbmVyLCB5b3UgbWF5IHdhbnQgdG8KKyAqICBsb29rIGF0IHRoZSBjYWNoZSBoZWxwZXIgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueQorICogIGZsYWdzIHlvdSB3YW50IHRvIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgaW5pdGlhbGl6YXRpb24gbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIG9wZW5pbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgd2lsbCBzdXBwbHkgdGhlIGRhdGEsIG9wZW5pbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lciAqKiBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBGb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gdXNlIGEgY3VzdG9tIGNvbnRhaW5lci4gSWYgeW91CisgICAgICogZG8gbm90IGNyZWF0ZSBvbmUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIFdlIGNyZWF0ZSBhIGN1c3RvbSBjb250YWluZXIgaGVyZSBzbyB3ZSBjYW4gcHJlLWxvYWQgaXQsIHdoaWNoCisgICAgICogd2lsbCByZXN1bHQgaW4gYWxsIG5ldyBlbnRyaWVzIHdpdGggbGFzdCBjaGFuZ2VkIHZhbHVlcy4gd2UgbmVlZAorICAgICAqIHRvIGNsZWFyIHRob3NlLi4uICBXZSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIGlmSW5kZXhlcyBoYXZlIGJlZW4KKyAgICAgKiBhc3NpZ25lZC4uLgorICAgICAqLworICAgICpjb250YWluZXJfcHRyX3B0ciA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlwSWZTdGF0c1RhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMICE9ICpjb250YWluZXJfcHRyX3B0cikKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQoKmNvbnRhaW5lcl9wdHJfcHRyKTsKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNhY2hlIHBhcmFtIHRvIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogVE9ETzozNDU6QTogU2V0IHVwIGlwSWZTdGF0c1RhYmxlIGNhY2hlIHByb3BlcnRpZXMuCisgICAgICoKKyAgICAgKiBBbHNvIGZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiBzZXQgcGFyYW1ldGVycyBmb3IgdGhlCisgICAgICogY2FjaGUuIERvIG5vdCBjaGFuZ2UgdGhlIG1hZ2ljIHBvaW50ZXIsIGFzIGl0IGlzIHVzZWQKKyAgICAgKiBieSB0aGUgTUZEIGhlbHBlci4gVG8gY29tcGxldGVseSBkaXNhYmxlIGNhY2hpbmcsIHNldAorICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCisgICAgICovCisgICAgY2FjaGUtPnRpbWVvdXQgPSBJUElGU1RBVFNUQUJMRV9DQUNIRV9USU1FT1VUOyAgICAgIC8qIHNlY29uZHMgKi8KKworICAgIGNhY2hlLT5mbGFncyB8PQorICAgICAgICAoTkVUU05NUF9DQUNIRV9ET05UX0FVVE9fUkVMRUFTRSB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0VYUElSRUQKKyAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9ET05UX0ZSRUVfQkVGT1JFX0xPQUQgfAorICAgICAgICAgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogY2hlY2sgZW50cnkgZm9yIHVwZGF0ZQorICovCitzdGF0aWMgdm9pZAorX2NoZWNrX2Zvcl91cGRhdGVzKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpzdGF0cykKK3sKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICppZnN0YXRzX2VudHJ5OworCisgICAgLyoKKyAgICAgKiBjaGVjayBmb3IgbWF0Y2hpbmcgZW50cnkuIHdvcmtzIGJlY2F1c2UgaW5kZXhlcyBhcmUgdGhlIHNhbWUuCisgICAgICovCisgICAgaWZzdGF0c19lbnRyeSA9IENPTlRBSU5FUl9GSU5EKHN0YXRzLCByb3dyZXFfY3R4LT5kYXRhKTsKKyAgICBpZiAoTlVMTCA9PSBpZnN0YXRzX2VudHJ5KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpcElmU3RhdHNUYWJsZTphY2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAidXBkYXRpbmcgbWlzc2luZyBlbnRyeVxuIikpOworCisgICAgICAgIC8qCisgICAgICAgICAqIG1hcmsgcm93IGFzIG1pc3NpbmcsIHNvIHdlIGNhbiBzZXQgZGlzY29udGludWl0eQorICAgICAgICAgKiB3aGVuIGl0IGNvbWVzIGJhY2suCisgICAgICAgICAqCisgICAgICAgICAqIHdoYXQgZWxzZSBzaG91bGQgd2UgZG8/IHNldCByZWZyZXNoIHRvIDA/IHRoYXQncyBub3QgcXVpdGUgcmlnaHQuLi4KKyAgICAgICAgICovCisgICAgICAgIHJvd3JlcV9jdHgtPmtub3duX21pc3NpbmcgPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpcElmU3RhdHNUYWJsZTphY2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAidXBkYXRpbmcgZXhpc3RpbmcgZW50cnlcbiIpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBDaGVjayBmb3IgY2hhbmdlcyAmIHVwZGF0ZQorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfdXBkYXRlKHJvd3JlcV9jdHgtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmc3RhdHNfZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHNldCBkaXNjb250aW51aXR5IGlmIHByZXZpb3VzbHkgbWlzc2luZy4KKyAgICAgICAgICovCisgICAgICAgIGlmICgxID09IHJvd3JlcV9jdHgtPmtub3duX21pc3NpbmcpIHsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmtub3duX21pc3NpbmcgPSAwOworICAgICAgICAgICAgcm93cmVxX2N0eC0+aXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUgPQorICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfbGFzdENoYW5nZV9zZXQobmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCkpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogcmVtb3ZlIGVudHJ5IGZyb20gY29udGFpbmVyCisgICAgICAgICAqLworICAgICAgICBDT05UQUlORVJfUkVNT1ZFKHN0YXRzLCBpZnN0YXRzX2VudHJ5KTsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShpZnN0YXRzX2VudHJ5KTsKKyAgICB9Cit9CisKKy8qKgorICogYWRkIG5ldyBlbnRyeQorICovCitzdGF0aWMgdm9pZAorX2FkZF9uZXcobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqaWZzdGF0c19lbnRyeSwKKyAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKworICAgIERFQlVHTVNHVEwoKCJpcElmU3RhdHNUYWJsZTphY2Nlc3MiLCAiY3JlYXRpbmcgbmV3IGVudHJ5XG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmc3RhdHNfZW50cnkpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpCisgICAgICovCisgICAgcm93cmVxX2N0eCA9CisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaWZzdGF0c19lbnRyeSwgTlVMTCk7CisgICAgaWYgKChOVUxMICE9IHJvd3JlcV9jdHgpCisgICAgICAgICYmIChNRkRfU1VDQ0VTUyA9PQorICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmc3RhdHNfZW50cnktPmluZGV4WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzdGF0c19lbnRyeS0+aW5kZXhbMV0pKSkgeworICAgICAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNSZWZyZXNoUmF0ZSA9IGlwaXNfY2FjaGVfcmVmcmVzaCAqIDEwMDA7ICAgLyogbWlsbGktc2Vjb25kcyAqLworICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoTlVMTCAhPSByb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igc2V0dGluZyBpbmRleCB3aGlsZSBsb2FkaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJpcElmU3RhdHNUYWJsZSBjYWNoZS5cbiIpOworICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCB3aGlsZSBsb2FkaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJpcElmU3RhdHNUYWJsZSBjYWNoZS5cbiIpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShpZnN0YXRzX2VudHJ5KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUoKS4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgY2xlYW51cCBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgY2xvc2luZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCBzdXBwbGllZCB0aGUgZGF0YSwgY2xvc2luZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcl9wdHIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgcGFyYW1zIHRvIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKy8qKgorICogbG9hZCBpbml0aWFsIGRhdGEKKyAqCisgKiBUT0RPOjM1MDpNOiBJbXBsZW1lbnQgaXBJZlN0YXRzVGFibGUgZGF0YSBsb2FkCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZSBjYWxsZWQgYnkgdGhlIGNhY2hlIGhlbHBlciB0byBsb2FkCisgKiB0aGUgY29udGFpbmVyIGFnYWluIChhZnRlciB0aGUgY29udGFpbmVyIGZyZWUgZnVuY3Rpb24gaGFzIGJlZW4KKyAqIGNhbGxlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBjb250ZW50cykuCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgdG8gd2hpY2ggaXRlbXMgc2hvdWxkIGJlIGluc2VydGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEUgOiBDYW4ndCBhY2Nlc3MgZGF0YSBzb3VyY2UKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvYWQgdGhlIGluZGV4KGVzKSAoYW5kIGRhdGEsIG9wdGlvbmFsbHkpCisgKiAgZm9yIHRoZSBldmVyeSByb3cgaW4gdGhlIGRhdGEgc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBXaGlsZSBsb2FkaW5nIHRoZSBkYXRhLCB0aGUgb25seSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhlIGluZGV4ZXMuCisgKiAgSWYgYWNjZXNzIHRvIHlvdXIgZGF0YSBpcyBjaGVhcC9mYXN0IChlLmcuIHlvdSBoYXZlIGEgcG9pbnRlciB0byBhCisgKiAgc3RydWN0dXJlIGluIG1lbW9yeSksIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gdXBkYXRlIHRoZSBkYXRhIGhlcmUuCisgKiAgSWYsIGhvd2V2ZXIsIHRoZSBhY2Nlc3NpbmcgdGhlIGRhdGEgaW52b3ZsZXMgbW9yZSB3b3JrIChlLmcuIHBhcnNpbmcKKyAqICBzb21lIG90aGVyIGV4aXN0aW5nIGRhdGEsIG9yIHBlZm9ybWluZyBjYWxjdWxhdGlvbnMgdG8gZGVyaXZlIHRoZSBkYXRhKSwKKyAqICB0aGVuIHlvdSBjYW4gbGltaXQgeW91cnNlbGYgdG8gc2V0dGluZyB0aGUgaW5kZXhlcyBhbmQgc2F2aW5nIGFueQorICogIGluZm9ybWF0aW9uIHlvdSB3aWxsIG5lZWQgbGF0ZXIuIFRoZW4gdXNlIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBpbgorICogIGlwSWZTdGF0c1RhYmxlX3Jvd19wcmVwKCkgZm9yIHBvcHVsYXRpbmcgZGF0YS4KKyAqCisgKiBAbm90ZQorICogIElmIHlvdSBuZWVkIGNvbnNpc3RlbmN5IGJldHdlZW4gcm93cyAobGlrZSB5b3Ugd2FudCBzdGF0aXN0aWNzCisgKiAgZm9yIGVhY2ggcm93IHRvIGJlIGZyb20gdGhlIHNhbWUgdGltZSBmcmFtZSksIHlvdSBzaG91bGQgc2V0IGFsbAorICogIGRhdGEgaGVyZS4KKyAqCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKnN0YXRzOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIHN0YXRzID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2xvYWQoTlVMTCwgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfTE9BRF9JRlRBQkxFKTsKKyAgICBpZiAoTlVMTCA9PSBzdGF0cykKKyAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworCisgICAgLyoKKyAgICAgKiBUT0RPOjM1MTpNOiB8LT4gTG9hZC91cGRhdGUgZGF0YSBpbiB0aGUgaXBJZlN0YXRzVGFibGUgY29udGFpbmVyLgorICAgICAqIGxvb3Agb3ZlciB5b3VyIGlwSWZTdGF0c1RhYmxlIGRhdGEsIGFsbG9jYXRlIGEgcm93cmVxIGNvbnRleHQsCisgICAgICogc2V0IHRoZSBpbmRleChlcykgW2FuZCBkYXRhLCBvcHRpb25hbGx5XSBhbmQgaW5zZXJ0IGludG8KKyAgICAgKiB0aGUgY29udGFpbmVyLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgZGF0YS4gY29tcGFyZSBpdCB0bworICAgICAqIHdoYXQgd2UndmUgYWxyZWFkeSBnb3QsIGFuZCBtYWtlIGFueSBhZGp1c3RlbWVudHMuLi4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfRk9SX0VBQ0goY29udGFpbmVyLCAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikKKyAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrX2Zvcl91cGRhdGVzLCBzdGF0cyk7CisKKyAgICAvKgorICAgICAqIG5vdyBhZGQgYW55IG5ldyBlbnRyaWVzCisgICAgICovCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKHN0YXRzLCAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikKKyAgICAgICAgICAgICAgICAgICAgICAgX2FkZF9uZXcsIGNvbnRhaW5lcik7CisKKworICAgIC8qCisgICAgICAqIGZyZWUgdGhlIGNvbnRhaW5lci4gd2UndmUgZWl0aGVyIGNsYWltZWQgZWFjaCBpZmVudHJ5LCBvciByZWxlYXNlZCBpdCwKKyAgICAgKiBzbyB0aGUgZGFsIGZ1bmN0aW9uIGRvZXNuJ3QgbmVlZCB0byBjbGVhciB0aGUgY29udGFpbmVyLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKHN0YXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9ET05UX0NMRUFSKTsKKworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgIiVsdSByZWNvcmRzXG4iLCAodW5zaWduZWQgbG9uZylDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCisKKy8qKgorICogY29udGFpbmVyIGNsZWFuIHVwCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgd2l0aCBhbGwgY3VycmVudCBpdGVtcworICoKKyAqICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIGNhbGxlZCBwcmlvciB0byBhbGwKKyAqICBpdGVtJ3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIuIElmIHlvdQorICogIG5lZWQgdG8gZG8gYW55IHByb2Nlc3NpbmcgYmVmb3JlIHRoYXQsIGRvIGl0IGhlcmUuCisgKgorICogQG5vdGUKKyAqICBUaGUgTUZEIGhlbHBlciB3aWxsIHRha2UgY2FyZSBvZiByZWxlYXNpbmcgYWxsIHRoZSByb3cgY29udGV4dHMuCisgKgorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM4MDpNOiBGcmVlIGlwSWZTdGF0c1RhYmxlIGNvbnRhaW5lciBkYXRhLgorICAgICAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIHByZXBhcmUgcm93IGZvciBwcm9jZXNzaW5nLgorICoKKyAqICBXaGVuIHRoZSBhZ2VudCBoYXMgbG9jYXRlZCB0aGUgcm93IGZvciBhIHJlcXVlc3QsIHRoaXMgZnVuY3Rpb24gaXMKKyAqICBjYWxsZWQgdG8gcHJlcGFyZSB0aGUgcm93IGZvciBwcm9jZXNzaW5nLiBJZiB5b3UgZnVsbHkgcG9wdWxhdGVkCisgKiAgdGhlIGRhdGEgY29udGV4dCBkdXJpbmcgdGhlIGluZGV4IHNldHVwIHBoYXNlLCB5b3UgbWF5IG5vdCBuZWVkIHRvCisgKiAgZG8gYW55dGhpbmcuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggcG9pbnRlciB0byBhIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9yb3dfcHJlcChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9yb3dfcHJlcCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzozOTA6bzogUHJlcGFyZSByb3cgZm9yIHJlcXVlc3QuCisgICAgICogSWYgcG9wdWxhdGluZyByb3cgZGF0YSB3YXMgZGVsYXllZCwgdGhpcyBpcyB0aGUgcGxhY2UgdG8KKyAgICAgKiBmaWxsIGluIHRoZSByb3cgZm9yIHRoaXMgcmVxdWVzdC4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfcm93X3ByZXAgKi8KKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZjc2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfREFUQV9BQ0NFU1NfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXBJZlN0YXRzVGFibGUgaXMgc3ViaWQgMyBvZiBpcFRyYWZmaWNTdGF0cy4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLCBsZW5ndGg6IDkKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luaXRfZGF0YShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVnKTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjE4MDpvOiBSZXZpZXcgaXBJZlN0YXRzVGFibGUgY2FjaGUgdGltZW91dC4KKyAgICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBjYWNoZSB0aW1lcyBvdXQKKyAgICAgKi8KKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVCAgIDYwCisKKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSk7CisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jYWNoZV9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jYWNoZV9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3Jvd19wcmVwKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfREFUQV9BQ0NFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjY3M2RjCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMKQEAgLTAsMCArMSwzMDE1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlLmgiCisKKworLyoqIEBkZWZncm91cCBkYXRhX2dldCBkYXRhX2dldDogUm91dGluZXMgdG8gZ2V0IGRhdGEKKyAqCisgKiBUT0RPOjIzMDpNOiBJbXBsZW1lbnQgaXBJZlN0YXRzVGFibGUgZ2V0IHJvdXRpbmVzLgorICogVE9ETzoyNDA6TTogSW1wbGVtZW50IGlwSWZTdGF0c1RhYmxlIG1hcHBpbmcgcm91dGluZXMgKGlmIGFueSkuCisgKgorICogVGhlc2Ugcm91dGluZSBhcmUgdXNlZCB0byBnZXQgdGhlIHZhbHVlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMuIFRoZQorICogcm93IGNvbnRleHQgaXMgcGFzc2VkLCBhbG9uZyB3aXRoIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5IHdoZXJlIHRoZQorICogdmFsdWUgc2hvdWxkIGJlIGNvcGllZC4KKyAqCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMsIGxlbmd0aDogOQorICovCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICogVE9ETzoyMDA6cjogSW1wbGVtZW50IGlwSWZTdGF0c1RhYmxlIGRhdGEgY29udGV4dCBmdW5jdGlvbnMuCisgKi8KKy8qCisgKiBpcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhCisgKgorICogUHVycG9zZTogY3JlYXRlIG5ldyBpcElmU3RhdHNUYWJsZV9kYXRhLgorICovCitpcElmU3RhdHNUYWJsZV9kYXRhICoKK2lwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCkKK3sKKyAgICAvKgorICAgICAqIFRPRE86MjAxOnI6IHwtPiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgaXBJZlN0YXRzVGFibGVfZGF0YSAqcnRuID0gU05NUF9NQUxMT0NfVFlQRURFRihpcElmU3RhdHNUYWJsZV9kYXRhKTsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJ0bikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5hYmxlIHRvIG1hbGxvYyBtZW1vcnkgZm9yIG5ldyAiCisgICAgICAgICAgICAgICAgICJpcElmU3RhdHNUYWJsZV9kYXRhLlxuIik7CisgICAgfQorCisgICAgcmV0dXJuIHJ0bjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSAqLworCisvKgorICogaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhCisgKgorICogUHVycG9zZTogcmVsZWFzZSBpcElmU3RhdHNUYWJsZSBkYXRhLgorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEoaXBJZlN0YXRzVGFibGVfZGF0YSAqIGRhdGEpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjAyOnI6IHwtPiByZWxlYXNlIG1lbW9yeSBmb3IgdGhlIGlwSWZTdGF0c1RhYmxlIGRhdGEgY29udGV4dC4KKyAgICAgKi8KKyAgICBmcmVlKGRhdGEpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEgKi8KKworCisKKy8qKgorICogc2V0IG1pYiBpbmRleChlcykKKyAqCisgKiBAcGFyYW0gdGJsX2lkeCBtaWIgaW5kZXggc3RydWN0dXJlCisgKiBAcGFyYW0gaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbAorICogQHBhcmFtIGlwSWZTdGF0c0lmSW5kZXhfdmFsCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIHNldHRpbmcgYWxsIHRoZSBNSUIgaW5kZXgKKyAqICBjb21wb25lbnRzIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4gSXQgaXMgYXNzdW1lIHRoYXQgdGhlIEMgdmFsdWVzCisgKiAgaGF2ZSBhbHJlYWR5IGJlZW4gbWFwcGVkIGZyb20gdGhlaXIgbmF0aXZlL3Jhd2Zvcm1hdCB0byB0aGUgTUlCIGZvcm1hdC4KKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcElmU3RhdHNJUFZlcnNpb25fdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGlwSWZTdGF0c0lmSW5kZXhfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGlwSWZTdGF0c0lQVmVyc2lvbigxKS9JbmV0VmVyc2lvbi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvYS93L0Uvci9kL2ggCisgICAgICovCisgICAgLyoqIFdBUk5JTkc6IHRoaXMgY29kZSBtaWdodCBub3Qgd29yayBmb3IgbmV0c25tcF9pZnN0YXRzX2VudHJ5ICovCisgICAgdGJsX2lkeC0+aXBJZlN0YXRzSVBWZXJzaW9uID0gaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbDsKKworICAgIC8qCisgICAgICogaXBJZlN0YXRzSWZJbmRleCgyKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfaWZzdGF0c19lbnRyeSAqLworICAgIHRibF9pZHgtPmlwSWZTdGF0c0lmSW5kZXggPSBpcElmU3RhdHNJZkluZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGlwSWZTdGF0c0lQVmVyc2lvbl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGlwSWZTdGF0c0lmSW5kZXhfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgaXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCgmcm93cmVxX2N0eC0+dGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJUFZlcnNpb25fdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0lmSW5kZXhfdmFsKSkKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKworICAgIC8qCisgICAgICogY29udmVydCBtaWIgaW5kZXggdG8gb2lkIGluZGV4CisgICAgICovCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5sZW4gPSBzaXplb2Yocm93cmVxX2N0eC0+b2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKyAgICBpZiAoMCAhPSBpcElmU3RhdHNUYWJsZV9pbmRleF90b19vaWQoJnJvd3JlcV9jdHgtPm9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3dyZXFfY3R4LT50YmxfaWR4KSkgeworICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgIH0KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXQgKi8KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJblJlY2VpdmVzCisgKiBpcElmU3RhdHNJblJlY2VpdmVzIGlzIHN1YmlkIDMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMworICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByZWNlaXZlZCwgaW5jbHVkaW5nCisgICAgICAgICAgICB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblJlY2VpdmVzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJblJlY2VpdmVzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luUmVjZWl2ZXMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luUmVjZWl2ZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5SZWNlaXZlcworICogaXBJZlN0YXRzSENJblJlY2VpdmVzIGlzIHN1YmlkIDQgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByZWNlaXZlZCwgaW5jbHVkaW5nCisgICAgICAgICAgICB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZQorICAgICAgICAgICAgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c0luUmVjZWl2ZXMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlcgorICAgICAgICAgICAgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDSW5SZWNlaXZlcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDSW5SZWNlaXZlcyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3c7CisgICAgKCppcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5SZWNlaXZlcy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luT2N0ZXRzCisgKiBpcElmU3RhdHNJbk9jdGV0cyBpcyBzdWJpZCA1IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjUKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVjZWl2ZWQgaW4gaW5wdXQgSVAgZGF0YWdyYW1zLAorICAgICAgICAgICAgaW5jbHVkaW5nIHRob3NlIHJlY2VpdmVkIGluIGVycm9yLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zCisgICAgICAgICAgICBjb3VudGVkIGluIGlwSWZTdGF0c0luUmVjZWl2ZXMgTVVTVCBiZSBjb3VudGVkIGhlcmUuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5PY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5PY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luT2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5PY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5PY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luT2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbk9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5PY3RldHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbk9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENJbk9jdGV0cworICogaXBJZlN0YXRzSENJbk9jdGV0cyBpcyBzdWJpZCA2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVjZWl2ZWQgaW4gaW5wdXQgSVAgZGF0YWdyYW1zLAorICAgICAgICAgICAgaW5jbHVkaW5nIHRob3NlIHJlY2VpdmVkIGluIGVycm9yLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZQorICAgICAgICAgICAgc2FtZSBvY3RldHMgYXMgaXBJZlN0YXRzSW5PY3RldHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlcgorICAgICAgICAgICAgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDSW5PY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDSW5PY3RldHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk9jdGV0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luT2N0ZXRzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5PY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luSGRyRXJyb3JzCisgKiBpcElmU3RhdHNJbkhkckVycm9ycyBpcyBzdWJpZCA3IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjcKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZGlzY2FyZGVkIGR1ZSB0byBlcnJvcnMgaW4KKyAgICAgICAgICAgIHRoZWlyIElQIGhlYWRlcnMsIGluY2x1ZGluZyB2ZXJzaW9uIG51bWJlciBtaXNtYXRjaCwgb3RoZXIKKyAgICAgICAgICAgIGZvcm1hdCBlcnJvcnMsIGhvcCBjb3VudCBleGNlZWRlZCwgZXJyb3JzIGRpc2NvdmVyZWQgaW4KKyAgICAgICAgICAgIHByb2Nlc3NpbmcgdGhlaXIgSVAgb3B0aW9ucywgZXRjLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luSGRyRXJyb3JzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luSGRyRXJyb3JzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkhkckVycm9yc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luSGRyRXJyb3JzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luSGRyRXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbkhkckVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5IRFJFUlJPUlNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5IZHJFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luSGRyRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbk5vUm91dGVzCisgKiBpcElmU3RhdHNJbk5vUm91dGVzIGlzIHN1YmlkIDggb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuOAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyBkaXNjYXJkZWQgYmVjYXVzZSBubyByb3V0ZQorICAgICAgICAgICAgY291bGQgYmUgZm91bmQgdG8gdHJhbnNtaXQgdGhlbSB0byB0aGVpciBkZXN0aW5hdGlvbi4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk5vUm91dGVzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5Ob1JvdXRlc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5Ob1JvdXRlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbk5vUm91dGVzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luTm9Sb3V0ZXMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luTm9Sb3V0ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5Ob1JvdXRlc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5Ob1JvdXRlcy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luTm9Sb3V0ZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luQWRkckVycm9ycworICogaXBJZlN0YXRzSW5BZGRyRXJyb3JzIGlzIHN1YmlkIDkgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuOQorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyBkaXNjYXJkZWQgYmVjYXVzZSB0aGUgSVAKKyAgICAgICAgICAgIGFkZHJlc3MgaW4gdGhlaXIgSVAgaGVhZGVyJ3MgZGVzdGluYXRpb24gZmllbGQgd2FzIG5vdCBhCisgICAgICAgICAgICB2YWxpZCBhZGRyZXNzIHRvIGJlIHJlY2VpdmVkIGF0IHRoaXMgZW50aXR5LiAgVGhpcyBjb3VudAorICAgICAgICAgICAgaW5jbHVkZXMgaW52YWxpZCBhZGRyZXNzZXMgKGUuZy4sIDo6MCkuICBGb3IgZW50aXRpZXMgdGhhdAorICAgICAgICAgICAgYXJlIG5vdCBJUCByb3V0ZXJzIGFuZCB0aGVyZWZvcmUgZG8gbm90IGZvcndhcmQgZGF0YWdyYW1zLAorICAgICAgICAgICAgdGhpcyBjb3VudGVyIGluY2x1ZGVzIGRhdGFncmFtcyBkaXNjYXJkZWQgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2FzIG5vdCBhIGxvY2FsIGFkZHJlc3MuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5BZGRyRXJyb3JzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbkFkZHJFcnJvcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5BZGRyRXJyb3JzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQWRkckVycm9ycyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluQWRkckVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5BZGRyRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJblVua25vd25Qcm90b3MKKyAqIGlwSWZTdGF0c0luVW5rbm93blByb3RvcyBpcyBzdWJpZCAxMCBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xMAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGxvY2FsbHktYWRkcmVzc2VkIElQIGRhdGFncmFtcyByZWNlaXZlZAorICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IGJ1dCBkaXNjYXJkZWQgYmVjYXVzZSBvZiBhbiB1bmtub3duIG9yCisgICAgICAgICAgICB1bnN1cHBvcnRlZCBwcm90b2NvbC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZGF0YWdyYW1zIHdlcmUgYWRkcmVzc2VkIGlzCisgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZGF0YWdyYW1zLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisKKworCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luVW5rbm93blByb3RvcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luVW5rbm93blByb3Rvc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblVua25vd25Qcm90b3MgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JblVua25vd25Qcm90b3M7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzCisgKiBpcElmU3RhdHNJblRydW5jYXRlZFBrdHMgaXMgc3ViaWQgMTEgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTEKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICAgICBkYXRhZ3JhbSBmcmFtZSBkaWRuJ3QgY2FycnkgZW5vdWdoIGRhdGEuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJblRydW5jYXRlZFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlRSVU5DQVRFRFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluVHJ1bmNhdGVkUGt0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMKKyAqIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtcyBpcyBzdWJpZCAxMiBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xMgorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGlucHV0IGRhdGFncmFtcyBmb3Igd2hpY2ggdGhpcyBlbnRpdHkgd2FzIG5vdAorICAgICAgICAgICAgdGhlaXIgZmluYWwgSVAgZGVzdGluYXRpb24gYW5kIGZvciB3aGljaCB0aGlzIGVudGl0eQorICAgICAgICAgICAgYXR0ZW1wdGVkIHRvIGZpbmQgYSByb3V0ZSB0byBmb3J3YXJkIHRoZW0gdG8gdGhhdCBmaW5hbAorICAgICAgICAgICAgZGVzdGluYXRpb24uICBJbiBlbnRpdGllcyB0aGF0IGRvIG5vdCBhY3QgYXMgSVAgcm91dGVycywKKyAgICAgICAgICAgIHRoaXMgY291bnRlciB3aWxsIGluY2x1ZGUgb25seSB0aG9zZSBkYXRhZ3JhbXMgdGhhdCB3ZXJlCisgICAgICAgICAgICBTb3VyY2UtUm91dGVkIHZpYSB0aGlzIGVudGl0eSwgYW5kIHRoZSBTb3VyY2UtUm91dGUKKyAgICAgICAgICAgIHByb2Nlc3Npbmcgd2FzIHN1Y2Nlc3NmdWwuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW5jb21pbmcgaW50ZXJmYWNlIGlzIGluY3JlbWVudGVkIGZvciBlYWNoIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtcworICogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgaXMgc3ViaWQgMTMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTMKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBkYXRhZ3JhbXMgZm9yIHdoaWNoIHRoaXMgZW50aXR5IHdhcyBub3QKKyAgICAgICAgICAgIHRoZWlyIGZpbmFsIElQIGRlc3RpbmF0aW9uIGFuZCBmb3Igd2hpY2ggdGhpcyBlbnRpdHkKKyAgICAgICAgICAgIGF0dGVtcHRlZCB0byBmaW5kIGEgcm91dGUgdG8gZm9yd2FyZCB0aGVtIHRvIHRoYXQgZmluYWwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIHBhY2tldHMgYXMKKworCisKKyAgICAgICAgICAgIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtcywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtcyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lORk9SV0RBVEFHUkFNU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93OworICAgICgqaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNSZWFzbVJlcWRzCisgKiBpcElmU3RhdHNSZWFzbVJlcWRzIGlzIHN1YmlkIDE0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjE0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgZnJhZ21lbnRzIHJlY2VpdmVkIHRoYXQgbmVlZGVkIHRvIGJlCisgICAgICAgICAgICByZWFzc2VtYmxlZCBhdCB0aGlzIGludGVyZmFjZS4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZnJhZ21lbnRzIHdlcmUgYWRkcmVzc2VkIGlzCisgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZnJhZ21lbnRzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c1JlYXNtUmVxZHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNSZWFzbVJlcWRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1JlYXNtUmVxZHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21SZXFkcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzUmVhc21SZXFkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01SRVFEU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVhc21SZXFkc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLlJlYXNtUmVxZHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1JlYXNtUmVxZHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c1JlYXNtT0tzCisgKiBpcElmU3RhdHNSZWFzbU9LcyBpcyBzdWJpZCAxNSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xNQorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIGRhdGFncmFtcyBzdWNjZXNzZnVsbHkgcmVhc3NlbWJsZWQuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGRhdGFncmFtcyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGRhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWFzbU9LcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNSZWFzbU9Lc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzUmVhc21PS3NfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNSZWFzbU9Lc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWFzbU9LcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzUmVhc21PS3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNSZWFzbU9Lc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLlJlYXNtT0tzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNSZWFzbU9Lc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzUmVhc21GYWlscworICogaXBJZlN0YXRzUmVhc21GYWlscyBpcyBzdWJpZCAxNiBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xNgorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGZhaWx1cmVzIGRldGVjdGVkIGJ5IHRoZSBJUCByZS1hc3NlbWJseQorICAgICAgICAgICAgYWxnb3JpdGhtIChmb3Igd2hhdGV2ZXIgcmVhc29uOiB0aW1lZCBvdXQsIGVycm9ycywgZXRjLikuCisgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgYSBjb3VudCBvZiBkaXNjYXJkZWQgSVAKKyAgICAgICAgICAgIGZyYWdtZW50cyBzaW5jZSBzb21lIGFsZ29yaXRobXMgKG5vdGFibHkgdGhlIGFsZ29yaXRobSBpbgorICAgICAgICAgICAgUkZDIDgxNSkgY2FuIGxvc2UgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBmcmFnbWVudHMgYnkKKyAgICAgICAgICAgIGNvbWJpbmluZyB0aGVtIGFzIHRoZXkgYXJlIHJlY2VpdmVkLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIGludGVyZmFjZSB0byB3aGljaCB0aGVzZSBmcmFnbWVudHMgd2VyZSBhZGRyZXNzZWQgaXMKKyAgICAgICAgICAgIGluY3JlbWVudGVkLiAgVGhpcyBpbnRlcmZhY2UgbWlnaHQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgaW5wdXQgaW50ZXJmYWNlIGZvciBzb21lIG9mIHRoZSBmcmFnbWVudHMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21GYWlscyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c1JlYXNtRmFpbHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzUmVhc21GYWlsc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWFzbUZhaWxzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuUmVhc21GYWlsczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzUmVhc21GYWlsc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5EaXNjYXJkcworICogaXBJZlN0YXRzSW5EaXNjYXJkcyBpcyBzdWJpZCAxNyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xNworICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyBmb3Igd2hpY2ggbm8gcHJvYmxlbXMgd2VyZQorICAgICAgICAgICAgZW5jb3VudGVyZWQgdG8gcHJldmVudCB0aGVpciBjb250aW51ZWQgcHJvY2Vzc2luZywgYnV0CisgICAgICAgICAgICB3ZXJlIGRpc2NhcmRlZCAoZS5nLiwgZm9yIGxhY2sgb2YgYnVmZmVyIHNwYWNlKS4gIE5vdGUgdGhhdAorICAgICAgICAgICAgdGhpcyBjb3VudGVyIGRvZXMgbm90IGluY2x1ZGUgYW55IGRhdGFncmFtcyBkaXNjYXJkZWQgd2hpbGUKKyAgICAgICAgICAgIGF3YWl0aW5nIHJlLWFzc2VtYmx5LgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRGlzY2FyZHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbkRpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luRGlzY2FyZHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5EaXNjYXJkcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5EaXNjYXJkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5EaXNjYXJkc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluRGlzY2FyZHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luRGlzY2FyZHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luRGVsaXZlcnMKKyAqIGlwSWZTdGF0c0luRGVsaXZlcnMgaXMgc3ViaWQgMTggb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTgKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bGx5IGRlbGl2ZXJlZCB0byBJUAorICAgICAgICAgICAgdXNlci1wcm90b2NvbHMgKGluY2x1ZGluZyBJQ01QKS4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZGF0YWdyYW1zIHdlcmUgYWRkcmVzc2VkIGlzCisgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKKworCisKKyAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZGF0YWdyYW1zLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRGVsaXZlcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbkRlbGl2ZXJzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luRGVsaXZlcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5EZWxpdmVycyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5EZWxpdmVyc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5EZWxpdmVyc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENJbkRlbGl2ZXJzCisgKiBpcElmU3RhdHNIQ0luRGVsaXZlcnMgaXMgc3ViaWQgMTkgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTkKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bGx5IGRlbGl2ZXJlZCB0byBJUAorICAgICAgICAgICAgdXNlci1wcm90b2NvbHMgKGluY2x1ZGluZyBJQ01QKS4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUKKyAgICAgICAgICAgIHNhbWUgcGFja2V0cyBhcyBpcElmU3RhdHNJbkRlbGl2ZXJzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKKyAgICAgICAgICAgIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luRGVsaXZlcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luRGVsaXZlcnMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRGVsaXZlcnMubG93OworICAgICgqaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENJbkRlbGl2ZXJzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRSZXF1ZXN0cworICogaXBJZlN0YXRzT3V0UmVxdWVzdHMgaXMgc3ViaWQgMjAgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjAKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCBsb2NhbCBJUCB1c2VyLQorICAgICAgICAgICAgcHJvdG9jb2xzIChpbmNsdWRpbmcgSUNNUCkgc3VwcGxpZWQgdG8gSVAgaW4gcmVxdWVzdHMgZm9yCisgICAgICAgICAgICB0cmFuc21pc3Npb24uICBOb3RlIHRoYXQgdGhpcyBjb3VudGVyIGRvZXMgbm90IGluY2x1ZGUgYW55CisgICAgICAgICAgICBkYXRhZ3JhbXMgY291bnRlZCBpbiBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dFJlcXVlc3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRSZXF1ZXN0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dFJlcXVlc3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dFJlcXVlc3RzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRSZXF1ZXN0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFJlcXVlc3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0UmVxdWVzdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDT3V0UmVxdWVzdHMKKyAqIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgaXMgc3ViaWQgMjEgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCBsb2NhbCBJUCB1c2VyLQorICAgICAgICAgICAgcHJvdG9jb2xzIChpbmNsdWRpbmcgSUNNUCkgc3VwcGxpZWQgdG8gSVAgaW4gcmVxdWVzdHMgZm9yCisgICAgICAgICAgICB0cmFuc21pc3Npb24uICBUaGlzIG9iamVjdCBjb3VudHMgdGhlIHNhbWUgcGFja2V0cyBhcworCisKKworICAgICAgICAgICAgaXBJZlN0YXRzT3V0UmVxdWVzdHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRSZXF1ZXN0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRSZXF1ZXN0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFJlcXVlc3RzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENPdXRSZXF1ZXN0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcworICogaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcyBpcyBzdWJpZCAyMyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4yMworICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIGRhdGFncmFtcyBmb3Igd2hpY2ggdGhpcyBlbnRpdHkgd2FzIG5vdCB0aGVpcgorICAgICAgICAgICAgZmluYWwgSVAgZGVzdGluYXRpb24gYW5kIGZvciB3aGljaCBpdCB3YXMgc3VjY2Vzc2Z1bCBpbgorICAgICAgICAgICAgZmluZGluZyBhIHBhdGggdG8gdGhlaXIgZmluYWwgZGVzdGluYXRpb24uICBJbiBlbnRpdGllcworICAgICAgICAgICAgdGhhdCBkbyBub3QgYWN0IGFzIElQIHJvdXRlcnMsIHRoaXMgY291bnRlciB3aWxsIGluY2x1ZGUKKyAgICAgICAgICAgIG9ubHkgdGhvc2UgZGF0YWdyYW1zIHRoYXQgd2VyZSBTb3VyY2UtUm91dGVkIHZpYSB0aGlzCisgICAgICAgICAgICBlbnRpdHksIGFuZCB0aGUgU291cmNlLVJvdXRlIHByb2Nlc3Npbmcgd2FzIHN1Y2Nlc3NmdWwuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgb3V0Z29pbmcgaW50ZXJmYWNlIGlzIGluY3JlbWVudGVkIGZvciBhIHN1Y2Nlc3NmdWxseQorICAgICAgICAgICAgZm9yd2FyZGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zCisgKiBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgaXMgc3ViaWQgMjQgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjQKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBkYXRhZ3JhbXMgZm9yIHdoaWNoIHRoaXMgZW50aXR5IHdhcyBub3QgdGhlaXIKKyAgICAgICAgICAgIGZpbmFsIElQIGRlc3RpbmF0aW9uIGFuZCBmb3Igd2hpY2ggaXQgd2FzIHN1Y2Nlc3NmdWwgaW4KKyAgICAgICAgICAgIGZpbmRpbmcgYSBwYXRoIHRvIHRoZWlyIGZpbmFsIGRlc3RpbmF0aW9uLiAgVGhpcyBvYmplY3QKKyAgICAgICAgICAgIGNvdW50cyB0aGUgc2FtZSBwYWNrZXRzIGFzIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMsIGJ1dAorICAgICAgICAgICAgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisKKworCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3c7CisgICAgKCppcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dERpc2NhcmRzCisgKiBpcElmU3RhdHNPdXREaXNjYXJkcyBpcyBzdWJpZCAyNSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4yNQorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIG91dHB1dCBJUCBkYXRhZ3JhbXMgZm9yIHdoaWNoIG5vIHByb2JsZW0gd2FzCisgICAgICAgICAgICBlbmNvdW50ZXJlZCB0byBwcmV2ZW50IHRoZWlyIHRyYW5zbWlzc2lvbiB0byB0aGVpcgorICAgICAgICAgICAgZGVzdGluYXRpb24sIGJ1dCB3ZXJlIGRpc2NhcmRlZCAoZS5nLiwgZm9yIGxhY2sgb2YKKyAgICAgICAgICAgIGJ1ZmZlciBzcGFjZSkuICBOb3RlIHRoYXQgdGhpcyBjb3VudGVyIHdvdWxkIGluY2x1ZGUKKyAgICAgICAgICAgIGRhdGFncmFtcyBjb3VudGVkIGluIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMgaWYgYW55IHN1Y2gKKyAgICAgICAgICAgIGRhdGFncmFtcyBtZXQgdGhpcyAoZGlzY3JldGlvbmFyeSkgZGlzY2FyZCBjcml0ZXJpb24uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RGlzY2FyZHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0RGlzY2FyZHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dERpc2NhcmRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0RGlzY2FyZHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RGlzY2FyZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dERpc2NhcmRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXREaXNjYXJkc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0RnJhZ1JlcWRzCisgKiBpcElmU3RhdHNPdXRGcmFnUmVxZHMgaXMgc3ViaWQgMjYgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjYKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCB3b3VsZCByZXF1aXJlIGZyYWdtZW50YXRpb24KKyAgICAgICAgICAgIGluIG9yZGVyIHRvIGJlIHRyYW5zbWl0dGVkLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIG91dGdvaW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgYSBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgIGZyYWdtZW50ZWQgZGF0YWdyYW0uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ1JlcWRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0RnJhZ1JlcWRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdSZXFkcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdSRVFEU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGcmFnUmVxZHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXRGcmFnUmVxZHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEZyYWdPS3MKKyAqIGlwSWZTdGF0c091dEZyYWdPS3MgaXMgc3ViaWQgMjcgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjcKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKworCisKKyAgICAgICAgICAgIG91dGdvaW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgYSBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgIGZyYWdtZW50ZWQgZGF0YWdyYW0uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ09LcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dEZyYWdPS3NfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0RnJhZ09Lc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0RnJhZ09Lc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0RnJhZ09Lc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGcmFnT0tzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdPS3MubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXRGcmFnT0tzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRGcmFnRmFpbHMKKyAqIGlwSWZTdGF0c091dEZyYWdGYWlscyBpcyBzdWJpZCAyOCBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4yOAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIGRhdGFncmFtcyB0aGF0IGhhdmUgYmVlbiBkaXNjYXJkZWQgYmVjYXVzZQorICAgICAgICAgICAgdGhleSBuZWVkZWQgdG8gYmUgZnJhZ21lbnRlZCBidXQgY291bGQgbm90IGJlLiAgVGhpcworICAgICAgICAgICAgaW5jbHVkZXMgSVB2NCBwYWNrZXRzIHRoYXQgaGF2ZSB0aGUgREYgYml0IHNldCBhbmQgSVB2NgorICAgICAgICAgICAgcGFja2V0cyB0aGF0IGFyZSBiZWluZyBmb3J3YXJkZWQgYW5kIGV4Y2VlZCB0aGUgb3V0Z29pbmcKKyAgICAgICAgICAgIGxpbmsgTVRVLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIG91dGdvaW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgYW4gdW5zdWNjZXNzZnVsbHkKKyAgICAgICAgICAgIGZyYWdtZW50ZWQgZGF0YWdyYW0uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRGcmFnRmFpbHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdGYWlscyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXRGcmFnRmFpbHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEZyYWdDcmVhdGVzCisgKiBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlcyBpcyBzdWJpZCAyOSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4yOQorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIG91dHB1dCBkYXRhZ3JhbSBmcmFnbWVudHMgdGhhdCBoYXZlIGJlZW4KKyAgICAgICAgICAgIGdlbmVyYXRlZCBhcyBhIHJlc3VsdCBvZiBJUCBmcmFnbWVudGF0aW9uLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIG91dGdvaW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgYSBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgIGZyYWdtZW50ZWQgZGF0YWdyYW0uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0VHJhbnNtaXRzCisgKiBpcElmU3RhdHNPdXRUcmFuc21pdHMgaXMgc3ViaWQgMzAgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzAKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCB0aGlzIGVudGl0eSBzdXBwbGllZAorICAgICAgICAgICAgdG8gdGhlIGxvd2VyIGxheWVycyBmb3IgdHJhbnNtaXNzaW9uLiAgVGhpcyBpbmNsdWRlcworICAgICAgICAgICAgZGF0YWdyYW1zIGdlbmVyYXRlZCBsb2NhbGx5IGFuZCB0aG9zZSBmb3J3YXJkZWQgYnkgdGhpcworICAgICAgICAgICAgZW50aXR5LgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dFRyYW5zbWl0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0VHJhbnNtaXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dFRyYW5zbWl0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRUcmFuc21pdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0VHJhbnNtaXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dFRyYW5zbWl0cworICogaXBJZlN0YXRzSENPdXRUcmFuc21pdHMgaXMgc3ViaWQgMzEgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCB0aGlzIGVudGl0eSBzdXBwbGllZAorICAgICAgICAgICAgdG8gdGhlIGxvd2VyIGxheWVycyBmb3IgdHJhbnNtaXNzaW9uLiAgVGhpcyBvYmplY3QgY291bnRzCisgICAgICAgICAgICB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzT3V0VHJhbnNtaXRzLCBidXQgYWxsb3dzIGZvcgorICAgICAgICAgICAgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dFRyYW5zbWl0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dFRyYW5zbWl0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFRSQU5TTUlUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRUcmFuc21pdHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRPY3RldHMKKyAqIGlwSWZTdGF0c091dE9jdGV0cyBpcyBzdWJpZCAzMiBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4zMgorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyBpbiBJUCBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHRoZQorICAgICAgICAgICAgbG93ZXIgbGF5ZXJzIGZvciB0cmFuc21pc3Npb24uICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMKKyAgICAgICAgICAgIGNvdW50ZWQgaW4gaXBJZlN0YXRzT3V0VHJhbnNtaXRzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE9jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dE9jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dE9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dE9jdGV0cworICogaXBJZlN0YXRzSENPdXRPY3RldHMgaXMgc3ViaWQgMzMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzMKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgaW4gSVAgZGF0YWdyYW1zIGRlbGl2ZXJlZCB0byB0aGUKKyAgICAgICAgICAgIGxvd2VyIGxheWVycyBmb3IgdHJhbnNtaXNzaW9uLiAgVGhpcyBvYmplY3RzIGNvdW50cyB0aGUgc2FtZQorICAgICAgICAgICAgb2N0ZXRzIGFzIGlwSWZTdGF0c091dE9jdGV0cywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dE9jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dE9jdGV0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRPY3RldHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbk1jYXN0UGt0cworICogaXBJZlN0YXRzSW5NY2FzdFBrdHMgaXMgc3ViaWQgMzQgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzQKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBtdWx0aWNhc3QgZGF0YWdyYW1zIHJlY2VpdmVkLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luTWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luTWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbk1jYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luTWNhc3RQa3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luTWNhc3RQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbk1jYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5NY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5NY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgaXMgc3ViaWQgMzUgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzUKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBtdWx0aWNhc3QgZGF0YWdyYW1zIHJlY2VpdmVkLiAgVGhpcyBvYmplY3QKKyAgICAgICAgICAgIGNvdW50cyB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzSW5NY2FzdFBrdHMsIGJ1dAorICAgICAgICAgICAgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luTWNhc3RPY3RldHMKKyAqIGlwSWZTdGF0c0luTWNhc3RPY3RldHMgaXMgc3ViaWQgMzYgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVjZWl2ZWQgaW4gSVAgbXVsdGljYXN0CisKKworCisgICAgICAgICAgICBkYXRhZ3JhbXMuICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMgY291bnRlZCBpbgorICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdFBrdHMgTVVTVCBiZSBjb3VudGVkIGhlcmUuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5NY2FzdE9jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luTWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5NY2FzdE9jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cikgPQorICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0cworICogaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzIGlzIHN1YmlkIDM3IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM3CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIElQIG11bHRpY2FzdAorICAgICAgICAgICAgZGF0YWdyYW1zLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIG9jdGV0cyBhcworICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdE9jdGV0cywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93OworICAgICgqaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRNY2FzdFBrdHMKKyAqIGlwSWZTdGF0c091dE1jYXN0UGt0cyBpcyBzdWJpZCAzOCBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4zOAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIG11bHRpY2FzdCBkYXRhZ3JhbXMgdHJhbnNtaXR0ZWQuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0TWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRNY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0UGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXRNY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzCisgKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0cyBpcyBzdWJpZCAzOSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4zOQorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIG11bHRpY2FzdCBkYXRhZ3JhbXMgdHJhbnNtaXR0ZWQuICBUaGlzCisgICAgICAgICAgICBvYmplY3QgY291bnRzIHRoZSBzYW1lIGRhdGFncmFtcyBhcyBpcElmU3RhdHNPdXRNY2FzdFBrdHMsCisgICAgICAgICAgICBidXQgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisKKworCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdFBrdHMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dE1jYXN0T2N0ZXRzCisgKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0cyBpcyBzdWJpZCA0MCBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS40MAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyB0cmFuc21pdHRlZCBpbiBJUCBtdWx0aWNhc3QKKyAgICAgICAgICAgIGRhdGFncmFtcy4gIE9jdGV0cyBmcm9tIGRhdGFncmFtcyBjb3VudGVkIGluCisgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdFBrdHMgTVVTVCBiZSBjb3VudGVkIGhlcmUuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0TWNhc3RPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0TWNhc3RPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cworICogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyBpcyBzdWJpZCA0MSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS40MQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyB0cmFuc21pdHRlZCBpbiBJUCBtdWx0aWNhc3QKKyAgICAgICAgICAgIGRhdGFncmFtcy4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBvY3RldHMgYXMKKyAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luQmNhc3RQa3RzCisgKiBpcElmU3RhdHNJbkJjYXN0UGt0cyBpcyBzdWJpZCA0MiBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS40MgorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIGJyb2FkY2FzdCBkYXRhZ3JhbXMgcmVjZWl2ZWQuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5CY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luQmNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5CY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5CY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luQmNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOQkNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbkJjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENJbkJjYXN0UGt0cworICogaXBJZlN0YXRzSENJbkJjYXN0UGt0cyBpcyBzdWJpZCA0MyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS40MworICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIGJyb2FkY2FzdCBkYXRhZ3JhbXMgcmVjZWl2ZWQuICBUaGlzIG9iamVjdAorICAgICAgICAgICAgY291bnRzIHRoZSBzYW1lIGRhdGFncmFtcyBhcyBpcElmU3RhdHNJbkJjYXN0UGt0cywgYnV0CisgICAgICAgICAgICBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbkJjYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbkJjYXN0UGt0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luQmNhc3RQa3RzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5CY2FzdFBrdHMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENJbkJjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0QmNhc3RQa3RzCisgKiBpcElmU3RhdHNPdXRCY2FzdFBrdHMgaXMgc3ViaWQgNDQgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDQKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHRyYW5zbWl0dGVkLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEJjYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0QmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEJjYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRCY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRCQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0QmNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dEJjYXN0UGt0cworICogaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgaXMgc3ViaWQgNDUgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDUKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHRyYW5zbWl0dGVkLiAgVGhpcworICAgICAgICAgICAgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzT3V0QmNhc3RQa3RzLAorICAgICAgICAgICAgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dEJjYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dEJjYXN0UGt0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRCY2FzdFBrdHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNEaXNjb250aW51aXR5VGltZQorICogaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUgaXMgc3ViaWQgNDYgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHZhbHVlIG9mIHN5c1VwVGltZSBvbiB0aGUgbW9zdCByZWNlbnQgb2NjYXNpb24gYXQgd2hpY2gKKworCisKKyAgICAgICAgICAgIGFueSBvbmUgb3IgbW9yZSBvZiB0aGlzIGVudHJ5J3MgY291bnRlcnMgc3VmZmVyZWQgYQorICAgICAgICAgICAgZGlzY29udGludWl0eS4KKworICAgICAgICAgICAgSWYgbm8gc3VjaCBkaXNjb250aW51aXRpZXMgaGF2ZSBvY2N1cnJlZCBzaW5jZSB0aGUgbGFzdCByZS0KKyAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBsb2NhbCBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgdGhlbiB0aGlzCisgICAgICAgICAgICBvYmplY3QgY29udGFpbnMgYSB6ZXJvIHZhbHVlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgVGltZVN0YW1wIChiYXNlZCBvbiBwZXJsdHlwZSBUSUNLUykKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9USU1FVElDS1MuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZSBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0RJU0NPTlRJTlVJVFlUSU1FXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzUmVmcmVzaFJhdGUKKyAqIGlwSWZTdGF0c1JlZnJlc2hSYXRlIGlzIHN1YmlkIDQ3IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ3CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBtaW5pbXVtIHJlYXNvbmFibGUgcG9sbGluZyBpbnRlcnZhbCBmb3IgdGhpcyBlbnRyeS4KKyAgICAgICAgICAgIFRoaXMgb2JqZWN0IHByb3ZpZGVzIGFuIGluZGljYXRpb24gb2YgdGhlIG1pbmltdW0gYW1vdW50IG9mCisgICAgICAgICAgICB0aW1lIHJlcXVpcmVkIHRvIHVwZGF0ZSB0aGUgY291bnRlcnMgaW4gdGhpcyBlbnRyeS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIFVOU0lHTkVEMzIgKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWZyZXNoUmF0ZSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNSZWZyZXNoUmF0ZV9nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzUmVmcmVzaFJhdGVfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNSZWZyZXNoUmF0ZV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWZyZXNoUmF0ZSBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzUmVmcmVzaFJhdGVfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmlwSWZTdGF0c1JlZnJlc2hSYXRlOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNSZWZyZXNoUmF0ZV9nZXQgKi8KKworCisKKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2M3ZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDEyMDg4ICQgb2YgJAorICoKKyAqICRJZDokCisgKgorICogQGZpbGUgaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAorICoKKyAqIEBhZGR0b2dyb3VwIGdldAorICoKKyAqIFByb3RvdHlwZXMgZm9yIGdldCBmdW5jdGlvbnMKKyAqCisgKiBAeworICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX0RBVEFfR0VUX0gKKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfREFUQV9HRVRfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBHRVQgZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBHRVQgVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXBJZlN0YXRzVGFibGUgaXMgc3ViaWQgMyBvZiBpcFRyYWZmaWNTdGF0cy4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLCBsZW5ndGg6IDkKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGluZGV4ZXMKKyAgICAgKi8KKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbk9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luT2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5IZHJFcnJvcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkhkckVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5Ob1JvdXRlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luQWRkckVycm9yc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJblRydW5jYXRlZFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzUmVhc21SZXFkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtT0tzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzUmVhc21PS3NfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbkRpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5EaXNjYXJkc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0UmVxdWVzdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRSZXF1ZXN0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRSZXF1ZXN0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dERpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdSZXFkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0RnJhZ09Lc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdGYWlsc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0VHJhbnNtaXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbkJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luQmNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0QmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNSZWZyZXNoUmF0ZV9nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIpOworCisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGlwSWZTdGF0c0lQVmVyc2lvbl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcElmU3RhdHNJZkluZGV4X3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcElmU3RhdHNJZkluZGV4X3ZhbCk7CisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0RBVEFfR0VUX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzY1N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBnZW5lcmljLXRhYmxlLWVudW1zLm0yYyAxMjUyNiAyMDA1LTA3LTE1IDIyOjQxOjE2WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBJRlNUQVRTVEFCTEVfRU5VTVNfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9FTlVNU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICogTk9URVMgb24gZW51bXMKKyAgICAgKiA9PT09PT09PT09PT09PQorICAgICAqCisgICAgICogVmFsdWUgTWFwcGluZworICAgICAqIC0tLS0tLS0tLS0tLS0KKyAgICAgKiBJZiB0aGUgdmFsdWVzIGZvciB5b3VyIGRhdGEgdHlwZSBkb24ndCBleGFjdGx5IG1hdGNoIHRoZQorICAgICAqIHBvc3NpYmxlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBtaWIsIHlvdSBzaG91bGQgbWFwIHRoZW0KKyAgICAgKiBiZWxvdy4gRm9yIGV4YW1wbGUsIGEgYm9vbGVhbiBmbGFnICgxLzApIGlzIHVzdWFsbHkgcmVwcmVzZW50ZWQKKyAgICAgKiBhcyBhIFRydXRoVmFsdWUgaW4gYSBNSUIsIHdoaWNoIG1hcHMgdG8gdGhlIHZhbHVlcyAoMS8yKS4KKyAgICAgKgorICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogZW51bSBkZWZpbml0aW9ucyBmb3IgdGFibGUgaXBJZlN0YXRzVGFibGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGlwSWZTdGF0c0lQVmVyc2lvbiAoSW5ldFZlcnNpb24gLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIElORVRWRVJTSU9OX0VOVU1TCisjZGVmaW5lIElORVRWRVJTSU9OX0VOVU1TCisKKyNkZWZpbmUgSU5FVFZFUlNJT05fVU5LTk9XTiAgMAorI2RlZmluZSBJTkVUVkVSU0lPTl9JUFY0ICAxCisjZGVmaW5lIElORVRWRVJTSU9OX0lQVjYgIDIKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTkVUVkVSU0lPTl9FTlVNUyAqLworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUElGU1RBVFNUQUJMRV9FTlVNU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQxNWE4MwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMCwwICsxLDEzOTUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlLmgiCisKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcElmU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXBJZlN0YXRzVGFibGUgaXMgc3ViaWQgMyBvZiBpcFRyYWZmaWNTdGF0cy4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgKi8KK3R5cGVkZWYgc3RydWN0IGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHhfcyB7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworICAgIG5ldHNubXBfY2FjaGUgICpjYWNoZTsKKworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqdXNlcl9jdHg7CisKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIHRibF9pbmZvOworCisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzIGFjY2Vzc19tdWx0aXBsZXhlcjsKKworICAgIHVfbG9uZyBsYXN0X2NoYW5nZWQ7CisKK30gaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eDsKKworc3RhdGljIGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggaXBJZlN0YXRzVGFibGVfaWZfY3R4OworCitzdGF0aWMgdm9pZCAgICAgX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZl9jdHgpOworc3RhdGljIHZvaWQgICAgCitfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOworCisKK25ldHNubXBfY29udGFpbmVyICoKK2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2lwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgoraXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCit7CisgICAgaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICpvbGQgPSBpcElmU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHg7CisgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAoraXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKK3sKKyAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBpcElmU3RhdHNUYWJsZUxhc3RDaGFuZ2VkLCB3aGljaCBpcyB0aGUgbGFzdCB0aW1lIHRoYXQgYSByb3cgaW4KKyAqIHRoZSB0YWJsZSB3YXMgY2hhbmdlZCBvciB0aGUgbGFzdCB0aW1lIGEgcm93IHdhcyBhZGRlZC9kZWxldGVkIGZyb20gdGhlCisgKiB0YWJsZS4KKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfbGFzdENoYW5nZV9zZXQodV9sb25nIHRhYmxlX2NoYW5nZWQpCit7CisgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlOmxhc3RDaGFuZ2VkX3NldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZC4gd2FzICVsZCwgbm93ICVsZFxuIiwKKyAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9pZl9jdHgubGFzdF9jaGFuZ2VkLCB0YWJsZV9jaGFuZ2VkKSk7CisgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4Lmxhc3RfY2hhbmdlZCA9IHRhYmxlX2NoYW5nZWQ7Cit9CisKKy8qCisgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKKyAqLworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcElmU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBJZlN0YXRzVGFibGVfZ2V0X3ZhbHVlczsKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcElmU3RhdHNUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitfaXBJZlN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZmxhZ3MpCit7CisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzICphY2Nlc3NfbXVsdGlwbGV4ZXIgPQorICAgICAgICAmaXBJZlN0YXRzVGFibGVfaWZfY3R4LmFjY2Vzc19tdWx0aXBsZXhlcjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YmxfaW5mbyA9CisgICAgICAgICZpcElmU3RhdHNUYWJsZV9pZl9jdHgudGJsX2luZm87CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIGludCAgICAgICAgICAgICBtZmRfbW9kZXMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9pcElmU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZSIsICJjYWxsZWRcbiIpKTsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNhdmUgaW50ZXJmYWNlIGNvbnRleHQgZm9yIGlwSWZTdGF0c1RhYmxlCisgICAgICovCisgICAgLyoKKyAgICAgKiBTZXR0aW5nIHVwIHRoZSB0YWJsZSdzIGRlZmluaXRpb24KKyAgICAgKi8KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YmxfaW5mbywgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogaXBJZlN0YXRzSVBWZXJzaW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogaXBJZlN0YXRzSWZJbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgLyoKKyAgICAgKiBEZWZpbmUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gYWNjZXNzaWJsZSBjb2x1bW5zLiAgVGhpcworICAgICAqIG9wdGltaXplcyByZXRyaXZhbC4gCisgICAgICovCisgICAgdGJsX2luZm8tPm1pbl9jb2x1bW4gPSBJUElGU1RBVFNUQUJMRV9NSU5fQ09MOworICAgIHRibF9pbmZvLT5tYXhfY29sdW1uID0gSVBJRlNUQVRTVEFCTEVfTUFYX0NPTDsKKworICAgIC8qCisgICAgICogc2F2ZSB1c2VycyBjb250ZXh0CisgICAgICovCisgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gcmVnX3B0cjsKKworICAgIC8qCisgICAgICogY2FsbCBkYXRhIGFjY2VzcyBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgaXBJZlN0YXRzVGFibGVfaW5pdF9kYXRhKHJlZ19wdHIpOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCgmaXBJZlN0YXRzVGFibGVfaWZfY3R4KTsKKyAgICBpZiAoTlVMTCA9PSBpcElmU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBjb250YWluZXIgZm9yIGlwSWZTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogYWNjZXNzX211bHRpcGxleGVyOiBSRVFVSVJFRCB3cmFwcGVyIGZvciBnZXQgcmVxdWVzdCBoYW5kbGluZworICAgICAqLworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCA9IF9tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmdldF92YWx1ZXMgPSBfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisKKyAgICAvKgorICAgICAqIG5vIHdyYXBwZXJzIHlldAorICAgICAqLworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QgPSBfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0OworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ID0gX21mZF9pcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3Q7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBDcmVhdGUgYSByZWdpc3RyYXRpb24sIHNhdmUgb3VyIHJlZyBkYXRhLCByZWdpc3RlciB0YWJsZS4KKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6aW5pdF9pcElmU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIGlwSWZTdGF0c1RhYmxlIGFzIGEgbWlicy1mb3ItZHVtbWllcyB0YWJsZS5cbiIpKTsKKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcl9nZXQoYWNjZXNzX211bHRpcGxleGVyKTsKKyAgICByZWdpbmZvID0KKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUoImlwSWZTdGF0c1RhYmxlIiwgaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmIChOVUxMID09IHJlZ2luZm8pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGlwSWZTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZWdpbmZvLT5teV9yZWdfdm9pZCA9ICZpcElmU3RhdHNUYWJsZV9pZl9jdHg7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogc2V0IHVwIGJhYnkgc3RlcHMgaGFuZGxlciwgY3JlYXRlIGl0IGFuZCBpbmplY3QgaXQKKyAgICAgKi8KKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX09CSkVDVF9MT09LVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfSVJSRVZFUlNJQkxFX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3Rfc3ludGF4X2NoZWNrcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19PQkpFQ1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19zZXR1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY2xlYW51cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NMRUFOVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19zZXRzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUUzsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnJvd19jcmVhdGlvbikKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9ST1dfQ1JFQVRFOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19DT05TSVNURU5DWTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOworCisgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IHJvd19tZXJnZSBoZWxwZXIgd2l0aCBwcmVmaXggcm9vdG9pZF9sZW4gKyAyIChlbnRyeS5jb2wpCisgICAgICovCisgICAgaGFuZGxlciA9IG5ldHNubXBfZ2V0X3Jvd19tZXJnZV9oYW5kbGVyKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMik7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YmxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY2FjaGUgaGVscGVyCisgICAgICovCisgICAgaWYgKE5VTEwgIT0gaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNhY2hlKSB7CisgICAgICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jYWNoZSk7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisgICAgfQorCisgICAgLyoKKyAgICAgKiByZWdpc3RlciB0YWJsZQorICAgICAqLworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnaW5mbywgdGJsX2luZm8pOworICAgIAorICAgIC8qCisgICAgICogcmVnaXN0ZXIgTGFzdENoYW5nZWQKKyAgICAgKi8KKyAgICB7CisgICAgICAgIG9pZCAgICAgbGNfb2lkW10gPSB7IElQSUZTVEFUU1RBQkxFTEFTVENIQU5HRV9PSUQgfTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICgiaXBJZlN0YXRzVGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCisgICAgICAgICAgICAgICAgIGxjX29pZCwgT0lEX0xFTkdUSChsY19vaWQpLAorICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKCh2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICAmaXBJZlN0YXRzVGFibGVfaWZfY3R4LgorICAgICAgICAgICAgICAgICAgICBsYXN0X2NoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZgorICAgICAgICAgICAgICAgICAgICAodV9sb25nKSwKKyAgICAgICAgICAgICAgICAgICAgQVNOX1RJTUVUSUNLUywKKyAgICAgICAgICAgICAgICAgICAgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CisgICAgfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBJZlN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBpcElmU3RhdHNUYWJsZQorICovCit2b2lkCitfaXBJZlN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIpCit7CisgICAgLyoKKyAgICAgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bigmaXBJZlN0YXRzVGFibGVfaWZfY3R4KTsKK30KKwordm9pZAoraXBJZlN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpCit7CisgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4LnRibF9pbmZvLnZhbGlkX2NvbHVtbnMgPSB2YzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGNvbnZlcnQgdGhlIGluZGV4IGNvbXBvbmVudCBzdG9yZWQgaW4gdGhlIGNvbnRleHQgdG8gYW4gb2lkCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcElmU3RhdHNJUFZlcnNpb247CisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJZkluZGV4KDIpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwSWZTdGF0c0lmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbiwgMHgwMCwgc2l6ZW9mKHZhcl9pcElmU3RhdHNJUFZlcnNpb24pKTsKKyAgICB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICBtZW1zZXQoJnZhcl9pcElmU3RhdHNJZkluZGV4LCAweDAwLCBzaXplb2YodmFyX2lwSWZTdGF0c0lmSW5kZXgpKTsKKyAgICB2YXJfaXBJZlN0YXRzSWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLm5leHRfdmFyaWFibGUgPSAmdmFyX2lwSWZTdGF0c0lmSW5kZXg7CisgICAgdmFyX2lwSWZTdGF0c0lmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwSWZTdGF0c0lQVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmlwSWZTdGF0c0lQVmVyc2lvbikpOworCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJZkluZGV4KDIpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfaXBJZlN0YXRzSWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwSWZTdGF0c0lmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcElmU3RhdHNJZkluZGV4KSk7CisKKworICAgIGVyciA9IGJ1aWxkX29pZF9ub2FsbG9jKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwgJm9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbik7CisgICAgaWYgKGVycikKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yICVkIGNvbnZlcnRpbmcgaW5kZXggdG8gb2lkXG4iLCBlcnIpOworCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbik7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9pbmRleF90b19vaWQgKi8KKworLyoqCisgKiBleHRyYWN0IGlwSWZTdGF0c1RhYmxlIGluZGV4ZXMgZnJvbSBhIG5ldHNubXBfaW5kZXgKKyAqCisgKiBAcmV0dmFsIFNOTVBfRVJSX05PRVJST1IgIDogbm8gZXJyb3IKKyAqIEByZXR2YWwgU05NUF9FUlJfR0VORVJSICAgOiBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGlwSWZTdGF0c0lQVmVyc2lvbigxKS9JbmV0VmVyc2lvbi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvYS93L0Uvci9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwSWZTdGF0c0lQVmVyc2lvbjsKKyAgICAvKgorICAgICAqIGlwSWZTdGF0c0lmSW5kZXgoMikvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBJZlN0YXRzSWZJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLCAweDAwLCBzaXplb2YodmFyX2lwSWZTdGF0c0lQVmVyc2lvbikpOworICAgIHZhcl9pcElmU3RhdHNJUFZlcnNpb24udHlwZSA9IEFTTl9JTlRFR0VSOworICAgIG1lbXNldCgmdmFyX2lwSWZTdGF0c0lmSW5kZXgsIDB4MDAsIHNpemVvZih2YXJfaXBJZlN0YXRzSWZJbmRleCkpOworICAgIHZhcl9pcElmU3RhdHNJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcElmU3RhdHNJUFZlcnNpb24ubmV4dF92YXJpYWJsZSA9ICZ2YXJfaXBJZlN0YXRzSWZJbmRleDsKKyAgICB2YXJfaXBJZlN0YXRzSWZJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcGFyc2UgdGhlIG9pZCBpbnRvIHRoZSBpbmRpdmlkdWFsIGluZGV4IGNvbXBvbmVudHMKKyAgICAgKi8KKyAgICBlcnIgPSBwYXJzZV9vaWRfaW5kZXhlcyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhcl9pcElmU3RhdHNJUFZlcnNpb24pOworICAgIGlmIChlcnIgPT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAvKgorICAgICAgICAgKiBjb3B5IG91dCB2YWx1ZXMKKyAgICAgICAgICovCisgICAgICAgIG1pYl9pZHgtPmlwSWZTdGF0c0lQVmVyc2lvbiA9CisgICAgICAgICAgICAqKCh1X2xvbmcgKikgdmFyX2lwSWZTdGF0c0lQVmVyc2lvbi52YWwuc3RyaW5nKTsKKyAgICAgICAgbWliX2lkeC0+aXBJZlN0YXRzSWZJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9pcElmU3RhdHNJZkluZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXBJZlN0YXRzSVBWZXJzaW9uKTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkICovCisKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEBpbnRlcm5hbAorICogYWxsb2NhdGUgcmVzb3VyY2VzIGZvciBhIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqLworaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCitpcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlwSWZTdGF0c1RhYmxlX2RhdGEgKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgIgorICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eC5cbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoTlVMTCAhPSBkYXRhKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogdHJhY2sgaWYgd2UgZ290IGRhdGEgZnJvbSB1c2VyCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyB8PSBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSOworICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YSA9IGRhdGE7CisgICAgICAgIH0gZWxzZSBpZiAoTlVMTCA9PQorICAgICAgICAgICAgICAgICAgIChyb3dyZXFfY3R4LT5kYXRhID0gaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSgpKSkgeworICAgICAgICAgICAgU05NUF9GUkVFKHJvd3JlcV9jdHgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIHVuZG8gY29udGV4dCB3aWxsIGJlIGFsbG9jYXRlZCB3aGVuIG5lZWRlZCAoaW4gKl91bmRvX3NldHVwKQorICAgICAqLworCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzID0gcm93cmVxX2N0eC0+b2lkX3RtcDsKKworICAgIHJvd3JlcV9jdHgtPmlwSWZTdGF0c1RhYmxlX2RhdGFfbGlzdCA9IE5VTEw7CisKKyAgICAvKgorICAgICAqIGlmIHdlIGFsbG9jYXRlZCBkYXRhLCBjYWxsIGluaXQgcm91dGluZQorICAgICAqLworICAgIGlmICghKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKSB7CisgICAgICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0KKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChyb3dyZXFfY3R4LCB1c2VyX2luaXRfY3R4KSkgeworICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgcm93cmVxX2N0eCA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCAqLworCisvKgorICogQGludGVybmFsCisgKiByZWxlYXNlIHJlc291cmNlcyBmb3IgYSBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKi8KK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogZm9yIG5vbi10cmFuc2llbnQgZGF0YSwgZG9uJ3QgZnJlZSBkYXRhIHdlIGdvdCBmcm9tIHRoZSB1c2VyCisgICAgICovCisgICAgaWYgKChyb3dyZXFfY3R4LT5kYXRhKSAmJgorICAgICAgICAhKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKQorICAgICAgICBpcElmU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+ZGF0YSk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19maXJzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChpcElmU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmMsIHBhY2tldF9yYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfbWZkX2lwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogd2FpdCBmb3IgbGFzdCBjYWxsIGJlZm9yZSBjYWxsaW5nIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfbGFzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIHJjID0gaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfcmMpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6X21mZF9pcElmU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICppZl9jdHggPQorICAgICAqICAgICAgICAgICAgIChpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICopcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisgICAgICovCisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9DUkVBVElPTjsKKyAgICB9CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCByYyk7CisgICAgZWxzZQorICAgICAgICBpcElmU3RhdHNUYWJsZV9yb3dfcHJlcChyb3dyZXFfY3R4KTsKKworICAgIHJldHVybiBTTk1QX1ZBTElEQVRFX0VSUihyYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBHRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6X21mZF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luUmVjZWl2ZXMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5SRUNFSVZFUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luUmVjZWl2ZXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luUmVjZWl2ZXMoNCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5SRUNFSVZFUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbk9jdGV0cyg1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTk9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDSW5PY3RldHMoNikvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5PQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5PY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5IZHJFcnJvcnMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5IRFJFUlJPUlM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkhkckVycm9yc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbk5vUm91dGVzKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOTk9ST1VURVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbk5vUm91dGVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5BZGRyRXJyb3JzKDkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOQUREUkVSUk9SUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luQWRkckVycm9yc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTlVOS05PV05QUk9UT1M6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJblVua25vd25Qcm90b3NfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cygxMSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5UUlVOQ0FURURQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMoMTIpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lORk9SV0RBVEFHUkFNUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMoMTMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lORk9SV0RBVEFHUkFNUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzUmVhc21SZXFkcygxNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01SRVFEUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c1JlYXNtUmVxZHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNSZWFzbU9LcygxNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01PS1M6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNSZWFzbU9Lc19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNSZWFzbUZhaWxzKDE2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNSRUFTTUZBSUxTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzUmVhc21GYWlsc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luRGlzY2FyZHMoMTcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lORElTQ0FSRFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkRpc2NhcmRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5EZWxpdmVycygxOCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5ERUxJVkVSUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luRGVsaXZlcnMoMTkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOREVMSVZFUlM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0UmVxdWVzdHMoMjApL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVFJFUVVFU1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0UmVxdWVzdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRSZXF1ZXN0cygyMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUUkVRVUVTVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zKDIzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGT1JXREFUQUdSQU1TOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcygyNCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VURk9SV0RBVEFHUkFNUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXREaXNjYXJkcygyNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VURElTQ0FSRFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXREaXNjYXJkc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRGcmFnUmVxZHMoMjYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdSRVFEUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZyYWdSZXFkc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RnJhZ09LcygyNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR09LUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZyYWdPS3NfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRGcmFnRmFpbHMoMjgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdGQUlMUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZyYWdGYWlsc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMoMjkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdDUkVBVEVTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0VHJhbnNtaXRzKDMwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRUUkFOU01JVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRUcmFuc21pdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzKDMxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRUUkFOU01JVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dE9jdGV0cygzMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dE9jdGV0cygzMykvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbk1jYXN0UGt0cygzNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5NQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbk1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzKDM1KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTk1DQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luTWNhc3RPY3RldHMoMzYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RPQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzKDM3KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTk1DQVNUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dE1jYXN0UGt0cygzOCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUTUNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0cygzOSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUTUNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0cyg0MCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUTUNBU1RPQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzKDQxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRNQ0FTVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luQmNhc3RQa3RzKDQyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkJDQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luQmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMoNDMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOQkNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0QmNhc3RQa3RzKDQ0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRCQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRCY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzKDQ1KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRCQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lKDQ2KS9UaW1lU3RhbXAvQVNOX1RJTUVUSUNLUy91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTRElTQ09OVElOVUlUWVRJTUU6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVElNRVRJQ0tTOworICAgICAgICByYyA9IGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c1JlZnJlc2hSYXRlKDQ3KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTUkVGUkVTSFJBVEU6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoSVBJRlNUQVRTVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBJUElGU1RBVFNUQUJMRV9NQVhfQ09MKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6X21mZF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgIHVfY2hhciAgICAgICAgICpvbGRfc3RyaW5nOworICAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGZvciAoOyByZXF1ZXN0czsgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dCkgeworICAgICAgICAvKgorICAgICAgICAgKiBzYXZlIG9sZCBwb2ludGVyLCBzbyB3ZSBjYW4gZnJlZSBpdCBpZiByZXBsYWNlZAorICAgICAgICAgKi8KKyAgICAgICAgb2xkX3N0cmluZyA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmc7CisgICAgICAgIGRhdGFGcmVlSG9vayA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmRhdGFGcmVlSG9vazsKKyAgICAgICAgaWYgKE5VTEwgPT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZyA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZjsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpOworICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZiA9PQorICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuICE9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikpCisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZ2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAqLworICAgICAgICB0cmkgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJjID0gX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4ocm93cmVxX2N0eCwgcmVxdWVzdHMtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmktPmNvbG51bSk7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgaWYgKE1GRF9TS0lQID09IHJjKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSA9IFNOTVBfTk9TVUNISU5TVEFOQ0U7CisgICAgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIk5VTEwgdmFyYmluZCBkYXRhIHBvaW50ZXIhXG4iKTsKKyAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIGlmIChyYykKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaWYgdGhlIGJ1ZmZlciB3YXNuJ3QgdXNlZCBwcmV2aW91c2x5IGZvciB0aGUgb2xkIGRhdGEgKGkuZS4gaXQKKyAgICAgICAgICogd2FzIGFsbGNvYXRlZCBtZW1vcnkpICBhbmQgdGhlIGdldCByb3V0aW5lIHJlcGxhY2VkIHRoZSBwb2ludGVyLAorICAgICAgICAgKiB3ZSBuZWVkIHRvIGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgICAgICAgICAqLworICAgICAgICBpZiAob2xkX3N0cmluZyAmJiAob2xkX3N0cmluZyAhPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpICYmCisgICAgICAgICAgICAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZyAhPSBvbGRfc3RyaW5nKSkgeworICAgICAgICAgICAgaWYgKGRhdGFGcmVlSG9vaykKKyAgICAgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKG9sZF9zdHJpbmcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyZWUob2xkX3N0cmluZyk7CisgICAgICAgIH0KKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIHJlc3VsdHMgKi8KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXMgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFNFVCBQUk9DRVNTSU5HIE5PVCBBUFBMSUNBQkxFIChwZXIgTUlCIG9yIHVzZXIgc2V0dGluZykKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogREFUQSBBQ0NFU1MKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCAgICAgX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNhY2hlIGZvciBpcElmU3RhdHNUYWJsZV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIGFuIGludmFsaWQgb3IgZXhwaXJlZCBjYWNoZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KCgwID09IGNhY2hlLT52YWxpZCkgfHwgKDEgPT0gY2FjaGUtPmV4cGlyZWQpKTsKKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICByZXR1cm4gaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQoKG5ldHNubXBfY29udGFpbmVyICopIGNhY2hlLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9jYWNoZV9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNhY2hlIGluIGlwSWZTdGF0c1RhYmxlX2NhY2hlX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGFpbmVyID0gKG5ldHNubXBfY29udGFpbmVyICopIGNhY2hlLT5tYWdpYzsKKworICAgIF9jb250YWluZXJfZnJlZShjb250YWluZXIpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9pdGVtX2ZyZWUoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsIHZvaWQgKmNvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9jb250YWluZXJfaXRlbV9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KQorICAgICAgICByZXR1cm47CisKKyAgICBpcElmU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfaXRlbV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb250YWluZXIgaW4gaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGZyZWUgYWxsIGl0ZW1zLiBpbmVmZmljaWVudCwgYnV0IGVhc3kuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb250YWluZXJfaXRlbV9mcmVlLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBpbml0aWFsaXplIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBjYWNoZSBpbml0CisgICAgICovCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX29pZF9zaXplKTsKKworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciBpcElmU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKworICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KCZpZl9jdHgtPmNvbnRhaW5lciwgaWZfY3R4LT5jYWNoZSk7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpCisgICAgICAgIGlmX2N0eC0+Y29udGFpbmVyID0KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlwSWZTdGF0c1RhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKKyAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6X2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpZl9jdHgtPmNvbnRhaW5lcik7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoaWZfY3R4LT5jb250YWluZXIpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KKworCitpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKK2lwSWZTdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgb2lkICAgICAgICAgICAgIG9pZF90bXBbTUFYX09JRF9MRU5dOworICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIC8qCisgICAgICogc2V0IHVwIHN0b3JhZ2UgZm9yIE9JRAorICAgICAqLworICAgIG9pZF9pZHgub2lkcyA9IG9pZF90bXA7CisgICAgb2lkX2lkeC5sZW4gPSBzaXplb2Yob2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKworICAgIC8qCisgICAgICogY29udmVydAorICAgICAqLworICAgIHJjID0gaXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKCZvaWRfaWR4LCBtaWJfaWR4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcm93cmVxX2N0eCA9IENPTlRBSU5FUl9GSU5EKGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIsICZvaWRfaWR4KTsKKworICAgIHJldHVybiByb3dyZXFfY3R4OworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2RlODQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworLyoqIEBpbmdyb3VwIGludGVyZmFjZTogUm91dGluZXMgdG8gaW50ZXJmYWNlIHRvIE5ldC1TTk1QCisgKgorICogXHdhcm5pbmcgVGhpcyBjb2RlIHNob3VsZCBub3QgYmUgbW9kaWZpZWQsIGNhbGxlZCBkaXJlY3RseSwKKyAqICAgICAgICAgIG9yIHVzZWQgdG8gaW50ZXJwcmV0IGZ1bmN0aW9uYWxpdHkuIEl0IGlzIHN1YmplY3QgdG8KKyAqICAgICAgICAgIGNoYW5nZSBhdCBhbnkgdGltZS4KKyAqIAorICogQHsKKyAqLworLyoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRISVMgRklMRSBET0VTIE5PVCBDT05UQUlOIEFOWSBVU0VSIEVESVRBQkxFIENPREUuICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRIRSBHRU5FUkFURUQgQ09ERSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiwgQU5EICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgIElTIFNVQkpFQ1QgVE8gQ0hBTkdFIFdJVEhPVVQgV0FSTklORyBJTiBGVVRVUkUgUkVMRUFTRVMuICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX0lOVEVSRkFDRV9ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0lOVEVSRkFDRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGUuaCIKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICogUFVCTElDIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIAorICAgICAqLworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBfaXBJZlN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4LCB1X2xvbmcgZmxhZ3MpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBfaXBJZlN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgpOworCisgICAgaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICppcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpOworCisgICAgaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICppcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZyk7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2dldCh2b2lkKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCk7CisKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICppcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlwSWZTdGF0c1RhYmxlX2RhdGEgKiwgdm9pZCAqKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmMpOworCisgICAgLyoKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfbGFzdENoYW5nZV9zZXQodV9sb25nIHVwdGltZSk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfSU5URVJGQUNFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX29pZHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY2MDdhOQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBJRlNUQVRTVEFCTEVfT0lEU19ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX09JRFNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgICAgICovCisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsNCwzMSwzCisjZGVmaW5lIElQSUZTVEFUU1RBQkxFTEFTVENIQU5HRV9PSUQgICAgMSwzLDYsMSwyLDEsNCwzMSwyCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lQVkVSU0lPTiAgICAgICAgIDEKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSUZJTkRFWCAgICAgICAgIDIKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5SRUNFSVZFUyAgICAgICAgIDMKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTlJFQ0VJVkVTICAgICAgICAgNAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTk9DVEVUUyAgICAgICAgIDUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTk9DVEVUUyAgICAgICAgIDYKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5IRFJFUlJPUlMgICAgICAgICA3CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOTk9ST1VURVMgICAgICAgICA4CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOQUREUkVSUk9SUyAgICAgICAgIDkKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5VTktOT1dOUFJPVE9TICAgICAgICAgMTAKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5UUlVOQ0FURURQS1RTICAgICAgICAgMTEKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5GT1JXREFUQUdSQU1TICAgICAgICAgMTIKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTkZPUldEQVRBR1JBTVMgICAgICAgICAxMworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNSRUFTTVJFUURTICAgICAgICAgMTQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01PS1MgICAgICAgICAxNQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNSRUFTTUZBSUxTICAgICAgICAgMTYKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5ESVNDQVJEUyAgICAgICAgIDE3CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOREVMSVZFUlMgICAgICAgICAxOAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ0lOREVMSVZFUlMgICAgICAgICAxOQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRSRVFVRVNUUyAgICAgICAgIDIwCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VUUkVRVUVTVFMgICAgICAgICAyMQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRGT1JXREFUQUdSQU1TICAgICAgICAgMjMKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRGT1JXREFUQUdSQU1TICAgICAgICAgMjQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURElTQ0FSRFMgICAgICAgICAyNQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHUkVRRFMgICAgICAgICAyNgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHT0tTICAgICAgICAgMjcKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR0ZBSUxTICAgICAgICAgMjgKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR0NSRUFURVMgICAgICAgICAyOQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRUUkFOU01JVFMgICAgICAgICAzMAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVFRSQU5TTUlUUyAgICAgICAgIDMxCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVE9DVEVUUyAgICAgICAgIDMyCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VUT0NURVRTICAgICAgICAgMzMKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5NQ0FTVFBLVFMgICAgICAgICAzNAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ0lOTUNBU1RQS1RTICAgICAgICAgMzUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5NQ0FTVE9DVEVUUyAgICAgICAgIDM2CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVE9DVEVUUyAgICAgICAgIDM3CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUUEtUUyAgICAgICAgIDM4CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VUTUNBU1RQS1RTICAgICAgICAgMzkKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VUTUNBU1RPQ1RFVFMgICAgICAgICA0MAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUT0NURVRTICAgICAgICAgNDEKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5CQ0FTVFBLVFMgICAgICAgICA0MgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ0lOQkNBU1RQS1RTICAgICAgICAgNDMKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VUQkNBU1RQS1RTICAgICAgICAgNDQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRCQ0FTVFBLVFMgICAgICAgICA0NQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNESVNDT05USU5VSVRZVElNRSAgICAgICAgIDQ2CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU1JFRlJFU0hSQVRFICAgICAgICAgNDcKKworCisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX01JTl9DT0wgICBDT0xVTU5fSVBJRlNUQVRTSU5SRUNFSVZFUworI2RlZmluZSBJUElGU1RBVFNUQUJMRV9NQVhfQ09MICAgQ09MVU1OX0lQSUZTVEFUU1JFRlJFU0hSQVRFCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUElGU1RBVFNUQUJMRV9PSURTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCmluZGV4IGM4NjU2MDcuLjEwNTg3ZTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZFtdID0geyBJUFNZU1RFTVNUQVRTVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfb2lkW10gPSB7IElQU1lTVEVNU1RBVFNUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSChpcFN5c3RlbVN0YXRzVGFibGVfb2lkKTsKIAogaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiBpcFN5c3RlbVN0YXRzVGFibGVfdXNlcl9jb250ZXh0OwpAQCAtMTYzLDYgKzE2Myw4IEBACiAgICAgLyoKICAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcFN5c3RlbVN0YXRzVGFibGUgcm93cmVxIGNsZWFudXAuCiAgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShyb3dyZXFfY3R4LT5kYXRhKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhID0gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCAqLwogCiAvKioKQEAgLTM5MCwxMSArMzkyLDE0IEBACiAgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOwogCiAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKLQorICAgIAogICAgIC8qCiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5SZWNlaXZlc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5SZWNlaXZlc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3c7CiAKQEAgLTQ1Niw2ICs0NjEsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKS5oaWdoID0KQEAgLTUyMCw2ICs1MjgsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5PY3RldHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbk9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luT2N0ZXRzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk9jdGV0cy5sb3c7CiAKQEAgLTU3Nyw2ICs1ODgsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5PY3RldHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfdmFsX3B0cikuaGlnaCA9CkBAIC02NDQsNiArNjU4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JbkhkckVycm9yczsKIApAQCAtNzA1LDggKzcyMiwxMSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5Ob1JvdXRlcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cikgPQotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5Jbk5vUm91dGVzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTm9Sb3V0ZXMubG93OwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzSW5Ob1JvdXRlc19nZXQgKi8KQEAgLTc3Miw2ICs3OTIsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5BZGRyRXJyb3JzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JbkFkZHJFcnJvcnM7CiAKQEAgLTg0Myw2ICs4NjYsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5Vbmtub3duUHJvdG9zIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlVOS05PV05QUk9UT1NdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JblVua25vd25Qcm90b3M7CiAKQEAgLTkwNSw2ICs5MzEsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlRSVU5DQVRFRFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JblRydW5jYXRlZFBrdHM7CiAKQEAgLTk3Niw2ICsxMDA1LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luRm9yd0RhdGFncmFtcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5sb3c7CiAKQEAgLTEwMzYsNiArMTA2OCw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikuaGlnaCA9CkBAIC0xMTA1LDYgKzExNDAsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzUmVhc21SZXFkcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c1JlYXNtUmVxZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuUmVhc21SZXFkczsKIApAQCAtMTE3NSw2ICsxMjEzLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c1JlYXNtT0tzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzUmVhc21PS3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzUmVhc21PS3NfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5SZWFzbU9LczsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKQEAgLTEyNDUsNiArMTI4Niw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNSZWFzbUZhaWxzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzUmVhc21GYWlsc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5SZWFzbUZhaWxzOwogCkBAIC0xMzA5LDYgKzEzNTMsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5EaXNjYXJkcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5EaXNjYXJkczsKIApAQCAtMTM3Niw2ICsxNDIzLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luRGVsaXZlcnMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdzsKIApAQCAtMTQzMyw2ICsxNDgzLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikuaGlnaCA9CkBAIC0xNDk4LDYgKzE1NTEsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3c7CiAKQEAgLTE1NTUsNiArMTYxMSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKS5oaWdoID0KQEAgLTE2MTksOCArMTY3OCwxMSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0Tm9Sb3V0ZXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0Tm9Sb3V0ZXM7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93OwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzT3V0Tm9Sb3V0ZXNfZ2V0ICovCkBAIC0xNjk0LDYgKzE3NTYsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0Rm9yd0RhdGFncmFtcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93OwogCkBAIC0xNzU0LDYgKzE4MTksOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKS5oaWdoID0KQEAgLTE4MjEsOCArMTg4OSwxMSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0RGlzY2FyZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXREaXNjYXJkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0RGlzY2FyZHM7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93OwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzT3V0RGlzY2FyZHNfZ2V0ICovCkBAIC0xODkwLDggKzE5NjEsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZyYWdSZXFkcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dEZyYWdSZXFkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0cikgPQotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5PdXRGcmFnUmVxZHM7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dEZyYWdSZXFkc19nZXQgKi8KQEAgLTE5NTYsOSArMjAzMCwxMSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0RnJhZ09LcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dEZyYWdPS3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLwotICAgIHNubXBfbG9nKExPR19FUlIsCi0gICAgICAgICAgICAgImlwU3lzdGVtU3RhdHNUYWJsZSBub2RlIGlwU3lzdGVtU3RhdHNPdXRGcmFnT0tzIG5vdCBpbXBsZW1lbnRlZDogc2tpcHBpbmdcbiIpOwotICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwU3lzdGVtU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dEZyYWdPS3NfZ2V0ICovCkBAIC0yMDI2LDggKzIxMDIsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlscyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlsc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0cikgPQotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5PdXRGcmFnRmFpbHM7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlsc19nZXQgKi8KQEAgLTIwOTIsOCArMjE3MSwxMSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0RnJhZ0NyZWF0ZXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0RnJhZ0NyZWF0ZXM7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93OwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0ICovCkBAIC0yMTU1LDYgKzIyMzcsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0VHJhbnNtaXRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFRSQU5TTUlUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dFRyYW5zbWl0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdzsKIApAQCAtMjIxMiw2ICsyMjk3LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFRSQU5TTUlUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKS5oaWdoID0KQEAgLTIyNzYsNiArMjM2NCw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRPY3RldHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRPY3RldHMubG93OwogCkBAIC0yMzMzLDYgKzI0MjQsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRPY3RldHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRPY3RldHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMjM5NSw2ICsyNDg5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luTWNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk1jYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93OwogCkBAIC0yNDUxLDYgKzI1NDgsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yNTE0LDYgKzI2MTQsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5NY2FzdE9jdGV0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93OwogCkBAIC0yNTcyLDYgKzI2NzUsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKS5oaWdoID0KQEAgLTI2MzQsNiArMjc0MCw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRNY2FzdFBrdHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93OwogCkBAIC0yNjkwLDYgKzI3OTksOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMjc1NCw2ICsyODY2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dE1jYXN0T2N0ZXRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93OwogCkBAIC0yODE2LDYgKzI5MzEsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yODc4LDYgKzI5OTYsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5CY2FzdFBrdHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luQmNhc3RQa3RzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3c7CiAKQEAgLTI5MzQsNiArMzA1NSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKS5oaWdoID0KQEAgLTI5OTYsNiArMzEyMCw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRCY2FzdFBrdHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRCY2FzdFBrdHMubG93OwogCkBAIC0zMDUyLDYgKzMxNzksOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRCY2FzdFBrdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMzExNiw2ICszMjQ2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWVfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0RJU0NPTlRJTlVJVFlUSU1FXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWVfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5pcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWU7CiAKQEAgLTMxNzIsNiArMzMwNSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZSBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+aXBTeXN0ZW1TdGF0c1JlZnJlc2hSYXRlOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAppbmRleCA5YWEwMTZkLi5jYTFlMWYzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKQEAgLTIzNCw4ICsyMzQsOCBAQAogICAgICAgICAqIGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGlwU3lzdGVtU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGI2MzMyOWIuLmE5MDI3YWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMTksNyArMTksNyBAQAogCiAjaW5jbHVkZSAiaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCiAKLXN0YXRpYyBpbnQgICAgICBpcHNzX2NhY2hlX3JlZnJlc2ggPSAzMDsKK3N0YXRpYyBpbnQgICAgICBpcHNzX2NhY2hlX3JlZnJlc2ggPSBJUFNZU1RFTVNUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVDsKIAogLyoqIEBpbmdyb3VwIGludGVyZmFjZSAKICAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQpAQCAtNTgsNjEgKzU4LDEwIEBACiBpcFN5c3RlbVN0YXRzVGFibGVfaW5pdF9kYXRhKGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcmVnKQogewotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbXlfY29sdW1uc1tdID0gewotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0lOUkVDRUlWRVMsIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTlJFQ0VJVkVTLAotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTk9DVEVUUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOT0NURVRTLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0lOSERSRVJST1JTLAotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTk5PUk9VVEVTLCAqLwotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0lOQUREUkVSUk9SUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTlVOS05PV05QUk9UT1MsCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0lOVFJVTkNBVEVEUEtUUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkZPUldEQVRBR1JBTVMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTkZPUldEQVRBR1JBTVMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTUkVBU01SRVFEUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNSRUFTTU9LUywgQ09MVU1OX0lQU1lTVEVNU1RBVFNSRUFTTUZBSUxTLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0lORElTQ0FSRFMsIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5ERUxJVkVSUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOREVMSVZFUlMsIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUUkVRVUVTVFMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRSRVFVRVNUUywgQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVROT1JPVVRFUywKLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VURk9SV0RBVEFHUkFNUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVEZPUldEQVRBR1JBTVMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VURElTQ0FSRFMsCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVEZSQUdSRVFEUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRGUkFHT0tTLCBDT0xVTU5fSVBTWVNURU1TVEFUU09VVEZSQUdGQUlMUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRGUkFHQ1JFQVRFUywKLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUVFJBTlNNSVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVFRSQU5TTUlUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVE9DVEVUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5NQ0FTVFBLVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5NQ0FTVFBLVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0lOTUNBU1RPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5NQ0FTVE9DVEVUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUTUNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVE1DQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUTUNBU1RPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0hDT1VUTUNBU1RPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0lOQkNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOQkNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRCQ0FTVFBLVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0hDT1VUQkNBU1RQS1RTLCAqLwotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0RJU0NPTlRJTlVJVFlUSU1FLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU1JFRlJFU0hSQVRFCi0gICAgfTsKLSAgICBzdGF0aWMgbmV0c25tcF9jb2x1bW5faW5mbyB2YWxpZF9jb2x1bW5zOwotCi0gICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBTeXN0ZW1TdGF0c1RhYmxlOmlwU3lzdGVtU3RhdHNUYWJsZV9pbml0X2RhdGEiLAorICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBTeXN0ZW1TdGF0c1RhYmxlOmlwU3lzdGVtU3RhdHNUYWJsZV9pbml0X2RhdGEiLAogICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKIAogICAgIC8qCi0gICAgICogd2Ugb25seSB3YW50IHRvIHByb2Nlc3MgY2VydGFpbiBjb2x1bW5zLCBhbmQgaWdub3JlCi0gICAgICogYW55dGhpbmcgZWxzZS4KLSAgICAgKi8KLSAgICB2YWxpZF9jb2x1bW5zLmlzUmFuZ2UgPSAwOwotICAgIHZhbGlkX2NvbHVtbnMuZGV0YWlscy5saXN0ID0gbXlfY29sdW1uczsKLSAgICB2YWxpZF9jb2x1bW5zLmxpc3RfY291bnQgPSBzaXplb2YobXlfY29sdW1ucykgLyBzaXplb2YodW5zaWduZWQgaW50KTsKLSAgICBpcFN5c3RlbVN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQoJnZhbGlkX2NvbHVtbnMpOwotICAgIC8qCiAgICAgICogVE9ETzozMDM6bzogSW5pdGlhbGl6ZSBpcFN5c3RlbVN0YXRzVGFibGUgZGF0YS4KICAgICAgKi8KIApAQCAtMTY3LDcgKzExNiw5IEBACiAgICAgICogRm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBjb250YWluZXIuIElmIHlvdQogICAgICAqIGRvIG5vdCBjcmVhdGUgb25lLCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuCiAgICAgICovCi0gICAgKmNvbnRhaW5lcl9wdHJfcHRyID0gTlVMTDsKKworCisgICAgKmNvbnRhaW5lcl9wdHJfcHRyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiaXBTeXN0ZW1TdGF0c1RhYmxlOnRhYmxlX2NvbnRhaW5lciIpOwogCiAgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKQEAgLTE5Miw2ICsxNDMsNyBAQAogICAgICAgICAoTkVUU05NUF9DQUNIRV9ET05UX0FVVE9fUkVMRUFTRSB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0VYUElSRUQKICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9ET05UX0ZSRUVfQkVGT1JFX0xPQUQgfAogICAgICAgICAgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCk7CisgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKCpjb250YWluZXJfcHRyX3B0cik7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLwogCiAvKioKQEAgLTI2Nyw3ICsyMTksNyBAQAogICAgICAgICAmJiAoTUZEX1NVQ0NFU1MgPT0KICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9pbmRleGVzX3NldChyb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbXN0YXRzX2VudHJ5LT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc19pcF92ZXJzaW9uKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFswXSkpKSB7CiAgICAgICAgIHJvd3JlcV9jdHgtPmlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZSA9IGlwc3NfY2FjaGVfcmVmcmVzaCAqIDEwMDA7ICAgICAgIC8qIG1pbGxpLXNlY29uZHMgKi8KICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOwogICAgIH0gZWxzZSB7CkBAIC0zODYsNyArMzM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19GUkVFX0RPTlRfQ0xFQVIpOwogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTppcFN5c3RlbVN0YXRzVGFibGU6aXBTeXN0ZW1TdGF0c1RhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlIiBORVRTTk1QX1BSSXogInUgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jCmluZGV4IDhhZjk2MTMuLmQ5YWI1MjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYwpAQCAtMTIsMTkgKzEyLDQyIEBACiAjaW5jbHVkZSAiaXBfc2NhbGFycy5oIgogCiBpbnQKK2hhbmRsZV9pcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CisKK2ludAoraGFuZGxlX2lwRGVmYXVsdFRUTChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKKworaW50CiBoYW5kbGVfaXB2NklwRm9yd2FyZGluZyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKIAoraW50IGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWU7CisKK2ludAoraGFuZGxlX2lwQWRkcmVzc1NwaW5Mb2NrKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpOworCiAvKiogSW5pdGlhbGl6ZXMgdGhlIGlwIG1vZHVsZSAqLwogdm9pZAogaW5pdF9pcF9zY2FsYXJzKHZvaWQpCiB7CisgICAgc3RhdGljIG9pZCAJICAgIGlwRm9yd2FyZGluZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMSB9OworICAgIHN0YXRpYyBvaWQgCSAgICBpcERlZmF1bHRUVExfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDIsIDAgfTsKICAgICBzdGF0aWMgb2lkICAgICAgaXBSZWFzbVRpbWVvdXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEzLCAwIH07CiAgICAgc3RhdGljIG9pZCAgICAgIGlwdjZJcEZvcndhcmRpbmdfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDI1IH07CiAgICAgc3RhdGljIG9pZCAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWRbXSA9CiAgICAgICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMjYsIDAgfTsKKyAgICBzdGF0aWMgb2lkICAgICAgaXBBZGRyZXNzU3BpbkxvY2tfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDMzIH07CiAKICAgICBERUJVR01TR1RMKCgiaXBfc2NhbGFyIiwgIkluaXRpYWxpemluZ1xuIikpOwogCkBAIC0zNSwyMCArNTgsMTM5IEBACiAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwRm9yd2FyZGluZyIsIGhhbmRsZV9pcEZvcndhcmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEZvcndhcmRpbmdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcEZvcndhcmRpbmdfb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOworCisgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjZJcEZvcndhcmRpbmciLCBoYW5kbGVfaXB2NklwRm9yd2FyZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NklwRm9yd2FyZGluZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXB2NklwRm9yd2FyZGluZ19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpKTsKIAorICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcEFkZHJlc3NTcGluTG9jayIsIGhhbmRsZV9pcEFkZHJlc3NTcGluTG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzU3BpbkxvY2tfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwQWRkcmVzc1NwaW5Mb2NrX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOworCisgICAgLyogSW5pdGlhbGl6ZSBzcGluIGxvY2sgd2l0aCByYW5kb20gdmFsdWUgKi8KKyAgICBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlID0gKGludCkgcmFuZG9tKCk7CisKICAgICBuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlCiAgICAgICAgICgiaXB2NklwRGVmYXVsdEhvcExpbWl0IiwKICAgICAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQsIE9JRF9MRU5HVEgoaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCksCiAgICAgICAgICAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvZGVmYXVsdC9ob3BfbGltaXQiLCBBU05fSU5URUdFUiwKICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgTlVMTCwgTlVMTCk7CisKKyAgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQorICAgICAgICAoImlwRGVmYXVsdFRUTCIsCisgICAgICAgICBpcERlZmF1bHRUVExfb2lkLCBPSURfTEVOR1RIKGlwRGVmYXVsdFRUTF9vaWQpLAorICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2NC9pcF9kZWZhdWx0X3R0bCIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogfQogCiBpbnQKK2hhbmRsZV9pcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgcmM7CisgICAgdV9sb25nICAgdmFsdWU7CisKKyAgICAvKiBXZSBhcmUgbmV2ZXIgY2FsbGVkIGZvciBhIEdFVE5FWFQgaWYgaXQncyByZWdpc3RlcmVkIGFzIGEKKyAgICAgICAiaW5zdGFuY2UiLCBhcyBpdCdzICJtYWdpY2FsbHkiIGhhbmRsZWQgZm9yIHVzLiAgKi8KKworICAgIC8qIGEgaW5zdGFuY2UgaGFuZGxlciBhbHNvIG9ubHkgaGFuZHMgdXMgb25lIHJlcXVlc3QgYXQgYSB0aW1lLCBzbworICAgICAgIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIGEgbGlzdCBvZiByZXF1ZXN0czsgd2UnbGwgb25seSBnZXQgb25lLiAqLworCisgICAgc3dpdGNoKHJlcWluZm8tPm1vZGUpIHsKKworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KCZ2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA/IDEgOiAyOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNFVCBSRVFVRVNUCisgICAgICAgICAqCisgICAgICAgICAqIG11bHRpcGxlIHN0YXRlcyBpbiB0aGUgdHJhbnNhY3Rpb24uICBTZWU6CisgICAgICAgICAqIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC9taWJfbW9kdWxlL3NldC1hY3Rpb25zLmpwZworICAgICAgICAgKi8KKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KCZ2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX05PQ1JFQVRJT04pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1X2xvbmcgKnZhbHVlX3NhdmU7CisgICAgICAgICAgICAgICAgdmFsdWVfc2F2ZSA9IG5ldHNubXBfbWVtZHVwKCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYgKCBOVUxMID09IHZhbHVlX3NhdmUgKQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcGZ3IiwgdmFsdWVfc2F2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSkpOworCSAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgICAgICAvKiBYWFg6IGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBpbiBSRVNFUlZFMSBhbmQvb3IKKyAgICAgICAgICAgICAgIFJFU0VSVkUyLiAgU29tZXRoaW5nIGZhaWxlZCBzb21ld2hlcmUsIGFuZCB0aGUgc3RhdGVzCisgICAgICAgICAgICAgICBiZWxvdyB3b24ndCBiZSBjYWxsZWQuICovCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgICAgIC8qIFhYWDogcGVyZm9ybSB0aGUgdmFsdWUgY2hhbmdlIGhlcmUgKi8KKyAgICAgICAgICAgIHZhbHVlID0gICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOworICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfc2V0KHZhbHVlKTsKKyAgICAgICAgICAgIGlmICggMCAhPSByYyApIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCByYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgICAgICB2YWx1ZSA9CisgICAgICAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcGZ3IikpOworICAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh2YWx1ZSk7CisgICAgICAgICAgICAgaWYgKCAwICE9IHJjICkgeworICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9VTkRPRkFJTEVEKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgc28gdGhpcyBpcyBhIHJlYWxseSBiYWQgZXJyb3IgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfaXBGb3J3YXJkaW5nXG4iLCByZXFpbmZvLT5tb2RlICk7CisgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisKK2ludAogaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKQEAgLTE1MSwzICsyOTMsNzAgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorCitpbnQKK2hhbmRsZV9pcEFkZHJlc3NTcGluTG9jayhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0cykKK3sKKyAgICB1X2xvbmcgICB2YWx1ZTsKKworICAgIC8qIFdlIGFyZSBuZXZlciBjYWxsZWQgZm9yIGEgR0VUTkVYVCBpZiBpdCdzIHJlZ2lzdGVyZWQgYXMgYQorICAgICAgICJpbnN0YW5jZSIsIGFzIGl0J3MgIm1hZ2ljYWxseSIgaGFuZGxlZCBmb3IgdXMuICAqLworCisgICAgLyogYSBpbnN0YW5jZSBoYW5kbGVyIGFsc28gb25seSBoYW5kcyB1cyBvbmUgcmVxdWVzdCBhdCBhIHRpbWUsIHNvCisgICAgICAgd2UgZG9uJ3QgbmVlZCB0byBsb29wIG92ZXIgYSBsaXN0IG9mIHJlcXVlc3RzOyB3ZSdsbCBvbmx5IGdldCBvbmUuICovCisKKyAgICBzd2l0Y2gocmVxaW5mby0+bW9kZSkgeworCisgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSZpcEFkZHJlc3NTcGluTG9ja1ZhbHVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU0VUIFJFUVVFU1QKKyAgICAgICAgICoKKyAgICAgICAgICogbXVsdGlwbGUgc3RhdGVzIGluIHRoZSB0cmFuc2FjdGlvbi4gIFNlZToKKyAgICAgICAgICogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS90b29sa2l0L21pYl9tb2R1bGUvc2V0LWFjdGlvbnMuanBnCisgICAgICAgICAqLworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICAgICAgLyoganVzdCBjaGVjayB0aGUgdmFsdWUgKi8KKyAgICAgICAgICAgIHZhbHVlID0gICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOworICAgICAgICAgICAgaWYgKHZhbHVlICE9IGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUpCisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgICAgICAvKiBwZXJmb3JtIHRoZSBmaW5hbCBzcGlubG9jayBjaGVjayBhbmQgaW5jcmVhc2UgaXRzIHZhbHVlICovCisgICAgICAgICAgICB2YWx1ZSA9ICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlKys7CisgICAgICAgICAgICAgICAgLyogYW5kIGNoZWNrIGl0IGZvciBvdmVyZmxvdyAqLworICAgICAgICAgICAgICAgIGlmIChpcEFkZHJlc3NTcGluTG9ja1ZhbHVlID4gMjE0NzQ4MzY0NyB8fCBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBzbyB0aGlzIGlzIGEgcmVhbGx5IGJhZCBlcnJvciAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9pcEFkZHJlc3NTcGluTG9ja1xuIiwgcmVxaW5mby0+bW9kZSApOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5jCmluZGV4IGJkMjdiNzguLjM1MWRkZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZFtdID0geyBJUFY0SU5URVJGQUNFVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICBpcHY0SW50ZXJmYWNlVGFibGVfb2lkW10gPSB7IElQVjRJTlRFUkZBQ0VUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcHY0SW50ZXJmYWNlVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSChpcHY0SW50ZXJmYWNlVGFibGVfb2lkKTsKIAogaXB2NEludGVyZmFjZVRhYmxlX3JlZ2lzdHJhdGlvbiBpcHY0SW50ZXJmYWNlVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmgKaW5kZXggYWQ1YTY3OC4uNDFlNzkxZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5oCkBAIC0xMDcsOCArMTA3LDggQEAKICAgICAgICAgKiBpcHY0SW50ZXJmYWNlVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgICAgIChpcHY0SW50ZXJmYWNlVGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpcHY0SW50ZXJmYWNlVGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYwppbmRleCBmOWNhYWVmLi45MmYwYTViIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRbXSA9IHsgSVBWNklOVEVSRkFDRVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXB2NkludGVyZmFjZVRhYmxlX29pZFtdID0geyBJUFY2SU5URVJGQUNFVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXB2NkludGVyZmFjZVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXB2NkludGVyZmFjZVRhYmxlX29pZCk7CiAKIGlwdjZJbnRlcmZhY2VUYWJsZV9yZWdpc3RyYXRpb24gaXB2NkludGVyZmFjZVRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5oCmluZGV4IDgyOTJlYzAuLmEyNjA3MzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuaApAQCAtMTkxLDggKzE5MSw4IEBACiAgICAgICAgICogaXB2NkludGVyZmFjZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoaXB2NkludGVyZmFjZVRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXB2NkludGVyZmFjZVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzliZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKQEAgLTAsMCArMSw1IEBACisvKgorICogbW9kdWxlIHRvIGluY2x1ZGUgdGhlIG1vZHVsZXMKKyAqLworCitjb25maWdfcmVxdWlyZShpcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OTQwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYwpAQCAtMCwwICsxLDEwMDkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJCAKKyAqCisgKiAkSWQ6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYyAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisvKiogXHBhZ2UgTUZEIGhlbHBlciBmb3IgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUKKyAqCisgKiBcc2VjdGlvbiBpbnRybyBJbnRyb2R1Y3Rpb24KKyAqIEludHJvZHVjdG9yeSB0ZXh0LgorICoKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgiCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oPgorCisjaW5jbHVkZSAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgiCisKK2NvbnN0IG9pZCAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRbXSA9CisgICAgeyBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRfc2l6ZSA9CitPSURfTEVOR1RIKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZCk7CisKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV91c2VyX2NvbnRleHQ7CitzdGF0aWMgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICppcHY2U2NvcGVab25lSW5kZXhUYWJsZV91c2VyX2NvbnRleHRfcDsKKwordm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCk7CisKKworLyoqCisgKiBJbml0aWFsaXplcyB0aGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbW9kdWxlCisgKi8KK3ZvaWQKK2luaXRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMDpvOiBQZXJmb3JtIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG9uZS10aW1lIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogaGVyZSB3ZSBpbml0aWFsaXplIGFsbCB0aGUgdGFibGVzIHdlJ3JlIHBsYW5uaW5nIG9uIHN1cHBvcnRpbmcKKyAgICAgKi8KKyAgICBpZiAoc2hvdWxkX2luaXQoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlIikpCisgICAgICAgIGluaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUoKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlICovCisKKy8qKgorICogU2h1dC1kb3duIHRoZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBtb2R1bGUgKGFnZW50IGlzIGV4aXRpbmcpCisgKi8KK3ZvaWQKK3NodXRkb3duX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHNob3VsZF9pbml0KCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIpKQorICAgICAgICBzaHV0ZG93bl90YWJsZV9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSgpOworCit9CisKKy8qKgorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAoraW5pdGlhbGl6ZV90YWJsZV9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSh2b2lkKQoreworICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmluaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAxOm86IFBlcmZvcm0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgb25lLXRpbWUgdGFibGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIFRPRE86MzAyOm86IHwtPkluaXRpYWxpemUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgdXNlciBjb250ZXh0CisgICAgICogaWYgeW91J2QgbGlrZSB0byBwYXNzIGluIGEgcG9pbnRlciB0byBzb21lIGRhdGEgZm9yIHRoaXMKKyAgICAgKiB0YWJsZSwgYWxsb2NhdGUgb3Igc2V0IGl0IHVwIGhlcmUuCisgICAgICovCisgICAgLyoKKyAgICAgKiBhIG5ldHNubXBfZGF0YV9saXN0IGlzIGEgc2ltcGxlIHdheSB0byBzdG9yZSB2b2lkIHBvaW50ZXJzLiBBIHNpbXBsZQorICAgICAqIHN0cmluZyB0b2tlbiBpcyB1c2VkIHRvIGFkZCwgZmluZCBvciByZW1vdmUgcG9pbnRlcnMuCisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3AgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgTlVMTCwgTlVMTCk7CisKKyAgICAvKgorICAgICAqIE5vIHN1cHBvcnQgZm9yIGFueSBmbGFncyB5ZXQsIGJ1dCBpbiB0aGUgZnV0dXJlIHlvdSB3b3VsZAorICAgICAqIHNldCBhbnkgZmxhZ3MgaGVyZS4KKyAgICAgKi8KKyAgICBmbGFncyA9IDA7CisKKyAgICAvKgorICAgICAqIGNhbGwgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKwkoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3AsIGZsYWdzKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbGl6ZV90YWJsZV9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSAqLworCisvKioKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAqLwordm9pZAorc2h1dGRvd25fdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGNhbGwgaW50ZXJmYWNlIHNodXRkb3duIGNvZGUKKyAgICAgKi8KKyAgICBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfc2h1dGRvd25faW50ZXJmYWNlCisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wID0gTlVMTDsKK30KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGluaXRpYWxpemF0aW9uIChlZyBkZWZhdWx0IHZhbHVlcykKKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eCAgICA6IHJvdyByZXF1ZXN0IGNvbnRleHQKKyAqIEBwYXJhbSB1c2VyX2luaXRfY3R4IDogdm9pZCBwb2ludGVyIGZvciB1c2VyIChwYXJhbWV0ZXIgdG8gcm93cmVxX2N0eF9hbGxvY2F0ZSkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICA6IG5vIGVycm9ycworICogQHJldHZhbCBNRkRfRVJST1IgICAgOiBlcnJvciAoY29udGV4dCBhbGxvY2F0ZSB3aWxsIGZhaWwpCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9pbml0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsIHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMTA6bzogfC0+IFBlcmZvcm0gZXh0cmEgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgcm93cmVxIGluaXRpYWxpemF0aW9uLiAoZWcgREVGVkFMUykKKyAgICAgKi8KKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdCAqLworCisvKioKKyAqIGV4dHJhIGNvbnRleHQgY2xlYW51cAorICoKKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwCisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHJvd3JlcSBjbGVhbnVwLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKHJvd3JlcV9jdHgtPmRhdGEpOworICAgIHJvd3JlcV9jdHgtPmRhdGEgPSBOVUxMOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KKworLyoqCisgKiBwcmUtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTA6bzogUGVyZm9ybSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBwcmUtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIHBvc3QtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqIE5vdGU6CisgKiAgIE5ldyByb3dzIGhhdmUgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBjb250YWluZXIsIGFuZAorICogICBkZWxldGVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyIGFuZAorICogICByZWxlYXNlZC4KKyAqCisgKiBAcGFyYW0gdXNlcl9jb250ZXh0CisgKiBAcGFyYW0gcmMgOiBNRkRfU1VDQ0VTUyBpZiBhbGwgcmVxdWVzdHMgc3VjY2VlZGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogb3RoZXIgZXJyb3IgKGlnbm9yZWQpCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jb250ZXh0LCBpbnQgcmMpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMTpvOiBQZXJmb3JtIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHBvc3QtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3QgKi8KKworLyoKKyAqIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX2RhdGEKKyAqCisgKiBQdXJwb3NlOiBjcmVhdGUgbmV3IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEuCisgKi8KK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEgKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfZGF0YSh2b2lkKQoreworICAgIC8qCisgICAgICogVE9ETzoyMDE6cjogfC0+IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEgY29udGV4dC4KKyAgICAgKi8KKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICpydG4gPSBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfY3JlYXRlKCk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcnRuKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmFibGUgdG8gbWFsbG9jIG1lbW9yeSBmb3IgbmV3ICIKKyAgICAgICAgICAgICAgICAgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEuXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gcnRuOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhICovCisKKy8qCisgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX2RhdGEKKyAqCisgKiBQdXJwb3NlOiByZWxlYXNlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEuCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2VfZGF0YShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICogZGF0YSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX2RhdGEiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjAyOnI6IHwtPiByZWxlYXNlIG1lbW9yeSBmb3IgdGhlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEgY29udGV4dC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShkYXRhKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9kYXRhICovCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGdldCByb3V0aW5lcy4KKyAqIFRPRE86MjQwOk06IEltcGxlbWVudCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpcyBzdWJpZCAzNiBvZiBpcC4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYsIGxlbmd0aDogOAorICovCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICogVE9ETzoyMDA6cjogSW1wbGVtZW50IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEgY29udGV4dCBmdW5jdGlvbnMuCisgKi8KKworCisvKioKKyAqIHNldCBtaWIgaW5kZXgoZXMpCisgKgorICogQHBhcmFtIHRibF9pZHggbWliIGluZGV4IHN0cnVjdHVyZQorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIHNldHRpbmcgYWxsIHRoZSBNSUIgaW5kZXgKKyAqICBjb21wb25lbnRzIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4gSXQgaXMgYXNzdW1lIHRoYXQgdGhlIEMgdmFsdWVzCisgKiAgaGF2ZSBhbHJlYWR5IGJlZW4gbWFwcGVkIGZyb20gdGhlaXIgbmF0aXZlL3Jhd2Zvcm1hdCB0byB0aGUgTUlCIGZvcm1hdC4KKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4CisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCAqIHRibF9pZHgsCisgICAgIGxvbmcgaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICovCisgICAgdGJsX2lkeC0+aXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCA9IGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNldCByb3cgY29udGV4dCBpbmRleGVzCisgKgorICogQHBhcmFtIHJlcXJlcV9jdHggdGhlIHJvdyBjb250ZXh0IHRoYXQgbmVlZHMgdXBkYXRlZCBpbmRleGVzCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBtaWIgaW5kZXhzLCB0aGVuIHVwZGF0ZXMgdGhlIG9pZCBpbmRleHMKKyAqICBmcm9tIHRoZSBtaWIgaW5kZXguCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KCZyb3dyZXFfY3R4LT50YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsKSkKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKworICAgIC8qCisgICAgICogY29udmVydCBtaWIgaW5kZXggdG8gb2lkIGluZGV4CisgICAgICovCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5sZW4gPSBzaXplb2Yocm93cmVxX2N0eC0+b2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKyAgICBpZiAoMCAhPSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQoJnJvd3JlcV9jdHgtPm9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3dyZXFfY3R4LT50YmxfaWR4KSkgeworICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgIH0KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXQgKi8KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbCBpcyBzdWJpZCAyIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4yCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciB0aGUgbGluay1sb2NhbCBzY29wZSBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c2NvcGV6b25lX2xpbmtsb2NhbDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXgzCisgKiBpcHY2U2NvcGVab25lSW5kZXgzIGlzIHN1YmlkIDMgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjMKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIDMgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXgzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4M192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4M19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXgzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXgzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXgzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleDNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4M192YWxfcHRyKSA9IDA7CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4M19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbAorICogaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbCBpcyBzdWJpZCA0IG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS40CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciB0aGUgYWRtaW4tbG9jYWwgc2NvcGUgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbAorICogaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsIGlzIHN1YmlkIDUgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjUKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHRoZSBzaXRlLWxvY2FsIHNjb3BlIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWwgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleDYKKyAqIGlwdjZTY29wZVpvbmVJbmRleDYgaXMgc3ViaWQgNiBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuNgorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgNiBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDYgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXg2X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDZfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleDZfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleDZfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4NiBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4Nl9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4NworICogaXB2NlNjb3BlWm9uZUluZGV4NyBpcyBzdWJpZCA3IG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS43CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSA3IG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4NyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleDdfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4N192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4N192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4N19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXg3IGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXg3X3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXg3X2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbAorICogaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwgaXMgc3ViaWQgOCBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuOAorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3IgdGhlIG9yZ2FuaXphdGlvbi1sb2NhbCBzY29wZSBvbiB0aGlzCisgICAgICAgICAgICBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXg5CisgKiBpcHY2U2NvcGVab25lSW5kZXg5IGlzIHN1YmlkIDkgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIDkgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXg5IGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4OV9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXg5X3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXg5X3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXg5X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDkgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleDlfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleEEKKyAqIGlwdjZTY29wZVpvbmVJbmRleEEgaXMgc3ViaWQgMTAgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjEwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSBBIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleEFfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4QV92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4QV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4QV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhBIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhBX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhCCisgKiBpcHY2U2NvcGVab25lSW5kZXhCIGlzIHN1YmlkIDExIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4xMQorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgQiBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEIgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhCX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleEJfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleEJfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleEJfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QiBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4Ql9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4QworICogaXB2NlNjb3BlWm9uZUluZGV4QyBpcyBzdWJpZCAxMiBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuMTIKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIEMgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhDIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4Q19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhDX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhDX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhDX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleENfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleEQKKyAqIGlwdjZTY29wZVpvbmVJbmRleEQgaXMgc3ViaWQgMTMgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjEzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSBEIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4RCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleERfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4RF92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4RF92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4RF9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhEIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhEX2dldCAqLworCisKKy8qKiBAeyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTc0ZmVlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKQEAgLTAsMCArMSwyNjkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIDE0MTcwIDIwMDctMDQtMjkgMDA6MTI6MzJaIHZhcnVuX2MkCisgKi8KKyNpZm5kZWYgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisvKiogQGFkZHRvZ3JvdXAgbWlzYyBtaXNjOiBNaXNjZWxsYW5lb3VzIHJvdXRpbmVzCisgKgorICogQHsKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oPgorICAgIC8qCisgICAgICogb3RoZXIgcmVxdWlyZWQgbW9kdWxlIGNvbXBvbmVudHMgCisgICAgICovCisgICAgLyogKklOREVOVC1PRkYqICAqLworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmUpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzKQorICAgIC8qICpJTkRFTlQtT04qICAqLworCisgICAgLyoKKyAgICAgKiBPSUQgYW5kIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIAorICAgICAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZHMuaCIKKworICAgIC8qCisgICAgICogZW51bSBkZWZpbmlvbnMgCisgICAgICovCisjaW5jbHVkZSAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaCIKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworICAgIHZvaWQgICAgICAgICAgICBpbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSh2b2lkKTsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGlzIHN1YmlkIDM2IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAgICAgKi8KKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBXaGVuIHlvdSByZWdpc3RlciB5b3VyIG1pYiwgeW91IGdldCB0byBwcm92aWRlIGEgZ2VuZXJpYworICAgICAqIHBvaW50ZXIgdGhhdCB3aWxsIGJlIHBhc3NlZCBiYWNrIHRvIHlvdSBmb3IgbW9zdCBvZiB0aGUKKyAgICAgKiBmdW5jdGlvbnMgY2FsbHMuCisgICAgICoKKyAgICAgKiBUT0RPOjEwMDpyOiBSZXZpZXcgYWxsIGNvbnRleHQgc3RydWN0dXJlcworICAgICAqLworICAgIC8qCisgICAgICogVE9ETzoxMDE6bzogfC0+IFJldmlldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSByZWdpc3RyYXRpb24gY29udGV4dC4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGF0YV9saXN0IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbjsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogVE9ETzoxMTA6cjogfC0+IFJldmlldyBpcHY2U2NvcGVab25lVGFibGUgZGF0YSBjb250ZXh0IHN0cnVjdHVyZS4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBmb3IgaXB2NlNjb3BlWm9uZVRhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhOworCisKKyAgICAvKgorICAgICAqIFRPRE86MTIwOnI6IHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbWliIGluZGV4LgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBpbmRleCBmb3IgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4X3MgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAgICAgKi8KKyAgICAgICAgbG9uZyAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXg7CisKKworICAgIH0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICovCisjZGVmaW5lIE1BWF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9JRFhfTEVOICAgICAxCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjEzMDpvOiB8LT4gUmV2aWV3IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIFJvdyByZXF1ZXN0IChyb3dyZXEpIGNvbnRleHQuCisgICAgICogV2hlbiB5b3VyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCB5b3Ugd2lsbCBiZSBwYXNzZWQgYQorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggcG9pbnRlci4KKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X3MgeworCisgICAgLyoqIHRoaXMgbXVzdCBiZSBmaXJzdCBmb3IgY29udGFpbmVyIGNvbXBhcmUgdG8gd29yayAqLworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKyAgICAgICAgb2lkICAgICAgICAgICAgIG9pZF90bXBbTUFYX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX0lEWF9MRU5dOworCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCB0YmxfaWR4OworCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEgKmRhdGE7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZmxhZ3MgcGVyIHJvdy4gQ3VycmVudGx5LCB0aGUgZmlyc3QgKGxvd2VyKSA4IGJpdHMgYXJlIHJlc2VydmVkCisgICAgICAgICAqIGZvciB0aGUgdXNlci4gU2VlIG1mZC5oIGZvciBvdGhlciBmbGFncy4KKyAgICAgICAgICovCisgICAgICAgIHVfaW50ICAgICAgICAgICByb3dyZXFfZmxhZ3M7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzoxMzE6bzogfCAgIHwtPiBBZGQgdXNlZnVsIGRhdGEgdG8gaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2xpc3Q7CisKKyAgICB9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHg7CisKKyAgICB0eXBlZGVmIHN0cnVjdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWZfcm93cmVxX2N0eF9zIHsKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICB9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZl9yb3dyZXFfY3R4OworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gcHJvdG90eXBlcworICAgICAqLworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0KTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2NvbnRleHQsIGludCByYyk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9pbml0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEgKgorICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7CisKKyAgICB2b2lkCisgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9kYXRhKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEgKiBkYXRhKTsKKworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkX3NpemU7CisKKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgiCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUgaXMgc3ViaWQgMzYgb2YgaXAuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYsIGxlbmd0aDogOAorICAgICAqLworICAgIC8qCisgICAgICogaW5kZXhlcworICAgICAqLworCisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4M19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDNfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleDZfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXg3X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4N192YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfZ2V0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXg5X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4QV9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleEJfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhDX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4RF9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cik7CisKKworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiB0YmxfaWR4LAorICAgICAgICAgbG9uZyBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbCk7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgIGxvbmcgaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleF92YWwpOworCisgICAgLyoKKyAgICAgKiBEVU1NWSBtYXJrZXJzLCBpZ25vcmUKKyAgICAgKgorICAgICAqIFRPRE86MDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjE5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoyOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mzk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjQ5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDI1ZGQzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJCAKKyAqCisgKiAkSWQ6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuYyAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCIKKworCisjaW5jbHVkZSAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaCIKKworLyoqIEBpbmdyb3VwIGludGVyZmFjZQorICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCisgKgorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gbG9jYXRlIHRoZSBkYXRhIHVzZWQgdG8gc2F0aXNmeQorICogcmVxdWVzdHMuCisgKiAKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUgaXMgc3ViaWQgMzYgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAqLworCisvKioKKyAqIGluaXRpYWxpemF0aW9uIGZvciBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGFjY2VzcworICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBzdGFydHVwIHRvIGFsbG93IHlvdSB0bworICogYWxsb2NhdGUgYW55IHJlc291cmNlcyB5b3UgbmVlZCBmb3IgdGhlIGRhdGEgdGFibGUuCisgKgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZworICogICAgICAgIFBvaW50ZXIgdG8gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogdW5yZWNvdmVyYWJsZSBlcnJvci4KKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0X2RhdGEoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWcpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdF9kYXRhIiwgImNhbGxlZFxuIikpOworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdF9kYXRhICovCisKKy8qKgorICogY29udGFpbmVyIG92ZXJ2aWV3CisgKgorICovCisKKy8qKgorICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKKyAqICAgICAgICBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyLCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGl0CisgKiAgICAgICAgdG8gdGhlIE1GRCBoZWxwZXIuIElmIHNldCB0byBOVUxMLCB0aGUgTUZEIGhlbHBlciB3aWxsCisgKiAgICAgICAgYWxsb2NhdGUgYSBjb250YWluZXIgZm9yIHlvdS4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuIElmIG5vIGN1c3RvbQorICogIGNvbnRhaW5lciBpcyBhbGxvY2F0ZWQsIHRoZSBNRkQgY29kZSB3aWxsIGNyZWF0ZSBvbmUgZm9yIHlvdXIuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGluaXRpYWxpemF0aW9uIG5lZWRlZAorICogIGZvciB5b3UgZGF0YSBzb3VyY2UuIEZvciBleGFtcGxlLCBvcGVuaW5nIGEgY29ubmVjdGlvbiB0byBhbm90aGVyCisgKiAgcHJvY2VzcyB0aGF0IHdpbGwgc3VwcGx5IHRoZSBkYXRhLCBvcGVuaW5nIGEgZGF0YWJhc2UsIGV0Yy4KKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBGb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gdXNlIGEgY3VzdG9tIGNvbnRhaW5lci4gSWYgeW91CisgICAgICogZG8gbm90IGNyZWF0ZSBvbmUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPSBOVUxMOworICAgIGlmIChOVUxMID09IGNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY2FjaGUgcGFyYW0gdG8gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUT0RPOjM0NTpBOiBTZXQgdXAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY2FjaGUgcHJvcGVydGllcy4KKyAgICAgKgorICAgICAqIEFsc28gZm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHNldCBwYXJhbWV0ZXJzIGZvciB0aGUKKyAgICAgKiBjYWNoZS4gRG8gbm90IGNoYW5nZSB0aGUgbWFnaWMgcG9pbnRlciwgYXMgaXQgaXMgdXNlZAorICAgICAqIGJ5IHRoZSBNRkQgaGVscGVyLiBUbyBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgc2V0CisgICAgICogY2FjaGUtPmVuYWJsZWQgdG8gMC4KKyAgICAgKi8KKyAgICBjYWNoZS0+dGltZW91dCA9IDYwOyAvKiBzZWNvbmRzICovCisKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIGNvbnRhaW5lciBzaHV0ZG93bgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyIEEgcG9pbnRlciB0byB0aGUgY29udGFpbmVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzaHV0ZG93biB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZnJlZSgpLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBjbGVhbnVwIG5lZWRlZAorICogIGZvciB5b3UgZGF0YSBzb3VyY2UuIEZvciBleGFtcGxlLCBjbG9zaW5nIGEgY29ubmVjdGlvbiB0byBhbm90aGVyCisgKiAgcHJvY2VzcyB0aGF0IHN1cHBsaWVkIHRoZSBkYXRhLCBjbG9zaW5nIGEgZGF0YWJhc2UsIGV0Yy4KKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXJfcHRyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBwYXJhbXMgdG8gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KKworLyoqCisgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCisgKgorICovCitzdGF0aWMgdm9pZAorX3NuYXJmX3pvbmVpbmRleF9lbnRyeShuZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5ICpzY29wZXpvbmVfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKworICAgIERFQlVHVFJBQ0U7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBzY29wZXpvbmVfZW50cnkpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKyAgICByb3dyZXFfY3R4ID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChzY29wZXpvbmVfZW50cnksTlVMTCk7CisgICAgaWYgKChOVUxMICE9IHJvd3JlcV9jdHgpICYmCisgICAgICAgICAoTUZEX1NVQ0NFU1MgPT0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXQKKyAgICAgICAgIChyb3dyZXFfY3R4LCByb3dyZXFfY3R4LT5kYXRhLT5pbmRleCkpKSB7CisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICB9IGVsc2UgeworICAgICAgIGlmIChyb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igc2V0dGluZyBpbmRleCB3aGlsZSBsb2FkaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBjYWNoZS5cbiIpOworICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKHNjb3Blem9uZV9lbnRyeSk7CisgICAgfQorICAgICAgCit9CisKKy8qKgorICogbG9hZCBpbml0aWFsIGRhdGEKKyAqCisgKiBUT0RPOjM1MDpNOiBJbXBsZW1lbnQgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgZGF0YSBsb2FkCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgdG8gd2hpY2ggaXRlbXMgc2hvdWxkIGJlIGluc2VydGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEUgOiBDYW4ndCBhY2Nlc3MgZGF0YSBzb3VyY2UKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvYWQgdGhlIGluZGV4KGVzKSAoYW5kIGRhdGEsIG9wdGlvbmFsbHkpCisgKiAgZm9yIHRoZSBldmVyeSByb3cgaW4gdGhlIGRhdGEgc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBXaGlsZSBsb2FkaW5nIHRoZSBkYXRhLCB0aGUgb25seSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhlIGluZGV4ZXMuCisgKiAgSWYgYWNjZXNzIHRvIHlvdXIgZGF0YSBpcyBjaGVhcC9mYXN0IChlLmcuIHlvdSBoYXZlIGEgcG9pbnRlciB0byBhCisgKiAgc3RydWN0dXJlIGluIG1lbW9yeSksIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gdXBkYXRlIHRoZSBkYXRhIGhlcmUuCisgKiAgSWYsIGhvd2V2ZXIsIHRoZSBhY2Nlc3NpbmcgdGhlIGRhdGEgaW52b3ZsZXMgbW9yZSB3b3JrIChlLmcuIHBhcnNpbmcKKyAqICBzb21lIG90aGVyIGV4aXN0aW5nIGRhdGEsIG9yIHBlZm9ybWluZyBjYWxjdWxhdGlvbnMgdG8gZGVyaXZlIHRoZSBkYXRhKSwKKyAqICB0aGVuIHlvdSBjYW4gbGltaXQgeW91cnNlbGYgdG8gc2V0dGluZyB0aGUgaW5kZXhlcyBhbmQgc2F2aW5nIGFueQorICogIGluZm9ybWF0aW9uIHlvdSB3aWxsIG5lZWQgbGF0ZXIuIFRoZW4gdXNlIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBpbgorICogIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwKCkgZm9yIHBvcHVsYXRpbmcgZGF0YS4KKyAqCisgKiBAbm90ZQorICogIElmIHlvdSBuZWVkIGNvbnNpc3RlbmN5IGJldHdlZW4gcm93cyAobGlrZSB5b3Ugd2FudCBzdGF0aXN0aWNzCisgKiAgZm9yIGVhY2ggcm93IHRvIGJlIGZyb20gdGhlIHNhbWUgdGltZSBmcmFtZSksIHlvdSBzaG91bGQgc2V0IGFsbAorICogIGRhdGEgaGVyZS4KKyAqCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisKKyAgICAvKgorICAgICAqIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBpbmRleCB2YWx1ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfY29udGFpbmVyICp6b25laW5kZXggPSBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2xvYWQoTlVMTCwgMCk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHpvbmVpbmRleCkgeworICAgICAgICBERUJVR01TR1RMKCgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGU6Y29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgZ2V0IHNjb3Blem9uZSBpdGVyYXRvclxuIikpOworICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOworICAgIH0KKyAgICAvKgorICAgICAqIFRPRE86MzUxOk06IHwtPiBMb2FkL3VwZGF0ZSBkYXRhIGluIHRoZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBjb250YWluZXIuCisgICAgICogbG9vcCBvdmVyIHlvdXIgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgZGF0YSwgYWxsb2NhdGUgYSByb3dyZXEgY29udGV4dCwKKyAgICAgKiBzZXQgdGhlIGluZGV4KGVzKSBbYW5kIGRhdGEsIG9wdGlvbmFsbHldIGFuZCBpbnNlcnQgaW50bworICAgICAqIHRoZSBjb250YWluZXIuCisgICAgICovCisKKyAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKHpvbmVpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9zbmFyZl96b25laW5kZXhfZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIC8qCisgICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGVudHJ5LCBvciByZWxlYXNlZCBpdCwKKyAgICAgKiBzbyB0aGUgYWNjZXNzIGZ1bmN0aW9uIGRvZXNuJ3QgbmVlZCB0byBjbGVhciB0aGUgY29udGFpbmVyLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfZnJlZSh6b25laW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMSk7CisKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9sb2FkIiwgImluc2VydGVkICVsdSByZWNvcmRzXG4iLCAodW5zaWduZWQgbG9uZylDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9sb2FkICovCisKKy8qKgorICogY29udGFpbmVyIGNsZWFuIHVwCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgd2l0aCBhbGwgY3VycmVudCBpdGVtcworICoKKyAqICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIGNhbGxlZCBwcmlvciB0byBhbGwKKyAqICBpdGVtJ3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIuIElmIHlvdQorICogIG5lZWQgdG8gZG8gYW55IHByb2Nlc3NpbmcgYmVmb3JlIHRoYXQsIGRvIGl0IGhlcmUuCisgKgorICogQG5vdGUKKyAqICBUaGUgTUZEIGhlbHBlciB3aWxsIHRha2UgY2FyZSBvZiByZWxlYXNpbmcgYWxsIHRoZSByb3cgY29udGV4dHMuCisgKgorICovCit2b2lkCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozODA6TTogRnJlZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBjb250YWluZXIgZGF0YS4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X3ByZXAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwIiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzozOTA6bzogUHJlcGFyZSByb3cgZm9yIHJlcXVlc3QuCisgICAgICogSWYgcG9wdWxhdGluZyByb3cgZGF0YSB3YXMgZGVsYXllZCwgdGhpcyBpcyB0aGUgcGxhY2UgdG8KKyAgICAgKiBmaWxsIGluIHRoZSByb3cgZm9yIHRoaXMgcmVxdWVzdC4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X3ByZXAgKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Zjk4ZTkxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmggMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworI2lmbmRlZiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9EQVRBX0FDQ0VTU19ICisjZGVmaW5lIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0RBVEFfQUNDRVNTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGlzIHN1YmlkIDM2IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YQorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZyk7CisKKworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lciAqKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHIpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisjZGVmaW5lIE1BWF9MSU5FX1NJWkUgMjU2CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc5ZWM4OAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMgMTI1MjYgMjAwNS0wNy0xNSAyMjo0MToxNlogcnN0b3J5ICQKKyAqCisgKiAkSWQ6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaCAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisjaWZuZGVmIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VOVU1TX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfRU5VTVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNzY5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwxMTI0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQgCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jIDE0MTcwIDIwMDctMDQtMjkgMDA6MTI6MzJaIHZhcnVuX2MkCisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpcyBzdWJpZCAzNiBvZiBpcC4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYsIGxlbmd0aDogOAorICovCit0eXBlZGVmIHN0cnVjdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICp1c2VyX2N0eDsKKworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gdGJsX2luZm87CisKKyAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX21ldGhvZHMgYWNjZXNzX211bHRpcGxleGVyOworCit9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZV9jdHg7CisKK3N0YXRpYyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4OworCitzdGF0aWMgdm9pZCAgICAKK19pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdAorKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOworc3RhdGljIHZvaWQgICAgCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duCisoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCk7CitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYyk7CitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CisKKworbmV0c25tcF9jb250YWluZXIgKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2dldCh2b2lkKQoreworICAgIHJldHVybiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY29udGFpbmVyOworfQorCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQoreworICAgIHJldHVybiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHg7Cit9CisKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0CisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKK3sKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKm9sZCA9CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC51c2VyX2N0eDsKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CisgICAgcmV0dXJuIG9sZDsKK30KKworaW50CitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQoreworICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKK30KKworLyoKKyAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcworICovCitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29iamVjdF9sb29rdXA7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfdmFsdWVzOworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK19pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyLCB1X2xvbmcgZmxhZ3MpCit7CisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzICphY2Nlc3NfbXVsdGlwbGV4ZXIgPQorICAgICAgICAmaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmFjY2Vzc19tdWx0aXBsZXhlcjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YmxfaW5mbyA9CisgICAgICAgICZpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudGJsX2luZm87CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIGludCAgICAgICAgICAgICBtZmRfbW9kZXMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZSIsICJjYWxsZWRcbiIpKTsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNhdmUgaW50ZXJmYWNlIGNvbnRleHQgZm9yIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgICAgICovCisgICAgLyoKKyAgICAgKiBTZXR0aW5nIHVwIHRoZSB0YWJsZSdzIGRlZmluaXRpb24KKyAgICAgKi8KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YmxfaW5mbywgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgLyoKKyAgICAgKiBEZWZpbmUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gYWNjZXNzaWJsZSBjb2x1bW5zLiAgVGhpcworICAgICAqIG9wdGltaXplcyByZXRyaXZhbC4gCisgICAgICovCisgICAgdGJsX2luZm8tPm1pbl9jb2x1bW4gPSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NSU5fQ09MOworICAgIHRibF9pbmZvLT5tYXhfY29sdW1uID0gSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfTUFYX0NPTDsKKworICAgIC8qCisgICAgICogc2F2ZSB1c2VycyBjb250ZXh0CisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gcmVnX3B0cjsKKworICAgIC8qCisgICAgICogY2FsbCBkYXRhIGFjY2VzcyBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdF9kYXRhKHJlZ19wdHIpOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdAorICAgICAgICAoJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eCk7CisgICAgaWYgKE5VTEwgPT0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiY291bGQgbm90IGluaXRpYWxpemUgY29udGFpbmVyIGZvciBpcHY2U2NvcGVab25lSW5kZXhUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFjY2Vzc19tdWx0aXBsZXhlcjogUkVRVUlSRUQgd3JhcHBlciBmb3IgZ2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXAgPQorICAgICAgICBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29iamVjdF9sb29rdXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5nZXRfdmFsdWVzID0KKyAgICAgICAgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfdmFsdWVzOworCisgICAgLyoKKyAgICAgKiBubyB3cmFwcGVycyB5ZXQKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0ID0KKyAgICAgICAgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9CisgICAgICAgIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0OworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogQ3JlYXRlIGEgcmVnaXN0cmF0aW9uLCBzYXZlIG91ciByZWcgZGF0YSwgcmVnaXN0ZXIgdGFibGUuCisgICAgICovCisgICAgREVCVUdNU0dUTCgoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmluaXRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLAorICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBhcyBhIG1pYnMtZm9yLWR1bW1pZXMgdGFibGUuXG4iKSk7CisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXJfZ2V0KGFjY2Vzc19tdWx0aXBsZXhlcik7CisgICAgcmVnaW5mbyA9CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVnaW5mby0+bXlfcmVnX3ZvaWQgPSAmaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNldCB1cCBiYWJ5IHN0ZXBzIGhhbmRsZXIsIGNyZWF0ZSBpdCBhbmQgaW5qZWN0IGl0CisgICAgICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0lSUkVWRVJTSUJMRV9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DTEVBTlVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFM7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5yb3dfY3JlYXRpb24pCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUk9XX0NSRUFURTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfQ09OU0lTVEVOQ1k7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisgICAKKyAgICBpZiAoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY2FjaGUpIHsKKyAgICAgICAgaGFuZGxlciA9CisgICAgICAgICAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jYWNoZSk7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisgICAgfQorCisgICAgLyoKKyAgICAgKiByZWdpc3RlciB0YWJsZQorICAgICAqLworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnaW5mbywgdGJsX2luZm8pOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogU2h1dGRvd24gdGhlIHRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKi8KK3ZvaWQKK19pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0cikKK3sKKyAgICAvKgorICAgICAqIHNodXRkb3duIHRoZSBjb250YWluZXIKKyAgICAgKi8KKyAgICBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duCisgICAgICAgICgmaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4KTsKK30KKwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnRibF9pbmZvLnZhbGlkX2NvbHVtbnMgPSB2YzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdmFsaWRfY29sdW1uc19zZXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGNvbnZlcnQgdGhlIGluZGV4IGNvbXBvbmVudCBzdG9yZWQgaW4gdGhlIGNvbnRleHQgdG8gYW4gb2lkCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCwgMHgwMCwKKyAgICAgICAgICAgc2l6ZW9mKHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KSk7CisgICAgdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X3RvX29pZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KTsKKyAgICBpZiAoZXJyKQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgJWQgY29udmVydGluZyBpbmRleCB0byBvaWRcbiIsIGVycik7CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQgKi8KKworLyoqCisgKiBleHRyYWN0IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGluZGV4ZXMgZnJvbSBhIG5ldHNubXBfaW5kZXgKKyAqCisgKiBAcmV0dmFsIFNOTVBfRVJSX05PRVJST1IgIDogbm8gZXJyb3IKKyAqIEByZXR2YWwgU05NUF9FUlJfR0VORVJSICAgOiBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X2Zyb21fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCkpOworICAgIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcGFyc2UgdGhlIG9pZCBpbnRvIHRoZSBpbmRpdmlkdWFsIGluZGV4IGNvbXBvbmVudHMKKyAgICAgKi8KKyAgICBlcnIgPSBwYXJzZV9vaWRfaW5kZXhlcyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4ID0KKyAgICAgICAgICAgICooKGxvbmcgKikgdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgudmFsLnN0cmluZyk7CisKKworICAgIH0KKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X2Zyb21fb2lkICovCisKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEBpbnRlcm5hbAorICogYWxsb2NhdGUgcmVzb3VyY2VzIGZvciBhIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAqLworaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGEgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgpOworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhICIKKyAgICAgICAgICAgICAgICAgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHguXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gZGF0YSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHRyYWNrIGlmIHdlIGdvdCBkYXRhIGZyb20gdXNlcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19EQVRBX0ZST01fVVNFUjsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEgPSBkYXRhOworICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0KKyAgICAgICAgICAgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YSA9CisgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX2RhdGEoKSkpIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisKKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgPSByb3dyZXFfY3R4LT5vaWRfdG1wOworCisgICAgcm93cmVxX2N0eC0+aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9saXN0ID0gTlVMTDsKKworICAgIC8qCisgICAgICogaWYgd2UgYWxsb2NhdGVkIGRhdGEsIGNhbGwgaW5pdCByb3V0aW5lCisgICAgICovCisgICAgaWYgKCEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpIHsKKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPQorICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9pbml0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgKKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAocm93cmVxX2N0eCk7CisgICAgLyoKKyAgICAgKiBmb3Igbm9uLXRyYW5zaWVudCBkYXRhLCBkb24ndCBmcmVlIGRhdGEgd2UgZ290IGZyb20gdGhlIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoKHJvd3JlcV9jdHgtPmRhdGEpICYmCisgICAgICAgICEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2VfZGF0YShyb3dyZXFfY3R4LT5kYXRhKTsKKworCisgICAgLyoKKyAgICAgKiBmcmVlIGluZGV4IG9pZCBwb2ludGVyCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyAhPSByb3dyZXFfY3R4LT5vaWRfdG1wKQorICAgICAgICBmcmVlKHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyk7CisKKyAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2ZpcnN0KHJlZ2luZm8sIGFndHJlcV9pbmZvKSkgeworICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAic2tpcHBpbmcgYWRkaXRpb25hbCBwcmVfcmVxdWVzdFxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisKKyAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIGludCAgICAgICAgICAgICByYywgcGFja2V0X3JjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogd2FpdCBmb3IgbGFzdCBjYWxsIGJlZm9yZSBjYWxsaW5nIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfbGFzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHgsIHBhY2tldF9yYyk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfZnJvbV9pbmRleChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJjX3B0cikKK3sKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCBtaWJfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9mcm9tX2luZGV4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcmNfcHRyKQorICAgICAgICByY19wdHIgPSAmcmM7CisgICAgKnJjX3B0ciA9IE1GRF9TVUNDRVNTOworCisgICAgbWVtc2V0KCZtaWJfaWR4LCAweDAsIHNpemVvZihtaWJfaWR4KSk7CisKKyAgICAvKgorICAgICAqIHRyeSB0byBwYXJzZSBvaWQKKyAgICAgKi8KKyAgICAqcmNfcHRyID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfZnJvbV9vaWQob2lkX2lkeCwgJm1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSAqcmNfcHRyKSB7CisgICAgICAgIERFQlVHTVNHVCgoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgImVycm9yIHBhcnNpbmcgaW5kZXhcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhbGxvY2F0ZSBuZXcgY29udGV4dAorICAgICAqLworICAgIHJvd3JlcV9jdHggPSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KE5VTEwsIE5VTEwpOworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgKnJjX3B0ciA9IE1GRF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgLyogbXNnIGFscmVhZHkgbG9nZ2VkICovCisgICAgfQorCisgICAgbWVtY3B5KCZyb3dyZXFfY3R4LT50YmxfaWR4LCAmbWliX2lkeCwgc2l6ZW9mKG1pYl9pZHgpKTsKKworCisgICAgLyoKKyAgICAgKiBjb3B5IGluZGV4ZXMKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4LmxlbiA9IG9pZF9pZHgtPmxlbjsKKyAgICBtZW1jcHkocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzLCBvaWRfaWR4LT5vaWRzLAorICAgICAgICAgICBvaWRfaWR4LT5sZW4gKiBzaXplb2Yob2lkKSk7CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfZnJvbV9pbmRleCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29iamVjdF9sb29rdXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29iamVjdF9sb29rdXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGdldCBvdXIgY29udGV4dCBmcm9tIG1mZAorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZV9jdHggKmlmX2N0eCA9CisgICAgICogICAgICAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZV9jdHggKilyZWdpbmZvLT5teV9yZWdfdm9pZDsKKyAgICAgKi8KKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRibHJlcV9pbmZvOworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKworICAgICAgICB0YmxyZXFfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdGJscmVxX2luZm8pIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJyZXF1ZXN0IGhhZCBubyB0YWJsZSBpbmZvXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiB0cnkgY3JlYXRlIHJvd3JlcQorICAgICAgICAgKi8KKyAgICAgICAgb2lkX2lkeC5vaWRzID0gdGJscmVxX2luZm8tPmluZGV4X29pZDsKKyAgICAgICAgb2lkX2lkeC5sZW4gPSB0YmxyZXFfaW5mby0+aW5kZXhfb2lkX2xlbjsKKworICAgICAgICByb3dyZXFfY3R4ID0KKyAgICAgICAgICAgIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2Zyb21faW5kZXgoJm9pZF9pZHgsICZyYyk7CisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyB8PSBNRkRfUk9XX0NSRUFURUQ7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogYWRkIHJvd3JlcV9jdHggdG8gcmVxdWVzdCBkYXRhIGxpc3RzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19pbnNlcnQocmVxdWVzdHMsIChuZXRzbm1wX2luZGV4ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgICAgICB9CisKKyAgICB9CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCByYyk7CisgICAgZWxzZQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcChyb3dyZXFfY3R4KTsKKworICAgIHJldHVybiBTTk1QX1ZBTElEQVRFX0VSUihyYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2JqZWN0X2xvb2t1cCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBHRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X2NvbHVtbihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4iLCAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbCgyKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYTElOS0xPQ0FMOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4MygzKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYMzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXgzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbCg0KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQURNSU5MT0NBTDoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsKDUpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhTSVRFTE9DQUw6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXg2KDYpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg2OgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleDZfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXg3KDcpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg3OgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleDdfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbCg4KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYT1JHQU5JWkFUSU9OTE9DQUw6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleDkoOSkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWDk6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4OV9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleEEoMTApL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhBOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleEFfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhCKDExKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQjoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhCX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4QygxMikvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4Q19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleEQoMTMpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhEOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleERfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NSU5fQ09MIDw9IGNvbHVtbgorICAgICAgICAgICAgJiYgY29sdW1uIDw9IElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX01BWF9DT0wpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4iLCAiYXNzdW1lIGNvbHVtbiAlZCBpcyByZXNlcnZlZFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByYyA9IE1GRF9TS0lQOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X2NvbHVtblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X2NvbHVtbiAqLworCitpbnQKK19tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgIHVfY2hhciAgICAgICAgICpvbGRfc3RyaW5nOworICAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlcyIsICJjYWxsZWRcbiIpKTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X2NvbHVtbihyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfdmFsdWVzICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTRVQgUFJPQ0VTU0lORyBOT1QgQVBQTElDQUJMRSAocGVyIE1JQiBvciB1c2VyIHNldHRpbmcpCisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERBVEEgQUNDRVNTCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfaXRlbV9mcmVlKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X2NvbnRhaW5lcl9pdGVtX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybjsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9pdGVtX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X2NvbnRhaW5lcl9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGluIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZnJlZShjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBmcmVlIGFsbCBpdGVtcy4gaW5lZmZpY2llbnQsIGJ1dCBlYXN5LgorICAgICAqLworICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29udGFpbmVyX2l0ZW1fZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogaW5pdGlhbGl6ZSB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGNvbnRhaW5lciBpbml0CisgICAgICovCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZF9zaXplKTsKKworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciBpcFNjb3BlWm9uZUluZGV4VGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CisKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdCgmaWZfY3R4LT5jb250YWluZXIsIGlmX2N0eC0+Y2FjaGUpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKQorICAgICAgICBpZl9jdHgtPmNvbnRhaW5lciA9CisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kCisgICAgICAgICAgICAoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCisgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7CisKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNodXRkb3duIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bgorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmX2N0eC0+Y29udGFpbmVyKTsKKworICAgIF9jb250YWluZXJfZnJlZShpZl9jdHgtPmNvbnRhaW5lcik7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfT0lEX0xFTl07CisgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgc3RvcmFnZSBmb3IgT0lECisgICAgICovCisgICAgb2lkX2lkeC5vaWRzID0gb2lkX3RtcDsKKyAgICBvaWRfaWR4LmxlbiA9IHNpemVvZihvaWRfdG1wKSAvIHNpemVvZihvaWQpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0CisgICAgICovCisgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQoJm9pZF9pZHgsIG1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByb3dyZXFfY3R4ID0KKyAgICAgICAgQ09OVEFJTkVSX0ZJTkQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CisKK3N0YXRpYyBpbnQKK19jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcFNjb3BlWm9uZUluZGV4VGFibGU6X2NhY2hlX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY2FjaGUgZm9yIGlwU2NvcGVab25lSW5kZXhUYWJsZV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBTY29wZVpvbmVJbmRleFRhYmxlOl9jYWNoZV9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGluIGlwU2NvcGVab25lSW5kZXhUYWJsZV9jYWNoZV9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRhaW5lciA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWM7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYzMxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oIDE0MTcwIDIwMDctMDQtMjkgMDA6MTI6MzJaIHZhcnVuX2MkCisgKi8KKy8qKiBAaW5ncm91cCBpbnRlcmZhY2U6IFJvdXRpbmVzIHRvIGludGVyZmFjZSB0byBOZXQtU05NUAorICoKKyAqIFx3YXJuaW5nIFRoaXMgY29kZSBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCBjYWxsZWQgZGlyZWN0bHksCisgKiAgICAgICAgICBvciB1c2VkIHRvIGludGVycHJldCBmdW5jdGlvbmFsaXR5LiBJdCBpcyBzdWJqZWN0IHRvCisgKiAgICAgICAgICBjaGFuZ2UgYXQgYW55IHRpbWUuCisgKiAKKyAqIEB7CisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2lmbmRlZiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9JTlRFUkZBQ0VfSAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9JTlRFUkZBQ0VfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgiCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqIFBVQkxJQyBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZSAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2N0eCwgdV9sb25nIGZsYWdzKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3NodXRkb3duX2ludGVyZmFjZQorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jdHgpOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0CisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpOworCisgICAgbmV0c25tcF9jb250YWluZXIgKmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCk7CisgICAgaW50ICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICosIHZvaWQgKik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisgICAgaW50ICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X2Zyb21fb2lkKG5ldHNubXBfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBtaWJfaWR4KTsKKworICAgIC8qCisgICAgICogYWNjZXNzIHRvIGNlcnRhaW4gaW50ZXJuYWxzLiB1c2Ugd2l0aCBjYXV0aW9uIQorICAgICAqLworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV92YWxpZF9jb2x1bW5zX3NldChuZXRzbm1wX2NvbHVtbl9pbmZvICp2Yyk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSU5URVJGQUNFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0ZGFhMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBnZW5lcmljLXRhYmxlLW9pZHMubTJjIDEyODU1IDIwMDUtMDktMjcgMTU6NTY6MDhaIHJzdG9yeSAkCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZHMuaCAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisjaWZuZGVmIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX09JRFNfSAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9PSURTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIAorICAgICAqLworI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9PSUQgICAgICAgICAgICAgIDEsMyw2LDEsMiwxLDQsMzYKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYSUZJTkRFWCAgICAgICAgIDEKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYTElOS0xPQ0FMICAgICAgICAgMgorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVgzICAgICAgICAgMworCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhBRE1JTkxPQ0FMICAgICAgICAgNAorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhTSVRFTE9DQUwgICAgICAgICA1CisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWDYgICAgICAgICA2CisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWDcgICAgICAgICA3CisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWE9SR0FOSVpBVElPTkxPQ0FMICAgICAgICAgOAorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg5ICAgICAgICAgOQorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhBICAgICAgICAgMTAKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQiAgICAgICAgIDExCisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEMgICAgICAgICAxMgorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhEICAgICAgICAgMTMKKworCisjZGVmaW5lIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX01JTl9DT0wgICBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYTElOS0xPQ0FMCisjZGVmaW5lIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX01BWF9DT0wgICBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYRAorCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMgYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMKaW5kZXggNmEzYjgxMi4uM2I5MTVjNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPGtzdGF0Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgPHN5cy9zb2NraW8uaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CkBAIC0xMDMsMTIgKzEwNCwyNyBAQAogICAgIHtNSUJfVFJBTlNNSVNTSU9OLCAwLCAodm9pZCAqKSAtMSwgMCwgMCwgMCwgMH0sCiAgICAge01JQl9TTk1QLCAwLCAodm9pZCAqKSAtMSwgMCwgMCwgMCwgMH0sCiAjaWZkZWYgU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQKKyNpZmRlZiBTT0xBUklTX0hBVkVfUkZDNDI5M19TVVBQT1JUCisgICAge01JQl9JUF9UUkFGRklDX1NUQVRTLCAyMCAqIHNpemVvZihtaWIyX2lwSWZTdGF0c0VudHJ5X3QpLCAodm9pZCAqKS0xLCAwLAorICAgICAzMCwgMCwgMH0sCisgICAge01JQl9JUDYsIDIwICogc2l6ZW9mKG1pYjJfaXBJZlN0YXRzRW50cnlfdCksICh2b2lkICopLTEsIDAsIDMwLCAwLCAwfSwKKyNlbHNlCisgICAge01JQl9JUDYsIDIwICogc2l6ZW9mKG1pYjJfaXB2NklmU3RhdHNFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgMzAsIDAsIDB9LAorI2VuZGlmCiAgICAge01JQl9JUDZfQUREUiwgMjAgKiBzaXplb2YobWliMl9pcHY2QWRkckVudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCAzMCwgMCwgMH0sCiAgICAge01JQl9UQ1A2X0NPTk4sIDEwMDAgKiBzaXplb2YobWliMl90Y3A2Q29ubkVudHJ5X3QpLCAodm9pZCAqKSAtMSwgMCwgMzAsCiAgICAgIDAsIDB9LAogICAgIHtNSUJfVURQNl9FTkRQT0lOVCwgMTAwMCAqIHNpemVvZihtaWIyX3VkcDZFbnRyeV90KSwgKHZvaWQgKikgLTEsIDAsIDMwLAogICAgICAwLCAwfSwKICNlbmRpZgorI2lmZGVmIE1JQjJfU0NUUAorICAgIHtNSUJfU0NUUCwgc2l6ZW9mKG1pYjJfc2N0cF90KSwgKHZvaWQgKiktMSwgMCwgNjAsIDAsIDB9LAorICAgIHtNSUJfU0NUUF9DT05OLCBzaXplb2YobWliMl9zY3RwQ29ubkVudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCA2MCwgMCwgMH0sCisgICAge01JQl9TQ1RQX0NPTk5fTE9DQUwsIHNpemVvZihtaWIyX3NjdHBDb25uTG9jYWxFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwKKyAgICAgNjAsIDAsIDB9LAorICAgIHtNSUJfU0NUUF9DT05OX1JFTU9URSwgc2l6ZW9mKG1pYjJfc2N0cENvbm5SZW1vdGVFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwKKyAgICAgNjAsIDAsIDB9LAorI2VuZGlmCiAgICAgezB9LAogfTsKIApAQCAtMTMxLDEwICsxNDcsMjAgQEAKICAgICB7TUlCMl9UUkFOU01JU1NJT04sIDAsfSwKICAgICB7TUlCMl9TTk1QLCAwLH0sCiAjaWZkZWYgU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQKKyNpZmRlZiBTT0xBUklTX0hBVkVfUkZDNDI5M19TVVBQT1JUCisgICAge01JQjJfSVAsIE1JQjJfSVBfVFJBRkZJQ19TVEFUU30sCisjZW5kaWYKKyAgICB7TUlCMl9JUDYsIDB9LAogICAgIHtNSUIyX0lQNiwgTUlCMl9JUDZfQUREUn0sCiAgICAge01JQjJfVENQNiwgTUlCMl9UQ1A2X0NPTk59LAogICAgIHtNSUIyX1VEUDYsIE1JQjJfVURQNl9FTlRSWX0sCiAjZW5kaWYKKyNpZmRlZiBNSUIyX1NDVFAKKyAgICB7TUlCMl9TQ1RQLCAwfSwKKyAgICB7TUlCMl9TQ1RQLCBNSUIyX1NDVFBfQ09OTn0sCisgICAge01JQjJfU0NUUCwgTUlCMl9TQ1RQX0NPTk5fTE9DQUx9LAorICAgIHtNSUIyX1NDVFAsIE1JQjJfU0NUUF9DT05OX1JFTU9URX0sCisjZW5kaWYKICAgICB7MH0sCiB9OwogCkBAIC0xNDksNyArMTc1LDcgQEAKICAgICAgICAgIHZvaWQgKnJlc3AsIGludCAoKmNvbXApKHZvaWQgKiwgdm9pZCAqKSwgdm9pZCAqYXJnKTsKIAogc3RhdGljIGludAotZ2V0bWliKGludCBncm91cG5hbWUsIGludCBzdWJncm91cG5hbWUsIHZvaWQgKnN0YXRidWYsIHNpemVfdCBzaXplLAorZ2V0bWliKGludCBncm91cG5hbWUsIGludCBzdWJncm91cG5hbWUsIHZvaWQgKipzdGF0YnVmLCBzaXplX3QgKnNpemUsCiAgICAgICAgc2l6ZV90IGVudHJ5c2l6ZSwgcmVxX2UgcmVxX3R5cGUsIHZvaWQgKnJlc3AsIHNpemVfdCAqbGVuZ3RoLAogICAgICAgIGludCAoKmNvbXApKHZvaWQgKiwgdm9pZCAqKSwgdm9pZCAqYXJnKTsKIApAQCAtMzQ4LDcgKzM3NCw4IEBACiAgICAga3N0YXRfY3RsX3QgICAgKmtzYzsKICAgICBrc3RhdF90ICAgICAgICAqa3MsICprc3RhdF9kYXRhOwogICAgIGtzdGF0X25hbWVkX3QgICpkOwotICAgIHNpemVfdCAgICAgICAgICBpLCBpbnN0YW5jZTsKKyAgICB1aW50X3QgICAgICAgICAgaTsKKyAgICBpbnQgICAgICAgICAgICAgaW5zdGFuY2U7CiAgICAgY2hhciAgICAgICAgICAgIG1vZHVsZV9uYW1lWzY0XTsKICAgICBpbnQgICAgICAgICAgICAgcmV0OwogICAgIHVfbG9uZ2xvbmdfdCAgICB2YWw7ICAgIC8qIFRoZSBsYXJnZXN0IHZhbHVlICovCkBAIC02OTgsOCArNzI1LDggQEAKIAkJICAgICAgIGNhY2hlcC0+Y2FjaGVfc2l6ZSwgcmVxX3R5cGUsCiAJCSAgICAgICAobWliMl9pZkVudHJ5X3QgKikgJiBlcCwgJmxlbmd0aCwgY29tcCwgYXJnKTsKIAl9IGVsc2UgewotCSAgICByYyA9IGdldG1pYihtaWJnciwgbWlidGIsIGNhY2hlcC0+Y2FjaGVfYWRkciwKLQkJCWNhY2hlcC0+Y2FjaGVfc2l6ZSwgZW50cnlzaXplLCByZXFfdHlwZSwgJmVwLAorCSAgICByYyA9IGdldG1pYihtaWJnciwgbWlidGIsICYoY2FjaGVwLT5jYWNoZV9hZGRyKSwKKwkJCSYoY2FjaGVwLT5jYWNoZV9zaXplKSwgZW50cnlzaXplLCByZXFfdHlwZSwgJmVwLAogCQkJJmxlbmd0aCwgY29tcCwgYXJnKTsKIAl9CiAKQEAgLTg0MSw3ICs4NjgsNyBAQAogICovCiAKIHN0YXRpYyBpbnQKLWdldG1pYihpbnQgZ3JvdXBuYW1lLCBpbnQgc3ViZ3JvdXBuYW1lLCB2b2lkICpzdGF0YnVmLCBzaXplX3Qgc2l6ZSwKK2dldG1pYihpbnQgZ3JvdXBuYW1lLCBpbnQgc3ViZ3JvdXBuYW1lLCB2b2lkICoqc3RhdGJ1Ziwgc2l6ZV90ICpzaXplLAogICAgICAgIHNpemVfdCBlbnRyeXNpemUsIHJlcV9lIHJlcV90eXBlLCB2b2lkICpyZXNwLAogICAgICAgIHNpemVfdCAqbGVuZ3RoLCBpbnQgKCpjb21wKSh2b2lkICosIHZvaWQgKiksIHZvaWQgKmFyZykKIHsKQEAgLTg1Myw2ICs4ODAsNyBAQAogICAgIHN0cnVjdCBUX2Vycm9yX2FjayAqdGVhID0gKHN0cnVjdCBUX2Vycm9yX2FjayAqKSBidWY7CiAgICAgc3RydWN0IG9wdGhkciAgKnJlcTsKICAgICBmb3VuZF9lICAgICAgICAgcmVzdWx0ID0gRk9VTkQ7CisgICAgc2l6ZV90IG9sZHNpemU7CiAKICAgICBERUJVR01TR1RMKCgia2VybmVsX3N1bm9zNSIsICIuLi4uLi4gZ2V0bWliICglZCwgJWQsIC4uLilcbiIsCiAJCWdyb3VwbmFtZSwgc3ViZ3JvdXBuYW1lKSk7CkBAIC05NjYsMjMgKzk5NCw0MiBAQAogCSAqIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgZ2V0bXNnIGNhbGxzCiAJICovCiAKLQlzdHJidWYuYnVmID0gc3RhdGJ1ZjsKLQlzdHJidWYubWF4bGVuID0gc2l6ZTsKKwlzdHJidWYuYnVmID0gKnN0YXRidWY7CisJc3RyYnVmLm1heGxlbiA9ICpzaXplOwogCXN0cmJ1Zi5sZW4gPSAwOwogCWZsYWdzID0gMDsKIAlkbyB7CiAJICAgIHJjID0gZ2V0bXNnKHNkLCBOVUxMLCAmc3RyYnVmLCAmZmxhZ3MpOwogCSAgICBzd2l0Y2ggKHJjKSB7CiAJICAgIGNhc2UgLTE6Ci0JCXJjID0gLUVOT1NSOworCQlyZXQgPSAtRU5PU1I7CisJCXNubXBfcGVycm9yKCJnZXRtc2ciKTsKIAkJZ290byBSZXR1cm47CiAKIAkgICAgZGVmYXVsdDoKLQkJcmMgPSAtRU5PREFUQTsKKwkJc25tcF9sb2coTE9HX0VSUiwgImtlcm5lbF9zdW5vczUvZ2V0bWliOiBnZXRtc2cgcmV0dXJuZWQgJWRcbiIsIHJjKTsKKwkJcmV0ID0gLUVOT0RBVEE7CiAJCWdvdG8gUmV0dXJuOwogCiAJICAgIGNhc2UgTU9SRURBVEE6CisJCURFQlVHTVNHVEwoKCJrZXJuZWxfc3Vub3M1IiwgIi4uLi4uLiBnZXRtaWIgaW5jcmVhc2VkIGJ1ZmZlciBzaXplXG4iKSk7CisJCW9sZHNpemUgPSAoIHN0cmJ1Zi5idWYgLSAoY2hhciAqKSpzdGF0YnVmKSArIHN0cmJ1Zi5sZW47CisJCXN0cmJ1Zi5idWYgPSAoY2hhciAqKXJlYWxsb2MoKnN0YXRidWYsIG9sZHNpemUrNDA5Nik7CisJCWlmKHN0cmJ1Zi5idWYgIT0gTlVMTCkgeworCQkgICAgKnN0YXRidWYgPSBzdHJidWYuYnVmOworCQkgICAgKnNpemUgPSBvbGRzaXplICsgNDA5NjsKKwkJICAgIHN0cmJ1Zi5idWYgPSAoY2hhciAqKSpzdGF0YnVmICsgb2xkc2l6ZTsKKwkJICAgIHN0cmJ1Zi5tYXhsZW4gPSA0MDk2OworCQkgICAgcmVzdWx0ID0gTk9UX0ZPVU5EOworCQkgICAgYnJlYWs7CisJCX0KKwkJc3RyYnVmLmJ1ZiA9IChjaGFyICopKnN0YXRidWYgKyAob2xkc2l6ZSAtIHN0cmJ1Zi5sZW4pOwogCSAgICBjYXNlIDA6CisJCS8qIGZpeCBidWZmZXIgdG8gcmVhbCBzaXplICYgcG9zaXRpb24gKi8KKwkJc3RyYnVmLmxlbiArPSBzdHJidWYuYnVmIC0gKGNoYXIqKSpzdGF0YnVmOworCQlzdHJidWYuYnVmID0gKnN0YXRidWY7CisJCXN0cmJ1Zi5tYXhsZW4gPSAqc2l6ZTsKKwogCQlpZiAocmVxX3R5cGUgPT0gR0VUX05FWFQgJiYgcmVzdWx0ID09IE5FRURfTkVYVCkKIAkJICAgIC8qCiAJCSAgICAgKiBFbmQgb2YgYnVmZmVyLCBzbyAibmV4dCIgaXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG5leHQKQEAgLTk5Niw2ICsxMDQzLDggQEAKIAkgICAgfQogCX0gd2hpbGUgKHJjID09IE1PUkVEQVRBICYmIHJlc3VsdCAhPSBGT1VORCk7CiAKKwlERUJVR01TR1RMKCgia2VybmVsX3N1bm9zNSIsICIuLi4uLi4gZ2V0bWliIGJ1ZmZlciBzaXplIGlzICVkXG4iLCAqc2l6ZSkpOworCiAJaWYgKHJlc3VsdCA9PSBGT1VORCkgeyAgICAgIC8qIFNlYXJjaCBpcyBzdWNjZXNzZnVsICovCiAJICAgIGlmIChyYyAhPSBNT1JFREFUQSkgewogCQlyZXQgPSAwOyAgICAvKiBGb3VuZCBhbmQgbm8gbW9yZSBkYXRhICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmggYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgKaW5kZXggY2RkMjM3NS4uMGJmZmNiOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaApAQCAtNzEsMTAgKzcxLDIwIEBACiAgICAgTUlCX1RSQU5TTUlTU0lPTiA9IDE0LAogICAgIE1JQl9TTk1QID0gMTUsCiAjaWZkZWYgU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQKLSAgICBNSUJfSVA2X0FERFIgPSAxNiwKKyNpZmRlZiBTT0xBUklTX0hBVkVfUkZDNDI5M19TVVBQT1JUCisgICAgTUlCX0lQX1RSQUZGSUNfU1RBVFMsCisjZW5kaWYKKyAgICBNSUJfSVA2LAorICAgIE1JQl9JUDZfQUREUiwKICAgICBNSUJfVENQNl9DT05OLAogICAgIE1JQl9VRFA2X0VORFBPSU5ULAogI2VuZGlmCisjaWZkZWYgTUlCMl9TQ1RQCisgICAgTUlCX1NDVFAsCisgICAgTUlCX1NDVFBfQ09OTiwKKyAgICBNSUJfU0NUUF9DT05OX0xPQ0FMLAorICAgIE1JQl9TQ1RQX0NPTk5fUkVNT1RFLAorI2VuZGlmCiAgICAgTUlCQ0FDSEVfU0laRQkKIH0gbWliZ3JvdXBfZTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkuaCBiL2FnZW50L21pYmdyb3VwL21pYklJLmgKaW5kZXggYzU0ZDIzMy4uMWIyMTA1NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS5oCkBAIC03LDcgKzcsNyBAQAogY29uZmlnX3JlcXVpcmUobWliSUkvYXQpCiBjb25maWdfcmVxdWlyZShtaWJJSS9pZlRhYmxlKQogY29uZmlnX3JlcXVpcmUobWliSUkvaXApCi1jb25maWdfcmVxdWlyZShtaWJJSS9zbm1wX21pYikKK2NvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKG1pYklJL3NubXBfbWliLCA1LjUsIG1pYklJL3NubXBfbWliXzVfNSkpCiBjb25maWdfcmVxdWlyZShtaWJJSS90Y3ApCiBjb25maWdfcmVxdWlyZShtaWJJSS9pY21wKQogY29uZmlnX3JlcXVpcmUobWliSUkvdWRwKQpAQCAtMzAsMyArMzAsMTAgQEAKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZShpcC1taWIgaXAtZm9yd2FyZC1taWIgdGNwLW1pYiB1ZHAtbWliKQogI2VuZGlmCisKKy8qCisgKiBGb3IgU29sYXJpcywgZW5hYmxlIGFkZGl0aW9uYWwgdGFibGVzIHdoZW4gaXQgaGFzIGV4dGVuZGVkIE1JQiBzdXBwb3J0LgorICovCisjaWYgZGVmaW5lZCggc29sYXJpczIgKSAmJiBkZWZpbmVkKCBIQVZFX01JQjJfSVBJRlNUQVRTRU5UUllfVCApCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlIGlwLW1pYi9pcEFkZHJlc3NUYWJsZSkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMKaW5kZXggNDVhYjUxNi4uZWJlNGEwMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9hdC5jCkBAIC0yNSw3ICsyNSw3IEBACiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCisjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKICNkZWZpbmUgX0tFUk5FTCAxCiAjZGVmaW5lIF9JX0RFRklORURfS0VSTkVMCiAjZW5kaWYKQEAgLTE0Niw5ICsxNDYsMTIgQEAKICAqIGluZm9ybWF0aW9uIGF0IAogICovCiBzdHJ1Y3QgdmFyaWFibGUxIGF0X3ZhcmlhYmxlc1tdID0gewotICAgIHtBVElGSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2F0RW50cnksIDEsIHsxfX0sCi0gICAge0FUUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKLSAgICB7QVRORVRBRERSRVNTLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2F0RW50cnksIDEsIHszfX0KKyAgICB7QVRJRklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7MX19LAorICAgIHtBVFBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHsyfX0sCisgICAge0FUTkVUQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7M319CiB9OwogCiAvKgpAQCAtMzA0LDcgKzMwNyw3IEBACiAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbG93ZXN0LCBvaWRfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSBvaWRfbGVuZ3RoOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIElQTUVESUFJRklOREVYOiAgICAgICAvKiBhbHNvIEFUSUZJTkRFWCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZiBsb25nX3JldHVybjsKQEAgLTUxMCw3ICs1MTMsNyBAQAogc3RhdGljIGNoYXIgICAgKmxpbSwgKnJ0bmV4dDsKIHN0YXRpYyBjaGFyICAgICphdCA9IDA7CiAjZWxzZQotI2lmZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVAorI2lmZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQKIHN0YXRpYyBzdHJ1Y3QgYXJwaGQgKmF0ID0gMDsKIHN0YXRpYyBzdHJ1Y3QgYXJwdGFiICphdF9wdHIsIGF0X2VudHJ5Owogc3RhdGljIHN0cnVjdCBhcnBjb20gYXRfY29tOwpAQCAtNTgzLDcgKzU4Niw3IEBACiAjaWZkZWYgQVJQVEFCX1NJWkVfU1lNQk9MCiAgICAgICAgIGF1dG9fbmxpc3QoQVJQVEFCX1NJWkVfU1lNQk9MLCAoY2hhciAqKSAmYXJwdGFiX3NpemUsCiAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIGFycHRhYl9zaXplKTsKLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAgICAgICAgIGF0ID0gKHN0cnVjdCBhcnBoZCAqKSBtYWxsb2MoYXJwdGFiX3NpemUgKiBzaXplb2Yoc3RydWN0IGFycGhkKSk7CiAjZWxzZQogICAgICAgICBhdCA9IChzdHJ1Y3QgYXJwdGFiICopIG1hbGxvYyhhcnB0YWJfc2l6ZSAqIHNpemVvZihzdHJ1Y3QgYXJwdGFiKSk7CkBAIC01OTIsNyArNTk1LDcgQEAKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgfQotI2lmZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVAorI2lmZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQKICAgICBhdXRvX25saXN0KEFSUFRBQl9TWU1CT0wsIChjaGFyICopIGF0LAogICAgICAgICAgICAgICAgYXJwdGFiX3NpemUgKiBzaXplb2Yoc3RydWN0IGFycGhkKSk7CiAgICAgYXRfcHRyID0gYXRbMF0uYXRfbmV4dDsKQEAgLTc3OSw3ICs3ODIsNyBAQAogICAgIHJlZ2lzdGVyIHN0cnVjdCBhcnB0YWIgKmF0YWI7CiAKICAgICB3aGlsZSAoYXJwdGFiX2N1cnJlbnQgPCBhcnB0YWJfc2l6ZSkgewotI2lmZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVAorI2lmZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQKICAgICAgICAgLyoKICAgICAgICAgICogVGhlIGFycCB0YWJsZSBpcyBhbiBhcnJheSBvZiBsaW5rZWQgbGlzdHMgb2YgYXJwdGFiIGVudHJpZXMuCiAgICAgICAgICAqIFVudXNlZCBzbG90cyBoYXZlIHBvaW50ZXJzIGJhY2sgdG8gdGhlIGFycmF5IGVudHJ5IGl0c2VsZiAKQEAgLTgwOCw5ICs4MTEsOSBAQAogICAgICAgICBhdF9wdHIgPSBhdF9lbnRyeS5hdF9uZXh0OwogICAgICAgICBhdGFiID0gJmF0X2VudHJ5OwogICAgICAgICAqaWZJbmRleCA9IGF0X2NvbS5hY19pZi5pZl9pbmRleDsgICAgICAgLyogbm90IHN0cmljdGx5IEFSUEhEICovCi0jZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVCAqLworI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUICovCiAgICAgICAgIGF0YWIgPSAmYXRbYXJwdGFiX2N1cnJlbnQrK107Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVCAqLworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUICovCiAgICAgICAgIGlmICghKGF0YWItPmF0X2ZsYWdzICYgQVRGX0NPTSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgKmlmVHlwZSA9IChhdGFiLT5hdF9mbGFncyAmIEFURl9QRVJNKSA/IDQgOiAzOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCmluZGV4IGM4MGYwZWUuLmU0MzM4MGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKQEAgLTEsNiArMSw1IEBACiAvKgogICogIElDTVAgTUlCIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gaWNtcC5jCi0gKgogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KQEAgLTksNiArOCwxMyBAQAogI2lmIEhBVkVfTkVUSU5FVF9JUF9JQ01QX0gKICNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KICNlbmRpZgorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorI2lmIEhBVkVfTkVUSU5FVF9JQ01QNl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgorI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworCiAjaWYgSEFWRV9ORVRJTkVUX0lDTVBfVkFSX0gKICNpbmNsdWRlIDxuZXRpbmV0L2ljbXBfdmFyLmg+CiAjZW5kaWYKQEAgLTE5LDEwICsyNSwxMCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAjaW5jbHVkZSAiaWNtcC5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmbmRlZiBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAogI2RlZmluZSBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAk1CkBAIC0zMSw2ICszNywxNCBAQAogI2RlZmluZSBJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQJTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNlbmRpZgogCisvKiByZWRlZmluZSBJQ01QNiBtZXNzYWdlIHR5cGVzIGZyb20gZ2xpYmMgPCAyLjQgdG8gbmV3ZXIgbmFtZXMgKi8KKyNpZmRlZiBJQ01QNl9NRU1CRVJTSElQX1FVRVJZCisjZGVmaW5lIE1MRF9MSVNURU5FUl9RVUVSWSBJQ01QNl9NRU1CRVJTSElQX1FVRVJZCisjZGVmaW5lIE1MRF9MSVNURU5FUl9SRVBPUlQgSUNNUDZfTUVNQkVSU0hJUF9SRVBPUlQKKyNkZWZpbmUgTUxEX0xJU1RFTkVSX1JFRFVDVElPTiBJQ01QNl9NRU1CRVJTSElQX1JFRFVDVElPTgorI2VuZGlmIC8qIElDTVA2X01FTUJFUlNISVBfUVVFUlkgKi8KKworCiAjaWYgZGVmaW5lZChIQVZFX0xJQlBFUkZTVEFUX0gpICYmIChkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KSkgJiYgIWRlZmluZWQoRklSU1RfUFJPVE9DT0wpCiAjaW5jbHVkZSA8bGlicGVyZnN0YXQuaD4KICNpZmRlZiBGSVJTVF9QUk9UT0NPTApAQCAtNTQsNDAgKzY4LDUwOSBAQAogCSAqKioqKioqKioqKioqKioqKioqKiovCiAKIAotCiAvKgogICogRGVmaW5lIHRoZSBPSUQgcG9pbnRlciB0byB0aGUgdG9wIG9mIHRoZSBtaWIgdHJlZSB0aGF0IHdlJ3JlCiAgKiByZWdpc3RlcmluZyB1bmRlcm5lYXRoIAogICovCi1vaWQgICAgICAgICAgICAgaWNtcF9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNSB9Oworc3RhdGljIGNvbnN0IG9pZCBpY21wX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA1IH07CitzdGF0aWMgY29uc3Qgb2lkIGljbXBfc3RhdHNfdGJsX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA1LCAyOSB9Oworc3RhdGljIGNvbnN0IG9pZCBpY21wX21zZ19zdGF0c190Ymxfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDUsIDMwIH07CiAjaWZkZWYgVVNJTkdfTUlCSUlfSVBfTU9EVUxFCiBleHRlcm4gb2lkICAgICAgaXBfbW9kdWxlX29pZFtdOwogZXh0ZXJuIGludCAgICAgIGlwX21vZHVsZV9vaWRfbGVuOwogZXh0ZXJuIGludCAgICAgIGlwX21vZHVsZV9jb3VudDsKICNlbmRpZgogCisjaWZkZWYgbGludXgKK3N0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5IHsKKwl1aW50MzJfdCBpcFZlcjsKKyAgICAgICAgdWludDMyX3QgaWNtcFN0YXRzSW5Nc2dzOworICAgICAgICB1aW50MzJfdCBpY21wU3RhdHNJbkVycm9yczsKKyAgICAgICAgdWludDMyX3QgaWNtcFN0YXRzT3V0TXNnczsKKyAgICAgICAgdWludDMyX3QgaWNtcFN0YXRzT3V0RXJyb3JzOworfTsKKworc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkgaWNtcF9zdGF0c190YWJsZVsyXTsKKyAKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSEFTX0lOIDEKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSEFTX09VVCAyCisKK3N0cnVjdCBpY21wX21zZ19zdGF0c190YWJsZV9lbnRyeSB7CisgICAgICAgIHVpbnQzMl90IGlwVmVyOworICAgICAgICB1aW50MzJfdCBpY21wTXNnU3RhdHNUeXBlOworICAgICAgICB1aW50MzJfdCBpY21wTXNnU3RhdHNJblBrdHM7CisgICAgICAgIHVpbnQzMl90IGljbXBNc2dTdGF0c091dFBrdHM7CisgICAgICAgIGludCBmbGFnczsKK307CisKKyNpZmRlZiBsaW51eAorLyogTGludXgga2VlcHMgdHJhY2sgb2YgYWxsIHBvc3NpYmxlIG1lc3NhZ2UgdHlwZXMgKi8KKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCAyNTYKKyNlbHNlCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgMTEKKyNlbmRpZgorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorI2lmZGVmIGxpbnV4CisvKiBMaW51eCBrZWVwcyB0cmFjayBvZiBhbGwgcG9zc2libGUgbWVzc2FnZSB0eXBlcyAqLworI2RlZmluZSBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UIDI1NgorI2Vsc2UKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVCAxNAorI2VuZGlmCisjZWxzZQorI2RlZmluZSBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UIDAKKyNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCisKK3N0cnVjdCBpY21wX21zZ19zdGF0c190YWJsZV9lbnRyeSBpY21wX21zZ19zdGF0c190YWJsZVtJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UICsgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVF07CisKK2ludAoraWNtcF9zdGF0c19sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisKKwkvKgorICAgICAgICAgKiBub3RlIGRvbid0IGJvdGhlciB1c2luZyB0aGUgcGFzc2VkIGluIGNhY2hlCisJICogYW5kIHZtYWdpYyBwb2ludGVycy4gIFRoZXkgYXJlIHVzZWxlc3MgYXMgdGhleSAKKwkgKiBjdXJyZW50bHkgcG9pbnQgdG8gdGhlIGljbXAgc3lzdGVtIHN0YXRzIGNhY2hlCQorCSAqIHNpbmNlIEkgc2VlIGxpdHRsZSBwb2ludCBpbiByZWdpc3RlcmluZyBhbm90aGVyCisJICogY2FjaGUgZm9yIHRoaXMgdGFibGUuICBJdHMgbm90IHJlYWxseSBuZWVkZWQKKwkgKi8KKworCWludCBpOworCXN0cnVjdCBpY21wX21pYiB2NGljbXA7CisJc3RydWN0IGljbXA2X21pYiB2NmljbXA7CisJZm9yKGk9MDtpPDI7aSsrKSB7CisJCXN3aXRjaChpKSB7CisJCQljYXNlIDA6CisJCQkJbGludXhfcmVhZF9pY21wX3N0YXQoJnY0aWNtcCk7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NGljbXAuaWNtcEluTXNnczsKKwkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luRXJyb3JzID0gdjRpY21wLmljbXBJbkVycm9yczsKKwkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dE1zZ3MgPSB2NGljbXAuaWNtcE91dE1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPSB2NGljbXAuaWNtcE91dEVycm9yczsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJbWVtc2V0KCZpY21wX3N0YXRzX3RhYmxlW2ldLDAsCisJCQkJCXNpemVvZihzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSkpOworCQkJCWxpbnV4X3JlYWRfaWNtcDZfc3RhdCgmdjZpY21wKTsKKwkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luTXNncyA9IHY2aWNtcC5pY21wNkluTXNnczsKKwkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luRXJyb3JzID0gdjZpY21wLmljbXA2SW5FcnJvcnM7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjZpY21wLmljbXA2T3V0TXNnczsKKwkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dEVycm9ycyA9IHY2aWNtcC5pY21wNk91dERlc3RVbnJlYWNocyArCisJCQkJCXY2aWNtcC5pY21wNk91dFBrdFRvb0JpZ3MgKyAgdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzICsKKwkJCQkJdjZpY21wLmljbXA2T3V0UGFybVByb2JsZW1zOworCQkJCWJyZWFrOworCQl9CisJCWljbXBfc3RhdHNfdGFibGVbaV0uaXBWZXI9aSsxOworCX0KKworCXJldHVybiAwOworfQorCitpbnQKK2ljbXBfbXNnX3N0YXRzX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBzdHJ1Y3QgaWNtcF9taWIgdjRpY21wOworICAgIHN0cnVjdCBpY21wNF9tc2dfbWliIHY0aWNtcG1zZzsKKyAgICBzdHJ1Y3QgaWNtcDZfbWliIHY2aWNtcDsKKyAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiB2NmljbXBtc2c7CisgICAgaW50IGksIGosIGssIGZsYWcsIGluYzsKKworICAgIG1lbXNldCgmaWNtcF9tc2dfc3RhdHNfdGFibGUsIDAsIHNpemVvZihpY21wX21zZ19zdGF0c190YWJsZSkpOworCisgICAgaSA9IDA7CisgICAgZmxhZyA9IDA7CisgICAgayA9IDA7CisgICAgaW5jID0gMDsKKyAgICBsaW51eF9yZWFkX2ljbXBfbXNnX3N0YXQoJnY0aWNtcCwgJnY0aWNtcG1zZywgJmZsYWcpOworICAgIGlmIChmbGFnKSB7CisgICAgICAgIHdoaWxlICgyNTUgPj0gaykgeworICAgICAgICAgICAgaWYgKHY0aWNtcG1zZy52YWxzW2tdLkluVHlwZSkgeworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gazsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXBtc2cudmFsc1trXS5JblR5cGU7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyB8IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKKyAgICAgICAgICAgICAgICBpbmMgPSAxOyAvKiBTZXQgdGhpcyBpZiB3ZSBmb3VuZCBhIHZhbGlkIGVudHJ5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodjRpY21wbXNnLnZhbHNba10uT3V0VHlwZSkgeworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gazsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wbXNnLnZhbHNba10uT3V0VHlwZTsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgICAgICAgICBpbmMgPSAxOyAvKiBTZXQgdGhpcyBpZiB3ZSBmb3VuZCBhIHZhbGlkIGVudHJ5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5jKSB7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGluYyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBrKys7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9FQ0hPUkVQTFk7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5FY2hvUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0RWNob1JlcHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9ERVNUX1VOUkVBQ0g7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5EZXN0VW5yZWFjaHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dERlc3RVbnJlYWNoczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1NPVVJDRV9RVUVOQ0g7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5TcmNRdWVuY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRTcmNRdWVuY2hzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfUkVESVJFQ1Q7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5SZWRpcmVjdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFJlZGlyZWN0czsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0VDSE87CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5FY2hvczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0RWNob3M7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9USU1FX0VYQ0VFREVEOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZUV4Y2RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRUaW1lRXhjZHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9QQVJBTUVURVJQUk9COworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluUGFybVByb2JzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRQYXJtUHJvYnM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9USU1FU1RBTVA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5UaW1lc3RhbXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRUaW1lc3RhbXBzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRVNUQU1QUkVQTFk7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5UaW1lc3RhbXBSZXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRUaW1lc3RhbXBSZXBzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfQUREUkVTUzsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkFkZHJNYXNrczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0QWRkck1hc2tzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfQUREUkVTU1JFUExZOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluQWRkck1hc2tSZXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRBZGRyTWFza1JlcHM7CisgICAgICAgIGkrKzsKKworICAgICAgICAvKiBzZXQgdGhlIElQIHZlcnNpb24gYW5kIGRlZmF1bHQgZmxhZ3MgKi8KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQ7IGorKykgeworICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbal0uaXBWZXIgPSAxOworICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbal0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICB9CisgICAgfQorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIGZsYWcgPSAwOworICAgIGsgPSAwOworICAgIGluYyA9IDA7CisgICAgbGludXhfcmVhZF9pY21wNl9tc2dfc3RhdCgmdjZpY21wLCAmdjZpY21wbXNnLCAmZmxhZyk7CisgICAgaWYgKGZsYWcpIHsKKyAgICAgICAgd2hpbGUgKDI1NSA+PSBrKSB7CisgICAgICAgICAgICBpZiAodjZpY21wbXNnLnZhbHNba10uSW5UeXBlKSB7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBrOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcG1zZy52YWxzW2tdLkluVHlwZTsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzIHwgSUNNUF9NU0dfU1RBVFNfSEFTX0lOOworICAgICAgICAgICAgICAgIGluYyA9IDE7IC8qIFNldCB0aGlzIGlmIHdlIGZvdW5kIGEgdmFsaWQgZW50cnkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2NmljbXBtc2cudmFsc1trXS5PdXRUeXBlKSB7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBrOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXBtc2cudmFsc1trXS5PdXRUeXBlOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICAgICAgICAgIGluYyA9IDE7IC8qIFNldCB0aGlzIGlmIHdlIGZvdW5kIGEgdmFsaWQgZW50cnkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmMpIHsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgaW5jID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGsrKzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QNl9EU1RfVU5SRUFDSDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5EZXN0VW5yZWFjaHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXREZXN0VW5yZWFjaHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfUEFDS0VUX1RPT19CSUc7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUGt0VG9vQmlnczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFBrdFRvb0JpZ3M7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfVElNRV9FWENFRURFRDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5UaW1lRXhjZHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRUaW1lRXhjZHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfUEFSQU1fUFJPQjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5QYXJtUHJvYmxlbXM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRQYXJtUHJvYmxlbXM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRUNIT19SRVFVRVNUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkVjaG9zOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRUNIT19SRVBMWTsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5FY2hvUmVwbGllczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEVjaG9SZXBsaWVzOworICAgICAgICBpKys7CisKKyNpZmRlZiBNTERfTElTVEVORVJfUVVFUlkKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE1MRF9MSVNURU5FUl9RVUVSWTsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Hcm91cE1lbWJRdWVyaWVzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgIGkrKzsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE1MRF9MSVNURU5FUl9SRVBPUlQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE1MRF9MSVNURU5FUl9SRURVQ1RJT047CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUmVkdWN0aW9uczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnM7CisgICAgICAgIGkrKzsKKyNlbmRpZgorCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ST1VURVJfU09MSUNJVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Sb3V0ZXJTb2xpY2l0czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFJvdXRlclNvbGljaXRzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX1JPVVRFUl9BRFZFUlQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSAwOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ORUlHSEJPUl9TT0xJQ0lUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbk5laWdoYm9yU29saWNpdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXROZWlnaGJvclNvbGljaXRzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX05FSUdIQk9SX0FEVkVSVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50czsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9SRURJUkVDVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5SZWRpcmVjdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRSZWRpcmVjdHM7CisKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlQ7IGorKykgeworICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCArIGpdLmlwVmVyID0gMjsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW0lDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBqXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworICAgIHJldHVybiAwOworfQorCituZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgoraWNtcF9zdGF0c19uZXh0X2VudHJ5KCB2b2lkICoqbG9vcF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmRhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmRhdGEpCit7CisJaW50IGkgPSAoaW50KSgqbG9vcF9jb250ZXh0KTsKKwluZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmlkeCA9IGluZGV4OworCisJaWYoaSA+IDEpCisJCXJldHVybiBOVUxMOworCisKKwkvKgorCSAqc2V0IElQIHZlcnNpb24KKwkgKi8KKwlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoaWR4LCBBU05fSU5URUdFUiwgKHVfY2hhciAqKSZpY21wX3N0YXRzX3RhYmxlW2ldLmlwVmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodWludDMyX3QpKTsKKwlpZHggPSBpZHgtPm5leHRfdmFyaWFibGU7CisKKwkqZGF0YV9jb250ZXh0ID0gJmljbXBfc3RhdHNfdGFibGVbaV07CisKKwkqbG9vcF9jb250ZXh0ID0gKHZvaWQgKikoKytpKTsKKwkKKwlyZXR1cm4gaW5kZXg7Cit9CisKKworbmV0c25tcF92YXJpYWJsZV9saXN0ICoKK2ljbXBfc3RhdHNfZmlyc3RfZW50cnkoIHZvaWQgKipsb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZGF0YV9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleCwKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZGF0YSkKK3sKKworICAgICAgICAqbG9vcF9jb250ZXh0ID0gTlVMTDsKKyAgICAgICAgKmRhdGFfY29udGV4dCA9IE5VTEw7CisgICAgICAgIHJldHVybiBpY21wX3N0YXRzX25leHRfZW50cnkobG9vcF9jb250ZXh0LCBkYXRhX2NvbnRleHQsIGluZGV4LCBkYXRhKTsKK30KKworbmV0c25tcF92YXJpYWJsZV9saXN0ICoKK2ljbXBfbXNnX3N0YXRzX25leHRfZW50cnkodm9pZCAqKmxvb3BfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmRhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQoreworICAgIGludCBpID0gKGludCkoKmxvb3BfY29udGV4dCk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppZHggPSBpbmRleDsKKworICAgIGlmKGkgPj0gSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCArIElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogc2V0IElQIHZlcnNpb24gKi8KKyAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoaWR4LCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICh1X2NoYXIgKikmaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIsCisgICAgICAgICAgICBzaXplb2YodWludDMyX3QpKTsKKworICAgIC8qIHNldCBwYWNrZXQgdHlwZSAqLworICAgIGlkeCA9IGlkeC0+bmV4dF92YXJpYWJsZTsKKyAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoaWR4LCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICh1X2NoYXIgKikmaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSwKKyAgICAgICAgICAgIHNpemVvZih1aW50MzJfdCkpOworCisgICAgKmRhdGFfY29udGV4dCA9ICZpY21wX21zZ19zdGF0c190YWJsZVtpXTsKKyAgICAqbG9vcF9jb250ZXh0ID0gKHZvaWQgKikoKytpKTsKKworICAgIHJldHVybiBpbmRleDsKK30KKworCituZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgoraWNtcF9tc2dfc3RhdHNfZmlyc3RfZW50cnkodm9pZCAqKmxvb3BfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipkYXRhX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQoreworICAgICpsb29wX2NvbnRleHQgPSAwOworICAgICpkYXRhX2NvbnRleHQgPSBOVUxMOworICAgIHJldHVybiBpY21wX21zZ19zdGF0c19uZXh0X2VudHJ5KGxvb3BfY29udGV4dCwgZGF0YV9jb250ZXh0LCBpbmRleCwgZGF0YSk7Cit9CisjZW5kaWYKKwogdm9pZAogaW5pdF9pY21wKHZvaWQpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyNpZmRlZiBsaW51eAorICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnRhYmxlX3JlZ2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm1zZ19zdGF0c19yZWdpbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKm1zZ19zdGF0c19paW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqbXNnX3N0YXRzX3RhYmxlX2luZm8gPSBOVUxMOworI2VuZGlmCisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqc2NhbGFyX3JlZ2luZm8gPSBOVUxMOworICAgIGludCAgICAgICAgICAgICAgICAgICAgcmM7CiAKICAgICAvKgogICAgICAqIHJlZ2lzdGVyIG91cnNlbHZlcyB3aXRoIHRoZSBhZ2VudCBhcyBhIGdyb3VwIG9mIHNjYWxhcnMuLi4KICAgICAgKi8KICAgICBERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJJbml0aWFsaXNpbmcgSUNNUCBncm91cFxuIikpOwotICAgIHJlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcCIsIGljbXBfaGFuZGxlciwKKyAgICBzY2FsYXJfcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpY21wIiwgaWNtcF9oYW5kbGVyLAogCQkgICAgaWNtcF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mbywgSUNNUElOTVNHUywgSUNNUE9VVEFERFJNQVNLUkVQUyk7CisgICAgaWYgKCFzY2FsYXJfcmVnaW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChzY2FsYXJfcmVnaW5mbywgSUNNUElOTVNHUywgSUNNUE9VVEFERFJNQVNLUkVQUyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLyoKICAgICAgKiAuLi4uIHdpdGggYSBsb2NhbCBjYWNoZQogICAgICAqICAgIChleGNlcHQgZm9yIEhQLVVYIDExLCB3aGljaCBleHRyYWN0cyBvYmplY3RzIGluZGl2aWR1YWxseSkKICAgICAgKi8KICNpZm5kZWYgaHB1eDExCi0gICAgbmV0c25tcF9pbmplY3RfaGFuZGxlciggcmVnaW5mbywKKyAgICByYyA9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHNjYWxhcl9yZWdpbmZvLAogCQkgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCiAJCQkgICAJCWljbXBfbG9hZCwgaWNtcF9mcmVlLAogCQkJCQlpY21wX29pZCwgT0lEX0xFTkdUSChpY21wX29pZCkpKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICBnb3RvIGJhaWw7CiAjZW5kaWYKKyNpZmRlZiBsaW51eAorCisgICAgLyogcmVnaXN0ZXIgaWNtcFN0YXRzVGFibGUgKi8KKworICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmICghdGFibGVfaW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsIDApOworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBJQ01QX1NUQVRfSU5NU0c7CisgICAgdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IElDTVBfU1RBVF9PVVRFUlI7CisKKworICAgIGlpbmZvICAgICAgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfaXRlcmF0b3JfaW5mbyk7CisgICAgaWYgKCFpaW5mbykgCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIGlpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGljbXBfc3RhdHNfZmlyc3RfZW50cnk7CisgICAgaWluZm8tPmdldF9uZXh0X2RhdGFfcG9pbnQgID0gaWNtcF9zdGF0c19uZXh0X2VudHJ5OworICAgIGlpbmZvLT50YWJsZV9yZWdpbmZvICAgICAgICA9IHRhYmxlX2luZm87CisKKyAgICB0YWJsZV9yZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXBTdGF0c1RhYmxlIiwKKwkJaWNtcF9zdGF0c190YWJsZV9oYW5kbGVyLCBpY21wX3N0YXRzX3RibF9vaWQsCisJCU9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmICghdGFibGVfcmVnaW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKHRhYmxlX3JlZ2luZm8sIGlpbmZvKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgIHRhYmxlX3JlZ2luZm8gPSBOVUxMOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgLyogcmVnaXN0ZXIgaWNtcE1zZ1N0YXRzVGFibGUgKi8KKyAgICBtc2dfc3RhdHNfdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisgICAgaWYgKCFtc2dfc3RhdHNfdGFibGVfaW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMobXNnX3N0YXRzX3RhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCBBU05fSU5URUdFUiwgMCk7CisgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBJQ01QX01TR19TVEFUX0lOX1BLVFM7CisgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX01TR19TVEFUX09VVF9QS1RTOworCisgICAgbXNnX3N0YXRzX2lpbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOworICAgIGlmICghbXNnX3N0YXRzX2lpbmZvKQorICAgICAgICBnb3RvIGJhaWw7CisKKyAgICBtc2dfc3RhdHNfaWluZm8tPmdldF9maXJzdF9kYXRhX3BvaW50ID0gaWNtcF9tc2dfc3RhdHNfZmlyc3RfZW50cnk7CisgICAgbXNnX3N0YXRzX2lpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ICA9IGljbXBfbXNnX3N0YXRzX25leHRfZW50cnk7CisgICAgbXNnX3N0YXRzX2lpbmZvLT50YWJsZV9yZWdpbmZvICAgICAgICA9IG1zZ19zdGF0c190YWJsZV9pbmZvOworCisgICAgbXNnX3N0YXRzX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcE1zZ1N0YXRzVGFibGUiLAorICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVfaGFuZGxlciwgaWNtcF9tc2dfc3RhdHNfdGJsX29pZCwKKyAgICAgICAgICAgIE9JRF9MRU5HVEgoaWNtcF9tc2dfc3RhdHNfdGJsX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoIW1zZ19zdGF0c19yZWdpbmZvKQorICAgICAgICBnb3RvIGJhaWw7CisKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXNnX3N0YXRzX3JlZ2luZm8sIG1zZ19zdGF0c19paW5mbyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICBtc2dfc3RhdHNfcmVnaW5mbyA9IE5VTEw7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgCisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlciggbXNnX3N0YXRzX3JlZ2luZm8sCisgICAgICAgICAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKKyAgICAgICAgICAgICAgICBpY21wX2xvYWQsIGljbXBfZnJlZSwKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190Ymxfb2lkLCBPSURfTEVOR1RIKGljbXBfbXNnX3N0YXRzX3RibF9vaWQpKSk7CisjaWZuZGVmIGhwdXgxMQorICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHRhYmxlX3JlZ2luZm8sCisJCSAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKKwkJCSAgIAkJaWNtcF9sb2FkLCBpY21wX2ZyZWUsCisJCQkJCWljbXBfc3RhdHNfdGJsX29pZCwgT0lEX0xFTkdUSChpY21wX3N0YXRzX3RibF9vaWQpKSk7CisjZW5kaWYgLyogISBocHV4MTEgKi8KKyNlbmRpZiAvKiBsaW51eCAqLwogCiAjaWZkZWYgVVNJTkdfTUlCSUlfSVBfTU9EVUxFCiAgICAgaWYgKCsraXBfbW9kdWxlX2NvdW50ID09IDIpCkBAIC0xMDMsNiArNTg2LDE5IEBACiAgICAgaW5pdF9rZXJuZWxfc3Vub3M1KCk7CiAjZW5kaWYKICNlbmRpZgorICAgIHJldHVybjsKKworI2lmbmRlZiBocHV4MTEKK2JhaWw6CisjZW5kaWYKKyNpZmRlZiBsaW51eAorICAgIGlmIChtc2dfc3RhdHNfcmVnaW5mbykKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKG1zZ19zdGF0c19yZWdpbmZvKTsKKyAgICBpZiAodGFibGVfcmVnaW5mbykKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHRhYmxlX3JlZ2luZm8pOworI2VuZGlmCisgICAgaWYgKHNjYWxhcl9yZWdpbmZvKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUoc2NhbGFyX3JlZ2luZm8pOwogfQogCiAKQEAgLTU1MSw2ICsxMDQ3LDE0OSBAQAogfQogCiAKKyNpZmRlZiBsaW51eAoraW50CitpY21wX3N0YXRzX3RhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICAgKnJlcWluZm8sCisgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgKnJlcXVlc3RzKQoreworCW5ldHNubXBfcmVxdWVzdF9pbmZvICAqcmVxdWVzdDsKKwluZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnJlcXVlc3R2YjsKKwluZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKwlzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSAgICplbnRyeTsKKwlvaWQgICAgICBzdWJpZDsKKworCXN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworCQljYXNlIE1PREVfR0VUOgorCQkJZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKwkJCQlyZXF1ZXN0dmIgPSByZXF1ZXN0LT5yZXF1ZXN0dmI7CisJCQkJZW50cnkgPSAoc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkgKiluZXRzbm1wX2V4dHJhY3RfaXRlcmF0b3JfY29udGV4dChyZXF1ZXN0KTsKKwkJCQlpZiAoIWVudHJ5KQorCQkJCQljb250aW51ZTsKKwkJCQl0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisJCQkJc3ViaWQgICAgICA9IHRhYmxlX2luZm8tPmNvbG51bTsKKwkJCQlERUJVR01TR1RMKCggIm1pYklJL2ljbXBTdGF0c1RhYmxlIiwgIm9pZDogIiApKTsKKwkJCQlERUJVR01TR09JRCgoICJtaWJJSS9pY21wU3RhdHNUYWJsZSIsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKKwkJCQkJCSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoICkpOworCQkJCURFQlVHTVNHKCggIm1pYklJL2ljbXBTdGF0c1RhYmxlIiwgIiBJbiAlZCBJbkVyciAlZCBPdXQgJWQgT3V0RXJyICVkXG4iLAorCQkJCQkgICAgICBlbnRyeS0+aWNtcFN0YXRzSW5Nc2dzLCBlbnRyeS0+aWNtcFN0YXRzSW5FcnJvcnMsCisJCQkJCSAgICAgIGVudHJ5LT5pY21wU3RhdHNPdXRNc2dzLCBlbnRyeS0+aWNtcFN0YXRzT3V0RXJyb3JzICkpOworCisJCQkJc3dpdGNoIChzdWJpZCkgeworCQkJCQljYXNlIElDTVBfU1RBVF9JTk1TRzoKKwkJCQkJCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorCQkJCQkJCSh1X2NoYXIgKikmZW50cnktPmljbXBTdGF0c0luTXNncywgc2l6ZW9mKHVpbnQzMl90KSk7CisJCQkJCQlicmVhazsJCisJCQkJCWNhc2UgSUNNUF9TVEFUX0lORVJSOgorCQkJCQkJc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisJCQkJCQkJKHVfY2hhciAqKSZlbnRyeS0+aWNtcFN0YXRzSW5FcnJvcnMsIHNpemVvZih1aW50MzJfdCkpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgSUNNUF9TVEFUX09VVE1TRzoKKwkJCQkJCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorCQkJCQkJCSh1X2NoYXIgKikmZW50cnktPmljbXBTdGF0c091dE1zZ3MsIHNpemVvZih1aW50MzJfdCkpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgSUNNUF9TVEFUX09VVEVSUjoKKwkJCQkJCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorCQkJCQkJCSh1X2NoYXIgKikmZW50cnktPmljbXBTdGF0c091dEVycm9ycywgc2l6ZW9mKHVpbnQzMl90KSk7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCXNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVucmVjb2duaXNlZCBjb2x1bW4gKCVkKVxuIiwoaW50KXN1YmlkKTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBNT0RFX0dFVE5FWFQ6CisJCWNhc2UgTU9ERV9HRVRCVUxLOgorCQljYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorCQljYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorCQljYXNlIE1PREVfU0VUX0FDVElPTjoKKwkJY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisJCWNhc2UgTU9ERV9TRVRfRlJFRToKKwkJY2FzZSBNT0RFX1NFVF9VTkRPOgorCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAorCQkJCXJlcWluZm8tPm1vZGUpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAorCQkJCXJlcWluZm8tPm1vZGUpOworCQkJYnJlYWs7CisKKwl9CisKKwlyZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworaW50CitpY21wX21zZ19zdGF0c190YWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgICAgICAgICAgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICAgKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgKnJlcXVlc3RzKQoreworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqcmVxdWVzdHZiOworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIHN0cnVjdCBpY21wX21zZ19zdGF0c190YWJsZV9lbnRyeSAqZW50cnk7CisgICAgb2lkIHN1YmlkOworCisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0dmIgPSByZXF1ZXN0LT5yZXF1ZXN0dmI7CisgICAgICAgICAgICAgICAgZW50cnkgPSAoc3RydWN0IGljbXBfbXNnX3N0YXRzX3RhYmxlX2VudHJ5ICopbmV0c25tcF9leHRyYWN0X2l0ZXJhdG9yX2NvbnRleHQocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgICAgIHN1YmlkID0gdGFibGVfaW5mby0+Y29sbnVtOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAibWliSUkvaWNtcE1zZ1N0YXRzVGFibGUiLCAib2lkOiAiICkpOworICAgICAgICAgICAgICAgIERFQlVHTVNHT0lEKCggIm1pYklJL2ljbXBNc2dTdGF0c1RhYmxlIiwgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCApKTsKKyAgICAgICAgICAgICAgICBERUJVR01TRygoICJtaWJJSS9pY21wTXNnU3RhdHNUYWJsZSIsICIgSW4gJWQgT3V0ICVkIEZsYWdzIDB4JXhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWNtcE1zZ1N0YXRzSW5Qa3RzLCBlbnRyeS0+aWNtcE1zZ1N0YXRzT3V0UGt0cywgZW50cnktPmZsYWdzICkpOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJpZCkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIElDTVBfTVNHX1NUQVRfSU5fUEtUUzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+ZmxhZ3MgJiBJQ01QX01TR19TVEFUU19IQVNfSU4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmZW50cnktPmljbXBNc2dTdGF0c0luUGt0cywgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3R2Yi0+dHlwZSA9IFNOTVBfTk9TVUNISU5TVEFOQ0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJQ01QX01TR19TVEFUX09VVF9QS1RTOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5mbGFncyAmIElDTVBfTVNHX1NUQVRTX0hBU19PVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmZW50cnktPmljbXBNc2dTdGF0c091dFBrdHMsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBNc2dTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgY29sdW1uICglZClcbiIsKGludClzdWJpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorICAgICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKyNlbmRpZgkJLyogbGludXggKi8KKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCkBAIC02ODAsNiArMTMxOSw4IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiTG9hZGVkIElDTVAgR3JvdXAgKGxpbnV4KVxuIikpOwogICAgIH0KKyAgICBpY21wX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CisgICAgaWNtcF9tc2dfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQogI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKQEAgLTcxNCw3ICsxMzU1LDYgQEAKICAgICB9CiAgICAgcmV0dXJuIHJldF92YWx1ZTsKIH0KLQogI2VsaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKIGludAogaWNtcF9sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgKaW5kZXggY2RhYWM1ZC4uOTMwNzY1NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaApAQCAtMTQsNiArMTQsOCBAQAogCiBleHRlcm4gdm9pZCAgICAgaW5pdF9pY21wKHZvaWQpOwogZXh0ZXJuIE5ldHNubXBfTm9kZV9IYW5kbGVyIGljbXBfaGFuZGxlcjsKK2V4dGVybiBOZXRzbm1wX05vZGVfSGFuZGxlciBpY21wX3N0YXRzX3RhYmxlX2hhbmRsZXI7CitleHRlcm4gTmV0c25tcF9Ob2RlX0hhbmRsZXIgaWNtcF9tc2dfc3RhdHNfdGFibGVfaGFuZGxlcjsKIGV4dGVybiBOZXRzbm1wQ2FjaGVMb2FkIGljbXBfbG9hZDsKIGV4dGVybiBOZXRzbm1wQ2FjaGVGcmVlIGljbXBfZnJlZTsKIApAQCAtNDQsNCArNDYsMTcgQEAKICNkZWZpbmUgSUNNUE9VVEFERFJNQVNLUyAgICAgMjUKICNkZWZpbmUgSUNNUE9VVEFERFJNQVNLUkVQUyAgMjYKIAorI2RlZmluZSBJQ01QU1RBVFNUQUJMRSAgICAgICAyOQorI2RlZmluZSBJQ01QX1NUQVRfSVBWRVIgICAgICAgMQorI2RlZmluZSBJQ01QX1NUQVRfSU5NU0cgICAgICAgMiAKKyNkZWZpbmUgSUNNUF9TVEFUX0lORVJSICAgICAgIDMgCisjZGVmaW5lIElDTVBfU1RBVF9PVVRNU0cgICAgICA0IAorI2RlZmluZSBJQ01QX1NUQVRfT1VURVJSICAgICAgNSAKKworI2RlZmluZSBJQ01QTVNHU1RBVFNUQUJMRSAgICAgMzAKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVF9JUFZFUiAgICAxCisjZGVmaW5lIElDTVBfTVNHX1NUQVRfVFlQRSAgICAgMgorI2RlZmluZSBJQ01QX01TR19TVEFUX0lOX1BLVFMgIDMKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVF9PVVRfUEtUUyA0CisKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0lDTVBfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCmluZGV4IGM4OTZmZjIuLjMyODgzZjMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKQEAgLTE2LDcgKzE2LDcgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpICYmICFkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTF9MQVRFKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpICYmICFkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCkBAIC00MCw3ICs0MCw3IEBACiAjaWYgSEFWRV9XSU5TT0NLX0gKICNpbmNsdWRlIDx3aW5zb2NrLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkgJiYgZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUxfTEFURSkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKSAmJiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCkBAIC0xOTcsMTIgKzE5NywxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oPgogCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKiBpZiB5b3Ugd2FudCBjYWNoaW5nIGVuYWJsZWQgZm9yIHNwZWVkIHJldHJpdmFsIHB1cnBvc2VzLCBzZXQgdGhpcyB0byA1PyovCiAjZGVmaW5lIE1JTkxPQURGUkVRIDAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gcmVsb2FkIGZyZXF1ZW5jeSBpbiBzZWNvbmRzICovCkBAIC0yMTMsMzMgKzIxMyw1NyBAQAogZXh0ZXJuIHN0cnVjdCB0aW1ldmFsIHN0YXJ0dGltZTsKIAogc3RydWN0IHZhcmlhYmxlMyBpbnRlcmZhY2VzX3ZhcmlhYmxlc1tdID0gewotICAgIHtJRk5VTUJFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaW50ZXJmYWNlcywgMSwgezF9fSwKLSAgICB7SUZJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDF9fSwKLSAgICB7SUZERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMn19LAotICAgIHtORVRTTk1QX0lGVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDN9fSwKLSAgICB7SUZNVFUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA0fX0sCi0gICAge0lGU1BFRUQsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNX19LAotICAgIHtJRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA2fX0sCisgICAge05FVFNOTVBfSUZOVU1CRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2ludGVyZmFjZXMsIDEsIHsxfX0sCisgICAge05FVFNOTVBfSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDF9fSwKKyAgICB7TkVUU05NUF9JRkRFU0NSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyfX0sCisgICAge05FVFNOTVBfSUZUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgM319LAorICAgIHtORVRTTk1QX0lGTVRVLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNH19LAorICAgIHtORVRTTk1QX0lGU1BFRUQsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNX19LAorICAgIHtORVRTTk1QX0lGUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDZ9fSwKICNpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAoY3lnd2luKQotICAgIHtJRkFETUlOU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDd9fSwKKyAgICB7TkVUU05NUF9JRkFETUlOU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDd9fSwKICNlbHNlCi0gICAge0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCisgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDd9fSwKICNlbmRpZgotICAgIHtJRk9QRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA4fX0sCi0gICAge0lGTEFTVENIQU5HRSwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOX19LAotICAgIHtJRklOT0NURVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTB9fSwKLSAgICB7SUZJTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDExfX0sCi0gICAge0lGSU5OVUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTJ9fSwKLSAgICB7SUZJTkRJU0NBUkRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTN9fSwKLSAgICB7SUZJTkVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE0fX0sCi0gICAge0lGSU5VTktOT1dOUFJPVE9TLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTV9fSwKLSAgICB7SUZPVVRPQ1RFVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxNn19LAotICAgIHtJRk9VVFVDQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE3fX0sCi0gICAge0lGT1VUTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE4fX0sCi0gICAge0lGT1VURElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOX19LAotICAgIHtJRk9VVEVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDIwfX0sCi0gICAge0lGT1VUUUxFTiwgQVNOX0dBVUdFLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMX19LAotICAgIHtJRlNQRUNJRklDLCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMn19CisgICAge05FVFNOTVBfSUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOH19LAorICAgIHtORVRTTk1QX0lGTEFTVENIQU5HRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOX19LAorICAgIHtORVRTTk1QX0lGSU5PQ1RFVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxMH19LAorICAgIHtORVRTTk1QX0lGSU5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxMX19LAorICAgIHtORVRTTk1QX0lGSU5OVUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTJ9fSwKKyAgICB7TkVUU05NUF9JRklORElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxM319LAorICAgIHtORVRTTk1QX0lGSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxNH19LAorICAgIHtORVRTTk1QX0lGSU5VTktOT1dOUFJPVE9TLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTV9fSwKKyAgICB7TkVUU05NUF9JRk9VVE9DVEVUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE2fX0sCisgICAge05FVFNOTVBfSUZPVVRVQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxN319LAorICAgIHtORVRTTk1QX0lGT1VUTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE4fX0sCisgICAge05FVFNOTVBfSUZPVVRESVNDQVJEUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE5fX0sCisgICAge05FVFNOTVBfSUZPVVRFUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMH19LAorICAgIHtORVRTTk1QX0lGT1VUUUxFTiwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMX19LAorICAgIHtORVRTTk1QX0lGU1BFQ0lGSUMsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDIyfX0KIH07CiAKIC8qCkBAIC0zODUsNyArNDA5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewotICAgIGNhc2UgSUZOVU1CRVI6CisgICAgY2FzZSBORVRTTk1QX0lGTlVNQkVSOgogICAgICAgICBsb25nX3JldHVybiA9IEludGVyZmFjZV9TY2FuX0dldF9Db3VudCgpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIGRlZmF1bHQ6CkBAIC01NzIsMTAgKzU5NiwxMCBAQAogICAgIGlmX3B0ciA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9vdmVycmlkZXNfZ2V0KGlmX25hbWUpOwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGSU5ERVg6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ERVg6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaW50ZXJmYWNlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgY3AgPSBpZl9uYW1lOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihpZl9uYW1lKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgY3A7CkBAIC01ODUsMTQgKzYwOSwxNCBAQAogICAgICAgICBlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfdHlwZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOgorICAgIGNhc2UgTkVUU05NUF9JRk1UVToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9tdHU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUVEOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUVEOgogICAgICAgICBpZiAoaWZfcHRyKQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9wdHItPnNwZWVkOwogICAgICAgICBlbHNlIHsKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFX0lGU19WQUxVRQorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0JBVURSQVRFX0lGU19WQUxVRQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfYmF1ZHJhdGUuaWZzX3ZhbHVlIDw8CiAgICAgICAgICAgICBpZl9tc2cuaWZtX2RhdGEuaWZpX2JhdWRyYXRlLmlmc19sb2cyOwogI2Vsc2UKQEAgLTYwMCw1MiArNjI0LDUyIEBACiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZQSFlTQUREUkVTUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZQSFlTQUREUkVTUzoKICAgICAgICAgLyoKICAgICAgICAgICogWFhYIAogICAgICAgICAgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY2FzZSBJRkFETUlOU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRkFETUlOU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmX21zZy5pZm1fZmxhZ3MgJiBJRkZfVVAgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmX21zZy5pZm1fZmxhZ3MgJiBJRkZfUlVOTklORyA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgICAgICAvKgogICAgICAgICAgKiBpZkxhc3RDaGFuZ2UgCiAgICAgICAgICAqLwotICAgIGNhc2UgSUZJTk9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2lieXRlczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0KICAgICAgICAgICAgICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfaXBhY2tldHMgLQogICAgICAgICAgICAgaWZfbXNnLmlmbV9kYXRhLmlmaV9pbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5OVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5ESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfaXFkcm9wczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5FUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5FUlJPUlM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9pZXJyb3JzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVOS05PV05QUk9UT1M6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VTktOT1dOUFJPVE9TOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfbm9wcm90bzsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX29ieXRlczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPQogICAgICAgICAgICAgKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9vcGFja2V0cyAtCiAgICAgICAgICAgICBpZl9tc2cuaWZtX2RhdGEuaWZpX29tY2FzdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX29tY2FzdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVERJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVERJU0NBUkRTOgogI2lmZGVmIGlmX29kcm9wcwogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfb2Ryb3BzOwogI2Vsc2UKQEAgLTY1NSwxMCArNjc5LDEwIEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gMDsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRFUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VURVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfb2Vycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgogI2lmZGVmIGlyaXg2CiAgICAgICAgIGxvbmdfcmV0dXJuID0gMDsKICNlbHNlCkBAIC03NTIsNyArNzc2LDcgQEAKICAgICBzdGF0aWMgY2hhciAgICAgTmFtZVsxNl07CiAgICAgY2hhciAgICAgICAgICAgKmNwOwogICAgIGNvbmZfaWZfbGlzdCAgICppZl9wdHI7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQworI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDCiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKICNlbmRpZgogCkBAIC03NjUsMTAgKzc4OSwxMCBAQAogICAgIGlmX3B0ciA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9vdmVycmlkZXNfZ2V0KE5hbWUpOwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGSU5ERVg6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ERVg6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaW50ZXJmYWNlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgY3AgPSBOYW1lOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihjcCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGNwOwpAQCAtNzc2LDI2ICs4MDAsMjYgQEAKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT50eXBlOwogICAgICAgICBlbHNlIHsKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1RZUEUKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9UWVBFCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3R5cGU7CiAjZWxzZQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAxOyAgICAvKiBPVEhFUiAqLwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOnsKKyAgICBjYXNlIE5FVFNOTVBfSUZNVFU6ewogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZuZXQuaWZfbXR1OwogICAgICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICAgICAgfQotICAgIGNhc2UgSUZTUEVFRDoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVFRDoKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT5zcGVlZDsKICAgICAgICAgZWxzZSB7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURQorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0JBVURSQVRFCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2JhdWRyYXRlOwotI2VsaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9TUEVFRAorI2VsaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfU1BFRUQKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfc3BlZWQ7Ci0jZWxpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1RZUEUgJiYgZGVmaW5lZChJRlRfRVRIRVIpCisjZWxpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9UWVBFICYmIGRlZmluZWQoSUZUX0VUSEVSKQogICAgICAgICAgICAgaWYgKGlmbmV0LmlmX3R5cGUgPT0gSUZUX0VUSEVSKQogICAgICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gMTAwMDAwMDA7CiAgICAgICAgICAgICBpZiAoaWZuZXQuaWZfdHlwZSA9PSBJRlRfUDEwKQpAQCAtODE0LDcgKzgzOCw3IEBACiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZQSFlTQUREUkVTUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZQSFlTQUREUkVTUzoKICAgICAgICAgSW50ZXJmYWNlX0dldF9FdGhlcl9CeV9JbmRleChpbnRlcmZhY2UsIHJldHVybl9idWYpOwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAJKnZhcl9sZW4gPSAwOwpAQCAtODI3LDE0ICs4NTEsMTQgQEAKICAgICAgICAgICAgICp2YXJfbGVuID0gNjsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSByZXR1cm5fYnVmOwotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9mbGFncyAmIElGRl9VUCA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPUEVSU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRk9QRVJTVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZmxhZ3MgJiBJRkZfUlVOTklORyA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZMQVNUQ0hBTkdFOgotI2lmIGRlZmluZWQoU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQykgJiYgIShkZWZpbmVkKGZyZWVic2QyKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDE5OTYwNykKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgorI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9TRUMpICYmICEoZGVmaW5lZChmcmVlYnNkMikgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxOTk2MDcpCiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWCAtIFNOTVAncyBpZkxhc3RjaGFuZ2UgaXMgdGltZSB3aGVuIG9wLiBzdGF0dXMgY2hhbmdlZAogICAgICAgICAgKiAqIEZyZWVCU0QncyBpZl9sYXN0Y2hhbmdlIGlzIHRpbWUgd2hlbiBwYWNrZXQgd2FzIGlucHV0IG9yIG91dHB1dApAQCAtODYzLDggKzg4Nyw4IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gMDsgICAgICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOT0NURVRTOgotI2lmZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSUJZVEVTCisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CisjaWZkZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9pYnl0ZXMgJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTg3NywxNCArOTAxLDE0IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXBhY2tldHMgKiAzMDg7IC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOVUNBU1RQS1RTOgogICAgICAgICB7CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXBhY2tldHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXBhY2tldHM7CiAjZW5kaWYKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JTUNBU1RTCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuIC09ICh1X2xvbmcpIGlmbmV0LmlmX2ltY2FzdHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTg5Myw4ICs5MTcsOCBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSU1DQVNUUworICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JTUNBU1RTCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9pbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC05MDcsOCArOTMxLDggQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkRJU0NBUkRTOgotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSVFEUk9QUworICAgIGNhc2UgTkVUU05NUF9JRklORElTQ0FSRFM6CisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSVFEUk9QUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXFkcm9wcyAmIDB4ZmZmZmZmZmY7CiAjZWxzZQpAQCAtOTIxLDE1ICs5NDUsMTUgQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkVSUk9SUzoKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2llcnJvcnMgJiAweGZmZmZmZmZmOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9pZXJyb3JzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX05PUFJPVE8KKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTk9QUk9UTwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfbm9wcm90byAmIDB4ZmZmZmZmZmY7CiAjZWxzZQpAQCAtOTQyLDggKzk2Niw4IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUT0NURVRTOgotI2lmZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT0JZVEVTCisgICAgY2FzZSBORVRTTk1QX0lGT1VUT0NURVRTOgorI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09CWVRFUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfb2J5dGVzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC05NTYsMTQgKzk4MCwxNCBAQAogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzICogMzA4OyAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRVQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTOgogICAgICAgICB7CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfb3BhY2tldHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfb3BhY2tldHM7CiAjZW5kaWYKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09NQ0FTVFMKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PTUNBU1RTCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuIC09ICh1X2xvbmcpIGlmbmV0LmlmX29tY2FzdHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTk3Miw4ICs5OTYsOCBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUTlVDQVNUUEtUUzoKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09NQ0FTVFMKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVROVUNBU1RQS1RTOgorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09NQ0FTVFMKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29tY2FzdHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTk4NiwyOCArMTAxMCwyOCBAQAogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIDA7ICAgICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVERJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVERJU0NBUkRTOgogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfc25kLmlmcV9kcm9wcyAmIDB4ZmZmZmZmZmY7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfZHJvcHM7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX29lcnJvcnMgJiAweGZmZmZmZmZmOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9vZXJyb3JzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFFMRU46CisgICAgY2FzZSBORVRTTk1QX0lGT1VUUUxFTjoKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfbGVuICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfc25kLmlmcV9sZW47CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFQ0lGSUM6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFQ0lGSUM6CiAgICAgICAgICp2YXJfbGVuID0gbnVsbE9pZExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgbnVsbE9pZDsKICAgICBkZWZhdWx0OgpAQCAtMTA0MCw3ICsxMDY0LDcgQEAKICAgICBzdGF0aWMgY2hhciAgICAgTmFtZVsxNl07CiAjZW5kaWYKICAgICByZWdpc3RlciBjaGFyICAqY3A7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQworI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDCiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKICNlbmRpZgogI2lmICFkZWZpbmVkKGhwdXgxMSkKQEAgLTEwODMsMTAgKzExMDcsMTAgQEAKICAgICBpZl9wdHIgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfb3ZlcnJpZGVzX2dldChOYW1lKTsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGNwID0gaWZuZXQuaWZfZW50cnkuaWZEZXNjcjsKICNlbHNlCkBAIC0xMTExLDcgKzExMzUsNyBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOnsKKyAgICBjYXNlIE5FVFNOTVBfSUZNVFU6ewogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZuZXQuaWZfZW50cnkuaWZNdHU7CiAjZWxzZQpAQCAtMTExOSw3ICsxMTQzLDcgQEAKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICAgICAgfQotICAgIGNhc2UgSUZTUEVFRDoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVFRDoKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT5zcGVlZDsKICAgICAgICAgZWxzZSB7CkBAIC0xMTMzLDcgKzExNTcsNyBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgICp2YXJfbGVuID0gaWZuZXQuaWZfZW50cnkuaWZQaHlzQWRkcmVzcy5vX2xlbmd0aDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgaWZuZXQuaWZfZW50cnkuaWZQaHlzQWRkcmVzcy5vX2J5dGVzOwpAQCAtMTE0NywyMSArMTE3MSwyMSBAQAogICAgICAgICAgICAgKnZhcl9sZW4gPSA2OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSByZXR1cm5fYnVmOwogI2VuZGlmCi0gICAgY2FzZSBJRkFETUlOU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRkFETUlOU1RBVFVTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmQWRtaW47CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2ZsYWdzICYgSUZGX1VQID8gMSA6IDI7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3BlcjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZmxhZ3MgJiBJRkZfUlVOTklORyA/IDEgOiAyOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkxBU1RDSEFOR0U6CisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkxhc3RDaGFuZ2U7CiAjZWxzZQpAQCAtMTE3MSw3ICsxMTk1LDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gMDsgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5PQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJbk9jdGV0czsKICNlbHNlCkBAIC0xMTgxLDcgKzEyMDUsNyBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9pcGFja2V0cyAqIDMwODsgICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOVUNBU1RQS1RTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmSW5VY2FzdFBrdHM7CiAjZWxzZQpAQCAtMTE5MSw3ICsxMjE1LDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXBhY2tldHM7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluTlVjYXN0UGt0czsKICNlbHNlCkBAIC0xMjAxLDcgKzEyMjUsNyBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ESVNDQVJEUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluRGlzY2FyZHM7CiAjZWxzZQpAQCAtMTIxMSwxNCArMTIzNSwxNCBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRklORVJST1JTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmSW5FcnJvcnM7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2llcnJvcnM7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluVW5rbm93blByb3RvczsKICNlbHNlCkBAIC0xMjI4LDcgKzEyNTIsNyBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRPQ1RFVFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZPdXRPY3RldHM7CiAjZWxzZQpAQCAtMTIzOCw3ICsxMjYyLDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfb3BhY2tldHMgKiAzMDg7ICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRVQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3V0VWNhc3RQa3RzOwogI2Vsc2UKQEAgLTEyNDgsNyArMTI3Miw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk91dE5VY2FzdFBrdHM7CiAjZWxzZQpAQCAtMTI1OCwyOCArMTI4MiwyOCBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVERJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVERJU0NBUkRTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3V0RGlzY2FyZHM7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfZHJvcHM7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk91dEVycm9yczsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfb2Vycm9yczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRRTEVOOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFFMRU46CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZPdXRRbGVuOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2xlbjsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVDSUZJQzoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVDSUZJQzoKICAgICAgICAgKnZhcl9sZW4gPSBudWxsT2lkTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBudWxsT2lkOwogICAgIGRlZmF1bHQ6CkBAIC0xMzMxLDEwICsxMzU1LDEwIEBACiAgICAgICogaWZfcHRyID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X292ZXJyaWRlc19nZXQoTmFtZSk7CiAgICAgICovCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGSU5ERVg6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ERVg6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZzdGF0LmlmSW5kZXg7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkRFU0NSOgorICAgIGNhc2UgTkVUU05NUF9JRkRFU0NSOgogICAgICAgICAqdmFyX2xlbiA9IGlmc3RhdC5pZkRlc2NyLm9fbGVuZ3RoOwogICAgICAgICAodm9pZCkgbWVtY3B5KHJldHVybl9idWYsIGlmc3RhdC5pZkRlc2NyLm9fYnl0ZXMsICp2YXJfbGVuKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKQEAgLTEzNDQsNjUgKzEzNjgsNjUgQEAKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZlR5cGU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVToKKyAgICBjYXNlIE5FVFNOTVBfSUZNVFU6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmTXR1OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVFRDoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVFRDoKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT5zcGVlZDsKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZlNwZWVkOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZQSFlTQUREUkVTUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZQSFlTQUREUkVTUzoKICAgICAgICAgKnZhcl9sZW4gPSBpZnN0YXQuaWZQaHlzQWRkcmVzcy5vX2xlbmd0aDsKICAgICAgICAgKHZvaWQpIG1lbWNweShyZXR1cm5fYnVmLCBpZnN0YXQuaWZQaHlzQWRkcmVzcy5vX2J5dGVzLCAqdmFyX2xlbik7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIHJldHVybl9idWY7Ci0gICAgY2FzZSBJRkFETUlOU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRkFETUlOU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZkFkbWluU3RhdHVzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPUEVSU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRk9QRVJTVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmT3BlclN0YXR1czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZkxhc3RDaGFuZ2U7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZkluT2N0ZXRzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJblVjYXN0UGt0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJbk5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJbkRpc2NhcmRzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJbkVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJblVua25vd25Qcm90b3M7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRPQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmT3V0T2N0ZXRzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRVQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dFVjYXN0UGt0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVROVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dE5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVERJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVERJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dERpc2NhcmRzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRFUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VURVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dEVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUUUxFTjoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRRTEVOOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dFFMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUNJRklDOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUNJRklDOgogCWxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmU3BlY2lmaWM7CiAJcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBkZWZhdWx0OgpAQCAtMTk0NywxMCArMTk3MSwxMyBAQAogICAgIGludCAgICAgICAgICAgICByZXQ7CiAKICAgICBpZiAoIWlmX3B0cikgewotICAgICAgICBpZiAoY291bnQpCisgICAgICAgIGlmIChjb3VudCkgewogICAgICAgICAgICAgaWZfcHRyID0KICAgICAgICAgICAgICAgICAobm1hcGlfcGh5c3RhdCAqKSBtYWxsb2Moc2l6ZW9mKG5tYXBpX3BoeXN0YXQpICogY291bnQpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoaWZfcHRyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKKworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJldHVybiAoMCk7ICAgICAgICAgLyogRU9GICovCiAgICAgfQogCkBAIC0xOTk3LDcgKzIwMjQsNyBAQAogICAgIHN0cnVjdCBpZm5ldCAgICBpZm5ldDsKICAgICBzdHJ1Y3QgaW5faWZhZGRyICppYSwgaW5faWZhZGRyOwogICAgIHNob3J0ICAgICAgICAgICBoYXNfaXBhZGRyID0gMDsKLSNpZiAhU1RSVUNUX0lGTkVUX0hBU19JRl9YTkFNRQorI2lmICFIQVZFX1NUUlVDVF9JRk5FVF9JRl9YTkFNRQogICAgIHJlZ2lzdGVyIGNoYXIgICpjcDsKICNlbmRpZgogCkBAIC0yMDA5LDcgKzIwMzYsNyBAQAogICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2ludGVyZmFjZXM6SW50ZXJmYWNlX1NjYW5fTmV4dCIsICJrbG9va3VwIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICNpZiBkZWZpbmVkKG5ldGJzZDEpIHx8IGRlZmluZWQob3BlbmJzZDIpCiAgICAgICAgIHN0cmxjcHkoc2F2ZU5hbWUsIGlmbmV0LmlmX3huYW1lLCBzaXplb2Yoc2F2ZU5hbWUpKTsKICNlbHNlCkBAIC0yMDY4LDcgKzIwOTUsNyBAQAogI2VuZGlmCiAgICAgICAgICAgICB9CiAKLSNpZiAhZGVmaW5lZChuZXRic2QxKSAmJiAhZGVmaW5lZChmcmVlYnNkMikgJiYgIWRlZmluZWQob3BlbmJzZDIpICYmICFkZWZpbmVkKFNUUlVDVF9JRk5FVF9IQVNfSUZfQUREUkxJU1QpCisjaWYgIWRlZmluZWQobmV0YnNkMSkgJiYgIWRlZmluZWQoZnJlZWJzZDIpICYmICFkZWZpbmVkKG9wZW5ic2QyKSAmJiAhZGVmaW5lZChIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSTElTVCkKICAgICAgICAgICAgIGlmbmV0LmlmX2FkZHJsaXN0ID0gKHN0cnVjdCBpZmFkZHIgKikgaWE7ICAgLyogV1JPTkcgREFUQSBUWVBFOyBPTkxZIEEgRkxBRyAqLwogI2VuZGlmCiAgICAgICAgICAgICAvKgpAQCAtMjUyOSwxMCArMjU1NiwxMCBAQAogICAgICAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGSU5ERVg6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ERVg6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaW50ZXJmYWNlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgY3AgPSBpZm1kLmlmbWRfbmFtZTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oY3ApOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBjcDsKQEAgLTI1NDIsMTYgKzI1NjksMTYgQEAKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9kYXRhLmlmaV90eXBlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZNVFU6CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOgogICAgICAgICBsb25nX3JldHVybiA9IChsb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfbXR1OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVFRDoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVFRDoKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT5zcGVlZDsKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9kYXRhLmlmaV9iYXVkcmF0ZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICpjcDsKICAgICAgICAgICAgIGlmIChnZXRfcGh5c19hZGRyZXNzKGludGVyZmFjZSwgJmNwLCB2YXJfbGVuKSkKQEAgLTI1NTksMTMgKzI1ODYsMTMgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY3A7CiAgICAgICAgIH0KLSAgICBjYXNlIElGQURNSU5TVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGQURNSU5TVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZtZC5pZm1kX2ZsYWdzICYgSUZGX1VQID8gMSA6IDI7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZmxhZ3MgJiBJRkZfUlVOTklORyA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZMQVNUQ0hBTkdFOgorICAgIGNhc2UgTkVUU05NUF9JRkxBU1RDSEFOR0U6CiAgICAgICAgIGlmIChpZm1kLmlmbWRfZGF0YS5pZmlfbGFzdGNoYW5nZS50dl9zZWMgPT0gMCAmJgogICAgICAgICAgICAgaWZtZC5pZm1kX2RhdGEuaWZpX2xhc3RjaGFuZ2UudHZfdXNlYyA9PSAwKSB7CiAgICAgICAgICAgICBsb25nX3JldHVybiA9IDA7CkBAIC0yNTc5LDQ1ICsyNjA2LDQ1IEBACiAgICAgICAgICAgICAgICAgICAgc3RhcnR0aW1lLnR2X3VzZWMpIC8gMTAwMDApKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfaWJ5dGVzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfaXBhY2tldHM7CiAgICAgICAgIGxvbmdfcmV0dXJuIC09ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9pbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5OVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9pbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkRJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRklORElTQ0FSRFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX2lxZHJvcHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRklORVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9kYXRhLmlmaV9pZXJyb3JzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVOS05PV05QUk9UT1M6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VTktOT1dOUFJPVE9TOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9ub3Byb3RvOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRPQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUT0NURVRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9vYnl0ZXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRVQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX29wYWNrZXRzOwogICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfb21jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVROVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9vbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfc25kX2Ryb3BzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRFUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VURVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9kYXRhLmlmaV9vZXJyb3JzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRRTEVOOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFFMRU46CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZtZC5pZm1kX3NuZF9sZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUNJRklDOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUNJRklDOgogICAgICAgICAqdmFyX2xlbiA9IG51bGxPaWRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIG51bGxPaWQ7CiAgICAgZGVmYXVsdDoKQEAgLTI3MTIsNyArMjczOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGTlVNQkVSOgorICAgIGNhc2UgTkVUU05NUF9JRk5VTUJFUjoKICAgICAgICAgbmV0c25tcF9hc3NlcnQoc2l6ZW9mKERXT1JEKSA9PSBzaXplb2YobG9uZ19yZXR1cm4pKTsKICAgICAgICAgR2V0TnVtYmVyT2ZJbnRlcmZhY2VzKChEV09SRCAqKSAmbG9uZ19yZXR1cm4pOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwpAQCAtMjc1MCwxMCArMjc3NywxMCBAQAogICAgIGlmIChHZXRJZkVudHJ5KCZpZlJvdykgIT0gTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGlmSW5kZXg7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkRFU0NSOgorICAgIGNhc2UgTkVUU05NUF9JRkRFU0NSOgogICAgICAgICAqdmFyX2xlbiA9IGlmUm93LmR3RGVzY3JMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGlmUm93LmJEZXNjcjsKICAgICBjYXNlIE5FVFNOTVBfSUZUWVBFOgpAQCAtMjc2Miw2OCArMjc4OSw2OCBAQAogICAgICAgICBlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdUeXBlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZNVFU6CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOgogICAgICAgICBsb25nX3JldHVybiA9IChsb25nKSBpZlJvdy5kd010dTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZSb3cuZHdTcGVlZDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgICp2YXJfbGVuID0gaWZSb3cuZHdQaHlzQWRkckxlbjsKICAgICAgICAgbWVtY3B5KHJldHVybl9idWYsIGlmUm93LmJQaHlzQWRkciwgKnZhcl9sZW4pOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSByZXR1cm5fYnVmOwotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd0FkbWluU3RhdHVzOwogICAgICAgICBhZG1pbl9zdGF0dXMgPSBsb25nX3JldHVybjsKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlSWZFbnRyeTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9CiAgICAgICAgICAgIChNSUJfSUZfT1BFUl9TVEFUVVNfT1BFUkFUSU9OQUwgPT0gaWZSb3cuZHdPcGVyU3RhdHVzKSA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZMQVNUQ0hBTkdFOgorICAgIGNhc2UgTkVUU05NUF9JRkxBU1RDSEFOR0U6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gMCAvKiBYWFggbm90IGEgVU5JWCBlcG9jaGFsIHRpbWUgaWZSb3cuZHdMYXN0Q2hhbmdlICovIDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5PQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJbk9jdGV0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJblVjYXN0UGt0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd0luTlVjYXN0UGt0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5ESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5EaXNjYXJkczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5FUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5FUlJPUlM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJbkVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd0luVW5rbm93blByb3RvczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dE9jdGV0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dFVjYXN0UGt0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVROVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3T3V0TlVjYXN0UGt0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VURElTQ0FSRFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXREaXNjYXJkczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dEVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUUUxFTjoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRRTEVOOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3T3V0UUxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFQ0lGSUM6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFQ0lGSUM6CiAgICAgICAgICp2YXJfbGVuID0gbnVsbE9pZExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgbnVsbE9pZDsKICAgICBkZWZhdWx0OgpAQCAtMjg0Miw3ICsyODY5LDcgQEAKICAgICAgICAgICAgICB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKQogewogICAgIE1JQl9JRlJPVyAgICAgICBpZkVudHJ5Um93OwotICAgIGlmICgoY2hhcikgbmFtZVs5XSAhPSBJRkFETUlOU1RBVFVTKSB7CisgICAgaWYgKChjaGFyKSBuYW1lWzldICE9IE5FVFNOTVBfSUZBRE1JTlNUQVRVUykgewogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmgKaW5kZXggNTFkNGIxZC4uYzE5YjdhNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaApAQCAtOCw3ICs4LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogY29uZmlndXJlIG1hY3JvcwogICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogLyoKICAqIGNvbmZsaWN0cyB3aXRoIHRoZSBuZXcgTUZEIHJld3JpdGUKQEAgLTYxLDI5ICs2MSwyOSBAQAogCiAjZW5kaWYgLyogVVNJTkdfSUZfTUlCX0lGVEFCTEVfTU9EVUxFICovCiAKLSNkZWZpbmUgSUZOVU1CRVIgICAgICAgIDAKLSNkZWZpbmUgSUZJTkRFWCAgICAgICAgIDEKLSNkZWZpbmUgSUZERVNDUiAgICAgICAgIDIKKyNkZWZpbmUgTkVUU05NUF9JRk5VTUJFUiAgICAgICAgMAorI2RlZmluZSBORVRTTk1QX0lGSU5ERVggICAgICAgICAxCisjZGVmaW5lIE5FVFNOTVBfSUZERVNDUiAgICAgICAgIDIKICNkZWZpbmUgTkVUU05NUF9JRlRZUEUgICAgICAgICAgMwotI2RlZmluZSBJRk1UVSAgICAgICAgICAgNAotI2RlZmluZSBJRlNQRUVEICAgICAgICAgNQotI2RlZmluZSBJRlBIWVNBRERSRVNTICAgNgotI2RlZmluZSBJRkFETUlOU1RBVFVTICAgNwotI2RlZmluZSBJRk9QRVJTVEFUVVMgICAgOAotI2RlZmluZSBJRkxBU1RDSEFOR0UgICAgOQotI2RlZmluZSBJRklOT0NURVRTICAgICAgMTAKLSNkZWZpbmUgSUZJTlVDQVNUUEtUUyAgIDExCi0jZGVmaW5lIElGSU5OVUNBU1RQS1RTICAxMgotI2RlZmluZSBJRklORElTQ0FSRFMgICAgMTMKLSNkZWZpbmUgSUZJTkVSUk9SUyAgICAgIDE0Ci0jZGVmaW5lIElGSU5VTktOT1dOUFJPVE9TIDE1Ci0jZGVmaW5lIElGT1VUT0NURVRTICAgICAxNgotI2RlZmluZSBJRk9VVFVDQVNUUEtUUyAgMTcKLSNkZWZpbmUgSUZPVVROVUNBU1RQS1RTIDE4Ci0jZGVmaW5lIElGT1VURElTQ0FSRFMgICAxOQotI2RlZmluZSBJRk9VVEVSUk9SUyAgICAgMjAKLSNkZWZpbmUgSUZPVVRRTEVOICAgICAgIDIxCi0jZGVmaW5lIElGU1BFQ0lGSUMgICAgICAyMgorI2RlZmluZSBORVRTTk1QX0lGTVRVICAgICAgICAgICA0CisjZGVmaW5lIE5FVFNOTVBfSUZTUEVFRCAgICAgICAgIDUKKyNkZWZpbmUgTkVUU05NUF9JRlBIWVNBRERSRVNTICAgNgorI2RlZmluZSBORVRTTk1QX0lGQURNSU5TVEFUVVMgICA3CisjZGVmaW5lIE5FVFNOTVBfSUZPUEVSU1RBVFVTICAgIDgKKyNkZWZpbmUgTkVUU05NUF9JRkxBU1RDSEFOR0UgICAgOQorI2RlZmluZSBORVRTTk1QX0lGSU5PQ1RFVFMgICAgICAxMAorI2RlZmluZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFMgICAxMQorI2RlZmluZSBORVRTTk1QX0lGSU5OVUNBU1RQS1RTICAxMgorI2RlZmluZSBORVRTTk1QX0lGSU5ESVNDQVJEUyAgICAxMworI2RlZmluZSBORVRTTk1QX0lGSU5FUlJPUlMgICAgICAxNAorI2RlZmluZSBORVRTTk1QX0lGSU5VTktOT1dOUFJPVE9TIDE1CisjZGVmaW5lIE5FVFNOTVBfSUZPVVRPQ1RFVFMgICAgIDE2CisjZGVmaW5lIE5FVFNOTVBfSUZPVVRVQ0FTVFBLVFMgIDE3CisjZGVmaW5lIE5FVFNOTVBfSUZPVVROVUNBU1RQS1RTIDE4CisjZGVmaW5lIE5FVFNOTVBfSUZPVVRESVNDQVJEUyAgIDE5CisjZGVmaW5lIE5FVFNOTVBfSUZPVVRFUlJPUlMgICAgIDIwCisjZGVmaW5lIE5FVFNOTVBfSUZPVVRRTEVOICAgICAgIDIxCisjZGVmaW5lIE5FVFNOTVBfSUZTUEVDSUZJQyAgICAgIDIyCiAKICNpZmRlZiBsaW51eAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jCmluZGV4IDY3MTdlMmUuLjE0MDFiZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwpAQCAtMTksMTIgKzE5LDEyIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIgogI2luY2x1ZGUgImlwLmgiCiAjaW5jbHVkZSAiaXBBZGRyLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmbmRlZiBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAogI2RlZmluZSBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAk1CkBAIC02NCw0MyArNjQsNjkgQEAKICAqIGluZm9ybWF0aW9uIGF0IAogICovCiBzdHJ1Y3QgdmFyaWFibGUxIGlwYWRkcl92YXJpYWJsZXNbXSA9IHsKLSAgICB7SVBBREFERFIsICAgICAgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezF9fSwKLSAgICB7SVBBRElGSU5ERVgsICAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezJ9fSwKKyAgICB7SVBBREFERFIsICAgICAgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcEFkZHJFbnRyeSwgMSwgezF9fSwKKyAgICB7SVBBRElGSU5ERVgsICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcEFkZHJFbnRyeSwgMSwgezJ9fSwKICNpZm5kZWYgc3VuVjMKLSAgICB7SVBBRE5FVE1BU0ssICAgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezN9fSwKKyAgICB7SVBBRE5FVE1BU0ssICAgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcEFkZHJFbnRyeSwgMSwgezN9fSwKICNlbmRpZgotICAgIHtJUEFEQkNBU1RBRERSLCBBU05fSU5URUdFUiwgICBST05MWSwgdmFyX2lwQWRkckVudHJ5LCAxLCB7NH19LAotICAgIHtJUEFEUkVBU01NQVgsICBBU05fSU5URUdFUiwgICBST05MWSwgdmFyX2lwQWRkckVudHJ5LCAxLCB7NX19CisgICAge0lQQURCQ0FTVEFERFIsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHs0fX0sCisgICAge0lQQURSRUFTTU1BWCwgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHs1fX0KIH07CiAKIHN0cnVjdCB2YXJpYWJsZTEgaXByb3V0ZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7SVBST1VURURFU1QsICAgIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezF9fSwKLSAgICB7SVBST1VURUlGSU5ERVgsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezJ9fSwKLSAgICB7SVBST1VURU1FVFJJQzEsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezN9fSwKLSAgICB7SVBST1VURU1FVFJJQzIsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezR9fSwKLSAgICB7SVBST1VURU1FVFJJQzMsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezV9fSwKLSAgICB7SVBST1VURU1FVFJJQzQsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezZ9fSwKLSAgICB7SVBST1VURU5FWFRIT1AsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezd9fSwKLSAgICB7SVBST1VURVRZUEUsICAgIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezh9fSwKLSAgICB7SVBST1VURVBST1RPLCAgIEFTTl9JTlRFR0VSLCAgIFJPTkxZLCAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezl9fSwKLSAgICB7SVBST1VURUFHRSwgICAgIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezEwfX0sCi0gICAge0lQUk9VVEVNQVNLLCAgICBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxMX19LAotICAgIHtJUFJPVVRFTUVUUklDNSwgQVNOX0lOVEVHRVIsICAgUldSSVRFLCB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTJ9fSwKLSAgICB7SVBST1VURUlORk8sICAgIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezEzfX0KKyAgICB7SVBST1VURURFU1QsICAgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezF9fSwKKyAgICB7SVBST1VURUlGSU5ERVgsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezJ9fSwKKyAgICB7SVBST1VURU1FVFJJQzEsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezN9fSwKKyAgICB7SVBST1VURU1FVFJJQzIsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezR9fSwKKyAgICB7SVBST1VURU1FVFJJQzMsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezV9fSwKKyAgICB7SVBST1VURU1FVFJJQzQsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezZ9fSwKKyAgICB7SVBST1VURU5FWFRIT1AsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezd9fSwKKyAgICB7SVBST1VURVRZUEUsICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezh9fSwKKyAgICB7SVBST1VURVBST1RPLCAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7OX19LAorICAgIHtJUFJPVVRFQUdFLCAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTB9fSwKKyAgICB7SVBST1VURU1BU0ssICAgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezExfX0sCisgICAge0lQUk9VVEVNRVRSSUM1LCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxMn19LAorICAgIHtJUFJPVVRFSU5GTywgICAgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxM319CiB9OwogCiBzdHJ1Y3QgdmFyaWFibGUxIGlwbWVkaWFfdmFyaWFibGVzW10gPSB7CiAjaWZkZWYgVVNJTkdfTUlCSUlfQVRfTU9EVUxFCiAjaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKLSAgICB7SVBNRURJQUlGSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9hdEVudHJ5LCAxLCB7MX19LAotICAgIHtJUE1FRElBUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2F0RW50cnksIDEsIHsyfX0sCi0gICAge0lQTUVESUFORVRBRERSRVNTLCAgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfYXRFbnRyeSwgMSwgezN9fSwKLSAgICB7SVBNRURJQVRZUEUsICAgICAgICBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9hdEVudHJ5LCAxLCB7NH19CisgICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezF9fSwKKyAgICB7SVBNRURJQVBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAorICAgIHtJUE1FRElBTkVUQUREUkVTUywgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHszfX0sCisgICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezR9fQogI2Vsc2UKLSAgICB7SVBNRURJQUlGSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBST05MWSwgdmFyX2F0RW50cnksIDEsIHsxfX0sCi0gICAge0lQTUVESUFQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAotICAgIHtJUE1FRElBTkVUQUREUkVTUywgIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfYXRFbnRyeSwgMSwgezN9fSwKLSAgICB7SVBNRURJQVRZUEUsICAgICAgICBBU05fSU5URUdFUiwgICBST05MWSwgdmFyX2F0RW50cnksIDEsIHs0fX0KKyAgICB7SVBNRURJQUlGSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHsxfX0sCisgICAge0lQTUVESUFQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAorICAgIHtJUE1FRElBTkVUQUREUkVTUywgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezN9fSwKKyAgICB7SVBNRURJQVRZUEUsICAgICAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHs0fX0KICNlbmRpZgogI2VuZGlmCiB9OwpAQCAtMTIyLDYgKzE0OCw3IEBACiBpbml0X2lwKHZvaWQpCiB7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyAgICBpbnQgcmM7CiAKICAgICAvKgogICAgICAqIHJlZ2lzdGVyIG91cnNlbHZlcyB3aXRoIHRoZSBhZ2VudCBhcyBhIGdyb3VwIG9mIHNjYWxhcnMuLi4KQEAgLTEyOSw3ICsxNTYsOSBAQAogICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pcCIsICJJbml0aWFsaXNpbmcgSVAgZ3JvdXBcbiIpKTsKICAgICByZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImlwIiwgaXBfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcF9vaWQsIE9JRF9MRU5HVEgoaXBfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKHJlZ2luZm8sIElQRk9SV0FSRElORywgSVBST1VURURJU0NBUkRTKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKHJlZ2luZm8sIElQRk9SV0FSRElORywgSVBST1VURURJU0NBUkRTKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICByZXR1cm47CiAKICAgICAvKgogICAgICAqIC4uLi4gd2l0aCBhIGxvY2FsIGNhY2hlCkBAIC0yMDAsNyArMjI5LDcgQEAKICNlbmRpZgogCiAjaWZkZWYgTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwKLSNkZWZpbmUgSVBfU1RBVF9TVFJVQ1RVUkUgICAgICBzdHJ1Y3QgaXBfbWliCisjZGVmaW5lIElQX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpcF9taWIKICNkZWZpbmUgVVNFU19TTk1QX0RFU0lHTkVEX0lQU1RBVAogI3VuZGVmIElQX05TVEFUUwogI2VuZGlmCkBAIC0zNzgsNyArNDA3LDcgQEAKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mb3J3YXJkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElQSU5VTktOT1dOUFJPVE9TOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1BST1RPCisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1BST1RPCiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfbm9wcm90bzsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtMzg2LDcgKzQxNSw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUElORElTQ0FSRFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0ZSQUdEUk9QUEVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX2ZyYWdkcm9wcGVkOyAgIC8qID8/ICovCiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTM5NCw3ICs0MjMsNyBAQAogICAgICAgICBjb250aW51ZTsKICNlbmRpZgogICAgIGNhc2UgSVBJTkRFTElWRVJTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19ERUxJVkVSRUQKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0RFTElWRVJFRAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX2RlbGl2ZXJlZCAmIDB4ZmZmZmZmZmY7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTQwMiw3ICs0MzEsNyBAQAogICAgICAgICBjb250aW51ZTsKICNlbmRpZgogICAgIGNhc2UgSVBPVVRSRVFVRVNUUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTE9DQUxPVVQKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0xPQ0FMT1VUCiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfbG9jYWxvdXQgJiAweGZmZmZmZmZmOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00MTAsNyArNDM5LDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQT1VURElTQ0FSRFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09EUk9QUEVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX29kcm9wcGVkOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00MzMsNyArNDYyLDcgQEAKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mcmFnbWVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSVBSRUFTTU9LUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfUkVBU1NFTUJMRUQKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX1JFQVNTRU1CTEVECiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfcmVhc3NlbWJsZWQ7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTQ0NCw3ICs0NzMsNyBAQAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX2ZyYWdkcm9wcGVkICsgaXBzdGF0Lmlwc19mcmFndGltZW91dDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJUEZSQUdPS1M6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0ZSQUdNRU5URUQKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdNRU5URUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mcmFnbWVudHM7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UgICAgICAgICAgICAvKiBYWFggKi8KQEAgLTQ1Myw3ICs0ODIsNyBAQAogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSVBGUkFHRkFJTFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGUkFHCisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URlJBRwogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX2NhbnRmcmFnOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00NjEsNyArNDkwLDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQRlJBR0NSRUFURVM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09GUkFHTUVOVFMKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX09GUkFHTUVOVFMKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19vZnJhZ21lbnRzOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00NjksNyArNDk4LDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQUk9VVEVESVNDQVJEUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9ST1VURQorI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9ST1VURQogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX25vcm91dGU7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTgwNiw5ICs4MzUsOSBAQAogICAgIHJldF92YWx1ZSA9IG5ldGJzZF9yZWFkX2lwX3N0YXQoJmlwc3RhdCk7CiAKICAgICBpZiAoIHJldF92YWx1ZSA8IDApIHsKLSAgICAgICBERUJVR01TR1RMKCgibWliSUkvaXAiLCAiRmFpbGVkIHRvIGxvYWQgSVAgR3JvdXAgKG5ldGJzZClcbiIpKTsKKwlERUJVR01TR1RMKCgibWliSUkvaXAiLCAiRmFpbGVkIHRvIGxvYWQgSVAgR3JvdXAgKG5ldGJzZClcbiIpKTsKICAgICB9IGVsc2UgewotICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pcCIsICJMb2FkZWQgSVAgR3JvdXAgKG5ldGJzZClcbiIpKTsKKwlERUJVR01TR1RMKCgibWliSUkvaXAiLCAiTG9hZGVkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfQogICAgIHJldHVybiByZXRfdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jCmluZGV4IGY1OWE2M2EuLjQxOTkzOTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jCkBAIC0xNiw3ICsxNiw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCkBAIC0xMTgsNyArMTE4LDYgQEAKIAogI2luY2x1ZGUgImlwLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmZGVmIGN5Z3dpbgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTIyMSw3ICsyMjAsNyBAQAogI2lmICFkZWZpbmVkKGZyZWVic2QyKSAmJiAhZGVmaW5lZChocHV4MTEpICYmICFkZWZpbmVkKGxpbnV4KQogICAgICAgICBpZiAoSW50ZXJmYWNlX1NjYW5fTmV4dCgmaW50ZXJmYWNlLCBOVUxMLCAmaWZuZXQsICZpbl9pZmFkZHIpID09IDApCiAgICAgICAgICAgICBicmVhazsKLSNpZmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0FERFJMSVNUCisjaWZkZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQUREUkxJU1QKICAgICAgICAgaWYgKGlmbmV0LmlmX2FkZHJsaXN0ID09IDApCiAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgIC8qIE5vIGFkZHJlc3MgZm91bmQgZm9yIGludGVyZmFjZSAqLwogI2VuZGlmCkBAIC0yOTAsNyArMjg5LDcgQEAKICAgICAgICAgcmV0dXJuIChOVUxMKTsKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbG93ZXN0LCAxNCAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gMTQ7Ci0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldHVybik7CiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIElQQURBRERSOgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaAppbmRleCA1MjZhMDYwLi5lYzY5Y2YzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaApAQCAtNSw3ICs1LDYgQEAKICNpZm5kZWYgX01JQkdST1VQX0lQQUREUl9ICiAjZGVmaW5lIF9NSUJHUk9VUF9JUEFERFJfSAogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogI2lmICFkZWZpbmVkKE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUykKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggMDBkN2QxNy4uODFlNjI1OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYwpAQCAtMjYwLDEyICsyNjAsMTAgQEAKIAogICAgIHZvaWQgICAgICAgICAgICpkYXRhX2NvbnRleHQ7CiAKLSAgICBvaWQgICAgICAgICAgICAqc3VmZml4OwotICAgIHNpemVfdCAgICAgICAgICBzdWZmaXhfbGVuOwotCiAgICAgLyoqIGNvbHVtbiBhbmQgcm93IGluZGV4IGVuY29kZWQgcG9ydGlvbiAqLwotICAgIHN1ZmZpeCA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDE7Ci0gICAgc3VmZml4X2xlbiA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoIC0KKyAgICBjb25zdCBvaWQgKiBjb25zdCBzdWZmaXggPQorICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxOworICAgIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGggLQogICAgICAgICAocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxKTsKIAogICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jCmluZGV4IDRlMTg2OGIuLjU5NDFjYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMKQEAgLTQsMTAgKzQsMTMgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaWYgZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCisjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKICNkZWZpbmUgX0tFUk5FTCAxCiAjZGVmaW5lIF9JX0RFRklORURfS0VSTkVMCiAjZW5kaWYKKyNpZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUworI2VuZGlmCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtMTM3LDcgKzE0MCw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCiAjaW5jbHVkZSAia2VybmVsLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgImlwdjYuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VzLmgiCiAKQEAgLTE2MSwxMDEgKzE2MywxMzAgQEAKICNlbmRpZgogCiBzdHJ1Y3QgdmFyaWFibGUzIGlwdjZfdmFyaWFibGVzW10gPSB7Ci0gICAge0lQVjZGT1JXQVJESU5HLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2LCAxLCB7MX19LAotICAgIHtJUFY2REVGQVVMVEhPUExJTUlULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2LCAxLCB7Mn19LAotICAgIHtJUFY2SU5URVJGQUNFUywgQVNOX0dBVUdFLCBST05MWSwgdmFyX2lwdjYsIDEsIHszfX0sCi0gICAge0lQVjZJRlRCTExBU1RDSEcsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaXB2NiwgMSwgezR9fSwKKyAgICB7SVBWNkZPUldBUkRJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjYsIDEsIHsxfX0sCisgICAge0lQVjZERUZBVUxUSE9QTElNSVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjYsIDEsIHsyfX0sCisgICAge0lQVjZJTlRFUkZBQ0VTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NiwgMSwgezN9fSwKKyAgICB7SVBWNklGVEJMTEFTVENIRywgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2LCAxLCB7NH19LAogCi0gICAge0lQVjZJRkRFU0NSLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDJ9fSwKLSAgICB7SVBWNklGTE9XTEFZRVIsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgM319LAotICAgIHtJUFY2SUZFRkZFQ1RNVFUsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA0fX0sCi0gICAge0lQVjZJRlJFQVNNTUFYU0laRSwgQVNOX1VOU0lHTkVELCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDV9fSwKKyAgICB7SVBWNklGREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgMn19LAorICAgIHtJUFY2SUZMT1dMQVlFUiwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCAzfX0sCisgICAge0lQVjZJRkVGRkVDVE1UVSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDR9fSwKKyAgICB7SVBWNklGUkVBU01NQVhTSVpFLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgNX19LAogCi0gICAge0lQVjZJRlRPS0VOLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDZ9fSwKLSAgICB7SVBWNklGVE9LRU5MRU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDd9fSwKLSAgICB7SVBWNklGUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgOH19LAotICAgIHtJUFY2SUZBRE1TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDl9fSwKLSAgICB7SVBWNklGT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgMTB9fSwKLSAgICB7SVBWNklGTEFTVENIQU5HRSwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCAxMX19LAorICAgIHtJUFY2SUZUT0tFTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA2fX0sCisgICAge0lQVjZJRlRPS0VOTEVOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA3fX0sCisgICAge0lQVjZJRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDh9fSwKKyAgICB7SVBWNklGQURNU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA5fX0sCisgICAge0lQVjZJRk9QRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDEwfX0sCisgICAge0lQVjZJRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgMTF9fSwKIAotICAgIHtJUFY2SUZTVEFUU0lOUkNWUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMX19LAotICAgIHtJUFY2SUZTVEFUU0lOSERSRVJSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMn19LAotICAgIHtJUFY2SUZTVEFUU1RPT0JJR0VSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDN9fSwKLSAgICB7SVBWNklGU1RBVFNJTk5PUk9VVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCA0fX0sCi0gICAge0lQVjZJRlNUQVRTSU5BRERSRVJSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgNX19LAotICAgIHtJUFY2SUZTVEFUU0lOVU5LTk9XUFJPVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDZ9fSwKLSAgICB7SVBWNklGU1RBVFNJTlRSVU5DQVRQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCA3fX0sCi0gICAge0lQVjZJRlNUQVRTSU5ESVNDQVJEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgOH19LAotICAgIHtJUFY2SUZTVEFUU0lOREVMSVZFUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDl9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRGT1JXREFUQVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDEwfX0sCi0gICAge0lQVjZJRlNUQVRTT1VUUkVRUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTF9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRESVNDQVJEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTJ9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRGUkFHT0tTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAxM319LAotICAgIHtJUFY2SUZTVEFUU09VVEZSQUdGQUlMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTR9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRGUkFHQ1JFQVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAxNX19LAotICAgIHtJUFY2SUZTVEFUU09VVFJFQVNNUkVRUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTZ9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRSRUFTTU9LUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTd9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRSRUFTTUZBSUxTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAxOH19LAotICAgIHtJUFY2SUZTVEFUU0lOTUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAxOX19LAotICAgIHtJUFY2SUZTVEFUU09VVE1DQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMjB9fSwKKyAgICB7SVBWNklGU1RBVFNJTlJDVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDF9fSwKKyAgICB7SVBWNklGU1RBVFNJTkhEUkVSUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDJ9fSwKKyAgICB7SVBWNklGU1RBVFNUT09CSUdFUlJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAzfX0sCisgICAge0lQVjZJRlNUQVRTSU5OT1JPVVRFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgNH19LAorICAgIHtJUFY2SUZTVEFUU0lOQUREUkVSUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDV9fSwKKyAgICB7SVBWNklGU1RBVFNJTlVOS05PV1BST1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCA2fX0sCisgICAge0lQVjZJRlNUQVRTSU5UUlVOQ0FUUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgN319LAorICAgIHtJUFY2SUZTVEFUU0lORElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDh9fSwKKyAgICB7SVBWNklGU1RBVFNJTkRFTElWRVJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCA5fX0sCisgICAge0lQVjZJRlNUQVRTT1VURk9SV0RBVEFTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxMH19LAorICAgIHtJUFY2SUZTVEFUU09VVFJFUVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDExfX0sCisgICAge0lQVjZJRlNUQVRTT1VURElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDEyfX0sCisgICAge0lQVjZJRlNUQVRTT1VURlJBR09LUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTN9fSwKKyAgICB7SVBWNklGU1RBVFNPVVRGUkFHRkFJTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE0fX0sCisgICAge0lQVjZJRlNUQVRTT1VURlJBR0NSRUFUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTV9fSwKKyAgICB7SVBWNklGU1RBVFNPVVRSRUFTTVJFUVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE2fX0sCisgICAge0lQVjZJRlNUQVRTT1VUUkVBU01PS1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE3fX0sCisgICAge0lQVjZJRlNUQVRTT1VUUkVBU01GQUlMUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTh9fSwKKyAgICB7SVBWNklGU1RBVFNJTk1DQVNUUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTl9fSwKKyAgICB7SVBWNklGU1RBVFNPVVRNQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDIwfX0sCiAKICNpZiAwCi0gICAge0lQVjZBRERSUFJFRklYT05MSU5LRkxHLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsCi0gICAgIHs3LCAxLCAzfX0sCi0gICAge0lQVjZBRERSUFJFRklYQVVUT05PTU9VU0ZMQUcsIElOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NkFkZHJFbnRyeSwgMywKLSAgICAgezcsIDEsIDR9fSwKLSAgICB7SVBWNkFERFJQUkVGSVhBRFZQUkVGRVJMSUZFLCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsCi0gICAgIHs3LCAxLCA1fX0sCi0gICAge0lQVjZBRERSUFJFRklYVkFMSURMSUZFLCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsCi0gICAgIHs3LCAxLCA2fX0sCisgICAge0lQVjZBRERSUFJFRklYT05MSU5LRkxHLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs3LCAxLCAzfX0sCisgICAge0lQVjZBRERSUFJFRklYQVVUT05PTU9VU0ZMQUcsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezcsIDEsIDR9fSwKKyAgICB7SVBWNkFERFJQUkVGSVhBRFZQUkVGRVJMSUZFLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs3LCAxLCA1fX0sCisgICAge0lQVjZBRERSUFJFRklYVkFMSURMSUZFLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs3LCAxLCA2fX0sCiAKLSAgICB7SVBWNkFERFJQRlhMRU4sIElOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezgsIDEsIDJ9fSwKLSAgICB7SVBWNkFERFJUWVBFLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCAzfX0sCi0gICAge0lQVjZBRERSQU5ZQ0FTVEZMQUcsIElOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezgsIDEsIDR9fSwKLSAgICB7SVBWNkFERFJTVEFUVVMsIElOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezgsIDEsIDV9fSwKKyAgICB7SVBWNkFERFJQRlhMRU4sIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezgsIDEsIDJ9fSwKKyAgICB7SVBWNkFERFJUWVBFLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCAzfX0sCisgICAge0lQVjZBRERSQU5ZQ0FTVEZMQUcsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezgsIDEsIDR9fSwKKyAgICB7SVBWNkFERFJTVEFUVVMsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NkFkZHJFbnRyeSwgMywgezgsIDEsIDV9fSwKIAotICAgIHtJUFY2Uk9VVEVJRklOREVYLCBJcFY2SUZJTkRFWCwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCA0fX0sCi0gICAge0lQVjZST1VURU5FWFRIT1AsIElwVjZBRERSRVNTLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLAotICAgICB7MTEsIDEsIDV9fSwKLSAgICB7SVBWNlJPVVRFVFlQRSwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA2fX0sCi0gICAge0lQVjZST1VURVBST1RPQ09MLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDd9fSwKLSAgICB7SVBWNlJPVVRFUE9MSUNZLCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLAotICAgICB7MTEsIDEsIDh9fSwKLSAgICB7SVBWNlJPVVRFQUdFLCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDl9fSwKLSAgICB7SVBWNlJPVVRFTkVYVEhPUFJESSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCAxMH19LAotICAgIHtJUFY2Uk9VVEVNRVRSSUMsIFVOU0lHTkVEMzIsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsCi0gICAgIHsxMSwgMSwgMTF9fSwKLSAgICB7SVBWNlJPVVRFV0VJR0hULCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLAotICAgICB7MTEsIDEsIDEyfX0sCi0gICAge0lQVjZST1VURUlORk8sIE9CSklELCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDEzfX0sCi0gICAge0lQVjZST1VURVZBTElELCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDE0fX0sCisgICAge0lQVjZST1VURUlGSU5ERVgsIElwVjZJRklOREVYLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDR9fSwKKyAgICB7SVBWNlJPVVRFTkVYVEhPUCwgSXBWNkFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgNX19LAorICAgIHtJUFY2Uk9VVEVUWVBFLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDZ9fSwKKyAgICB7SVBWNlJPVVRFUFJPVE9DT0wsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgN319LAorICAgIHtJUFY2Uk9VVEVQT0xJQ1ksIFVOU0lHTkVEMzIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgOH19LAorICAgIHtJUFY2Uk9VVEVBR0UsIFVOU0lHTkVEMzIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgOX19LAorICAgIHtJUFY2Uk9VVEVORVhUSE9QUkRJLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDEwfX0sCisgICAge0lQVjZST1VURU1FVFJJQywgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxMX19LAorICAgIHtJUFY2Uk9VVEVXRUlHSFQsIFVOU0lHTkVEMzIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgMTJ9fSwKKyAgICB7SVBWNlJPVVRFSU5GTywgT0JKSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgMTN9fSwKKyAgICB7SVBWNlJPVVRFVkFMSUQsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgMTR9fSwKIAotICAgIHtJUFY2TkVUVE9NRURJQVBIWUFERFIsIFNUUklORywgUk9OTFksIHZhcl9uZHBFbnRyeSwgMywgezEyLCAxLCAyfX0sCi0gICAge0lQVjZORVRUT01FRElBVFlQRSwgSU5URUdFUiwgUk9OTFksIHZhcl9uZHBFbnRyeSwgMywgezEyLCAxLCAzfX0sCi0gICAge0lQVjZORVRUT01FRElBU1RBVEUsIElOVEVHRVIsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgNH19LAotICAgIHtJUFY2TkVUVE9NRURJQUxBU1RVUERBVEUsIFRJTUVUSUNLUywgUk9OTFksIHZhcl9uZHBFbnRyeSwgMywKLSAgICAgezEyLCAxLCA1fX0sCi0gICAge0lQVjZORVRUT01FRElBVkFMSUQsIElOVEVHRVIsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgNn19LAorICAgIHtJUFY2TkVUVE9NRURJQVBIWUFERFIsIFNUUklORywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9uZHBFbnRyeSwgMywgezEyLCAxLCAyfX0sCisgICAge0lQVjZORVRUT01FRElBVFlQRSwgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9uZHBFbnRyeSwgMywgezEyLCAxLCAzfX0sCisgICAge0lQVjZORVRUT01FRElBU1RBVEUsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgNH19LAorICAgIHtJUFY2TkVUVE9NRURJQUxBU1RVUERBVEUsIFRJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9uZHBFbnRyeSwgMywgezEyLCAxLCA1fX0sCisgICAge0lQVjZORVRUT01FRElBVkFMSUQsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgNn19LAogI2VuZGlmCiB9Owogb2lkICAgICAgICAgICAgIGlwdjZfdmFyaWFibGVzX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA1NSwgMSB9OwpAQCAtMjY1LDc0ICsyOTYsNzQgQEAKICAgICBjb25maWdfYWRkX21pYihJUFY2IC0gTUlCKQogI2VuZGlmCiAgICAgIHN0cnVjdCB2YXJpYWJsZTMgaXB2NmljbXBfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgICB7SVBWNklGSUNNUElOTVNHLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMX19LAotICAgICAgICAge0lQVjZJRklDTVBJTkVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDJ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5EU1RVTlJDSFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAzfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOQURNUFJPSFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCA0fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOVElNRVhDRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCA1fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOUEFSTVBST0JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgNn19LAotICAgICAgICAge0lQVjZJRklDTVBJTlBLVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCA3fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElORUNIT1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCA4fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElORUNIT1JFUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCA5fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOUlRSU0xJQ0lUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDEwfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOUlRSQURWUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDExfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOTkJSU0xJQ0lUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDEyfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOTkJSQURWUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDEzfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOUkVESVJFQ1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTR9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVFFUllTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTV9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVJTUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxNn19LAotICAgICAgICAge0lQVjZJRklDTVBJTkdSUE1FUkVEQ1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxN319LAotICAgICAgICAge0lQVjZJRklDTVBPVVRNU0csIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxOH19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRFUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxOX19LAotICAgICAgICAge0lQVjZJRklDTVBPVVREU1RVTlJDSFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyMH19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRBRE1QUk9IUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDIxfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFRJTUVYQ0RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjJ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUUEFSTVBST0JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjN9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUUEtUVE9PQklHUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDI0fX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEVDSE9TLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjV9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VURUNIT1JFUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyNn19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRSVFJTTElDSVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjd9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUUlRSQURWUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDI4fX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVE5CUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyOX19LAotICAgICAgICAge0lQVjZJRklDTVBPVVROQlJBRFZTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMzB9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUUkVESVJFQ1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMzF9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUR1JQTUVRRVJZUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDMyfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUlNQUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDMzfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUkVEQ1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAzNH19CisgICAgICAgICB7SVBWNklGSUNNUElOTVNHLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMX19LAorICAgICAgICAge0lQVjZJRklDTVBJTkVSUk9SUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDJ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5EU1RVTlJDSFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAzfX0sCisgICAgICAgICB7SVBWNklGSUNNUElOQURNUFJPSFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCA0fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOVElNRVhDRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCA1fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOUEFSTVBST0JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgNn19LAorICAgICAgICAge0lQVjZJRklDTVBJTlBLVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCA3fX0sCisgICAgICAgICB7SVBWNklGSUNNUElORUNIT1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCA4fX0sCisgICAgICAgICB7SVBWNklGSUNNUElORUNIT1JFUFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCA5fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOUlRSU0xJQ0lUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDEwfX0sCisgICAgICAgICB7SVBWNklGSUNNUElOUlRSQURWUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDExfX0sCisgICAgICAgICB7SVBWNklGSUNNUElOTkJSU0xJQ0lUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDEyfX0sCisgICAgICAgICB7SVBWNklGSUNNUElOTkJSQURWUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDEzfX0sCisgICAgICAgICB7SVBWNklGSUNNUElOUkVESVJFQ1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTR9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVFFUllTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTV9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVJTUFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxNn19LAorICAgICAgICAge0lQVjZJRklDTVBJTkdSUE1FUkVEQ1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxN319LAorICAgICAgICAge0lQVjZJRklDTVBPVVRNU0csIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxOH19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRFUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxOX19LAorICAgICAgICAge0lQVjZJRklDTVBPVVREU1RVTlJDSFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyMH19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRBRE1QUk9IUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDIxfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFRJTUVYQ0RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjJ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUUEFSTVBST0JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjN9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUUEtUVE9PQklHUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDI0fX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEVDSE9TLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjV9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VURUNIT1JFUFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyNn19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRSVFJTTElDSVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjd9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUUlRSQURWUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDI4fX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVE5CUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyOX19LAorICAgICAgICAge0lQVjZJRklDTVBPVVROQlJBRFZTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMzB9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUUkVESVJFQ1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMzF9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUR1JQTUVRRVJZUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDMyfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUlNQUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDMzfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUkVEQ1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAzNH19CiAgICAgIH07CiBvaWQgICAgICAgICAgICAgaXB2NmljbXBfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA1NiwgMSB9OwogI2lmIDAKQEAgLTM0MCw3ICszNzEsOCBAQAogICAgIGNvbmZpZ19hZGRfbWliKElQVjYgLSBJQ01QIC0gTUlCKQogI2VuZGlmCiAgICAgIHN0cnVjdCB2YXJpYWJsZTIgaXB2NnVkcF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAgIHtJUFY2VURQSUZJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdWRwNiwgMiwgezEsIDN9fQorICAgICAgICAge0lQVjZVRFBJRklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX3VkcDYsIDIsIHsxLCAzfX0KICAgICAgfTsKIG9pZCAgICAgICAgICAgICBpcHY2dWRwX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNywgNiB9OwogI2lmIDAKQEAgLTM0OCwxNSArMzgwLDE3IEBACiAgICAgY29uZmlnX2FkZF9taWIoSVBWNiAtIFVEUCAtIE1JQikKICNlbmRpZgogICAgICBzdHJ1Y3QgdmFyaWFibGUyIGlwdjZ0Y3BfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgICB7SVBWNlRDUENPTk5TVEFURSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdGNwNiwgMiwgezEsIDZ9fSwKKyAgICAgICAgIHtJUFY2VENQQ09OTlNUQVRFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX3RjcDYsIDIsIHsxLCA2fX0sCiAgICAgIH07CiBvaWQgICAgICAgICAgICAgaXB2NnRjcF92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDYsIDE2IH07CiAjaWYgMAogY29uZmlnX2xvYWRfbWliKDEuMyAuNiAuMSAuMyAuODYgLjEsIDcsIGlwdjZ0Y3BfdmFyaWFibGVzKQogICAgIGNvbmZpZ19hZGRfbWliKElQVjYgLSBUQ1AgLSBNSUIpCiAjZW5kaWYKLSAgICAgdm9pZAotICAgICAgICAgICAgICAgICAgICAgaW5pdF9pcHY2KCkKKwordm9pZAoraW5pdF9pcHY2KHZvaWQpCiB7CiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgdG8gaGFuZGxlIG91ciBtaWIgdHJlZSAKQEAgLTQwMCw3ICs0MzQsNyBAQAogICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwogCi0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKIH0KQEAgLTQ0MCw3ICs0NzQsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KICAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7CiB9CkBAIC05MzEsNyArOTY1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYKLSNpZmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfU0VDCisjaWZkZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9TRUMKICAgICAgICAgICAgIGlmICghZ290YW5zd2VyKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0ICAgIGlmbmV0OwogCkBAIC0xOTYwLDcgKzE5OTQsNyBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGxpbnV4X3JlYWRfaXA2X3N0YXQoc3RydWN0IGlwNl9taWIgKmlwNnN0YXQpCiB7CiAgICAgaWYgKCFpcDZzdGF0KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYwppbmRleCBiYjZmODY3Li4yNmI4OTljIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYwpAQCAtNyw4ICs3LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZW5kaWYKQEAgLTE2LDQzICsxNCwxMDkgQEAKICNpZiBIQVZFX1NZU19QQVJBTV9ICiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDxlcnJuby5oPgogCiAjaW5jbHVkZSAia2VybmVsX2xpbnV4LmgiCiAKIHN0cnVjdCBpcF9taWIgICBjYWNoZWRfaXBfbWliOworc3RydWN0IGlwNl9taWIgICBjYWNoZWRfaXA2X21pYjsKIHN0cnVjdCBpY21wX21pYiBjYWNoZWRfaWNtcF9taWI7CitzdHJ1Y3QgaWNtcDZfbWliIGNhY2hlZF9pY21wNl9taWI7CitzdHJ1Y3QgaWNtcDRfbXNnX21pYiBjYWNoZWRfaWNtcDRfbXNnX21pYjsKIHN0cnVjdCB0Y3BfbWliICBjYWNoZWRfdGNwX21pYjsKIHN0cnVjdCB1ZHBfbWliICBjYWNoZWRfdWRwX21pYjsKK3N0cnVjdCB1ZHA2X21pYiAgY2FjaGVkX3VkcDZfbWliOwogCiAjZGVmaW5lIElQX1NUQVRTX0xJTkUJIklwOiAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUiCiAjZGVmaW5lIElDTVBfU1RBVFNfTElORQkiSWNtcDogJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSIKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfTElORSAiSWNtcE1zZzogIgogI2RlZmluZSBUQ1BfU1RBVFNfTElORQkiVGNwOiAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1IgogI2RlZmluZSBVRFBfU1RBVFNfTElORQkiVWRwOiAlbHUgJWx1ICVsdSAlbHUiCisjZGVmaW5lIElQNl9TVEFUU19MSU5FICAgIklwNiIKKyNkZWZpbmUgSUNNUDZfU1RBVFNfTElORSAiSWNtcDYiCiAjZGVmaW5lIFVEUDZfU1RBVFNfTElORSAiVWRwNiIKIAogI2RlZmluZSBJUF9TVEFUU19QUkVGSVhfTEVOCTQKICNkZWZpbmUgSUNNUF9TVEFUU19QUkVGSVhfTEVOCTYKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfUFJFRklYX0xFTiA5CiAjZGVmaW5lIFRDUF9TVEFUU19QUkVGSVhfTEVOCTUKICNkZWZpbmUgVURQX1NUQVRTX1BSRUZJWF9MRU4JNQorI2RlZmluZSBJUDZfU1RBVFNfUFJFRklYX0xFTgkzCisjZGVmaW5lIElDTVA2X1NUQVRTX1BSRUZJWF9MRU4JNQogI2RlZmluZSBVRFA2X1NUQVRTX1BSRUZJWF9MRU4gICA0CiAKK2ludAorZGVjb2RlX2ljbXBfbXNnKGNoYXIgKmxpbmUsIGNoYXIgKmRhdGEsIHN0cnVjdCBpY21wNF9tc2dfbWliICptc2cpCit7CisgICAgY2hhciAqdG9rZW4sICpzYXZlcHRyLCAqbGluZXB0ciwgKnNhdmVwdHIxLCAqZGF0YXB0ciwgKmRlbGltID0gTlVMTDsKKyAgICBjaGFyIGxpbmVfY3B5WzEwMjRdOworICAgIGNoYXIgZGF0YV9jcHlbMTAyNF07CisgICAgbG9uZyBpbmRleDsKKworICAgIGlmKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyoKKyAgICAgKiBTaW5jZSB3ZSBhcmUgdXNpbmcgc3RydG9rLCB0aGVyZSBpcyBhIHBvc3NpYmxpdHkgb2YgdGhlIG9yZ2luYWwgZGF0YQorICAgICAqIGdldHRpbmcgbW9kaWZpZWQuIFNvIHdlIHRha2UgYSBsb2NhbCBjb3B5IGZvciB0aGlzIHB1cnBvc2UgZXZlbiB0aG91Z2gKKyAgICAgKiBpdHMgZXhwZW5zaXZlLgorICAgICAqLworICAgIHN0cmxjcHkobGluZV9jcHksIGxpbmUsIHNpemVvZihsaW5lX2NweSkpOworICAgIHN0cmxjcHkoZGF0YV9jcHksIGRhdGEsIHNpemVvZihkYXRhX2NweSkpOworCisgICAgbGluZXB0ciA9IGxpbmVfY3B5OworICAgIGRhdGFwdHIgPSBkYXRhX2NweTsKKyAgICBzYXZlcHRyMSA9IE5VTEw7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYoTlVMTCA9PSAodG9rZW4gPSBzdHJ0b2tfcihsaW5lcHRyLCAiICIsICZzYXZlcHRyKSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbGluZXB0ciA9IE5VTEw7CisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgaWYgKDAgPT0gc3RybmNtcChzdHJzZXAoJnRva2VuLCAiZSIpLCAiT3V0VHlwIiwgNikpIHsKKyAgICAgICAgICAgIGluZGV4ID0gc3RydG9sKHRva2VuLCAmZGVsaW0sIDApOworICAgICAgICAgICAgaWYgKEVSQU5HRSA9PSBlcnJubykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA+IDI1NSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOVUxMID09ICh0b2tlbiA9IHN0cnRva19yKGRhdGFwdHIsICIgIiwgJnNhdmVwdHIxKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkYXRhcHRyID0gTlVMTDsKKyAgICAgICAgICAgIG1zZy0+dmFsc1tpbmRleF0uT3V0VHlwZSA9IGF0b2kodG9rZW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5kZXggPSBzdHJ0b2wodG9rZW4sICZkZWxpbSwgMCk7CisgICAgICAgICAgICBpZiAoRVJBTkdFID09IGVycm5vKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID4gMjU1KSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoTlVMTCA9PSAodG9rZW4gPSBzdHJ0b2tfcihkYXRhcHRyLCAiICIsICZzYXZlcHRyMSkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGF0YXB0ciA9IE5VTEw7CisgICAgICAgICAgICBtc2ctPnZhbHNbaW5kZXhdLkluVHlwZSA9IGF0b2kodG9rZW4pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQogCiBpbnQKIGxpbnV4X3JlYWRfbWliSUlfc3RhdHModm9pZCkKIHsKICAgICBGSUxFICAgICAgICAgICAqaW4gPSBmb3BlbigiL3Byb2MvbmV0L3NubXAiLCAiciIpOwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLSAgICBGSUxFICAgICAgICAgICAqaW42OwotICAgIHVuc2lnbmVkIGxvbmcgICB2YWx1ZTsKLSNlbmRpZgotICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOwotCisgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF0sIGRhdGFbMTAyNF07CisgICAgaW50IHJldCA9IDA7CiAgICAgaWYgKCFpbikgewogICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4IiwiVW5hYmxlIHRvIG9wZW4gL3Byb2MvbmV0L3NubXAiKSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKIAorICAgIG1lbXNldChsaW5lLCAnXDAnLCBzaXplb2YobGluZSkpOworICAgIG1lbXNldChkYXRhLCAnXDAnLCBzaXplb2YoZGF0YSkpOwogICAgIHdoaWxlIChsaW5lID09IGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CiAgICAgICAgIGlmICghc3RybmNtcChsaW5lLCBJUF9TVEFUU19MSU5FLCBJUF9TVEFUU19QUkVGSVhfTEVOKSkgewogICAgICAgICAgICAgc3NjYW5mKGxpbmUsIElQX1NUQVRTX0xJTkUsCkBAIC0xMDQsNiArMTY4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF9pY21wX21pYi5pY21wT3V0VGltZXN0YW1wUmVwcywKICAgICAgICAgICAgICAgICAgICAmY2FjaGVkX2ljbXBfbWliLmljbXBPdXRBZGRyTWFza3MsCiAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF9pY21wX21pYi5pY21wT3V0QWRkck1hc2tSZXBzKTsKKyAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChsaW5lLCBJQ01QX01TR19TVEFUU19MSU5FLCBJQ01QX01TR19TVEFUU19QUkVGSVhfTEVOKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIE5vdGU6IFdlIGhhdmUgdG8gZG8gdGhpcyBkaWZmZXJlbnRseSBmcm9tIG90aGVyIHN0YXRzIGFzIHRoZQorICAgICAgICAgICAgICogY291bnRlcnMgdG8gdGhpcyBzdGF0cyBhcmUgZHluYW1pYy4gU28gd2Ugd2lsbCBub3Qga25vdyB0aGUKKyAgICAgICAgICAgICAqIG51bWJlciBvZiBjb3VudGVycyBhdCBhIGdpdmVuIHRpbWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGZnZXRzKGRhdGEsIHNpemVvZihkYXRhKSwgaW4pOworICAgICAgICAgICAgaWYoZGVjb2RlX2ljbXBfbXNnKGxpbmUgKyBJQ01QX01TR19TVEFUU19QUkVGSVhfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArIElDTVBfTVNHX1NUQVRTX1BSRUZJWF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAmY2FjaGVkX2ljbXA0X21zZ19taWIpIDwgMCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0ID0gMTsKICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChsaW5lLCBUQ1BfU1RBVFNfTElORSwgVENQX1NUQVRTX1BSRUZJWF9MRU4pKSB7CiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgcmV0ID0gc3NjYW5mKGxpbmUsIFRDUF9TVEFUU19MSU5FLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FjaGVkX3RjcF9taWIudGNwUnRvQWxnb3JpdGhtLApAQCAtMTMyLDM1ICsyMDksNiBAQAogICAgIH0KICAgICBmY2xvc2UoaW4pOwogCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgotICAgIGluNiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcDYiLCAiciIpOwotICAgIGlmIChpbjYpIHsKLSAgICAgIAotICAgICAgICB3aGlsZSAobGluZSA9PSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluNikpIHsKLQotICAgICAgICAgICAgaWYgKCgnVScgIT0gbGluZVswXSkgfHwKLSAgICAgICAgICAgICAgICAoMCAhPSBzdHJuY21wKGxpbmUsIFVEUDZfU1RBVFNfTElORSwgVURQNl9TVEFUU19QUkVGSVhfTEVOKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHNzY2FuZihsaW5lLCAiJSpzICVsdSIgLCAmdmFsdWUpOwotICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgnTycgPT0gbGluZVs0XSkgLyogVWRwNk91dERhdGFncmFtcyAqLwotICAgICAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcE91dERhdGFncmFtcyArPSB2YWx1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCdOJyA9PSBsaW5lWzRdKSAvKiBVZHA2Tm9Qb3J0cyAqLwotICAgICAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcE5vUG9ydHMgKz0gdmFsdWU7Ci0gICAgICAgICAgICBlbHNlIGlmICgnRCcgPT0gbGluZVs2XSkgLyogVWRwNkluRGF0YWdyYW1zICovCi0gICAgICAgICAgICAgICAgY2FjaGVkX3VkcF9taWIudWRwSW5EYXRhZ3JhbXMgKz0gdmFsdWU7Ci0gICAgICAgICAgICBlbHNlIGlmICgnRScgPT0gbGluZVs2XSkgLyogVWRwNkluRXJyb3JzICovCi0gICAgICAgICAgICAgICAgY2FjaGVkX3VkcF9taWIudWRwSW5FcnJvcnMgKz0gdmFsdWU7Ci0KLSAgICAgICAgfQotICAgICAgICBmY2xvc2UoaW42KTsKLSAgICB9IGVsc2UgewotICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4IiwiVW5hYmxlIHRvIG9wZW4gL3Byb2MvbmV0L3NubXA2IikpOwotICAgIH0KLQotI2VuZGlmCi0KICAgICAvKgogICAgICAqIFR3ZWFrIGlsbGVnYWwgdmFsdWVzOgogICAgICAqCkBAIC0xNzYsNyArMjI0LDggQEAKICAgICAgKi8KICAgICBpZiAoIWNhY2hlZF90Y3BfbWliLnRjcFJ0b0FsZ29yaXRobSkKICAgICAgICAgY2FjaGVkX3RjcF9taWIudGNwUnRvQWxnb3JpdGhtID0gMTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIGludApAQCAtMTg5LDYgKzIzOCwxMzYgQEAKICAgICByZXR1cm4gMDsKIH0KIAoraW50IGxpbnV4X3JlYWRfaXA2X3N0YXQoIHN0cnVjdCBpcDZfbWliICppcDZzdGF0KQoreworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBGSUxFICAgICAgICAgICAqaW47CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CisgICAgdW5zaWduZWQgbG9uZyAgIHN0YXRzOworICAgIGNoYXIgICAgICAgICAgICplbmRwOworICAgIGludCAgICAgICAgICAgICBtYXRjaDsKKyNlbmRpZgorCisgICAgbWVtc2V0KChjaGFyICopIGlwNnN0YXQsICgwKSwgc2l6ZW9mKCppcDZzdGF0KSk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgIlJlYWRpbmcgL3Byb2MvbmV0L3NubXA2IHN0YXRzXG4iKSk7CisgICAgaWYgKE5VTEwgPT0gKGluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wNiIsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaXA2c3RhdHMiLAorICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIG9wZW4gL3Byb2MvbmV0L3NubXA2XG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB3aGlsZSAoTlVMTCAhPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgeworICAgICAgICBpZiAoMCAhPSBzdHJuY21wKGxpbmUsIElQNl9TVEFUU19MSU5FLCBJUDZfU1RBVFNfUFJFRklYX0xFTikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoMSAhPSBzc2NhbmYobGluZSwgIiUqcyAlbHUiLCAmc3RhdHMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW5kcCA9IHN0cmNocihsaW5lLCAnICcpOworICAgICAgICAqZW5kcCA9ICdcMCc7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaXA2c3RhdHMiLCAiRmluZCB0YWc6ICVzXG4iLCBsaW5lKSk7CisKKyAgICAgICAgbWF0Y2ggPSAxOworICAgICAgICBpZiAoMCA9PSBzdHJuY21wKGxpbmUgKyAzLCAiSW4iLCAyKSkgeyAgLyogSW4gKi8KKyAgICAgICAgICAgIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIkFkZHJFcnJvcnMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluQWRkckVycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIkRlbGl2ZXJzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkRlbGl2ZXJzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiRGlzY2FyZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluRGlzY2FyZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJIZHJFcnJvcnMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluSGRyRXJyb3JzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiTWNhc3RQa3RzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbk1jYXN0UGt0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIk5vUm91dGVzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbk5vUm91dGVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiUmVjZWl2ZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluUmVjZWl2ZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJUcnVuY2F0ZWRQa3RzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJblRydW5jYXRlZFBrdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJUb29CaWdFcnJvcnMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluVG9vQmlnRXJyb3JzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiVW5rbm93blByb3RvcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5Vbmtub3duUHJvdG9zID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobGluZSArIDMsICJPdXQiLCAzKSkgeyAgLyogT3V0ICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDYsICJEaXNjYXJkcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0RGlzY2FyZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDYsICJGb3J3RGF0YWdyYW1zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZPdXRGb3J3RGF0YWdyYW1zID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiTWNhc3RQa3RzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZPdXRNY2FzdFBrdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDYsICJOb1JvdXRlcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0Tm9Sb3V0ZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDYsICJSZXF1ZXN0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0UmVxdWVzdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgMywgIlJlYXNtIiwgNSkpIHsgIC8qIFJlYXNtICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJGYWlscyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2UmVhc21GYWlscyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIk9LcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2UmVhc21PS3MgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJSZXFkcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2UmVhc21SZXFkcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlRpbWVvdXQiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtVGltZW91dCA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXRjaCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJuY21wKGxpbmUgKyAzLCAiRnJhZyIsIDQpKSB7ICAvKiBGcmFnICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJDcmVhdGVzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZGcmFnQ3JlYXRlcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkZhaWxzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZGcmFnRmFpbHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJPS3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkZyYWdPS3MgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYoIW1hdGNoKQorICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaXMgYW4gdW5rbm93biB0YWdcbiIsIGxpbmUpKTsKKyAgICB9CisKKyAgICBmY2xvc2UoaW4pOworI2VuZGlmCisKKyAgICBtZW1jcHkoKGNoYXIgKikgaXA2c3RhdCwgKGNoYXIgKikgJmNhY2hlZF9pcDZfbWliLCBzaXplb2YoKmlwNnN0YXQpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50CitsaW51eF9yZWFkX2ljbXBfbXNnX3N0YXQoc3RydWN0IGljbXBfbWliICppY21wc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqaWNtcG1zZ3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmbGFnKQoreworICAgIGludCByZXQ7CisKKyAgICBtZW1zZXQoaWNtcHN0YXQsIDAsIHNpemVvZigqaWNtcHN0YXQpKTsKKyAgICBtZW1zZXQoaWNtcG1zZ3N0YXQsIDAsIHNpemVvZigqaWNtcG1zZ3N0YXQpKTsKKworICAgIGlmICgocmV0ID0gbGludXhfcmVhZF9taWJJSV9zdGF0cygpKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmIChyZXQpIHsKKyAgICAgICBtZW1jcHkoaWNtcG1zZ3N0YXQsICZjYWNoZWRfaWNtcDRfbXNnX21pYiwgc2l6ZW9mKCppY21wbXNnc3RhdCkpOworICAgICAgICpmbGFnID0gMTsgLyogV2UgaGF2ZSBhIHZhbGlkIGljbXBtc2cgKi8KKyAgICB9CisKKyAgICBtZW1jcHkoaWNtcHN0YXQsICZjYWNoZWRfaWNtcF9taWIsIHNpemVvZigqaWNtcHN0YXQpKTsKKyAgICByZXR1cm4gMDsKK30KKwogaW50CiBsaW51eF9yZWFkX2ljbXBfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKmljbXBzdGF0KQogewpAQCAtMjAxLDYgKzM4MCwxNjcgQEAKIH0KIAogaW50CitsaW51eF9yZWFkX2ljbXA2X3BhcnNlKHN0cnVjdCBpY21wNl9taWIgKmljbXA2c3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKmljbXA2bXNnc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdXBwb3J0KQoreworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBGSUxFICAgICAgICAgICAqaW47CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CisgICAgY2hhciAgICAgICAgICAgIG5hbWVbMjU1XTsKKyAgICB1bnNpZ25lZCBsb25nICAgc3RhdHM7CisgICAgY2hhciAgICAgICAgICAgKmVuZHAsICp2YWxzOworICAgIGludCAgICAgICAgICAgICBtYXRjaDsKKyNlbmRpZgorCisgICAgbWVtc2V0KGljbXA2c3RhdCwgMCwgc2l6ZW9mKCppY21wNnN0YXQpKTsKKyAgICBpZiAoTlVMTCAhPSBpY21wNm1zZ3N0YXQpCisgICAgICAgIG1lbXNldChpY21wNm1zZ3N0YXQsIDAsIHNpemVvZigqaWNtcDZtc2dzdGF0KSk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pY21wNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAiUmVhZGluZyAvcHJvYy9uZXQvc25tcDYgc3RhdHNcbiIpKTsKKyAgICBpZiAoTlVMTCA9PSAoaW4gPSBmb3BlbigiL3Byb2MvbmV0L3NubXA2IiwgInIiKSkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pY21wNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBvcGVuIC9wcm9jL25ldC9zbm1wNlxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKE5VTEwgIT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKKyAgICAgICAgaWYgKDAgIT0gc3RybmNtcChsaW5lLCBJQ01QNl9TVEFUU19MSU5FLCBJQ01QNl9TVEFUU19QUkVGSVhfTEVOKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICgyICE9IHNzY2FuZihsaW5lLCAiJXMgJWx1IiwgbmFtZSwgJnN0YXRzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVuZHAgPSBzdHJjaHIobGluZSwgJyAnKTsKKyAgICAgICAgKmVuZHAgPSAnXDAnOworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L2ljbXA2c3RhdHMiLCAiRmluZCB0YWc6ICVzXG4iLCBsaW5lKSk7CisKKyAgICAgICAgdmFscyA9IG5hbWU7CisgICAgICAgIGlmIChOVUxMICE9IGljbXA2bXNnc3RhdCkgeworICAgICAgICAgICAgaW50IHR5cGU7CisgICAgICAgICAgICBpZiAoMCA9PSBzdHJuY21wKG5hbWUsICJJY21wNk91dFR5cGUiLCAxMikpIHsKKyAgICAgICAgICAgICAgICBzdHJzZXAoJnZhbHMsICJlIik7CisgICAgICAgICAgICAgICAgdHlwZSA9IGF0b2kodmFscyk7CisgICAgICAgICAgICAgICAgaWYgKCB0eXBlIDwgMCB8fCB0eXBlID4gMjU1ICkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWNtcDZtc2dzdGF0LT52YWxzW3R5cGVdLk91dFR5cGUgPSBzdGF0czsKKyAgICAgICAgICAgICAgICAqc3VwcG9ydCA9IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RybmNtcChuYW1lLCAiSWNtcDZJblR5cGUiLCAxMSkpIHsKKyAgICAgICAgICAgICAgICBzdHJzZXAoJnZhbHMsICJlIik7CisgICAgICAgICAgICAgICAgdHlwZSA9IGF0b2kodmFscyk7CisgICAgICAgICAgICAgICAgaWYgKCB0eXBlIDwgMCB8fCB0eXBlID4gMjU1ICkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWNtcDZtc2dzdGF0LT52YWxzW3R5cGVdLkluVHlwZSA9IHN0YXRzOworICAgICAgICAgICAgICAgICpzdXBwb3J0ID0gMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1hdGNoID0gMTsKKyAgICAgICAgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgNSwgIkluIiwgMikpIHsgIC8qIEluICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJEZXN0VW5yZWFjaHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkRlc3RVbnJlYWNocyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkVjaG9zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5FY2hvcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkVjaG9SZXBsaWVzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5FY2hvUmVwbGllcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkVycm9ycyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluRXJyb3JzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiR3JvdXBNZW1iUXVlcmllcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluR3JvdXBNZW1iUXVlcmllcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkdyb3VwTWVtYlJlZHVjdGlvbnMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJHcm91cE1lbWJSZXNwb25zZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIk1zZ3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbk1zZ3MgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJOZWlnaGJvckFkdmVydGlzZW1lbnRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiTmVpZ2hib3JTb2xpY2l0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluTmVpZ2hib3JTb2xpY2l0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlBrdFRvb0JpZ3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJblBrdFRvb0JpZ3MgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJQYXJtUHJvYmxlbXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJblBhcm1Qcm9ibGVtcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlJlZGlyZWN0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluUmVkaXJlY3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiUm91dGVyQWR2ZXJ0aXNlbWVudHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiUm91dGVyU29saWNpdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJblJvdXRlclNvbGljaXRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiVGltZUV4Y2RzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5UaW1lRXhjZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgNSwgIk91dCIsIDMpKSB7ICAvKiBPdXQgKi8KKyAgICAgICAgICAgIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIkRlc3RVbnJlYWNocyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dERlc3RVbnJlYWNocyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIkVjaG9SZXBsaWVzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0RWNob1JlcGxpZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJHcm91cE1lbWJSZWR1Y3Rpb25zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9ucyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIkdyb3VwTWVtYlJlc3BvbnNlcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIk1zZ3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRNc2dzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiTmVpZ2hib3JBZHZlcnRpc2VtZW50cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJOZWlnaGJvclNvbGljaXRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0TmVpZ2hib3JTb2xpY2l0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlBrdFRvb0JpZ3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRQa3RUb29CaWdzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiUGFybVByb2JsZW1zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0UGFybVByb2JsZW1zID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiUmVkaXJlY3RzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0UmVkaXJlY3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiUm91dGVyU29saWNpdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRSb3V0ZXJTb2xpY2l0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlRpbWVFeGNkcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dFRpbWVFeGNkcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXRjaCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtYXRjaCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYoIW1hdGNoKQorICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pY21wNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBhbiB1bmtub3duIHRhZ1xuIiwgbGluZSkpOworICAgIH0KKworICAgIGZjbG9zZShpbik7CisjZW5kaWYKKworICAgIG1lbWNweSgoY2hhciAqKSBpY21wNnN0YXQsIChjaGFyICopICZjYWNoZWRfaWNtcDZfbWliLAorICAgICAgICAgICBzaXplb2YoKmljbXA2c3RhdCkpOworICAgIHJldHVybiAwOworfQorCitpbnQKK2xpbnV4X3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqaWNtcDZzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqaWNtcDZtc2dzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnN1cHBvcnQpCit7CisgICAgIGlmIChsaW51eF9yZWFkX2ljbXA2X3BhcnNlKGljbXA2c3RhdCwgaWNtcDZtc2dzdGF0LCBzdXBwb3J0KSA8IDApCisgICAgICAgICByZXR1cm4gLTE7CisgICAgIGVsc2UKKyAgICAgICAgIHJldHVybiAwOworfQorCitpbnQKK2xpbnV4X3JlYWRfaWNtcDZfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICppY21wNnN0YXQpCit7CisgICBpZiAobGludXhfcmVhZF9pY21wNl9wYXJzZShpY21wNnN0YXQsIE5VTEwsIE5VTEwpIDwgMCkKKyAgICAgICByZXR1cm4gLTE7CisgICBlbHNlCisgICAgICAgcmV0dXJuIDA7Cit9CisKK2ludAogbGludXhfcmVhZF90Y3Bfc3RhdChzdHJ1Y3QgdGNwX21pYiAqdGNwc3RhdCkKIHsKICAgICBtZW1zZXQoKGNoYXIgKikgdGNwc3RhdCwgKDApLCBzaXplb2YoKnRjcHN0YXQpKTsKQEAgLTIxNiw2ICs1NTYsNzMgQEAKICAgICBtZW1zZXQoKGNoYXIgKikgdWRwc3RhdCwgKDApLCBzaXplb2YoKnVkcHN0YXQpKTsKICAgICBpZiAobGludXhfcmVhZF9taWJJSV9zdGF0cygpID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgeworICAgICAgICBzdHJ1Y3QgdWRwNl9taWIgdWRwNnN0YXQ7CisgICAgICAgIG1lbXNldCgmdWRwNnN0YXQsIDAsIHNpemVvZih1ZHA2c3RhdCkpOworCisgICAgICAgIGlmIChsaW51eF9yZWFkX3VkcDZfc3RhdCgmdWRwNnN0YXQpID09IDApIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcE91dERhdGFncmFtcyArPSB1ZHA2c3RhdC51ZHA2T3V0RGF0YWdyYW1zOworICAgICAgICAgICAgY2FjaGVkX3VkcF9taWIudWRwTm9Qb3J0cyAgICAgICs9IHVkcDZzdGF0LnVkcDZOb1BvcnRzOworICAgICAgICAgICAgY2FjaGVkX3VkcF9taWIudWRwSW5EYXRhZ3JhbXMgICs9IHVkcDZzdGF0LnVkcDZJbkRhdGFncmFtczsKKyAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRXJyb3JzICAgICArPSB1ZHA2c3RhdC51ZHA2SW5FcnJvcnM7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKICAgICBtZW1jcHkoKGNoYXIgKikgdWRwc3RhdCwgKGNoYXIgKikgJmNhY2hlZF91ZHBfbWliLCBzaXplb2YoKnVkcHN0YXQpKTsKICAgICByZXR1cm4gMDsKIH0KKworaW50CitsaW51eF9yZWFkX3VkcDZfc3RhdChzdHJ1Y3QgdWRwNl9taWIgKnVkcDZzdGF0KQoreworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBGSUxFICAgICAgICAgICAqaW47CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CisgICAgdW5zaWduZWQgbG9uZyAgIHN0YXRzOworICAgIGNoYXIgICAgICAgICAgICplbmRwOworI2VuZGlmCisKKyAgICBtZW1zZXQodWRwNnN0YXQsIDAsIHNpemVvZigqdWRwNnN0YXQpKTsKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L3VkcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgIlJlYWRpbmcgL3Byb2MvbmV0L3NubXA2IHN0YXRzXG4iKSk7CisgICAgaWYgKE5VTEwgPT0gKGluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wNiIsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvdWRwNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBvcGVuIC9wcm9jL25ldC9zbm1wNlxuIikpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB3aGlsZSAoTlVMTCAhPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgeworICAgICAgICBpZiAoMCAhPSBzdHJuY21wKGxpbmUsIFVEUDZfU1RBVFNfTElORSwgVURQNl9TVEFUU19QUkVGSVhfTEVOKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICgxICE9IHNzY2FuZihsaW5lLCAiJSpzICVsdSIsICZzdGF0cykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbmRwID0gc3RyY2hyKGxpbmUsICcgJyk7CisgICAgICAgICplbmRwID0gJ1wwJzsKKyAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC91ZHA2c3RhdHMiLCAiRmluZCB0YWc6ICVzXG4iLCBsaW5lKSk7CisKKyAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA0LCAiT3V0RGF0YWdyYW1zIikpIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHA2X21pYi51ZHA2T3V0RGF0YWdyYW1zID0gc3RhdHM7CisgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDQsICJOb1BvcnRzIikpIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHA2X21pYi51ZHA2Tm9Qb3J0cyA9IHN0YXRzOworICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA0LCAiSW5EYXRhZ3JhbXMiKSkgeworICAgICAgICAgICAgY2FjaGVkX3VkcDZfbWliLnVkcDZJbkRhdGFncmFtcyA9IHN0YXRzOworICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA0LCAiSW5FcnJvcnMiKSkgeworICAgICAgICAgICAgY2FjaGVkX3VkcDZfbWliLnVkcDZJbkVycm9ycyA9IHN0YXRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC91ZHA2c3RhdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIGFuIHVua25vd24gdGFnXG4iLCBsaW5lKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmY2xvc2UoaW4pOworI2VuZGlmCisKKyAgICBtZW1jcHkoKGNoYXIgKikgdWRwNnN0YXQsIChjaGFyICopICZjYWNoZWRfdWRwNl9taWIsIHNpemVvZigqdWRwNnN0YXQpKTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmgKaW5kZXggZmI3ZGI5Ni4uYzZkZmNhOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmgKQEAgLTI5LDYgKzI5LDMxIEBACiAgICAgdW5zaWduZWQgbG9uZyAgIGlwUm91dGluZ0Rpc2NhcmRzOwogfTsKIAorc3RydWN0IGlwNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5SZWNlaXZlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluSGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Ub29CaWdFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbk5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5BZGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Vbmtub3duUHJvdG9zOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5UcnVuY2F0ZWRQa3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5EaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluRGVsaXZlcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXRGb3J3RGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0UmVxdWVzdHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXREaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dE5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21UaW1lb3V0OworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21SZXFkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtT0tzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21GYWlsczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdPS3M7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnQ3JlYXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluTWNhc3RQa3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0TWNhc3RQa3RzOworfTsKKwogc3RydWN0IGljbXBfbWliIHsKICAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluTXNnczsKICAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRXJyb3JzOwpAQCAtNTgsNiArODMsNTEgQEAKICAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrUmVwczsKIH07CiAKK3N0cnVjdCBpY21wNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk1zZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkRlc3RVbnJlYWNoczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Qa3RUb29CaWdzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5QYXJtUHJvYmxlbXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRWNob3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRWNob1JlcGxpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUXVlcmllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUmVkdWN0aW9uczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Sb3V0ZXJTb2xpY2l0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Sb3V0ZXJBZHZlcnRpc2VtZW50czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5OZWlnaGJvclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUmVkaXJlY3RzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRNc2dzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXREZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFBrdFRvb0JpZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UGFybVByb2JsZW1zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRFY2hvUmVwbGllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0Um91dGVyU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE5laWdoYm9yU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworfTsKKworc3RydWN0IGljbXBfbXNnX21pYiB7CisgICAgdW5zaWduZWQgbG9uZyBJblR5cGU7CisgICAgdW5zaWduZWQgbG9uZyBPdXRUeXBlOworfTsKKworLyogTGV0cyB1c2Ugd3JhcHBlciBzdHJ1Y3R1cmVzIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCitzdHJ1Y3QgaWNtcDRfbXNnX21pYiB7CisgICAgc3RydWN0IGljbXBfbXNnX21pYiB2YWxzWzI1Nl07Cit9OworCitzdHJ1Y3QgaWNtcDZfbXNnX21pYiB7CisgICAgc3RydWN0IGljbXBfbXNnX21pYiB2YWxzWzI1Nl07Cit9OworCiBzdHJ1Y3QgdWRwX21pYiB7CiAgICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRGF0YWdyYW1zOwogICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBOb1BvcnRzOwpAQCAtNjUsNiArMTM1LDEzIEBACiAgICAgdW5zaWduZWQgbG9uZyAgIHVkcE91dERhdGFncmFtczsKIH07CiAKK3N0cnVjdCB1ZHA2X21pYiB7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5EYXRhZ3JhbXM7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2Tm9Qb3J0czsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZJbkVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZPdXREYXRhZ3JhbXM7Cit9OworCiBzdHJ1Y3QgdGNwX21pYiB7CiAgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b0FsZ29yaXRobTsKICAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvTWluOwpAQCAtODYsOCArMTYzLDE3IEBACiAKIAogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaXBfc3RhdChzdHJ1Y3QgaXBfbWliICopOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaXA2X3N0YXQoc3RydWN0IGlwNl9taWIgKik7CiBpbnQgICAgICAgICAgICAgbGludXhfcmVhZF9pY21wX3N0YXQoc3RydWN0IGljbXBfbWliICopOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcDZfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICopOwogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfdWRwX3N0YXQoc3RydWN0IHVkcF9taWIgKik7CitpbnQgICAgICAgICAgICAgbGludXhfcmVhZF91ZHA2X3N0YXQoc3RydWN0IHVkcDZfbWliICopOwogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfdGNwX3N0YXQoc3RydWN0IHRjcF9taWIgKik7CitpbnQgICAgICAgICAgICAgbGludXhfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZsYWcpOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3VwcG9ydCk7CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0tFUk5FTF9MSU5VWF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaCBiL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oCmluZGV4IDQwYThjOTMuLmM3NDk5ZDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgSEFWRV9TWVNfVENQSVBTVEFUU19ICiAjaW5jbHVkZSA8c3lzL3RjcGlwc3RhdHMuaD4KICNlbmRpZgotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jCmluZGV4IDU5MjFkNjguLmMxZWRkMDcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jCkBAIC0xMDEsMTMgKzEwMSw4IEBACiAjIGVuZGlmCiAjZW5kaWYKIAotI2lmIEhBVkVfU1REQVJHX0gKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgogCiAgLyoqLwogLyoqICJtYWNyb3MgYW5kIHZhcmlhYmxlcyBmb3IgcmVnaXN0ZXJpbmcgdGhlIE9JRCB0cmVlIiAqLwpAQCAtMTUyLDMxICsxNDcsMzcgQEAKICAqIHN0cnVjdHVyZSB0aGF0IHRlbGxzIHRoZSBhZ2VudCwgd2hpY2ggZnVuY3Rpb24gcmV0dXJucyB3aGF0IHZhbHVlcyAKICAqLwogc3RhdGljIHN0cnVjdCB2YXJpYWJsZTMgbXRhX3ZhcmlhYmxlc1tdID0gewotICAgIHtNVEFSRUNFSVZFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDF9fSwKLSAgICB7TVRBU1RPUkVETUVTU0FHRVMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDJ9fSwKLSAgICB7TVRBVFJBTlNNSVRURURNRVNTQUdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsCi0gICAgIHsxLCAxLCAzfX0sCi0gICAge01UQVJFQ0VJVkVEVk9MVU1FLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDR9fSwKLSAgICB7TVRBU1RPUkVEVk9MVU1FLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA1fX0sCi0gICAge01UQVRSQU5TTUlUVEVEVk9MVU1FLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDZ9fSwKKyAgICB7TVRBUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCAxfX0sCisgICAge01UQVNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCAyfX0sCisgICAge01UQVRSQU5TTUlUVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgM319LAorICAgIHtNVEFSRUNFSVZFRFZPTFVNRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA0fX0sCisgICAge01UQVNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNX19LAorICAgIHtNVEFUUkFOU01JVFRFRFZPTFVNRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA2fX0sCiAKLSAgICB7TVRBR1JPVVBSRUNFSVZFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgMn19LAotICAgIHtNVEFHUk9VUFJFSkVDVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCAzfX0sCi0gICAge01UQUdST1VQU1RPUkVETUVTU0FHRVMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgNH19LAotICAgIHtNVEFHUk9VUFRSQU5TTUlUVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCA1fX0sCi0gICAge01UQUdST1VQUkVDRUlWRURWT0xVTUUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCA2fX0sCi0gICAge01UQUdST1VQU1RPUkVEVk9MVU1FLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDd9fSwKLSAgICB7TVRBR1JPVVBUUkFOU01JVFRFRFZPTFVNRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDh9fSwKLSAgICB7TVRBR1JPVVBOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCAyNX19LAotICAgIHtNVEFHUk9VUEhJRVJBUkNIWSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDMxfX0KKyAgICB7TVRBR1JPVVBSRUNFSVZFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgMn19LAorICAgIHtNVEFHUk9VUFJFSkVDVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCAzfX0sCisgICAge01UQUdST1VQU1RPUkVETUVTU0FHRVMsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgNH19LAorICAgIHtNVEFHUk9VUFRSQU5TTUlUVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCA1fX0sCisgICAge01UQUdST1VQUkVDRUlWRURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCA2fX0sCisgICAge01UQUdST1VQU1RPUkVEVk9MVU1FLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDd9fSwKKyAgICB7TVRBR1JPVVBUUkFOU01JVFRFRFZPTFVNRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDh9fSwKKyAgICB7TVRBR1JPVVBOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCAyNX19LAorICAgIHtNVEFHUk9VUEhJRVJBUkNIWSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDMxfX0KIH07CiAgLyoqLwogLyoqICJvdGhlciBtYWNyb3MgYW5kIHN0cnVjdHVyZXMiICovCkBAIC0zNDIsMzcgKzM0MywxNSBAQAogICogICAgLi4uOiAgICAgICAgIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byBpbnNlcnQgaW50byB0aGUgZXJyb3IgbWVzc2FnZSBzdHJpbmcKICAqCiAgKi8KLSNpZiBIQVZFX1NUREFSR19ICi0gICAgc3RhdGljIHZvaWQKK3N0YXRpYyB2b2lkCiBwcmludF9lcnJvcihpbnQgcHJpb3JpdHksIEJPT0wgY29uZmlnLCBCT09MIGNvbmZpZ19vbmx5LAogICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotI2Vsc2UKLSAgICBzdGF0aWMgdm9pZAotcHJpbnRfZXJyb3IodmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7CiAgICAgdmFfbGlzdCAgICAgICAgIGFwOwogICAgIGNoYXIgICAgICAgICAgICBidWZmZXJbMiAqIEZJTEVOQU1FTEVOICsgMjAwXTsgICAgICAvKiBJIGtub3csIHRoYXQncyBub3QgcGVyZmVjdGx5IHNhZmUsIGJ1dCBzaW5jZSBJIGRvbid0IHVzZSBtb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoYW4gdHdvIGZpbGVuYW1lcyBpbiBvbmUgZXJyb3IgbWVzc2FnZSwgdGhhdCBzaG91bGQgYmUgZW5vdWdoICovCiAKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0jZWxzZQotICAgIGludCAgICAgICAgICAgICBwcmlvcml0eTsKLSAgICBCT09MICAgICAgICAgICAgY29uZmlnOwotICAgIEJPT0wgICAgICAgICAgICBjb25maWdfb25seTsKLSAgICBjb25zdCBjaGFyICAgICAqZnVuY3Rpb247Ci0gICAgY29uc3QgY2hhciAgICAgKmZvcm1hdDsKLQotICAgIHZhX3N0YXJ0KGFwKTsKLSAgICBwcmlvcml0eSA9IHZhX2FyZyhhcCwgaW50KTsKLSAgICBjb25maWcgPSB2YV9hcmcoYXAsIEJPT0wpOwotICAgIGNvbmZpZ19vbmx5ID0gdmFfYXJnKGFwLCBCT09MKTsKLSAgICBmdW5jdGlvbiA9IHZhX2FyZyhhcCwgY2hhciAqKTsKLSAgICBmb3JtYXQgPSB2YV9hcmcoYXAsIGNoYXIgKik7Ci0jZW5kaWYKLQogICAgIHZzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCBmb3JtYXQsIGFwKTsKIAogICAgIGlmIChjb25maWcpIHsKQEAgLTEwNTQsOSArMTAzMyw3IEBACiAgICAgICAgIG9wZW5fc2VuZG1haWxzdChUUlVFKTsKIAogICAgICAgICBpZiAoc2VuZG1haWxzdF9maCA9PSAtMSkgewotICAgICAgICAgICAgY2hhciAgICAgICAgICAgIHN0cltGSUxFTkFNRUxFTiArIDUwXTsKLSAgICAgICAgICAgIHNwcmludGYoc3RyLCAiY291bGRuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIsIHNlbmRtYWlsc3RfZm4pOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcihzdHIpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiY291bGRuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIsIHNlbmRtYWlsc3RfZm4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaAppbmRleCAzNDgzMGYyLi5iZjdlODA2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oCkBAIC0yNyw4ICsyNyw2IEBACiAjaW5jbHVkZSAiaXAuaCIKICNpbmNsdWRlICJrZXJuZWwuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VzLmgiCi0jaW5jbHVkZSAic3RydWN0LmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogCiAjZWxzZSAvKiAhTkVUU05NUF9DQU5fVVNFX1NZU0NUTCAqLwogCkBAIC05NCwyOCArOTIsMjggQEAKICNlbmRpZgogI3VuZGVmCUtFUk5FTAogI2lmZGVmIFJURU5UUllfNF80Ci0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VTklUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVAogI2RlZmluZSBydF91bml0IHJ0X3JlZmNudCAgICAgICAvKiBSZXVzZSB0aGlzIGZpZWxkIGZvciBkZXZpY2UgIyAqLwogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKICNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKICNlbmRpZgogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVEVOVFJZXzRfMyAqLwotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAjZGVmaW5lIHJ0X2RzdCBydF9ub2Rlcy0+cm5fa2V5CiAjZW5kaWYKLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0hBU0gKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9IQVNICiAjZGVmaW5lIHJ0X2hhc2ggcnRfcGFkMQogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9SRUZDTlQKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9SRUZDTlQKICNpZm5kZWYgaHB1eDEwCiAjZGVmaW5lIHJ0X3JlZmNudCBydF9wYWQyCiAjZW5kaWYKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVVNFCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVVNFCiAjZGVmaW5lIHJ0X3VzZSBydF9wYWQzCiAjZW5kaWYKLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VOSVQKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VTklUCiAjZGVmaW5lIHJ0X3VuaXQgcnRfcmVmY250ICAgICAgIC8qIFJldXNlIHRoaXMgZmllbGQgZm9yIGRldmljZSAjICovCiAjZW5kaWYKICNlbmRpZgpAQCAtMTYxLDYgKzE1OSwxNyBAQAogCiAjaWZkZWYgc29sYXJpczIKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCisvKiBTb2xhcmlzIDIuNi83IG5lZWQgc3lzL3N0cmVhbS5oIChtYmxrX3QpIHRvIGluY2x1ZGUgaW5ldC9pcC5oICovCisjaWZkZWYgSEFWRV9TWVNfU1RSRUFNX0gKKyNpbmNsdWRlIDxzeXMvc3RyZWFtLmg+CisjZW5kaWYKKy8qIFNvbGFyaXMgMi42IG5lZWRzIGluZXQvY29tbW9uLmggKHUxNikgdG8gaW5jbHVkZSBpbmV0L2lwLmggKi8KKyNpZmRlZiBIQVZFX0lORVRfQ09NTU9OX0gKKyNpbmNsdWRlIDxpbmV0L2NvbW1vbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9JTkVUX0lQX0gKKyNpbmNsdWRlIDxpbmV0L2lwLmg+CisjZW5kaWYgLyogSEFWRV9JTkVUX0lQX0ggKi8KICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TWVNfU1lTQ1RMX0gKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jCmluZGV4IGY2YTRmM2UuLjNlMjc5OWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYwpAQCAtNzYsMTAgKzc2LDEwIEBACiAKICNpZiAhZGVmaW5lZCAoV0lOMzIpICYmICFkZWZpbmVkIChjeWd3aW4pCiAKLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0RTVAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0RTVAogI2RlZmluZSBydF9kc3QgcnRfbm9kZXMtPnJuX2tleQogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNICisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogI2RlZmluZSBydF9oYXNoIHJ0X3BhZDEKICNlbmRpZgogCkBAIC0yNjksNyArMjY5LDcgQEAKIH0KIAogCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKICN1bmRlZiBydF9kc3QKICNlbmRpZgogCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICAgIHJldHVybiAoJnJ0Y2FjaGVbaV0pOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdHJ1Y3QgcnRlbnQgICAqCkBAIC0zMjksNyArMzI5LDcgQEAKICAgICAgICAgICAgIHJldHVybiAoJnJ0Y2FjaGVbaV0pOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogCiB9CiAKQEAgLTM1MSw3ICszNTEsNyBAQAogc3RydWN0IHJ0ZW50ICAgKgogY2FjaGVLZXJuZWxSVEUodV9sb25nIGRzdCkKIHsKLSAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgLyogZm9yIG5vdyAqLworICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBmb3Igbm93ICovCiAgICAgLyoKICAgICAgKiAuLi4uLi4gCiAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYwppbmRleCBiMTQzYmY3Li4wYTIzYzllIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMKQEAgLTEsOTcgKzEsMTUgQEAKLS8qCi0gKiAgU05NUHYxIE1JQiBncm91cCBpbXBsZW1lbnRhdGlvbiAtIHNubXAuYwotICoKLSAqLwotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotCi0jaWYgSEFWRV9XSU5TT0NLX0gKLSNpbmNsdWRlIDx3aW5zb2NrLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAic25tcF9taWIuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAidXBkYXRlcy5oIgogCitzdGF0aWMgY29uc3Qgb2lkIHNubXBfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDExIH07CiAKLSAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgotCSAqCi0JICogIEtlcm5lbCAmIGludGVyZmFjZSBpbmZvcm1hdGlvbiwKLQkgKiAgIGFuZCBpbnRlcm5hbCBmb3J3YXJkIGRlY2xhcmF0aW9ucwotCSAqCi0JICoqKioqKioqKioqKioqKioqKioqKi8KLQotZXh0ZXJuIGxvbmcgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci1leHRlcm4gaW50ICAgICAgc25tcF9lbmFibGVhdXRoZW50cmFwc3NldDsKLWludCAgICAgICAgICAgICBvbGRfc25tcF9lbmFibGVhdXRoZW50cmFwczsKLQotLyoqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBJbml0aWFsaXNhdGlvbiAmIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgd2UncmUgZ29pbmcgdG8gYXNrIHRoZSBhZ2VudCB0byByZWdpc3RlciBvdXIKLSAqIGluZm9ybWF0aW9uIGF0IAotICovCi1zdHJ1Y3QgdmFyaWFibGUxIHNubXBfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBJTlBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxfX0sCi0gICAge1NOTVBPVVRQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Mn19LAotICAgIHtTTk1QSU5CQURWRVJTSU9OUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezN9fSwKLSNpZiAhZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU05NUFYxKSB8fCAhZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU05NUFYyQykKLSAgICB7U05NUElOQkFEQ09NTVVOSVRZTkFNRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHs0fX0sCi0gICAge1NOTVBJTkJBRENPTU1VTklUWVVTRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHs1fX0sCi0jZW5kaWYgLyogc3VwcG9ydCBmb3IgY29tbXVuaXR5IGJhc2VkIFNOTVAgKi8KLSAgICB7U05NUElOQVNOUEFSU0VFUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHs2fX0sCi0gICAge1NOTVBJTlRPT0JJR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHs4fX0sCi0gICAge1NOTVBJTk5PU1VDSE5BTUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7OX19LAotICAgIHtTTk1QSU5CQURWQUxVRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxMH19LAotICAgIHtTTk1QSU5SRUFET05MWVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxMX19LAotICAgIHtTTk1QSU5HRU5FUlJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTJ9fSwKLSAgICB7U05NUElOVE9UQUxSRVFWQVJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTN9fSwKLSAgICB7U05NUElOVE9UQUxTRVRWQVJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTR9fSwKLSAgICB7U05NUElOR0VUUkVRVUVTVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxNX19LAotICAgIHtTTk1QSU5HRVRORVhUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE2fX0sCi0gICAge1NOTVBJTlNFVFJFUVVFU1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTd9fSwKLSAgICB7U05NUElOR0VUUkVTUE9OU0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTh9fSwKLSAgICB7U05NUElOVFJBUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxOX19LAotICAgIHtTTk1QT1VUVE9PQklHUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezIwfX0sCi0gICAge1NOTVBPVVROT1NVQ0hOQU1FUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezIxfX0sCi0gICAge1NOTVBPVVRCQURWQUxVRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyMn19LAotICAgIHtTTk1QT1VUR0VORVJSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezI0fX0sCi0gICAge1NOTVBPVVRHRVRSRVFVRVNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezI1fX0sCi0gICAge1NOTVBPVVRHRVRORVhUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezI2fX0sCi0gICAge1NOTVBPVVRTRVRSRVFVRVNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezI3fX0sCi0gICAge1NOTVBPVVRHRVRSRVNQT05TRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyOH19LAotICAgIHtTTk1QT1VUVFJBUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyOX19LAotICAgIHtTTk1QRU5BQkxFQVVUSEVOVFJBUFMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wLCAxLCB7MzB9fSwKLSAgICB7U05NUFNJTEVOVERST1BTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MzF9fSwKLSAgICB7U05NUFBST1hZRFJPUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHszMn19Ci19OwotCi0vKgotICogRGVmaW5lIHRoZSBPSUQgcG9pbnRlciB0byB0aGUgdG9wIG9mIHRoZSBtaWIgdHJlZSB0aGF0IHdlJ3JlCi0gKiByZWdpc3RlcmluZyB1bmRlcm5lYXRoIAotICovCi1vaWQgICAgICAgICAgICAgc25tcF92YXJpYWJsZXNfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDExIH07Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKLWV4dGVybiBvaWQgICAgICBzeXN0ZW1fbW9kdWxlX29pZFtdOwotZXh0ZXJuIGludCAgICAgIHN5c3RlbV9tb2R1bGVfb2lkX2xlbjsKLWV4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX2NvdW50OwotI2VuZGlmCitleHRlcm4gbG9uZyBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOworZXh0ZXJuIGludCBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0OwogCiBzdGF0aWMgaW50CiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzX3N0b3JlKGludCBhLCBpbnQgYiwgdm9pZCAqYywgdm9pZCAqZCkKQEAgLTEwNiwxNCArMjQsMTAxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK2hhbmRsZV90cnV0aHZhbHVlKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKKyAgICAgICAgaW50IHJlcyA9IG5ldHNubXBfY2hlY2tfdmJfdHJ1dGh2YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiKTsKKyAgICAgICAgaWYgKHJlcyAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgcmVzKTsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK3N0YXRpYyBuZXRzbm1wX21pYl9oYW5kbGVyKgorbmV0c25tcF9nZXRfdHJ1dGh2YWx1ZSh2b2lkKQoreworICAgIG5ldHNubXBfbWliX2hhbmRsZXIqIGhuZCA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIoInRydXRodmFsdWUiLCBoYW5kbGVfdHJ1dGh2YWx1ZSk7CisgICAgaWYgKGhuZCkKKyAgICAgICAgaG5kLT5mbGFncyB8PSBNSUJfSEFORExFUl9BVVRPX05FWFQ7CisgICAgcmV0dXJuIGhuZDsKK30KKworc3RhdGljIGludAoraGFuZGxlX3NubXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKwkgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKwkgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisJICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKyAgICBjYXNlIE1PREVfR0VUOgorCXsKKwkgICAgb2lkIGlkeCA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbT0lEX0xFTkdUSChzbm1wX29pZCldOworCSAgICBzd2l0Y2goaWR4KSB7CisJICAgIGNhc2UgNzoKKwkgICAgY2FzZSAyMzoKKyAgICAgICAgICAgIGNhc2UgMzA6CisJCW5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisJCQkJCSAgU05NUF9OT1NVQ0hPQkpFQ1QpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJeworCQkgICAgdV9pbnQgdmFsdWUgPQorCQkJc25tcF9nZXRfc3RhdGlzdGljKGlkeCAtIDEgKyBTVEFUX1NOTVBJTlBLVFMpOworCQkgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorCQkJCQkgICAgICh1X2NoYXIgKikmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworCQl9CisJCWJyZWFrOworCSAgICB9CisJfQorCWJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9zbm1wXG4iLCByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCitleHRlcm4gb2lkICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXTsKK2V4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW47CitleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9jb3VudDsKKyNlbmRpZgorCisvKiogSW5pdGlhbGl6ZXMgdGhlIHNubXAgbW9kdWxlICovCiB2b2lkCiBpbml0X3NubXBfbWliKHZvaWQpCiB7Ci0gICAgLyoKLSAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgdG8gaGFuZGxlIG91ciBtaWIgdHJlZSAKLSAgICAgKi8KLSAgICBSRUdJU1RFUl9NSUIoIm1pYklJL3NubXAiLCBzbm1wX3ZhcmlhYmxlcywgdmFyaWFibGUxLAotICAgICAgICAgICAgICAgICBzbm1wX3ZhcmlhYmxlc19vaWQpOworICAgIERFQlVHTVNHVEwoKCJzbm1wIiwgIkluaXRpYWxpemluZ1xuIikpOworCisgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoCisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKwkibWliSUkvc25tcCIsIGhhbmRsZV9zbm1wLCBzbm1wX29pZCwgT0lEX0xFTkdUSChzbm1wX29pZCksCisJSEFORExFUl9DQU5fUk9OTFkpLCAxLCAzMik7CisgICAgeworICAgICAgICBjb25zdCBvaWQgc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxMSwgMzAsIDAgfTsKKwlzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gZW5hYmxlYXV0aGVuX2luZm87CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9CisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3NubXBFbmFibGVBdXRoZW5UcmFwcyIsCisgICAgICAgICAgICAgICAgc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCwKKyAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgbmV0c25tcF9nZXRfdHJ1dGh2YWx1ZSgpKTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgcmVnLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKwkJJmVuYWJsZWF1dGhlbl9pbmZvLAorICAgICAgICAgICAgICAgICZzbm1wX2VuYWJsZWF1dGhlbnRyYXBzLCBzaXplb2Yoc25tcF9lbmFibGVhdXRoZW50cmFwcyksCisgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOworICAgIH0KIAogI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiAgICAgaWYgKCsrc3lzdGVtX21vZHVsZV9jb3VudCA9PSAzKQpAQCAtMTIzLDEzMSArMTI4LDMgQEAKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9lbmFibGVhdXRoZW50cmFwc19zdG9yZSwgTlVMTCk7CiB9Ci0KLS8qCi0gKiBoZWFkZXJfc25tcCguLi4KLSAqIEFyZ3VtZW50czoKLSAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCi0gKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKLSAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MgCi0gKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKLSAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCi0gKiB3cml0ZV9tZXRob2QKLSAqIAotICovCi0KLSAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgotCSAqCi0JICogIFN5c3RlbSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKLQkgKgkoYWN0dWFsbHkgY29tbW9uISkKLQkgKgotCSAqKioqKioqKioqKioqKioqKioqKiovCi0KLQotdV9jaGFyICAgICAgICAgKgotdmFyX3NubXAoc3RydWN0IHZhcmlhYmxlICp2cCwKLSAgICAgICAgIG9pZCAqIG5hbWUsCi0gICAgICAgICBzaXplX3QgKiBsZW5ndGgsCi0gICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKLXsKLSAgICBzdGF0aWMgbG9uZyAgICAgbG9uZ19yZXQ7Ci0KLSAgICAqd3JpdGVfbWV0aG9kID0gMDsgICAgICAgICAgLyogYXNzdW1lIGl0IGlzbnQgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCi0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KLQotICAgIGlmIChoZWFkZXJfZ2VuZXJpYyh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKQotICAgICAgICA9PSBNQVRDSF9GQUlMRUQpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyoKLSAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKLSAgICAgKi8KLSAgICBpZiAodnAtPm1hZ2ljID09IFNOTVBFTkFCTEVBVVRIRU5UUkFQUykgewotICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcDsKLSAgICAgICAgbG9uZ19yZXR1cm4gPSBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIH0gZWxzZSBpZiAoKHZwLT5tYWdpYyA+PSAxKQotICAgICAgICAgICAgICAgJiYgKHZwLT5tYWdpYyA8PQotICAgICAgICAgICAgICAgICAgIChTVEFUX1NOTVBfU1RBVFNfRU5EIC0gU1RBVF9TTk1QX1NUQVRTX1NUQVJUICsgMSkpKSB7Ci0gICAgICAgIGxvbmdfcmV0ID0KLSAgICAgICAgICAgIHNubXBfZ2V0X3N0YXRpc3RpYyh2cC0+bWFnaWMgKyBTVEFUX1NOTVBfU1RBVFNfU1RBUlQgLSAxKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qCi0gKiBvbmx5IGZvciBzbm1wRW5hYmxlQXV0aGVuVHJhcHM6Ci0gKi8KLQotaW50Ci13cml0ZV9zbm1wKGludCBhY3Rpb24sCi0gICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCi0gICAgICAgICAgIHVfY2hhciB2YXJfdmFsX3R5cGUsCi0gICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKLXsKLSAgICBsb25nICAgICAgICAgICAgaW50dmFsID0gMDsKLQotICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBSRVNFUlZFMTogICAgICAgICAgICAgLyogQ2hlY2sgdmFsdWVzIGZvciBhY2NlcHRhYmlsaXR5ICovCi0gICAgICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX0lOVEVHRVIpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zbm1wX21pYiIsICIleCBub3QgaW50ZWdlciB0eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcl92YWxfdHlwZSkpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICAgICAgfQotCi0gICAgICAgIGludHZhbCA9ICooKGxvbmcgKikgdmFyX3ZhbCk7Ci0gICAgICAgIGlmIChpbnR2YWwgIT0gMSAmJiBpbnR2YWwgIT0gMikgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL3NubXBfbWliIiwgIm5vdCB2YWxpZCAleFxuIiwgaW50dmFsKSk7Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc25tcF9lbmFibGVhdXRoZW50cmFwc3NldCA8IDApIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBUaGUgb2JqZWN0IGlzIHNldCBpbiBhIHJlYWQtb25seSBjb25maWd1cmF0aW9uIGZpbGUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBSRVNFUlZFMjogICAgICAgICAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGFuZCBzaW1pbGFyIHJlc291cmNlcyAqLwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFVzaW5nIHN0YXRpYyB2YXJpYWJsZXMsIHNvIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZSAKLSAgICAgICAgICovCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQ1RJT046ICAgICAgICAgICAgICAgLyogUGVyZm9ybSB0aGUgU0VUIGFjdGlvbiAoaWYgcmV2ZXJzaWJsZSkgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBTYXZlIHRoZSBvbGQgdmFsdWUsIGluIGNhc2Ugb2YgVU5ETyAKLSAgICAgICAgICovCi0gICAgICAgIGludHZhbCA9ICooKGxvbmcgKikgdmFyX3ZhbCk7Ci0gICAgICAgIG9sZF9zbm1wX2VuYWJsZWF1dGhlbnRyYXBzID0gc25tcF9lbmFibGVhdXRoZW50cmFwczsKLSAgICAgICAgc25tcF9lbmFibGVhdXRoZW50cmFwcyA9IGludHZhbDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFVORE86ICAgICAgICAgICAgICAgICAvKiBSZXZlcnNlIHRoZSBTRVQgYWN0aW9uIGFuZCBmcmVlIHJlc291cmNlcyAqLwotCi0gICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgPSBvbGRfc25tcF9lbmFibGVhdXRoZW50cmFwczsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENPTU1JVDoKLSAgICAgICAgc25tcF9lbmFibGVhdXRoZW50cmFwc3NldCA9IDE7Ci0gICAgICAgIHNubXBfc2F2ZV9wZXJzaXN0ZW50KG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpKTsKLSAgICAgICAgKHZvaWQpIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19MSUJSQVJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsIE5VTEwpOwotICAgICAgICBzbm1wX2NsZWFuX3BlcnNpc3RlbnQobmV0c25tcF9kc19nZXRfc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBGUkVFOiAgICAgICAgICAgICAgICAgLyogRnJlZSBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0gKgotICoqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oCmluZGV4IDY0MWYxMWUuLjM5ZTBhM2MgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaApAQCAtMSw4MyArMSw5IEBACi0vKgotICogIFNOTVAgTUlCIGdyb3VwIGludGVyZmFjZSAtIHNubXAuaAotICoKLSAqLwogI2lmbmRlZiBfTUlCR1JPVVBfU05NUF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9TTk1QX0gKIAotc3RydWN0IHZhcmlhYmxlOwotCi1leHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc25tcDsKLWV4dGVybiBXcml0ZU1ldGhvZCB3cml0ZV9zbm1wOworY29uZmlnX3JlcXVpcmUobWliSUkvdXBkYXRlcykKK2NvbmZpZ19leGNsdWRlKG1pYklJL3NubXBfbWliXzVfNSkKIAogdm9pZCAgICAgICAgICAgIGluaXRfc25tcF9taWIodm9pZCk7CiAKLWV4dGVybiBpbnQgICAgICBzbm1wX2lucGt0czsgICAgLyogIDEgLSBjdXJyZW50ICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRwa3RzOyAgIC8qICAyIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luYmFkdmVyc2lvbnM7ICAgICAvKiAgMyAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luYmFkY29tbXVuaXR5bmFtZXM7ICAgICAgIC8qICA0IC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5iYWRjb21tdW5pdHl1c2VzOyAgICAgICAgLyogIDUgLSBjdXJyZW50ICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmFzbnBhcnNlZXJyb3JzOyAgLyogIDYgLSBjdXJyZW50ICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnRvb2JpZ3M7IC8qICA4IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2lubm9zdWNobmFtZXM7ICAgICAvKiAgOSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmJhZHZhbHVlczsgICAgICAgLyogMTAgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5yZWFkb25seXM7ICAgICAgIC8qIDExIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luZ2VuZXJyczsgLyogMTIgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW50b3RhbHJlcXZhcnM7ICAgIC8qIDEzIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2ludG90YWxzZXR2YXJzOyAgICAvKiAxNCAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmdldHJlcXVlc3RzOyAgICAgLyogMTUgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5nZXRuZXh0czsgICAgICAgIC8qIDE2IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luc2V0cmVxdWVzdHM7ICAgICAvKiAxNyAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmdldHJlc3BvbnNlczsgICAgLyogMTggLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW50cmFwczsgICAvKiAxOSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXR0b29iaWdzOyAgICAgICAgLyogMjAgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0bm9zdWNobmFtZXM7ICAgIC8qIDIxIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dGJhZHZhbHVlczsgICAgICAvKiAyMiAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRnZW5lcnJzOyAgICAgICAgLyogMjQgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0Z2V0cmVxdWVzdHM7ICAgIC8qIDI1IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dGdldG5leHRzOyAgICAgICAvKiAyNiAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRzZXRyZXF1ZXN0czsgICAgLyogMjcgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0Z2V0cmVzcG9uc2VzOyAgIC8qIDI4IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dHRyYXBzOyAgLyogMjkgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGxvbmcgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHM7IC8qIDMwIC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfc2lsZW50ZHJvcHM7ICAgICAgIC8qIDMxIC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfcHJveHlkcm9wczsgICAgICAgIC8qIDMyIC0gY3VycmVudCAqLwotCi1leHRlcm4gY2hhciAgICAqc25tcF90cmFwc2luazsKLWV4dGVybiBjaGFyICAgICpzbm1wX3RyYXBjb21tdW5pdHk7Ci0KLQotI2RlZmluZSBTTk1QSU5QS1RTCQkxCi0jZGVmaW5lIFNOTVBPVVRQS1RTCQkyCi0jZGVmaW5lIFNOTVBJTkJBRFZFUlNJT05TCTMKLSNkZWZpbmUgU05NUElOQkFEQ09NTVVOSVRZTkFNRVMJNAotI2RlZmluZSBTTk1QSU5CQURDT01NVU5JVFlVU0VTCTUKLSNkZWZpbmUgU05NUElOQVNOUEFSU0VFUlJPUlMJNgotI2RlZmluZSBTTk1QSU5CQURUWVBFUwkJNwotI2RlZmluZSBTTk1QSU5UT09CSUdTCQk4Ci0jZGVmaW5lIFNOTVBJTk5PU1VDSE5BTUVTCTkKLSNkZWZpbmUgU05NUElOQkFEVkFMVUVTCQkxMAotI2RlZmluZSBTTk1QSU5SRUFET05MWVMJCTExCi0jZGVmaW5lIFNOTVBJTkdFTkVSUlMJCTEyCi0jZGVmaW5lIFNOTVBJTlRPVEFMUkVRVkFSUwkxMwotI2RlZmluZSBTTk1QSU5UT1RBTFNFVFZBUlMJMTQKLSNkZWZpbmUgU05NUElOR0VUUkVRVUVTVFMJMTUKLSNkZWZpbmUgU05NUElOR0VUTkVYVFMJCTE2Ci0jZGVmaW5lIFNOTVBJTlNFVFJFUVVFU1RTCTE3Ci0jZGVmaW5lIFNOTVBJTkdFVFJFU1BPTlNFUwkxOAotI2RlZmluZSBTTk1QSU5UUkFQUwkJMTkKLSNkZWZpbmUgU05NUE9VVFRPT0JJR1MJCTIwCi0jZGVmaW5lIFNOTVBPVVROT1NVQ0hOQU1FUwkyMQotI2RlZmluZSBTTk1QT1VUQkFEVkFMVUVTCTIyCi0jZGVmaW5lIFNOTVBPVVRSRUFET05MWVMJMjMKLSNkZWZpbmUgU05NUE9VVEdFTkVSUlMJCTI0Ci0jZGVmaW5lIFNOTVBPVVRHRVRSRVFVRVNUUwkyNQotI2RlZmluZSBTTk1QT1VUR0VUTkVYVFMJCTI2Ci0jZGVmaW5lIFNOTVBPVVRTRVRSRVFVRVNUUwkyNwotI2RlZmluZSBTTk1QT1VUR0VUUkVTUE9OU0VTCTI4Ci0jZGVmaW5lIFNOTVBPVVRUUkFQUwkJMjkKLSNkZWZpbmUgU05NUEVOQUJMRUFVVEhFTlRSQVBTCTMwCi0jZGVmaW5lIFNOTVBTSUxFTlREUk9QUwkJMzEKLSNkZWZpbmUgU05NUFBST1hZRFJPUFMJCTMyCi0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1NOTVBfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjFlNjVkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMKQEAgLTAsMCArMSwxMTUgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgorCisjaW5jbHVkZSA8dXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oPgorCisjaW5jbHVkZSAic25tcF9taWJfNV81LmgiCisjaW5jbHVkZSAidXBkYXRlcy5oIgorCisjZGVmaW5lIFNOTVBfT0lEIDEsIDMsIDYsIDEsIDIsIDEsIDExCisKK3N0YXRpYyBvaWQgc25tcF9vaWRbXSA9IHsgU05NUF9PSUQgfTsKKworZXh0ZXJuIGxvbmcgc25tcF9lbmFibGVhdXRoZW50cmFwczsKK2V4dGVybiBpbnQgc25tcF9lbmFibGVhdXRoZW50cmFwc3NldDsKKworc3RhdGljIGludAorc25tcF9lbmFibGVhdXRoZW50cmFwc19zdG9yZShpbnQgYSwgaW50IGIsIHZvaWQgKmMsIHZvaWQgKmQpCit7CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbU05NUF9NQVhCVUZfU01BTExdOworCisgICAgaWYgKHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQgPiAwKSB7CisgICAgICAgIHNucHJpbnRmKGxpbmUsIFNOTVBfTUFYQlVGX1NNQUxMLCAicGF1dGh0cmFwZW5hYmxlICVsZCIsCisgICAgICAgICAgICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHMpOworICAgICAgICBzbm1wZF9zdG9yZV9jb25maWcobGluZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitoYW5kbGVfdHJ1dGh2YWx1ZShuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKSB7CisgICAgICAgIGludCByZXMgPSBuZXRzbm1wX2NoZWNrX3ZiX3RydXRodmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2Yik7CisgICAgICAgIGlmIChyZXMgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIHJlcyk7CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitzdGF0aWMgbmV0c25tcF9taWJfaGFuZGxlcioKK25ldHNubXBfZ2V0X3RydXRodmFsdWUodm9pZCkKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyKiBobmQgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJ0cnV0aHZhbHVlIiwgaGFuZGxlX3RydXRodmFsdWUpOworICAgIGlmIChobmQpCisgICAgICAgIGhuZC0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUOworICAgIHJldHVybiBobmQ7Cit9CisKK3N0YXRpYyBpbnQKK2hhbmRsZV9zbm1wKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisJICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisJICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorCSAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgc3dpdGNoKHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbT0lEX0xFTkdUSChzbm1wX29pZCldKSB7CisgICAgY2FzZSA3OgorICAgIGNhc2UgMjM6CisgICAgY2FzZSAzMDoKKyAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9OT1NVQ0hPQkpFQ1QpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorCWJyZWFrOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCitleHRlcm4gb2lkICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXTsKK2V4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW47CitleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9jb3VudDsKKyNlbmRpZgorCisvKiogSW5pdGlhbGl6ZXMgdGhlIHNubXAgbW9kdWxlICovCit2b2lkCitpbml0X3NubXBfbWliXzVfNSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJzbm1wIiwgIkluaXRpYWxpemluZ1xuIikpOworCisgICAgTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUigKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAibWliSUkvc25tcCIsIGhhbmRsZV9zbm1wLCBzbm1wX29pZCwgT0lEX0xFTkdUSChzbm1wX29pZCksCisgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgIDEsIFNOTVApOworICAgIHsKKyAgICAgICAgb2lkIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWRbXSA9IHsgU05NUF9PSUQsIDMwLCAwIH07CisJc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIGVuYWJsZWF1dGhlbl9pbmZvOworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPQorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zbm1wRW5hYmxlQXV0aGVuVHJhcHMiLAorICAgICAgICAgICAgICAgIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0KTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIG5ldHNubXBfZ2V0X3RydXRodmFsdWUoKSk7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgIHJlZywKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZlbmFibGVhdXRoZW5faW5mbywKKyAgICAgICAgICAgICAgICAmc25tcF9lbmFibGVhdXRoZW50cmFwcywgc2l6ZW9mKHNubXBfZW5hYmxlYXV0aGVudHJhcHMpLAorICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKKyAgICB9CisKKyNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorICAgIGlmICgrK3N5c3RlbV9tb2R1bGVfY291bnQgPT0gMykKKyAgICAgICAgUkVHSVNURVJfU1lTT1JfVEFCTEUoc3lzdGVtX21vZHVsZV9vaWQsIHN5c3RlbV9tb2R1bGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBNSUIgbW9kdWxlIGZvciBTTk1QdjIgZW50aXRpZXMiKTsKKyNlbmRpZgorICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzX3N0b3JlLCBOVUxMKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlNDUyYgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oCkBAIC0wLDAgKzEsNSBAQAorY29uZmlnX3JlcXVpcmUobWliSUkvdXBkYXRlcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMpCitjb25maWdfZXhjbHVkZShtaWJJSS9zbm1wX21pYikKKwordm9pZCAgICAgICAgICAgIGluaXRfc25tcF9taWJfNV81KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCmluZGV4IGY4ZmZhNTAuLjk0MWQ1M2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKQEAgLTEsMzQ0ICsxLDI4OSBAQAotLyoKLSAqICBUZW1wbGF0ZSBNSUIgZ3JvdXAgaW1wbGVtZW50YXRpb24gLSBzeXNPUlRhYmxlLmMKLSAqCi0gKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KLSNpZiBIQVZFX1NURExJQl9ICi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKLSMgaWZkZWYgV0lOMzIKLSMgIGluY2x1ZGUgPHN5cy90aW1lYi5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbmRpZgotIyBpbmNsdWRlIDx0aW1lLmg+Ci0jZWxzZQotIyBpZiBIQVZFX1NZU19USU1FX0gKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgZW5kaWYKLSNlbmRpZgotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KLSNpZiBIQVZFX1dJTlNPQ0tfSAotI2luY2x1ZGUgPHdpbnNvY2suaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAic3RydWN0LmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInN5c09SVGFibGUuaCIKLSNpbmNsdWRlICJzbm1wZC5oIgogCi0jaWZkZWYgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQotI2luY2x1ZGUgImFnZW50eC9zdWJhZ2VudC5oIgotI2luY2x1ZGUgImFnZW50eC9jbGllbnQuaCIKLSNlbmRpZgotCi0KLXN0YXRpYyBpbnQKLV9yZWdpc3Rlcl9zeXNPUl9jYWxsYmFjayhpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpOwotc3RhdGljIGludAotX3VucmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKTsKLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZyk7Ci0KLXN0cnVjdCB0aW1ldmFsICBzeXNPUl9sYXN0Y2hhbmdlOwotc3RhdGljIHN0cnVjdCBzeXNPUlRhYmxlICp0YWJsZSA9IE5VTEw7Ci1zdGF0aWMgaW50ICAgICAgbnVtRW50cmllcyA9IDA7CisvKiogVHlwaWNhbCBkYXRhIHN0cnVjdHVyZSBmb3IgYSByb3cgZW50cnkgKi8KK3R5cGVkZWYgc3RydWN0IHN5c09SVGFibGVfZW50cnlfcyB7CisgICAgbmV0c25tcF9pbmRleCAgICAgICAgICAgIG9pZF9pbmRleDsKKyAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgc3lzT1JJbmRleDsKKyAgICBjb25zdCBzdHJ1Y3Qgc3lzT1JUYWJsZSogZGF0YTsKK30gc3lzT1JUYWJsZV9lbnRyeTsKIAogLyoKLSAqIGRlZmluZSB0aGUgc3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIGFzayB0aGUgYWdlbnQgdG8gcmVnaXN0ZXIgb3VyCi0gKiBpbmZvcm1hdGlvbiBhdCAKKyAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIHN5c09SVGFibGUKICAqLwotc3RydWN0IHZhcmlhYmxlMSBzeXNPUlRhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtTWVNPUlRBQkxFSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfc3lzT1JUYWJsZSwgMSwgezJ9fSwKLSAgICB7U1lTT1JUQUJMRURFU0NSLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3N5c09SVGFibGUsIDEsIHszfX0sCi0gICAge1NZU09SVEFCTEVVUFRJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfc3lzT1JUYWJsZSwgMSwgezR9fQotfTsKKyNkZWZpbmUgQ09MVU1OX1NZU09SSU5ERVgJMQorI2RlZmluZSBDT0xVTU5fU1lTT1JJRAkJMgorI2RlZmluZSBDT0xVTU5fU1lTT1JERVNDUgkzCisjZGVmaW5lIENPTFVNTl9TWVNPUlVQVElNRQk0CiAKLS8qCi0gKiBEZWZpbmUgdGhlIE9JRCBwb2ludGVyIHRvIHRoZSB0b3Agb2YgdGhlIG1pYiB0cmVlIHRoYXQgd2UncmUKLSAqIHJlZ2lzdGVyaW5nIHVuZGVybmVhdGggCi0gKi8KLW9pZCAgICAgICAgICAgICBzeXNPUlRhYmxlX3ZhcmlhYmxlc19vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgMSwgOSwgMSB9Oworc3RhdGljIG5ldHNubXBfY29udGFpbmVyICp0YWJsZSA9IE5VTEw7CitzdGF0aWMgdV9sb25nICAgICAgICAgICAgIHN5c09STGFzdENoYW5nZTsKK3N0YXRpYyBvaWQgICAgICAgICAgICAgICAgc3lzT1JOZXh0SW5kZXggPSAxOworCisvKiogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgKi8KK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9mb3JlYWNoKGNvbnN0IHN0cnVjdCBzeXNPUlRhYmxlKiBkYXRhLCB2b2lkKiBkdW1teSkKK3sKKyAgICBzeXNPUlRhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIHN5c09STGFzdENoYW5nZSA9IGRhdGEtPk9SX3VwdGltZTsKKworICAgIGVudHJ5ID0gU05NUF9NQUxMT0NfVFlQRURFRihzeXNPUlRhYmxlX2VudHJ5KTsKKyAgICBpZiAoIWVudHJ5KSB7CisJc25tcF9sb2coTE9HX0VSUiwKKwkJICJjb3VsZCBub3QgYWxsb2NhdGUgc3RvcmFnZSwgc3lzT1JUYWJsZSBpcyBpbmNvbnNpc3RlbnRcbiIpOworICAgIH0gZWxzZSB7CisJY29uc3Qgb2lkIGZpcnN0TmV4dCA9IHN5c09STmV4dEluZGV4OworCW5ldHNubXBfaXRlcmF0b3IqIGl0ID0gQ09OVEFJTkVSX0lURVJBVE9SKHRhYmxlKTsKKworCWRvIHsKKwkgICAgY29uc3Qgc3lzT1JUYWJsZV9lbnRyeSogdmFsdWU7CisJICAgIGNvbnN0IG9pZCBjdXIgPSBzeXNPUk5leHRJbmRleDsKKworCSAgICBpZiAoc3lzT1JOZXh0SW5kZXggPT0gU05NUF9NSU4oTUFYX1NVQklELCAyMTQ3NDgzNjQ3VUwpKQorCQlzeXNPUk5leHRJbmRleCA9IDE7CisJICAgIGVsc2UKKwkJKytzeXNPUk5leHRJbmRleDsKKworCSAgICBmb3IgKHZhbHVlID0gaXQtPmN1cnIoaXQpOworCQkgdmFsdWUgJiYgdmFsdWUtPnN5c09SSW5kZXggPCBjdXI7CisJCSB2YWx1ZSA9IElURVJBVE9SX05FWFQoaXQpKSB7CisJICAgIH0KKworCSAgICBpZiAodmFsdWUgJiYgdmFsdWUtPnN5c09SSW5kZXggPT0gY3VyKSB7CisJCWlmIChzeXNPUk5leHRJbmRleCA8IGN1cikKKwkJICAgIGl0LT5yZXNldChpdCk7CisJICAgIH0gZWxzZSB7CisJCWVudHJ5LT5zeXNPUkluZGV4ID0gY3VyOworCQlicmVhazsKKwkgICAgfQorCX0gd2hpbGUgKGZpcnN0TmV4dCAhPSBzeXNPUk5leHRJbmRleCk7CisKKwlJVEVSQVRPUl9SRUxFQVNFKGl0KTsKKworCWlmKGZpcnN0TmV4dCA9PSBzeXNPUk5leHRJbmRleCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBsb2NhdGUgYSBmcmVlIGluZGV4IGluIHN5c09SVGFibGVcbiIpOworICAgICAgICAgICAgZnJlZShlbnRyeSk7CisJfSBlbHNlIHsKKwkgICAgZW50cnktPmRhdGEgPSBkYXRhOworCSAgICBlbnRyeS0+b2lkX2luZGV4LmxlbiA9IDE7CisJICAgIGVudHJ5LT5vaWRfaW5kZXgub2lkcyA9ICZlbnRyeS0+c3lzT1JJbmRleDsKKworCSAgICBDT05UQUlORVJfSU5TRVJUKHRhYmxlLCBlbnRyeSk7CisJfQorICAgIH0KK30KKworc3RhdGljIGludAorcmVnaXN0ZXJfY2IoaW50IG1ham9yLCBpbnQgbWlub3IsIHZvaWQqIHNlcnYsIHZvaWQqIGNsaWVudCkKK3sKKyAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZS9yZWdpc3Rlcl9jYiIsCisgICAgICAgICAgICAgICAgInJlZ2lzdGVyX2NiKCVkLCAlZCwgJXAsICVwKVxuIiwgbWFqb3IsIG1pbm9yLCBzZXJ2LCBjbGllbnQpKTsKKyAgICByZWdpc3Rlcl9mb3JlYWNoKChzdHJ1Y3Qgc3lzT1JUYWJsZSopc2VydiwgTlVMTCk7CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKy8qKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgKi8KK3N0YXRpYyBpbnQKK3VucmVnaXN0ZXJfY2IoaW50IG1ham9yLCBpbnQgbWlub3IsIHZvaWQqIHNlcnYsIHZvaWQqIGNsaWVudCkKK3sKKyAgICBzeXNPUlRhYmxlX2VudHJ5ICp2YWx1ZTsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yKiBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUih0YWJsZSk7CisKKyAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZS91bnJlZ2lzdGVyX2NiIiwKKyAgICAgICAgICAgICAgICAidW5yZWdpc3Rlcl9jYiglZCwgJWQsICVwLCAlcClcbiIsIG1ham9yLCBtaW5vciwgc2VydiwgY2xpZW50KSk7CisgICAgc3lzT1JMYXN0Q2hhbmdlID0gKChzdHJ1Y3Qgc3lzT1JUYWJsZSopKHNlcnYpKS0+T1JfdXB0aW1lOworCisgICAgd2hpbGUgKCh2YWx1ZSA9IElURVJBVE9SX05FWFQoaXQpKSAmJiB2YWx1ZS0+ZGF0YSAhPSBzZXJ2KTsKKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0KTsKKyAgICBpZih2YWx1ZSkgeworCUNPTlRBSU5FUl9SRU1PVkUodGFibGUsIHZhbHVlKTsKKwlmcmVlKHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKy8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc3lzT1JUYWJsZSB0YWJsZSAqLworc3RhdGljIGludAorc3lzT1JUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisKKyAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZS9zeXNPUlRhYmxlX2hhbmRsZXIiLAorICAgICAgICAgICAgICAgICJzeXNPUlRhYmxlX2hhbmRsZXIgY2FsbGVkXG4iKSk7CisKKyAgICBpZiAocmVxaW5mby0+bW9kZSAhPSBNT0RFX0dFVCkgeworCXNubXBfbG9nKExPR19FUlIsCisJCSAiR290IHVuZXhwZWN0ZWQgb3BlcmF0aW9uIGZvciBzeXNPUlRhYmxlXG4iKTsKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIC8qCisgICAgICogUmVhZC1zdXBwb3J0IChhbHNvIGNvdmVycyBHZXROZXh0IHJlcXVlc3RzKQorICAgICAqLworICAgIHJlcXVlc3QgPSByZXF1ZXN0czsKKyAgICB3aGlsZShyZXF1ZXN0ICYmIHJlcXVlc3QtPnByb2Nlc3NlZCkKKwlyZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dDsKKyAgICB3aGlsZShyZXF1ZXN0KSB7CisJc3lzT1JUYWJsZV9lbnRyeSAqdGFibGVfZW50cnk7CisJbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisKKwlpZiAoTlVMTCA9PSAodGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpKSkgeworCSAgICBzbm1wX2xvZyhMT0dfRVJSLAorCQkgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBpbmZvIGZvciBzeXNPUlRhYmxlXG4iKTsKKwkgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKAorCQkgICAgcmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworCX0gZWxzZSBpZihOVUxMID09ICh0YWJsZV9lbnRyeSA9IChzeXNPUlRhYmxlX2VudHJ5ICopCisJCQkgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCkpKSB7CisJICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisJICAgIGNhc2UgQ09MVU1OX1NZU09SSUQ6CisJICAgIGNhc2UgQ09MVU1OX1NZU09SREVTQ1I6CisJICAgIGNhc2UgQ09MVU1OX1NZU09SVVBUSU1FOgorCQluZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisJCQkJCSAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQluZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfTk9TVUNIT0JKRUNUKTsKKwkJYnJlYWs7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworCSAgICBjYXNlIENPTFVNTl9TWVNPUklEOgorCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoCisJCQlyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQkpFQ1RfSUQsCisJCQkoY29uc3QgdV9jaGFyKil0YWJsZV9lbnRyeS0+ZGF0YS0+T1Jfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmRhdGEtPk9SX29pZGxlbiAqIHNpemVvZihvaWQpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgQ09MVU1OX1NZU09SREVTQ1I6CisJCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgKKwkJCXJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09DVEVUX1NUUiwKKwkJCShjb25zdCB1X2NoYXIqKXRhYmxlX2VudHJ5LT5kYXRhLT5PUl9kZXNjciwKKwkJCXN0cmxlbih0YWJsZV9lbnRyeS0+ZGF0YS0+T1JfZGVzY3IpKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgQ09MVU1OX1NZU09SVVBUSU1FOgorCQlzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcigKKwkJCXJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX1RJTUVUSUNLUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5kYXRhLT5PUl91cHRpbWUpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSE9CSkVDVCk7CisJCWJyZWFrOworCSAgICB9CisJfQorCWRvIHsKKwkgICAgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQ7CisJfSB3aGlsZShyZXF1ZXN0ICYmIHJlcXVlc3QtPnByb2Nlc3NlZCk7CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCiAjaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKIGV4dGVybiBvaWQgICAgICBzeXN0ZW1fbW9kdWxlX29pZFtdOwogZXh0ZXJuIGludCAgICAgIHN5c3RlbV9tb2R1bGVfb2lkX2xlbjsKIGV4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX2NvdW50OwogI2VuZGlmCiAKK3N0YXRpYyBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpzeXNPUkxhc3RDaGFuZ2VfcmVnOworc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c09STGFzdENoYW5nZV93aW5mbzsKK3N0YXRpYyBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpzeXNPUlRhYmxlX3JlZzsKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICpzeXNPUlRhYmxlX3RhYmxlX2luZm87CisKKy8qKiBJbml0aWFsaXplcyB0aGUgc3lzT1JUYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfc3lzT1JUYWJsZSh2b2lkKQogeworICAgIGNvbnN0IG9pZCBzeXNPUkxhc3RDaGFuZ2Vfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDggfTsKKyAgICBjb25zdCBvaWQgc3lzT1JUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgOSB9OworCisgICAgc3lzT1JUYWJsZV90YWJsZV9pbmZvID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKworICAgIHRhYmxlID0gbmV0c25tcF9jb250YWluZXJfZmluZCgic3lzT1JUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKworICAgIGlmIChzeXNPUlRhYmxlX3RhYmxlX2luZm8gPT0gTlVMTCB8fCB0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgIFNOTVBfRlJFRShzeXNPUlRhYmxlX3RhYmxlX2luZm8pOworICAgICAgICBDT05UQUlORVJfRlJFRSh0YWJsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyhzeXNPUlRhYmxlX3RhYmxlX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIC8qKiBpbmRleDogc3lzT1JJbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHN5c09SVGFibGVfdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9TWVNPUklEOworICAgIHN5c09SVGFibGVfdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9TWVNPUlVQVElNRTsKKworICAgIHN5c09STGFzdENoYW5nZV9yZWcgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICJtaWJJSS9zeXNPUkxhc3RDaGFuZ2UiLCBOVUxMLAorICAgICAgICAgICAgc3lzT1JMYXN0Q2hhbmdlX29pZCwgT0lEX0xFTkdUSChzeXNPUkxhc3RDaGFuZ2Vfb2lkKSwKKyAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorCSAgICAmc3lzT1JMYXN0Q2hhbmdlX3dpbmZvLAorICAgICAgICAgICAgJnN5c09STGFzdENoYW5nZSwgc2l6ZW9mKHVfbG9uZyksCisgICAgICAgICAgICBBU05fVElNRVRJQ0tTLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOworICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoc3lzT1JMYXN0Q2hhbmdlX3JlZywKKwkJCQkgICAgJnN5c09STGFzdENoYW5nZV93aW5mbyk7CisKKyAgICBzeXNPUlRhYmxlX3JlZyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgIm1pYklJL3N5c09SVGFibGUiLCBzeXNPUlRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICBzeXNPUlRhYmxlX29pZCwgT0lEX0xFTkdUSChzeXNPUlRhYmxlX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yZWdpc3RlcihzeXNPUlRhYmxlX3JlZywgc3lzT1JUYWJsZV90YWJsZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLCBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworCisgICAgc3lzT1JMYXN0Q2hhbmdlID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisKICAgICAvKgotICAgICAqIHJlZ2lzdGVyIG91cnNlbHZlcyB3aXRoIHRoZSBhZ2VudCB0byBoYW5kbGUgb3VyIG1pYiB0cmVlIAorICAgICAqIEluaXRpYWxpc2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWJsZSBoZXJlCiAgICAgICovCisgICAgbmV0c25tcF9zeXNPUlRhYmxlX2ZvcmVhY2goJnJlZ2lzdGVyX2ZvcmVhY2gsIE5VTEwpOwogCi0jaWZkZWYgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQotICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSkgPT0gTUFTVEVSX0FHRU5UKQotICAgICAgICAodm9pZCkgcmVnaXN0ZXJfbWliX3ByaW9yaXR5KCJtaWJJSS9zeXNPUlRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzT1JUYWJsZV92YXJpYWJsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB2YXJpYWJsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNPUlRhYmxlX3ZhcmlhYmxlcykgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNPUlRhYmxlX3ZhcmlhYmxlc19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN5c09SVGFibGVfdmFyaWFibGVzX29pZCkgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvaWQpLCAxKTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgUkVHSVNURVJfTUlCKCJtaWJJSS9zeXNPUlRhYmxlIiwgc3lzT1JUYWJsZV92YXJpYWJsZXMsIHZhcmlhYmxlMSwKLSAgICAgICAgICAgICAgICAgICAgIHN5c09SVGFibGVfdmFyaWFibGVzX29pZCk7Ci0KKyAgICAvKgorICAgICAqIFJlZ2lzdGVyIGNhbGxiYWNrcworICAgICAqLwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9SRUdfU1lTT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2ssIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLCByZWdpc3Rlcl9jYiwgTlVMTCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX3VucmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2ssIE5VTEwpOwotICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9VTlJFR19TWVNPUl9TRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX3VucmVnaXN0ZXJfc3lzT1JfYnlfc2Vzc2lvbl9jYWxsYmFjaywgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwgdW5yZWdpc3Rlcl9jYiwgTlVMTCk7CiAKICNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogICAgIGlmICgrK3N5c3RlbV9tb2R1bGVfY291bnQgPT0gMykKICAgICAgICAgUkVHSVNURVJfU1lTT1JfVEFCTEUoc3lzdGVtX21vZHVsZV9vaWQsIHN5c3RlbV9tb2R1bGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBNSUIgbW9kdWxlIGZvciBTTk1QdjIgZW50aXRpZXMiKTsKICNlbmRpZgotCi0gICAgZ2V0dGltZW9mZGF5KCZzeXNPUl9sYXN0Y2hhbmdlLCBOVUxMKTsKLX0KLQotICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCi0JICoKLQkgKiAgU3lzdGVtIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucwotCSAqCi0JICoqKioqKioqKioqKioqKioqKioqKi8KLQotdV9jaGFyICAgICAgICAgKgotdmFyX3N5c09SVGFibGUoc3RydWN0IHZhcmlhYmxlICp2cCwKLSAgICAgICAgICAgICAgIG9pZCAqIG5hbWUsCi0gICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCi0gICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKLXsKLSAgICB1bnNpZ25lZCBsb25nICAgaSA9IDA7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgcmV0OwotICAgIHN0cnVjdCBzeXNPUlRhYmxlICpwdHIgPSB0YWJsZTsKLQotICAgIGlmIChoZWFkZXJfc2ltcGxlX3RhYmxlCi0gICAgICAgICh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kLCBudW1FbnRyaWVzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmb3IgKGkgPSAxOyBwdHIgIT0gTlVMTCAmJiBpIDwgbmFtZVsqbGVuZ3RoIC0gMV07IHB0ciA9IHB0ci0+bmV4dCwgaSsrKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgLS0gJWx1ICE9ICVsdVxuIiwKLSAgICAgICAgICAgICAgICAgICAgaSwgbmFtZVsqbGVuZ3RoIC0gMV0pKTsKLSAgICB9Ci0gICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgLS0gbm8gbWF0Y2g6ICVsdVxuIiwKLSAgICAgICAgICAgICAgICAgICAgaSkpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUiLCAic3lzT1JUYWJsZSAtLSBtYXRjaDogJWx1XG4iLCBpKSk7Ci0KLSAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewotICAgIGNhc2UgU1lTT1JUQUJMRUlEOgotICAgICAgICAqdmFyX2xlbiA9IHB0ci0+T1Jfb2lkbGVuICogc2l6ZW9mKHB0ci0+T1Jfb2lkWzBdKTsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcHRyLT5PUl9vaWQ7Ci0KLSAgICBjYXNlIFNZU09SVEFCTEVERVNDUjoKLSAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4ocHRyLT5PUl9kZXNjcik7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHB0ci0+T1JfZGVzY3I7Ci0KLSAgICBjYXNlIFNZU09SVEFCTEVVUFRJTUU6Ci0gICAgICAgIHJldCA9IG5ldHNubXBfdGltZXZhbF91cHRpbWUoJnB0ci0+T1JfdXB0aW1lKTsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiByZXQ7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBERUJVR01TR1RMKCgic25tcGQiLCAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3N5c09SVGFibGVcbiIsCi0gICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotCi1pbnQKLXJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiBvaWRpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKLXsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyLCAqKm5wdHI7Ci0gICAgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgcmVnX3N5c09SX3Bhcm1zOwotCi0gICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUiLCAic3lzT1JUYWJsZSByZWdpc3RlcmluZzogIikpOwotICAgIERFQlVHTVNHT0lEKCgibWliSUkvc3lzT1JUYWJsZSIsIG9pZGluLCBvaWRsZW4pKTsKLSAgICBERUJVR01TRygoIm1pYklJL3N5c09SVGFibGUiLCAiXG4iKSk7Ci0KLSAgICBwdHIgPSAoc3RydWN0IHN5c09SVGFibGUgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3lzT1JUYWJsZSkpOwotICAgIGlmIChwdHIgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKLSAgICB9Ci0gICAgcHRyLT5PUl9kZXNjciA9IChjaGFyICopIHN0cmR1cChkZXNjcik7Ci0gICAgaWYgKHB0ci0+T1JfZGVzY3IgPT0gTlVMTCkgewotICAgICAgICBmcmVlKHB0cik7Ci0gICAgICAgIHJldHVybiBTWVNfT1JUQUJMRV9SRUdJU1RSQVRJT05fRkFJTEVEOwotICAgIH0KLSAgICBwdHItPk9SX29pZGxlbiA9IG9pZGxlbjsKLSAgICBwdHItPk9SX29pZCA9IChvaWQgKikgbWFsbG9jKHNpemVvZihvaWQpICogb2lkbGVuKTsKLSAgICBpZiAocHRyLT5PUl9vaWQgPT0gTlVMTCkgewotICAgICAgICBmcmVlKHB0ci0+T1JfZGVzY3IpOwotICAgICAgICBmcmVlKHB0cik7Ci0gICAgICAgIHJldHVybiBTWVNfT1JUQUJMRV9SRUdJU1RSQVRJT05fRkFJTEVEOwotICAgIH0KLSAgICBtZW1jcHkocHRyLT5PUl9vaWQsIG9pZGluLCBzaXplb2Yob2lkKSAqIG9pZGxlbik7Ci0gICAgZ2V0dGltZW9mZGF5KCYocHRyLT5PUl91cHRpbWUpLCBOVUxMKTsKLSAgICBnZXR0aW1lb2ZkYXkoJihzeXNPUl9sYXN0Y2hhbmdlKSwgTlVMTCk7Ci0gICAgcHRyLT5PUl9zZXNzID0gc3M7Ci0gICAgcHRyLT5uZXh0ID0gTlVMTDsKLSAgICBudW1FbnRyaWVzKys7Ci0KLSAgICAvKiBhZGQgdGhpcyBlbnRyeSB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbmVkIGxpc3QgKi8KLSAgICBucHRyID0gJnRhYmxlOwotICAgIHdoaWxlICgqbnB0ciAhPSBOVUxMKQotICAgICAgICBucHRyID0gJigoKm5wdHIpLT5uZXh0KTsKLSAgICAqbnB0ciA9IHB0cjsKLQotICAgIHJlZ19zeXNPUl9wYXJtcy5uYW1lID0gb2lkaW47Ci0gICAgcmVnX3N5c09SX3Bhcm1zLm5hbWVsZW4gPSBvaWRsZW47Ci0gICAgcmVnX3N5c09SX3Bhcm1zLmRlc2NyID0gZGVzY3I7Ci0gICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLCAmcmVnX3N5c09SX3Bhcm1zKTsKLQotICAgIHJldHVybiBTWVNfT1JUQUJMRV9SRUdJU1RFUkVEX09LOwotfQotCi1pbnQKLXJlZ2lzdGVyX3N5c09SVGFibGUob2lkICogb2lkaW4sIHNpemVfdCBvaWRsZW4sIGNvbnN0IGNoYXIgKmRlc2NyKQotewotICAgIHJldHVybiByZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkaW4sIG9pZGxlbiwgZGVzY3IsIE5VTEwpOwotfQotCi0KLQotaW50Ci11bnJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiBvaWRpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvaWRsZW4sIG5ldHNubXBfc2Vzc2lvbiAqIHNzKQotewotICAgIHN0cnVjdCBzeXNPUlRhYmxlICpwdHIsICpwcmV2ID0gTlVMTCwgKm5leHQ7Ci0gICAgaW50ICAgICAgICAgICAgIGZvdW5kID0gU1lTX09SVEFCTEVfTk9fU1VDSF9SRUdJU1RSQVRJT047Ci0gICAgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgcmVnX3N5c09SX3Bhcm1zOwotCi0gICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUiLCAic3lzT1JUYWJsZSB1bnJlZ2lzdGVyaW5nOiAiKSk7Ci0gICAgREVCVUdNU0dPSUQoKCJtaWJJSS9zeXNPUlRhYmxlIiwgb2lkaW4sIG9pZGxlbikpOwotICAgIERFQlVHTVNHKCgibWliSUkvc3lzT1JUYWJsZSIsICJcbiIpKTsKLQotICAgIGZvciAocHRyID0gdGFibGU7IHB0cjsgcHRyID0gbmV4dCkKLSAgICB7Ci0gICAgICAgIG5leHQgPSBwdHItPm5leHQ7Ci0gICAgICAgIGlmIChwdHItPk9SX3Nlc3MgPT0gc3MgJiYKLSAgICAgICAgICAoc25tcF9vaWRfY29tcGFyZShvaWRpbiwgb2lkbGVuLCBwdHItPk9SX29pZCwgcHRyLT5PUl9vaWRsZW4pID09IDApKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocHJldiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHRhYmxlID0gcHRyLT5uZXh0OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByZXYtPm5leHQgPSBwdHItPm5leHQ7Ci0KLSAgICAgICAgICAgIGZyZWUocHRyLT5PUl9vaWQpOwotICAgICAgICAgICAgZnJlZShwdHItPk9SX2Rlc2NyKTsKLSAgICAgICAgICAgIGZyZWUocHRyKTsKLSAgICAgICAgICAgIG51bUVudHJpZXMtLTsKLSAgICAgICAgICAgIGdldHRpbWVvZmRheSgmKHN5c09SX2xhc3RjaGFuZ2UpLCBOVUxMKTsKLSAgICAgICAgICAgIGZvdW5kID0gU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJldiA9IHB0cjsKLSAgICB9Ci0KLSAgICByZWdfc3lzT1JfcGFybXMubmFtZSA9IG9pZGluOwotICAgIHJlZ19zeXNPUl9wYXJtcy5uYW1lbGVuID0gb2lkbGVuOwotICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLCAmcmVnX3N5c09SX3Bhcm1zKTsKLQotICAgIHJldHVybiBmb3VuZDsKLX0KLQotCi1pbnQKLXVucmVnaXN0ZXJfc3lzT1JUYWJsZShvaWQgKiBvaWRpbiwgc2l6ZV90IG9pZGxlbikKLXsKLSAgICByZXR1cm4gdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkaW4sIG9pZGxlbiwgTlVMTCk7CiB9CiAKIHZvaWQKLXVucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNzKQorc2h1dGRvd25fc3lzT1JUYWJsZSh2b2lkKQogewotICAgIHN0cnVjdCBzeXNPUlRhYmxlICpwdHIsICpwcmV2ID0gTlVMTCwgKm5leHQ7CisjaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKKyAgICBpZiAoc3lzdGVtX21vZHVsZV9jb3VudC0tID09IDMpCisgICAgICAgIFVOUkVHSVNURVJfU1lTT1JfVEFCTEUoc3lzdGVtX21vZHVsZV9vaWQsIHN5c3RlbV9tb2R1bGVfb2lkX2xlbik7CisjZW5kaWYKIAotICAgIGZvciAocHRyID0gdGFibGU7IHB0cjsgcHRyID0gbmV4dCkKLSAgICB7Ci0gICAgICAgIG5leHQgPSBwdHItPm5leHQ7Ci0gICAgICAgIGlmICgoKHNzLT5mbGFncyAmIFNOTVBfRkxBR1NfU1VCU0VTU0lPTikgJiYgcHRyLT5PUl9zZXNzID09IHNzKSB8fAotICAgICAgICAgICAgKCEoc3MtPmZsYWdzICYgU05NUF9GTEFHU19TVUJTRVNTSU9OKSAmJiBwdHItPk9SX3Nlc3MgJiYKLSAgICAgICAgICAgICBwdHItPk9SX3Nlc3MtPnN1YnNlc3Npb24gPT0gc3MpKSB7Ci0gICAgICAgICAgICBpZiAocHJldiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHRhYmxlID0gbmV4dDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKLSAgICAgICAgICAgIGZyZWUocHRyLT5PUl9vaWQpOwotICAgICAgICAgICAgZnJlZShwdHItPk9SX2Rlc2NyKTsKLSAgICAgICAgICAgIGZyZWUocHRyKTsKLSAgICAgICAgICAgIG51bUVudHJpZXMtLTsKLSAgICAgICAgICAgIGdldHRpbWVvZmRheSgmKHN5c09SX2xhc3RjaGFuZ2UpLCBOVUxMKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcmV2ID0gcHRyOwotICAgIH0KKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsIHVucmVnaXN0ZXJfY2IsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOworICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsIHJlZ2lzdGVyX2NiLCBOVUxMLCAxKTsKKworICAgIGlmICh0YWJsZSkKKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKHRhYmxlLCBuZXRzbm1wX2NvbnRhaW5lcl9zaW1wbGVfZnJlZSwgTlVMTCk7CisgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfdW5yZWdpc3RlcihzeXNPUlRhYmxlX3JlZyk7CisgICAgc3lzT1JUYWJsZV9yZWcgPSBOVUxMOworICAgIHRhYmxlID0gTlVMTDsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUoc3lzT1JUYWJsZV90YWJsZV9pbmZvKTsKKyAgICBzeXNPUlRhYmxlX3RhYmxlX2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKHN5c09STGFzdENoYW5nZV9yZWcpOworICAgIHN5c09STGFzdENoYW5nZV9yZWcgPSBOVUxMOwogfQotCi1zdGF0aWMgaW50Ci1fcmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKQotewotICAgIHN0cnVjdCBzeXNPUlRhYmxlICpwYXJtcyA9IChzdHJ1Y3Qgc3lzT1JUYWJsZSAqKSBzZXJ2ZXJhcmc7Ci0KLSAgICByZXR1cm4gcmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKHBhcm1zLT5PUl9vaWQsIHBhcm1zLT5PUl9vaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJtcy0+T1JfZGVzY3IsIHBhcm1zLT5PUl9zZXNzKTsKLX0KLQotc3RhdGljIGludAotX3VucmVnaXN0ZXJfc3lzT1JfYnlfc2Vzc2lvbl9jYWxsYmFjayhpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQotewotICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiA9IChuZXRzbm1wX3Nlc3Npb24gKikgc2VydmVyYXJnOwotCi0gICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX2J5X3Nlc3Npb24oc2Vzc2lvbik7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotX3VucmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcGFybXMgPSAoc3RydWN0IHN5c09SVGFibGUgKikgc2VydmVyYXJnOwotCi0gICAgcmV0dXJuIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKHBhcm1zLT5PUl9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcm1zLT5PUl9vaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcm1zLT5PUl9zZXNzKTsKLX0KLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCmluZGV4IDU5ZmI3ZTAuLmU5ODhmZGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgKQEAgLTEsNTcgKzEsMTUgQEAKLS8qCi0gKiAgVGVtcGxhdGUgTUlCIGdyb3VwIGludGVyZmFjZSAtIHN5c09SVGFibGUuaAotICoKLSAqLwotI2lmbmRlZiBfTUlCR1JPVVBfU1lTT1JUQUJMRV9ICi0jZGVmaW5lIF9NSUJHUk9VUF9TWVNPUlRBQkxFX0gKKyNpZm5kZWYgTUlCR1JPVVBfU1lTT1JUQUJMRV9ICisjZGVmaW5lIE1JQkdST1VQX1NZU09SVEFCTEVfSAogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQotY29uZmlnX3JlcXVpcmUobWliSUkvc3lzdGVtX21pYikKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKIAotICAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSB7Ci0gICAgICAgICBjaGFyICAgICAgICAgICAqT1JfZGVzY3I7Ci0gICAgICAgICBvaWQgICAgICAgICAgICAqT1Jfb2lkOwotICAgICAgICAgc2l6ZV90ICAgICAgICAgIE9SX29pZGxlbjsKLSAgICAgICAgIHN0cnVjdCB0aW1ldmFsICBPUl91cHRpbWU7Ci0gICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKk9SX3Nlc3M7Ci0gICAgICAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqbmV4dDsKLSAgICAgfTsKK2V4dGVybiB2b2lkICAgICBpbml0X3N5c09SVGFibGUodm9pZCk7CitleHRlcm4gdm9pZCAgICAgc2h1dGRvd25fc3lzT1JUYWJsZSh2b2lkKTsKIAotICAgICBzdHJ1Y3QgcmVnaXN0ZXJfc3lzT1JfcGFyYW1ldGVycyB7Ci0gICAgICAgICBvaWQgICAgICAgICAgICAqbmFtZTsKLSAgICAgICAgIGludCAgICAgICAgICAgICBuYW1lbGVuOwotICAgICAgICAgY29uc3QgY2hhciAgICAgKmRlc2NyOwotICAgICB9OworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKIAotICAgICBleHRlcm4gdm9pZCAgICAgaW5pdF9zeXNPUlRhYmxlKHZvaWQpOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc3lzT1JUYWJsZTsKLSAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3N5c09STGFzdENoYW5nZTsKLSAgICAgZXh0ZXJuIGludCAgICAgIHJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCwgY29uc3QgY2hhciAqKTsKLSAgICAgZXh0ZXJuIGludCAgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZShvaWQgKiwgc2l6ZV90KTsKLSAgICAgZXh0ZXJuIGludCAgICAgIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICopOwotICAgICBleHRlcm4gaW50ICAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICosIHNpemVfdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICAgZXh0ZXJuIHZvaWQgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqKTsKLQotI2RlZmluZQlTWVNPUlRBQkxFSU5ERVgJCSAgICAgICAgMQotI2RlZmluZQlTWVNPUlRBQkxFSUQJCSAgICAgICAgMgotI2RlZmluZQlTWVNPUlRBQkxFREVTQ1IJCSAgICAgICAgMwotI2RlZmluZQlTWVNPUlRBQkxFVVBUSU1FCSAgICAgICAgNAotCi0jZGVmaW5lIFNZU19PUlRBQkxFX1JFR0lTVEVSRURfT0sgICAgICAgICAgICAgIDAKLSNkZWZpbmUgU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRCAgICAgICAtMQotI2RlZmluZSBTWVNfT1JUQUJMRV9VTlJFR0lTVEVSRURfT0sgICAgICAgICAgICAwCi0jZGVmaW5lIFNZU19PUlRBQkxFX05PX1NVQ0hfUkVHSVNUUkFUSU9OICAgICAgLTEKLQotI2lmZGVmICBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9FTlRSWSh0aGVvaWQsIGRlc2NyKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICh2b2lkKXJlZ2lzdGVyX3N5c09SVGFibGUodGhlb2lkLCBzaXplb2YodGhlb2lkKS9zaXplb2Yob2lkKSwgZGVzY3IpOwotI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9UQUJMRSh0aGVvaWQsIGxlbiwgZGVzY3IpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKHZvaWQpcmVnaXN0ZXJfc3lzT1JUYWJsZSh0aGVvaWQsIGxlbiwgZGVzY3IpOwotCi0jZWxzZQotI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9FTlRSWSh4LHkpCi0jZGVmaW5lIFJFR0lTVEVSX1NZU09SX1RBQkxFKHgseSx6KQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRSAqLwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfU1lTT1JUQUJMRV9IICovCisjZW5kaWYgLyogTUlCR1JPVVBfU1lTT1JUQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKaW5kZXggZWQ5N2FmMy4uNTMyZWEyMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYwpAQCAtMzEsMTEgKzMxLDYgQEAKICNpbmNsdWRlIDx3aW5zb2NrLmg+CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKG1pbmd3MzIpICYmIGRlZmluZWQoSEFWRV9TWVNfVElNRV9IKQotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGN0eXBlLmg+CiAjaWYgSEFWRV9VVFNOQU1FX0gKICNpbmNsdWRlIDx1dHNuYW1lLmg+CiAjZWxzZQpAQCAtNDMsMTggKzM4LDE0IEBACiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KICNlbmRpZgogI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKICNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAic3lzdGVtX21pYi5oIgotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKLQorI2luY2x1ZGUgInVwZGF0ZXMuaCIKIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKQEAgLTY0LDMzICs1NSwyNCBAQAogCSAqKioqKioqKioqKioqKioqKioqKiovCiAKICNkZWZpbmUgU1lTX1NUUklOR19MRU4JMjU2Ci1jaGFyICAgICAgICAgICAgdmVyc2lvbl9kZXNjcltTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1ZFUlNfREVTQzsKLWNoYXIgICAgICAgICAgICBzeXNDb250YWN0W1NZU19TVFJJTkdfTEVOXSA9IE5FVFNOTVBfU1lTX0NPTlRBQ1Q7Ci1jaGFyICAgICAgICAgICAgc3lzTmFtZVtTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19OQU1FOwotY2hhciAgICAgICAgICAgIHN5c0xvY2F0aW9uW1NZU19TVFJJTkdfTEVOXSA9IE5FVFNOTVBfU1lTX0xPQzsKLW9pZCAgICAgICAgICAgICBzeXNPYmplY3RJRFtNQVhfT0lEX0xFTl07Ci1zaXplX3QgICAgICAgICAgc3lzT2JqZWN0SURMZW5ndGg7CitzdGF0aWMgY2hhciAgICAgdmVyc2lvbl9kZXNjcltTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1ZFUlNfREVTQzsKK3N0YXRpYyBjaGFyICAgICBzeXNDb250YWN0W1NZU19TVFJJTkdfTEVOXSA9IE5FVFNOTVBfU1lTX0NPTlRBQ1Q7CitzdGF0aWMgY2hhciAgICAgc3lzTmFtZVtTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19OQU1FOworc3RhdGljIGNoYXIgICAgIHN5c0xvY2F0aW9uW1NZU19TVFJJTkdfTEVOXSA9IE5FVFNOTVBfU1lTX0xPQzsKK3N0YXRpYyBvaWQgICAgICBzeXNPYmplY3RJRFtNQVhfT0lEX0xFTl07CitzdGF0aWMgc2l6ZV90IHN5c09iamVjdElEQnl0ZUxlbmd0aDsKIAogZXh0ZXJuIG9pZCAgICAgIHZlcnNpb25fc3lzb2lkW107CiBleHRlcm4gaW50ICAgICAgdmVyc2lvbl9zeXNvaWRfbGVuOwogCi1jaGFyICAgICAgICAgICAgb2xkdmVyc2lvbl9kZXNjcltTWVNfU1RSSU5HX0xFTl07Ci1jaGFyICAgICAgICAgICAgb2xkc3lzQ29udGFjdFtTWVNfU1RSSU5HX0xFTl07Ci1jaGFyICAgICAgICAgICAgb2xkc3lzTmFtZVtTWVNfU1RSSU5HX0xFTl07Ci1jaGFyICAgICAgICAgICAgb2xkc3lzTG9jYXRpb25bU1lTX1NUUklOR19MRU5dOwotCi1pbnQgICAgICAgICAgICAgc3lzU2VydmljZXMgPSA3MjsKLWludCAgICAgICAgICAgICBzeXNTZXJ2aWNlc0NvbmZpZ2VkID0gMDsKK3N0YXRpYyBpbnQgICAgICBzeXNTZXJ2aWNlcyA9IDcyOworc3RhdGljIGludCAgICAgIHN5c1NlcnZpY2VzQ29uZmlnZWQgPSAwOwogCiBleHRlcm4gb2lkICAgICAgdmVyc2lvbl9pZFtdOwogZXh0ZXJuIGludCAgICAgIHZlcnNpb25faWRfbGVuOwogCiBzdGF0aWMgaW50ICAgICAgc3lzQ29udGFjdFNldCA9IDAsIHN5c0xvY2F0aW9uU2V0ID0gMCwgc3lzTmFtZVNldCA9IDA7CiAKLVdyaXRlTWV0aG9kICAgICB3cml0ZVN5c3RlbTsKLWludCAgICAgICAgICAgICBoZWFkZXJfc3lzdGVtKHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7Ci0KICNpZiAoZGVmaW5lZCAoV0lOMzIpICYmIGRlZmluZWQgKEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLKSkgfHwgZGVmaW5lZCAobWluZ3czMikKIHN0YXRpYyB2b2lkICAgICB3aW5kb3dzT1NWZXJzaW9uU3RyaW5nKGNoYXIgW10sIHNpemVfdCk7CiAjZW5kaWYKQEAgLTEwMSwxOCArODMsMTIgQEAKIAkgKgogCSAqKioqKioqKioqKioqKioqKioqKiovCiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Rlc2NyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07Ci0KICAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemVvZih2ZXJzaW9uX2Rlc2NyKSkgewotICAgICAgICBzbnByaW50Zih0bXBidWYsCi0gICAgICAgICAgICAgICAgIHNpemVvZih0bXBidWYpLAotICAgICAgICAgICAgICAgICAic3lzZGVzY3IgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZih2ZXJzaW9uX2Rlc2NyKSwKLSAgICAgICAgICAgICAgICAgY3B0cik7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigic3lzZGVzY3IgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCisJCQkgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZih2ZXJzaW9uX2Rlc2NyKSwgY3B0cik7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7CiAgICAgICAgIHZlcnNpb25fZGVzY3JbMF0gPSAnXDAnOwogICAgIH0gZWxzZSB7CkBAIC0xMjAsMTY4ICs5Niw4OSBAQAogICAgIH0KIH0KIAotdm9pZAorTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKK3N5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY2hhciogdmFsdWUsIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBndWFyZCkKK3sKKyAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemUpIHsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigiJXMgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCisJCQkgICAgIHRva2VuLCAodW5zaWduZWQgbG9uZylzaXplLCBjcHRyKTsKKyAgICB9CisKKyAgICBpZiAoKnRva2VuID09ICdwJyAmJiBzdHJjYXNlY21wKHRva2VuICsgMSwgbmFtZSkgPT0gMCkgeworICAgICAgICBpZiAoKmd1YXJkIDwgMCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gdGhlIHZhbHVlIGlzCisgICAgICAgICAgICAgKiBhbHJlYWR5IGNvbmZpZ3VyZWQgcmVhZC1vbmx5LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5ICVzLjBcbiIsIG5hbWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKysoKmd1YXJkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgqZ3VhcmQgPiAwKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB3ZSBhbHJlYWR5IHJlYWQgYQorICAgICAgICAgICAgICogcGVyc2lzdGVudCB2YWx1ZSB3aGljaCB3ZSBzaG91bGQgaWdub3JlIGluIGZhdm91ciBvZiB0aGlzIG9uZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSAlcy4wXG4iLCBuYW1lKTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBGYWxsIHRocm91Z2ggYW5kIGNvcHkgaW4gdGhpcyB2YWx1ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICB9CisgICAgICAgICpndWFyZCA9IC0xOworICAgIH0KKworICAgIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7CisgICAgICAgICp2YWx1ZSA9ICdcMCc7CisgICAgfSBlbHNlIGlmIChzdHJsZW4oY3B0cikgPCBzaXplKSB7CisgICAgICAgIHN0cmNweSh2YWx1ZSwgY3B0cik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAogc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNsb2MoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKLQotICAgIGlmIChzdHJsZW4oY3B0cikgPj0gc2l6ZW9mKHN5c0xvY2F0aW9uKSkgewotICAgICAgICBzbnByaW50Zih0bXBidWYsIDEwMjQsCi0gICAgICAgICAgICAgICAgICJzeXNsb2NhdGlvbiB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpc2l6ZW9mKHN5c0xvY2F0aW9uKSwgY3B0cik7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKHRva2VuLCAicHN5c2xvY2F0aW9uIikgPT0gMCkgewotICAgICAgICBpZiAoc3lzTG9jYXRpb25TZXQgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB0aGUgc3lzTG9jYXRpb24KLSAgICAgICAgICAgICAqIGlzIGFscmVhZHkgY29uZmlndXJlZCByZWFkLW9ubHkuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSBzeXNMb2NhdGlvbi4wXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN5c0xvY2F0aW9uU2V0Kys7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc3lzTG9jYXRpb25TZXQgPiAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB3ZSBhbHJlYWR5IHJlYWQgYQotICAgICAgICAgICAgICogcGVyc2lzdGVudCB2YWx1ZSBvZiBzeXNMb2NhdGlvbiwgd2hpY2ggd2Ugc2hvdWxkIGlnbm9yZSBpbgotICAgICAgICAgICAgICogZmF2b3VyIG9mIHRoaXMgb25lLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgc3lzTG9jYXRpb24uMFxuIik7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogRmFsbCB0aHJvdWdoIGFuZCBjb3B5IGluIHRoaXMgdmFsdWUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICB9Ci0gICAgICAgIHN5c0xvY2F0aW9uU2V0ID0gLTE7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcChjcHRyLCAiXCJcIiIpID09IDApIHsKLSAgICAgICAgc3lzTG9jYXRpb25bMF0gPSAnXDAnOwotICAgIH0gZWxzZSBpZiAoc3RybGVuKGNwdHIpIDwgc2l6ZW9mKHN5c0xvY2F0aW9uKSkgewotICAgICAgICBzdHJjcHkoc3lzTG9jYXRpb24sIGNwdHIpOwotICAgIH0KKyAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZyh0b2tlbiwgY3B0ciwgInN5c0xvY2F0aW9uIiwgc3lzTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN5c0xvY2F0aW9uKSwgJnN5c0xvY2F0aW9uU2V0KTsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzY29uKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07Ci0KLSAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemVvZihzeXNDb250YWN0KSkgewotICAgICAgICBzbnByaW50Zih0bXBidWYsIDEwMjQsCi0gICAgICAgICAgICAgICAgICJzeXNjb250YWN0IHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAotICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylzaXplb2Yoc3lzQ29udGFjdCksIGNwdHIpOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcCh0b2tlbiwgInBzeXNjb250YWN0IikgPT0gMCkgewotICAgICAgICBpZiAoc3lzQ29udGFjdFNldCA8IDApIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHRoZSBzeXNDb250YWN0Ci0gICAgICAgICAgICAgKiBpcyBhbHJlYWR5IGNvbmZpZ3VyZWQgcmVhZC1vbmx5LiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgc3lzQ29udGFjdC4wXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN5c0NvbnRhY3RTZXQrKzsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzeXNDb250YWN0U2V0ID4gMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gd2UgYWxyZWFkeSByZWFkIGEKLSAgICAgICAgICAgICAqIHBlcnNpc3RlbnQgdmFsdWUgb2Ygc3lzQ29udGFjdCwgd2hpY2ggd2Ugc2hvdWxkIGlnbm9yZSBpbiBmYXZvdXIKLSAgICAgICAgICAgICAqIG9mIHRoaXMgb25lLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgc3lzQ29udGFjdC4wXG4iKTsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBGYWxsIHRocm91Z2ggYW5kIGNvcHkgaW4gdGhpcyB2YWx1ZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgIH0KLSAgICAgICAgc3lzQ29udGFjdFNldCA9IC0xOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7Ci0gICAgICAgIHN5c0NvbnRhY3RbMF0gPSAnXDAnOwotICAgIH0gZWxzZSBpZiAoc3RybGVuKGNwdHIpIDwgc2l6ZW9mKHN5c0NvbnRhY3QpKSB7Ci0gICAgICAgIHN0cmNweShzeXNDb250YWN0LCBjcHRyKTsKLSAgICB9CisgICAgc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcodG9rZW4sIGNwdHIsICJzeXNDb250YWN0Iiwgc3lzQ29udGFjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3lzQ29udGFjdCksICZzeXNDb250YWN0U2V0KTsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzbmFtZShjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotCi0gICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplb2Yoc3lzTmFtZSkpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCAxMDI0LAotICAgICAgICAgICAgICAgICAic3lzbmFtZSB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpc2l6ZW9mKHN5c05hbWUpLCBjcHRyKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAodG9rZW4sICJwc3lzbmFtZSIpID09IDApIHsKLSAgICAgICAgaWYgKHN5c05hbWVTZXQgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB0aGUgc3lzTmFtZQotICAgICAgICAgICAgICogaXMgYWxyZWFkeSBjb25maWd1cmVkIHJlYWQtb25seS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c05hbWUuMFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzeXNOYW1lU2V0Kys7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc3lzTmFtZVNldCA+IDApIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHdlIGFscmVhZHkgcmVhZCBhCi0gICAgICAgICAgICAgKiBwZXJzaXN0ZW50IHZhbHVlIG9mIHN5c05hbWUsIHdoaWNoIHdlIHNob3VsZCBpZ25vcmUgaW4gZmF2b3VyCi0gICAgICAgICAgICAgKiBvZiB0aGlzIG9uZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c05hbWUuMFxuIik7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogRmFsbCB0aHJvdWdoIGFuZCBjb3B5IGluIHRoaXMgdmFsdWUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICB9Ci0gICAgICAgIHN5c05hbWVTZXQgPSAtMTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewotICAgICAgICBzeXNOYW1lWzBdID0gJ1wwJzsKLSAgICB9IGVsc2UgaWYgKHN0cmxlbihjcHRyKSA8IHNpemVvZihzeXNOYW1lKSkgewotICAgICAgICBzdHJjcHkoc3lzTmFtZSwgY3B0cik7Ci0gICAgfQorICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nKHRva2VuLCBjcHRyLCAic3lzTmFtZSIsIHN5c05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN5c05hbWUpLCAmc3lzTmFtZVNldCk7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c1NlcnZpY2VzKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogICAgIHN5c1NlcnZpY2VzID0gYXRvaShjcHRyKTsKICAgICBzeXNTZXJ2aWNlc0NvbmZpZ2VkID0gMTsKIH0KIAotdm9pZCBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c09iamVjdElEKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQorc3RhdGljIHZvaWQKK3N5c3RlbV9wYXJzZV9jb25maWdfc3lzT2JqZWN0SUQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciB0bXBidWZbMTAyNF07Ci0KLSAgICBzeXNPYmplY3RJRExlbmd0aCA9IE1BWF9PSURfTEVOOworICAgIHNpemVfdCBzeXNPYmplY3RJRExlbmd0aCA9IE1BWF9PSURfTEVOOwogICAgIGlmICghcmVhZF9vYmppZChjcHRyLCBzeXNPYmplY3RJRCwgJnN5c09iamVjdElETGVuZ3RoKSkgewotICAgICAgICBzbnByaW50Zih0bXBidWYsCi0gICAgICAgICAgICAgICAgIHNpemVvZih0bXBidWYpLAotICAgICAgICAgICAgICAgICAic3lzb2JqZWN0aWQgdG9rZW4gbm90IGEgcGFyc2FibGUgT0lEOlxuXHQlcyIsCi0gICAgICAgICAgICAgICAgIGNwdHIpOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7Ci0gICAgICAgIG1lbWNweShzeXNPYmplY3RJRCwgdmVyc2lvbl9zeXNvaWQsIHZlcnNpb25fc3lzb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKLSAgICAgICAgc3lzT2JqZWN0SURMZW5ndGggPSB2ZXJzaW9uX3N5c29pZF9sZW47Ci0gICAgfQorCW5ldHNubXBfY29uZmlnX2Vycm9yKCJzeXNvYmplY3RpZCB0b2tlbiBub3QgYSBwYXJzYWJsZSBPSUQ6XG5cdCVzIiwKKwkJCSAgICAgY3B0cik7CisgICAgICAgIHN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHZlcnNpb25fc3lzb2lkX2xlbiAgKiBzaXplb2Yob2lkKTsKKyAgICAgICAgbWVtY3B5KHN5c09iamVjdElELCB2ZXJzaW9uX3N5c29pZCwgc3lzT2JqZWN0SURCeXRlTGVuZ3RoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3lzT2JqZWN0SURCeXRlTGVuZ3RoID0gc3lzT2JqZWN0SURMZW5ndGggKiBzaXplb2Yob2lkKTsKIH0KIAogCkBAIC0yOTEsMjggKzE4OCw4IEBACiAJICoKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCi0vKgotICogZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgd2UncmUgZ29pbmcgdG8gYXNrIHRoZSBhZ2VudCB0byByZWdpc3RlciBvdXIKLSAqIGluZm9ybWF0aW9uIGF0IAotICovCi1zdHJ1Y3QgdmFyaWFibGUxIHN5c3RlbV92YXJpYWJsZXNbXSA9IHsKLSAgICB7VkVSU0lPTl9ERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9zeXN0ZW0sIDEsIHsxfX0sCi0gICAge1ZFUlNJT05JRCwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9zeXN0ZW0sIDEsIHsyfX0sCi0gICAge1VQVElNRSwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9zeXN0ZW0sIDEsIHszfX0sCi0gICAge1NZU0NPTlRBQ1QsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3N5c3RlbSwgMSwgezR9fSwKLSAgICB7U1lTVEVNTkFNRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfc3lzdGVtLCAxLCB7NX19LAotICAgIHtTWVNMT0NBVElPTiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfc3lzdGVtLCAxLCB7Nn19LAotICAgIHtTWVNTRVJWSUNFUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7N319LAotICAgIHtTWVNPUkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7OH19Ci19OwotLyoKLSAqIERlZmluZSB0aGUgT0lEIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgbWliIHRyZWUgdGhhdCB3ZSdyZQotICogcmVnaXN0ZXJpbmcgdW5kZXJuZWF0aCAKLSAqLwotb2lkICAgICAgICAgICAgIHN5c3RlbV92YXJpYWJsZXNfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDEgfTsKIG9pZCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX29pZFtdID0geyBTTk1QX09JRF9TTk1QTU9EVUxFUywgMSB9OwotaW50ICAgICAgICAgICAgIHN5c3RlbV9tb2R1bGVfb2lkX2xlbiA9Ci0gICAgc2l6ZW9mKHN5c3RlbV9tb2R1bGVfb2lkKSAvIHNpemVvZihvaWQpOworaW50ICAgICAgICAgICAgIHN5c3RlbV9tb2R1bGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgoc3lzdGVtX21vZHVsZV9vaWQpOwogaW50ICAgICAgICAgICAgIHN5c3RlbV9tb2R1bGVfY291bnQgPSAwOwogCiBzdGF0aWMgaW50CkBAIC0zMzYsNiArMjEzLDMwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK2hhbmRsZV9zeXNTZXJ2aWNlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworI2lmIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCisgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVQgJiYgIXN5c1NlcnZpY2VzQ29uZmlnZWQpCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworI2VuZGlmCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK3N0YXRpYyBpbnQKK2hhbmRsZV9zeXNVcFRpbWUobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fVElNRVRJQ0tTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpKTsKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKwogdm9pZAogaW5pdF9zeXN0ZW1fbWliKHZvaWQpCiB7CkBAIC0zOTksMzAgKzMwMCw5OSBAQAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQVZFX0dFVEhPU1ROQU1FICovCiAKICNpZiAoZGVmaW5lZCAoV0lOMzIpICYmIGRlZmluZWQgKEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLKSkgfHwgZGVmaW5lZCAobWluZ3czMikKLSAgewotICAgIEhLRVkgaEtleTsKLSAgICAvKiBEZWZhdWx0IHN5c0NvbnRhY3QgaXMgdGhlIHJlZ2lzdGVyZWQgd2luZG93cyB1c2VyICovCi0gICAgaWYgKFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJTkUsICJTT0ZUV0FSRVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvbiIsIDAsIEtFWV9RVUVSWV9WQUxVRSwgJmhLZXkpID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICBjaGFyIHJlZ2lzdGVyZWRPd25lclsyNTZdID0gIiI7Ci0gICAgICAgRFdPUkQgcmVnaXN0ZXJlZE93bmVyU3ogPSAyNTY7Ci0gICAgICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoS2V5LCAiUmVnaXN0ZXJlZE93bmVyIiwgTlVMTCwgTlVMTCwgKExQQllURSlyZWdpc3RlcmVkT3duZXIsICZyZWdpc3RlcmVkT3duZXJTeikgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICAgIHN0cmNweShzeXNDb250YWN0LCByZWdpc3RlcmVkT3duZXIpOwotICAgICAgIH0KLSAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICB7CisgICAgICBIS0VZIGhLZXk7CisgICAgICAvKiBEZWZhdWx0IHN5c0NvbnRhY3QgaXMgdGhlIHJlZ2lzdGVyZWQgd2luZG93cyB1c2VyICovCisgICAgICBpZiAoUmVnT3BlbktleUV4KEhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgICAgICAgICAgICAgICAgIlNPRlRXQVJFXFxNaWNyb3NvZnRcXFdpbmRvd3MgTlRcXEN1cnJlbnRWZXJzaW9uIiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgS0VZX1FVRVJZX1ZBTFVFLCAmaEtleSkgPT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgIGNoYXIgcmVnaXN0ZXJlZE93bmVyWzI1Nl0gPSAiIjsKKyAgICAgICAgICBEV09SRCByZWdpc3RlcmVkT3duZXJTeiA9IDI1NjsKKyAgICAgICAgICBpZiAoUmVnUXVlcnlWYWx1ZUV4KGhLZXksICJSZWdpc3RlcmVkT3duZXIiLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExQQllURSlyZWdpc3RlcmVkT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVnaXN0ZXJlZE93bmVyU3opID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgc3RyY3B5KHN5c0NvbnRhY3QsIHJlZ2lzdGVyZWRPd25lcik7CisgICAgICAgICAgfQorICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgfQogICAgIH0KLSAgfQogI2VuZGlmCiAKICAgICAvKiBkZWZhdWx0IHN5c09iamVjdElEICovCiAgICAgbWVtY3B5KHN5c09iamVjdElELCB2ZXJzaW9uX3N5c29pZCwgdmVyc2lvbl9zeXNvaWRfbGVuICogc2l6ZW9mKG9pZCkpOwotICAgIHN5c09iamVjdElETGVuZ3RoID0gdmVyc2lvbl9zeXNvaWRfbGVuOworICAgIHN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHZlcnNpb25fc3lzb2lkX2xlbiAqIHNpemVvZihvaWQpOwogCi0gICAgLyoKLSAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgdG8gaGFuZGxlIG91ciBtaWIgdHJlZSAKLSAgICAgKi8KLSAgICBSRUdJU1RFUl9NSUIoIm1pYklJL3N5c3RlbSIsIHN5c3RlbV92YXJpYWJsZXMsIHZhcmlhYmxlMSwKLSAgICAgICAgICAgICAgICAgc3lzdGVtX3ZhcmlhYmxlc19vaWQpOwotCisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzRGVzY3Jfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDEgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c0Rlc2NyX3dpbmZvOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c0Rlc2NyIiwgTlVMTCwgc3lzRGVzY3Jfb2lkLCBPSURfTEVOR1RIKHN5c0Rlc2NyX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygmc3lzRGVzY3Jfd2luZm8sIHZlcnNpb25fZGVzY3IsIDAsCisJCQkJICAgICAgQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IG9pZCBzeXNPYmplY3RJRF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgMiB9OworICAgICAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gc3lzT2JqZWN0SURfd2luZm87CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzT2JqZWN0SUQiLCBOVUxMLAorICAgICAgICAgICAgICAgIHN5c09iamVjdElEX29pZCwgT0lEX0xFTkdUSChzeXNPYmplY3RJRF9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm82KAorCQkmc3lzT2JqZWN0SURfd2luZm8sIHN5c09iamVjdElELCAwLCBBU05fT0JKRUNUX0lELAorICAgICAgICAgICAgICAgIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfSVNfUFRSLAorICAgICAgICAgICAgICAgIE1BWF9PSURfTEVOLCAmc3lzT2JqZWN0SURCeXRlTGVuZ3RoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c1VwVGltZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgMyB9OworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNVcFRpbWUiLCBoYW5kbGVfc3lzVXBUaW1lLAorICAgICAgICAgICAgICAgIHN5c1VwVGltZV9vaWQsIE9JRF9MRU5HVEgoc3lzVXBUaW1lX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpKTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzQ29udGFjdF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgNCB9OworICAgICAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gc3lzQ29udGFjdF93aW5mbzsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzQ29udGFjdCIsIHN5c0NvbnRhY3Rfb2lkLCBPSURfTEVOR1RIKHN5c0NvbnRhY3Rfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzeXNDb250YWN0U2V0KSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZzeXNDb250YWN0X3dpbmZvLCBzeXNDb250YWN0LCBTWVNfU1RSSU5HX0xFTiAtIDEsCisJCUFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c05hbWVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDUgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c05hbWVfd2luZm87CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c05hbWUiLCBzeXNOYW1lX29pZCwgT0lEX0xFTkdUSChzeXNOYW1lX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc3lzTmFtZVNldCksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICZzeXNOYW1lX3dpbmZvLCBzeXNOYW1lLCBTWVNfU1RSSU5HX0xFTiAtIDEsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzTG9jYXRpb25fb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDYgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c0xvY2F0aW9uX3dpbmZvOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNMb2NhdGlvbiIsIHN5c0xvY2F0aW9uX29pZCwKKyAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHN5c0xvY2F0aW9uX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc3lzTG9jYXRpb25TZXQpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKwkJJnN5c0xvY2F0aW9uX3dpbmZvLCBzeXNMb2NhdGlvbiwgU1lTX1NUUklOR19MRU4gLSAxLAorCQlBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IG9pZCBzeXNTZXJ2aWNlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgNyB9OworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyKAorICAgICAgICAgICAgIm1pYklJL3N5c1NlcnZpY2VzIiwgc3lzU2VydmljZXNfb2lkLCBPSURfTEVOR1RIKHN5c1NlcnZpY2VzX29pZCksCisgICAgICAgICAgICAmc3lzU2VydmljZXMsIGhhbmRsZV9zeXNTZXJ2aWNlcyk7CisgICAgfQogICAgIGlmICgrK3N5c3RlbV9tb2R1bGVfY291bnQgPT0gMykKICAgICAgICAgUkVHSVNURVJfU1lTT1JfRU5UUlkoc3lzdGVtX21vZHVsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIG1vZHVsZSBmb3IgU05NUHYyIGVudGl0aWVzIik7CkBAIC00NTYsMTg3ICs0MjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPSUQiKTsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3N0b3JlLCBOVUxMKTsKLQogfQogCi0KLSAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgotCSAqCi0JICogIFN5c3RlbSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKLQkgKgotCSAqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotZXh0ZXJuIHN0cnVjdCB0aW1ldmFsIHN5c09SX2xhc3RjaGFuZ2U7Ci0jZW5kaWYKLQotdV9jaGFyICAgICAgICAgKgotdmFyX3N5c3RlbShzdHJ1Y3QgdmFyaWFibGUgKnZwLAotICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCi0gICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQotewotICAgIHN0YXRpYyB1X2xvbmcgICB1bHJldDsKLQotICAgIGlmIChoZWFkZXJfZ2VuZXJpYyh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKSA9PQotICAgICAgICBNQVRDSF9GQUlMRUQpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIFZFUlNJT05fREVTQ1I6Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHZlcnNpb25fZGVzY3IpOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSB2ZXJzaW9uX2Rlc2NyOwotICAgIGNhc2UgVkVSU0lPTklEOgotICAgICAgICAqdmFyX2xlbiA9IHN5c09iamVjdElETGVuZ3RoICogc2l6ZW9mKHN5c09iamVjdElEWzBdKTsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKilzeXNPYmplY3RJRDsKLSAgICBjYXNlIFVQVElNRToKLSAgICAgICAgdWxyZXQgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopICYgdWxyZXQpOwotICAgIGNhc2UgU1lTQ09OVEFDVDoKLSAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3lzQ29udGFjdCk7Ci0gICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZVN5c3RlbTsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3lzQ29udGFjdDsKLSAgICBjYXNlIFNZU1RFTU5BTUU6Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN5c05hbWUpOwotICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVTeXN0ZW07Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHN5c05hbWU7Ci0gICAgY2FzZSBTWVNMT0NBVElPTjoKLSAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3lzTG9jYXRpb24pOwotICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVTeXN0ZW07Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHN5c0xvY2F0aW9uOwotICAgIGNhc2UgU1lTU0VSVklDRVM6Ci0jaWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKLSAgICAgICAgaWYgKCFzeXNTZXJ2aWNlc0NvbmZpZ2VkKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKLSAgICAgICAgbG9uZ19yZXR1cm4gPSBzeXNTZXJ2aWNlczsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLQotI2lmZGVmIFVTSU5HX01JQklJX1NZU09SVEFCTEVfTU9EVUxFCi0gICAgY2FzZSBTWVNPUkxBU1RDSEFOR0U6Ci0gICAgICAgIHVscmV0ID0gbmV0c25tcF90aW1ldmFsX3VwdGltZSgmc3lzT1JfbGFzdGNoYW5nZSk7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAmIHVscmV0KTsKLSNlbmRpZgotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9zeXN0ZW1cbiIsCi0gICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotCi0KLWludAotd3JpdGVTeXN0ZW0oaW50IGFjdGlvbiwKLSAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCi0gICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAotICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuLAotICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKLXsKLSAgICB1X2NoYXIgICAgICAgICAqY3A7Ci0gICAgY2hhciAgICAgICAgICAgKmJ1ZiA9IE5VTEwsICpvbGRidWYgPSBOVUxMOwotICAgIGludCAgICAgICAgICAgICBjb3VudCwgKnNldHZhciA9IE5VTEw7Ci0KLSAgICBzd2l0Y2ggKChjaGFyKSBuYW1lWzddKSB7Ci0gICAgY2FzZSBWRVJTSU9OX0RFU0NSOgotICAgIGNhc2UgVkVSU0lPTklEOgotICAgIGNhc2UgVVBUSU1FOgotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQXR0ZW1wdCB0byB3cml0ZSB0byBSL08gT0lEXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwotICAgIGNhc2UgU1lTQ09OVEFDVDoKLSAgICAgICAgYnVmID0gc3lzQ29udGFjdDsKLSAgICAgICAgb2xkYnVmID0gb2xkc3lzQ29udGFjdDsKLSAgICAgICAgc2V0dmFyID0gJnN5c0NvbnRhY3RTZXQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1lTVEVNTkFNRToKLSAgICAgICAgYnVmID0gc3lzTmFtZTsKLSAgICAgICAgb2xkYnVmID0gb2xkc3lzTmFtZTsKLSAgICAgICAgc2V0dmFyID0gJnN5c05hbWVTZXQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1lTTE9DQVRJT046Ci0gICAgICAgIGJ1ZiA9IHN5c0xvY2F0aW9uOwotICAgICAgICBvbGRidWYgPSBvbGRzeXNMb2NhdGlvbjsKLSAgICAgICAgc2V0dmFyID0gJnN5c0xvY2F0aW9uU2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNZU1NFUlZJQ0VTOgotICAgIGNhc2UgU1lTT1JMQVNUQ0hBTkdFOgotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQXR0ZW1wdCB0byB3cml0ZSB0byBSL08gT0lEXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7IC8qID8/PyAqLwotICAgIH0KLQotICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBSRVNFUlZFMTogICAgICAgICAgICAgLyogQ2hlY2sgdmFsdWVzIGZvciBhY2NlcHRhYmlsaXR5ICovCi0gICAgICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX09DVEVUX1NUUikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vdCBzdHJpbmdcbiIpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICAgICAgfQotICAgICAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2Yoc3lzTG9jYXRpb24pIC0gMSkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImJhZCBsZW5ndGhcbiIpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjcCA9IHZhcl92YWwsIGNvdW50ID0gMDsgY291bnQgPCAoaW50KSB2YXJfdmFsX2xlbjsKLSAgICAgICAgICAgICBjb3VudCsrLCBjcCsrKSB7Ci0gICAgICAgICAgICBpZiAoIWlzcHJpbnQoKmNwKSkgewotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJub3QgcHJpbnQgJXhcbiIsICpjcCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNldHZhciAhPSBOVUxMICYmICpzZXR2YXIgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhlIG9iamVjdCBpcyBzZXQgaW4gYSByZWFkLW9ubHkgY29uZmlndXJhdGlvbiBmaWxlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUkVTRVJWRTI6ICAgICAgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBhbmQgc2ltaWxhciByZXNvdXJjZXMgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBVc2luZyBzdGF0aWMgc3RyaW5ncywgc28gbm90aGluZyBuZWVkcyB0byBiZSBkb25lIAotICAgICAgICAgKi8KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFDVElPTjogICAgICAgICAgICAgICAvKiBQZXJmb3JtIHRoZSBTRVQgYWN0aW9uIChpZiByZXZlcnNpYmxlKSAqLwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFNhdmUgdGhlIG9sZCB2YWx1ZSwgaW4gY2FzZSBvZiBVTkRPIAotICAgICAgICAgKi8KLSAgICAgICAgc3RyY3B5KG9sZGJ1ZiwgYnVmKTsKLSAgICAgICAgbWVtY3B5KGJ1ZiwgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOwotICAgICAgICBidWZbdmFyX3ZhbF9sZW5dID0gMDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFVORE86ICAgICAgICAgICAgICAgICAvKiBSZXZlcnNlIHRoZSBTRVQgYWN0aW9uIGFuZCBmcmVlIHJlc291cmNlcyAqLwotCi0gICAgICAgIHN0cmNweShidWYsIG9sZGJ1Zik7Ci0gICAgICAgIG9sZGJ1ZlswXSA9IDA7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDT01NSVQ6Ci0gICAgICAgIGlmIChzZXR2YXIgIT0gTlVMTCkgewotICAgICAgICAgICAgKnNldHZhciA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgc25tcF9zYXZlX3BlcnNpc3RlbnQobmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfQVBQVFlQRSkpOwotICAgICAgICAodm9pZCkgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0xJQlJBUlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwgTlVMTCk7Ci0gICAgICAgIHNubXBfY2xlYW5fcGVyc2lzdGVudChuZXRzbm1wX2RzX2dldF9zdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpKTsKLQotICAgIGNhc2UgRlJFRTogICAgICAgICAgICAgICAgIC8qIEZyZWUgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBObyByZXNvdXJjZXMgaGF2ZSBiZWVuIGFsbG9jYXRlZCwgYnV0ICJlbXB0eSIgdGhlICdvbGRidWYnIAotICAgICAgICAgKi8KLSAgICAgICAgb2xkYnVmWzBdID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgb2Ygd3JpdGVTeXN0ZW0gKi8KLQogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zIC0gTm9uZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oCmluZGV4IGVjMzMxMmQuLmRkMTZmMDggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgKQEAgLTEsMzEgKzEsMTYgQEAKLS8qCi0gKiAgU3lzdGVtIE1JQiBncm91cCBpbnRlcmZhY2UgLSBzeXN0ZW0uaAotICoKLSAqLwogI2lmbmRlZiBfTUlCR1JPVVBfU1lTVEVNX01JQl9ICiAjZGVmaW5lIF9NSUJHUk9VUF9TWVNURU1fTUlCX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKIAotICAgICBleHRlcm4gY2hhciAgICAgdmVyc2lvbl9kZXNjcltdOworY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcyBtaWJJSS91cGRhdGVzKQogCi0gICAgIHZvaWQgICAgICAgICAgICBpbml0X3N5c3RlbV9taWIodm9pZCk7Ci0gICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9zeXN0ZW07Cit2b2lkIGluaXRfc3lzdGVtX21pYih2b2lkKTsKIAotLyoKLSAqIGNvbmZpZyBmaWxlIHBhcnNpbmcgcm91dGluZXMgCi0gKi8KLSAgICAgdm9pZCAgICAgICAgICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzbG9jKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLSAgICAgdm9pZCAgICAgICAgICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzY29uKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLSAgICAgdm9pZCAgICAgICAgICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzbmFtZShjb25zdCBjaGFyICosIGNoYXIgKik7Ci0KLSNkZWZpbmUJVkVSU0lPTl9ERVNDUgkJMQotI2RlZmluZQlWRVJTSU9OSUQJCTIKLSNkZWZpbmUJVVBUSU1FCQkJMwotI2RlZmluZSBTWVNDT05UQUNUCQk0Ci0jZGVmaW5lIFNZU1RFTU5BTUUJCTUKLSNkZWZpbmUgU1lTTE9DQVRJT04JCTYKLSNkZWZpbmUgU1lTU0VSVklDRVMJCTcKLSNkZWZpbmUgU1lTT1JMQVNUQ0hBTkdFCQk4CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9TWVNURU1fTUlCX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKaW5kZXggYmMyZTJkMC4uZDk1Y2I5NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKQEAgLTQ5LDExICs0OSwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCIKICNpbmNsdWRlICJ0Y3AuaCIKICNpbmNsdWRlICJ0Y3BUYWJsZS5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmbmRlZiBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAogI2RlZmluZSBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAk1CkBAIC0zODksNyArMzg5LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUQ1BJTkVSUlM6CiAgICAgICAgIHJldF92YWx1ZSA9IHRjcHN0YXQudGNwc19yY3ZiYWRzdW0gKyB0Y3BzdGF0LnRjcHNfcmN2YmFkb2ZmCi0jaWZkZWYgU1RSVUNUX1RDUFNUQVRfSEFTX1RDUFNfUkNWTUVNRFJPUAorI2lmZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQU19SQ1ZNRU1EUk9QCiAgICAgICAgICAgICArIHRjcHN0YXQudGNwc19yY3ZtZW1kcm9wCiAjZW5kaWYKICAgICAgICAgICAgICsgdGNwc3RhdC50Y3BzX3JjdnNob3J0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmggYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuaAppbmRleCA5MjZkZjQ5Li4wNDlkZGQxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgX01JQkdST1VQX1RDUF9ICiAKIAotY29uZmlnX3JlcXVpcmUobWliSUkvdGNwVGFibGUgdXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKG1pYklJL3RjcFRhYmxlKQogCiBjb25maWdfYXJjaF9yZXF1aXJlKHNvbGFyaXMyLCAgICAgICAga2VybmVsX3N1bm9zNSkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobGludXgsICAgICBtaWJJSS9rZXJuZWxfbGludXgpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYwppbmRleCAyYjFjMmM2Li45MzY4Yzg5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKQEAgLTI5LDYgKzI5LDExIEBACiAjaWYgSEFWRV9ORVRJTkVUX1RDUF9WQVJfSAogI2luY2x1ZGUgPG5ldGluZXQvdGNwX3Zhci5oPgogI2VuZGlmCisjaWYgSEFWRV9ORVRMSU5LX05FVExJTktfSAorI2luY2x1ZGUgPG5ldGxpbmsvbmV0bGluay5oPgorI2luY2x1ZGUgPG5ldGxpbmsvbXNnLmg+CisjaW5jbHVkZSA8bGludXgvaW5ldF9kaWFnLmg+CisjZW5kaWYKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTM2LDcgKzQxLDYgQEAKIAogI2luY2x1ZGUgInRjcC5oIgogI2luY2x1ZGUgInRjcFRhYmxlLmgiCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgogCiAjaWZkZWYgaHB1eDExCiAjZGVmaW5lCVRDUFRBQkxFX0VOVFJZX1RZUEUJbWliX3RjcENvbm5FbnQgCkBAIC0xMjksMTEgKzEzMywxMSBAQAogI2RlZmluZSBUQ1BfUE9SVF9UT19IT1NUX09SREVSKHgpIG50b2hzKHgpCiAjZW5kaWYKIAotb2lkICAgICAgICAgICAgIHRjcFRhYmxlX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA2LCAxMyB9OwotCiB2b2lkCiBpbml0X3RjcFRhYmxlKHZvaWQpCiB7CisgICAgY29uc3Qgb2lkIHRjcFRhYmxlX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA2LCAxMyB9OworCiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvOwpAQCAtNDA0LDcgKzQwOCw3IEBACiAgICAgICogWFhYIC0gSG93IGNhbiB3ZSB0ZWxsIGlmIHRoZSBjYWNoZSBpcyB2YWxpZD8KICAgICAgKiAgICAgICBObyBhY2Nlc3MgdG8gJ3JlcWluZm8nCiAgICAgICovCi0gICAgaWYgKHRjcF9oZWFkID09IDApCisgICAgaWYgKHRjcF9oZWFkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKQEAgLTU0Nyw2ICs1NTEsMTE4IEBACiAjZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhwdXgxMSAqLwogCiAjaWZkZWYgbGludXgKKworLyogIHNlZSA8bmV0aW5ldC90Y3AuaD4gKi8KKyNkZWZpbmUgVENQX0FMTCAoKDEgPDwgKFRDUF9DTE9TSU5HICsgMSkpIC0gMSkKKworY29uc3Qgc3RhdGljIGludCBsaW51eF9zdGF0ZXNbMTJdID0geyAxLCA1LCAzLCA0LCA2LCA3LCAxMSwgMSwgOCwgOSwgMiwgMTAgfTsKKworI2lmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKK3N0YXRpYyBpbnQKK3RjcFRhYmxlX2xvYWRfbmV0bGluayh2b2lkKQoreworCS8qICBUT0RPOiBwZXJoYXBzIHVzZSBwZXJtYW5lbnQgbmwgaGFuZGxlPyAqLworCXN0cnVjdCBubF9oYW5kbGUgKm5sID0gbmxfaGFuZGxlX2FsbG9jKCk7CisJc3RydWN0IGluZXRfZGlhZ19yZXEgcmVxID0geworCQkuaWRpYWdfZmFtaWx5ID0gQUZfSU5FVCwKKwkJLmlkaWFnX3N0YXRlcyA9IFRDUF9BTEwsCisJfTsKKworCXN0cnVjdCBubF9tc2cgKm5tOworCisJc3RydWN0IHNvY2thZGRyX25sIHBlZXI7CisJdW5zaWduZWQgY2hhciAqYnVmID0gTlVMTDsKKwlpbnQgcnVubmluZyA9IDEsIGxlbjsKKworCWlmIChubCA9PSBOVUxMKSB7CisJCURFQlVHTVNHVEwoKCJtaWJJSS90Y3BUYWJsZSIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbmV0bGluayBoYW5kbGVcbiIpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBGYWlsZWQgdG8gYWxsb2NhdGUgbmV0bGluayBoYW5kbGVcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKG5sX2Nvbm5lY3QobmwsIE5FVExJTktfSU5FVF9ESUFHKSA8IDApIHsKKwkJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIkZhaWxlZCB0byBjb25uZWN0IHRvIG5ldGxpbms6ICVzXG4iLCBubF9nZXRlcnJvcigpKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJzbm1wZDogQ291bGRuJ3QgY29ubmVjdCB0byBuZXRsaW5rOiAlc1xuIiwgbmxfZ2V0ZXJyb3IoKSk7CisJCW5sX2hhbmRsZV9kZXN0cm95KG5sKTsKKwkJcmV0dXJuIC0xOworCX0KKworCW5tID0gbmxtc2dfYWxsb2Nfc2ltcGxlKFRDUERJQUdfR0VUU09DSywgTkxNX0ZfUk9PVHxOTE1fRl9NQVRDSHxOTE1fRl9SRVFVRVNUKTsKKwlubG1zZ19hcHBlbmQobm0sICZyZXEsIHNpemVvZihzdHJ1Y3QgaW5ldF9kaWFnX3JlcSksIDApOworCisJaWYgKG5sX3NlbmRfYXV0b19jb21wbGV0ZShubCwgbm0pIDwgMCkgeworCQlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAibmxfc2VuZF9hdXRvY29tcGxldGUoKTogJXNcbiIsIG5sX2dldGVycm9yKCkpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBubF9zZW5kX2F1dG9jb21wbGV0ZSgpOiAlc1xuIiwgbmxfZ2V0ZXJyb3IoKSk7CisJCW5sX2hhbmRsZV9kZXN0cm95KG5sKTsKKwkJcmV0dXJuIC0xOworCX0KKwlubG1zZ19mcmVlKG5tKTsKKworCXdoaWxlIChydW5uaW5nKSB7CisJCXN0cnVjdCBubG1zZ2hkciAqaDsKKwkJaWYgKChsZW4gPSBubF9yZWN2KG5sLCAmcGVlciwgJmJ1ZiwgTlVMTCkpIDw9IDApIHsKKwkJCURFQlVHTVNHVEwoKCJtaWJJSS90Y3BUYWJsZSIsICJubF9yZWN2KCk6ICVzXG4iLCBubF9nZXRlcnJvcigpKSk7CisJCQlzbm1wX2xvZyhMT0dfRVJSLCAic25tcGQ6IG5sX3JlY3YoKTogJXNcbiIsIG5sX2dldGVycm9yKCkpOworCQkJbmxfaGFuZGxlX2Rlc3Ryb3kobmwpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJaCA9IChzdHJ1Y3Qgbmxtc2doZHIqKWJ1ZjsKKworCQl3aGlsZSAobmxtc2dfb2soaCwgbGVuKSkgeworCQkJc3RydWN0IGluZXRfZGlhZ19tc2cgKnIgPSBubG1zZ19kYXRhKGgpOworCQkJc3RydWN0IGlucGNiICAgIHBjYiwgKm5uZXc7CisKKwkJCWlmIChoLT5ubG1zZ190eXBlID09IE5MTVNHX0RPTkUpIHsKKwkJCQlydW5uaW5nID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJciA9IG5sbXNnX2RhdGEoaCk7CisKKwkJCWlmIChyLT5pZGlhZ19mYW1pbHkgIT0gQUZfSU5FVCkgeworCQkJCWggPSBubG1zZ19uZXh0KGgsICZsZW4pOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQltZW1jcHkoJnBjYi5pbnBfbGFkZHIuc19hZGRyLCByLT5pZC5pZGlhZ19zcmMsIHItPmlkaWFnX2ZhbWlseSA9PSBBRl9JTkVUID8gNCA6IDYpOworCQkJbWVtY3B5KCZwY2IuaW5wX2ZhZGRyLnNfYWRkciwgci0+aWQuaWRpYWdfZHN0LCByLT5pZGlhZ19mYW1pbHkgPT0gQUZfSU5FVCA/IDQgOiA2KTsKKworCQkJcGNiLmlucF9scG9ydCA9IHItPmlkLmlkaWFnX3Nwb3J0OworCQkJcGNiLmlucF9mcG9ydCA9IHItPmlkLmlkaWFnX2Rwb3J0OworCisJCQlwY2IuaW5wX3N0YXRlID0gKHItPmlkaWFnX3N0YXRlICYgMHhmKSA8IDEyID8gbGludXhfc3RhdGVzW3ItPmlkaWFnX3N0YXRlICYgMHhmXSA6IDI7CisJCQlpZiAocGNiLmlucF9zdGF0ZSA9PSA1IC8qIGVzdGFibGlzaGVkICovIHx8CisJCQkJcGNiLmlucF9zdGF0ZSA9PSA4IC8qICBjbG9zZVdhaXQgICovICkKKwkJCQl0Y3BfZXN0YWIrKzsKKwkJCXBjYi51aWQgPSByLT5pZGlhZ191aWQ7CisKKwkJCW5uZXcgPSBTTk1QX01BTExPQ19UWVBFREVGKHN0cnVjdCBpbnBjYik7CisJCQlpZiAobm5ldyA9PSBOVUxMKSB7CisJCQkJcnVubmluZyA9IDA7CisJCQkJLyogIFhYWCByZXBvcnQgbWFsbG9jIGVycm9yIGFuZCByZXR1cm4gLTE/ICovCisJCQkJYnJlYWs7CisJCQl9CisJCQltZW1jcHkobm5ldywgJnBjYiwgc2l6ZW9mKHN0cnVjdCBpbnBjYikpOworCQkJbm5ldy0+aW5wX25leHQgPSB0Y3BfaGVhZDsKKwkJCXRjcF9oZWFkICAgICAgID0gbm5ldzsKKworCQkJaCA9IG5sbXNnX25leHQoaCwgJmxlbik7CisJCX0KKwkJZnJlZShidWYpOworCX0KKworCW5sX2hhbmRsZV9kZXN0cm95KG5sKTsKKworCWlmICh0Y3BfaGVhZCkgeworCQlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiTG9hZGVkIFRDUCBUYWJsZSB1c2luZyBuZXRsaW5rXG4iKSk7CisJCXJldHVybiAwOworCX0KKwlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiRmFpbGVkIHRvIGxvYWQgVENQIFRhYmxlIChuZXRsaW5rKVxuIikpOworCXJldHVybiAtMTsKK30KKyNlbmRpZgorCiBpbnQKIHRjcFRhYmxlX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZtYWdpYykKIHsKQEAgLTU1NSw2ICs2NzEsMTIgQEAKIAogICAgIHRjcFRhYmxlX2ZyZWUoY2FjaGUsIE5VTEwpOwogCisjaWYgSEFWRV9ORVRMSU5LX05FVExJTktfSAorCWlmICh0Y3BUYWJsZV9sb2FkX25ldGxpbmsoKSA9PSAwKSB7CisJCXJldHVybiAwOworCX0KKyNlbmRpZgorCiAgICAgaWYgKCEoaW4gPSBmb3BlbigiL3Byb2MvbmV0L3RjcCIsICJyIikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS90Y3BUYWJsZSIsICJGYWlsZWQgdG8gbG9hZCBUQ1AgVGFibGUgKGxpbnV4MSlcbiIpKTsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBjYW5ub3Qgb3BlbiAvcHJvYy9uZXQvdGNwIC4uLlxuIik7CkBAIC01NjgsOCArNjkwLDYgQEAKICAgICAgKi8KICAgICB3aGlsZSAobGluZSA9PSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgewogICAgICAgICBzdHJ1Y3QgaW5wY2IgICAgcGNiLCAqbm5ldzsKLSAgICAgICAgc3RhdGljIGludCAgICAgIGxpbnV4X3N0YXRlc1sxMl0gPQotICAgICAgICAgICAgeyAxLCA1LCAzLCA0LCA2LCA3LCAxMSwgMSwgOCwgOSwgMiwgMTAgfTsKICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXRlLCBscCwgZnAsIHVpZDsKIAogICAgICAgICBpZiAoNiAhPSBzc2NhbmYobGluZSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oCmluZGV4IGE1YTZmNzYuLjU1ZmU5N2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaApAQCAtNiw3ICs2LDYgQEAKICNkZWZpbmUgX01JQkdST1VQX1RDUFRBQkxFX0gKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwga2VybmVsX3N1bm9zNSkKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCiAjaWYgIWRlZmluZWQoTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTKQogY29uZmlnX3JlcXVpcmUobWliSUkvaXApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMKaW5kZXggZTE1YTJkZS4uODMyZDMyZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMKQEAgLTE2LDE1ICsxNiwxNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCIKIAogI2lmZGVmIGxpbnV4CiAjaW5jbHVkZSAidGNwLmgiCiAjZW5kaWYKICNpbmNsdWRlICJ1ZHAuaCIKICNpbmNsdWRlICJ1ZHBUYWJsZS5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmZGVmIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CkBAIC0yMzUsNyArMjM1LDcgQEAKICNkZWZpbmUgdWRwc3RhdCAgICAgICAgICB1ZHBzdGF0LnVkcHN0YXQKICNlbmRpZgogICAgIGNhc2UgVURQSU5EQVRBR1JBTVM6Ci0jaWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfSVBBQ0tFVFMKKyNpZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfSVBBQ0tFVFMKICAgICAgICAgcmV0X3ZhbHVlID0gdWRwc3RhdC51ZHBzX2lwYWNrZXRzOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC0yNDQsNyArMjQ0LDcgQEAKICNlbmRpZgogCiAgICAgY2FzZSBVRFBOT1BPUlRTOgotI2lmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVAorI2lmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQKICAgICAgICAgcmV0X3ZhbHVlID0gdWRwc3RhdC51ZHBzX25vcG9ydDsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtMjUzLDcgKzI1Myw3IEBACiAjZW5kaWYKIAogICAgIGNhc2UgVURQT1VUREFUQUdSQU1TOgotI2lmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX09QQUNLRVRTCisjaWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX09QQUNLRVRTCiAgICAgICAgIHJldF92YWx1ZSA9IHVkcHN0YXQudWRwc19vcGFja2V0czsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtMjYzLDEwICsyNjMsMTAgQEAKIAogICAgIGNhc2UgVURQSU5FUlJPUlM6CiAgICAgICAgIHJldF92YWx1ZSA9IHVkcHN0YXQudWRwc19oZHJvcHMgKyB1ZHBzdGF0LnVkcHNfYmFkc3VtICsKLSNpZmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19ESVNDQVJECisjaWZkZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQKICAgICAgICAgICAgIHVkcHN0YXQudWRwc19kaXNjYXJkICsKICNlbmRpZgotI2lmZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX0ZVTExTT0NLCisjaWZkZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0ZVTExTT0NLCiAgICAgICAgICAgICB1ZHBzdGF0LnVkcHNfZnVsbHNvY2sgKwogI2VuZGlmCiAgICAgICAgICAgICB1ZHBzdGF0LnVkcHNfYmFkbGVuOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmggYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuaAppbmRleCAwODE2ZjAxLi45ZDQ2NzFiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgX01JQkdST1VQX1VEUF9ICiAKIAotY29uZmlnX3JlcXVpcmUobWliSUkvdWRwVGFibGUgdXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKG1pYklJL3VkcFRhYmxlKQogCiBjb25maWdfYXJjaF9yZXF1aXJlKHNvbGFyaXMyLCAgICAgICAga2VybmVsX3N1bm9zNSkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobGludXgsICAgICBtaWJJSS9rZXJuZWxfbGludXgpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYwppbmRleCA1N2U5NjdjLi44N2QxYzU1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMKQEAgLTMzLDcgKzMzLDYgQEAKICNlbmRpZgogI2luY2x1ZGUgInVkcC5oIgogI2luY2x1ZGUgInVkcFRhYmxlLmgiCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgogCiAjaWZkZWYgaHB1eDExCiAjZGVmaW5lCVVEUFRBQkxFX0VOVFJZX1RZUEUJbWliX3VkcExzbkVudCAKQEAgLTE1MSw2ICsxNTAsNyBAQAogICAgICAqLwogICAgIGlpbmZvICAgICAgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfaXRlcmF0b3JfaW5mbyk7CiAgICAgaWYgKCFpaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWluZm8tPmdldF9maXJzdF9kYXRhX3BvaW50ID0gdWRwVGFibGVfZmlyc3RfZW50cnk7CkBAIC0zNDksNyArMzQ5LDcgQEAKICAgICAgKiBYWFggLSBIb3cgY2FuIHdlIHRlbGwgaWYgdGhlIGNhY2hlIGlzIHZhbGlkPwogICAgICAqICAgICAgIE5vIGFjY2VzcyB0byAncmVxaW5mbycKICAgICAgKi8KLSAgICBpZiAodWRwX2hlYWQgPT0gMCkKKyAgICBpZiAodWRwX2hlYWQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmgKaW5kZXggMmM2MWNkYS4uZjlhZmQ1YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5oCkBAIC02LDcgKzYsNyBAQAogI2RlZmluZSBfTUlCR1JPVVBfVURQVEFCTEVfSAogCiBjb25maWdfYXJjaF9yZXF1aXJlKHNvbGFyaXMyLCBrZXJuZWxfc3Vub3M1KQotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcyBtaWJJSS9pcCkKK2NvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQogCiBleHRlcm4gdm9pZCAgICAgaW5pdF91ZHBUYWJsZSh2b2lkKTsKIGV4dGVybiBOZXRzbm1wX05vZGVfSGFuZGxlciB1ZHBUYWJsZV9oYW5kbGVyOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZDU4MzYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMKQEAgLTAsMCArMSw0MSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworc3RhdGljIGludAoraGFuZGxlX3VwZGF0ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgKnNldCA9IChpbnQqKWhhbmRsZXItPm15dm9pZDsKKworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxICYmICpzZXQgPCAwKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CisgICAgZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9DT01NSVQpCisgICAgICAgICpzZXQgPSAxOworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCituZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKgorbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IG9pZCogaWQsIHNpemVfdCBpZGxlbiwgaW50IG1vZGUsIGludCogc2V0KQoreworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlczsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpobmQ7CisKKyAgICBobmQgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJ1cGRhdGUiLCBoYW5kbGVfdXBkYXRlcyk7CisgICAgaWYgKGhuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGhuZC0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUOworICAgIGhuZC0+bXl2b2lkID0gc2V0OworCisgICAgcmVzID0gbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUobmFtZSwgaG5kLCBpZCwgaWRsZW4sIG1vZGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShobmQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MTRlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmgKQEAgLTAsMCArMSwxNiBAQAorI2lmbmRlZiBVUERBVEVTX0gKKyNkZWZpbmUgVVBEQVRFU19ICisKKy8qKgorICogQ3JlYXRlIGEgaGFuZGxlcl9yZWdpc3RyYXRpb24gdGhhdCBjaGVja3MgKnNldCB0byBkZXRlcm1pbmUgaG93IHRvIHByb2NlZWRlLAorICogaWYgKnNldCBpcyBsZXNzIHRoYW4gMCB0aGVuIHRoZSBvYmplY3QgaXMgbm9ud3JpdGVhYmxlLCBvdGhlcndpc2UsICpzZXQgaXMKKyAqIHNldCB0byAxIGluIHRoZSBjb21taXQgcGhhc2UuIEFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBhcyBpbgorICogbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24uCisgKi8KKworZXh0ZXJuIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qCituZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQqIGlkLCBzaXplX3QgaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUsIGludCogc2V0KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jCmluZGV4IDdkNzhhMWYuLjhiMmFlNzcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jCkBAIC00OSwyNSArNDksNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAjaW5jbHVkZSAidmFjbV9jb25mLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKLSMgaWZkZWYgV0lOMzIKLSMgIGluY2x1ZGUgPHN5cy90aW1lYi5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbmRpZgotIyBpbmNsdWRlIDx0aW1lLmg+Ci0jZWxzZQotIyBpZiBIQVZFX1NZU19USU1FX0gKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKLSNlbmRpZgogCiAjaW5jbHVkZSAic25tcGQuaCIKIApAQCAtMTE5LDcgKzEwMCw3IEBACiAgICAgICogRGVmaW5lIHN0YW5kYXJkIHZpZXdzICJfYWxsXyIgYW5kICJfbm9uZV8iCiAgICAgICovCiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1BPU1RfUFJFTUlCX1JFQURfQ09ORklHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19QUkVfUkVBRF9DT05GSUcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWNtX3N0YW5kYXJkX3ZpZXdzLCBOVUxMKTsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUE9TVF9SRUFEX0NPTkZJRywKQEAgLTE3NCwyNCArMTU1LDI0IEBACiB2b2lkCiB2YWNtX3BhcnNlX2dyb3VwKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpwYXJhbSkKIHsKLSAgICBjaGFyICAgICAgICAgICAqZ3JvdXAsICptb2RlbCwgKnNlY3VyaXR5OworICAgIGNoYXIgICAgICAgICAgICBncm91cFtWQUNNU1RSSU5HTEVOXSwgbW9kZWxbVkFDTVNUUklOR0xFTl0sIHNlY3VyaXR5W1ZBQ01TVFJJTkdMRU5dOwogICAgIGludCAgICAgICAgICAgICBpbW9kZWw7CiAgICAgc3RydWN0IHZhY21fZ3JvdXBFbnRyeSAqZ3AgPSBOVUxMOwogICAgIGNoYXIgICAgICAgICAgICpzdDsKIAotICAgIGdyb3VwID0gc3RydG9rX3IocGFyYW0sICIgXHRcbiIsICZzdCk7Ci0gICAgbW9kZWwgPSBzdHJ0b2tfcihOVUxMLCAiIFx0XG4iLCAmc3QpOwotICAgIHNlY3VyaXR5ID0gc3RydG9rX3IoTlVMTCwgIiBcdFxuIiwgJnN0KTsKKyAgICBzdCA9IGNvcHlfbndvcmQocGFyYW0sIGdyb3VwLCBzaXplb2YoZ3JvdXApLTEpOworICAgIHN0ID0gY29weV9ud29yZChzdCwgbW9kZWwsIHNpemVvZihtb2RlbCktMSk7CisgICAgc3QgPSBjb3B5X253b3JkKHN0LCBzZWN1cml0eSwgc2l6ZW9mKHNlY3VyaXR5KS0xKTsKIAotICAgIGlmIChncm91cCA9PSBOVUxMIHx8ICpncm91cCA9PSAwKSB7CisgICAgaWYgKGdyb3VwWzBdID09IDApIHsKICAgICAgICAgY29uZmlnX3BlcnJvcigibWlzc2luZyBHUk9VUCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobW9kZWwgPT0gTlVMTCB8fCAqbW9kZWwgPT0gMCkgeworICAgIGlmIChtb2RlbFswXSA9PSAwKSB7CiAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1pc3NpbmcgTU9ERUwgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHNlY3VyaXR5ID09IE5VTEwgfHwgKnNlY3VyaXR5ID09IDApIHsKKyAgICBpZiAoc2VjdXJpdHlbMF0gPT0gMCkgewogICAgICAgICBjb25maWdfcGVycm9yKCJtaXNzaW5nIFNFQ1VSSVRZIHBhcmFtZXRlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAxNyw3ICs5OTgsNyBAQAogICAgICAgICAgICAgICAgIGlmICghaXNhbG51bSgqdG1wKSkKICAgICAgICAgICAgICAgICAgICAgKnRtcCA9ICdfJzsKICAgICAgICAgICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICIlcyAlcyAlcyIsIGdycG5hbWUsIG1vZGVsLCBzZWNuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICIlcyAlcyBcIiVzXCIiLCBncnBuYW1lLCBtb2RlbCwgc2VjbmFtZSk7CiAgICAgICAgICAgICBsaW5lWyBzaXplb2YobGluZSktMSBdID0gMDsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKHRva2VuLCAicGFzc2luZzogJXMgJXNcbiIsICJncm91cCIsIGxpbmUpKTsKICAgICAgICAgICAgIHZhY21fcGFyc2VfZ3JvdXAoImdyb3VwIiwgbGluZSk7CkBAIC0xMjYyLDYgKzEyNDMsMTQgQEAKIHZhY21fY2hlY2tfdmlldyhuZXRzbm1wX3BkdSAqcGR1LCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZWxlbiwKICAgICAgICAgICAgICAgICBpbnQgY2hlY2tfc3VidHJlZSwgaW50IHZpZXd0eXBlKQogeworICAgIHJldHVybiB2YWNtX2NoZWNrX3ZpZXdfY29udGVudHMocGR1LCBuYW1lLCBuYW1lbGVuLCBjaGVja19zdWJ0cmVlLCB2aWV3dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBQ01fQ0hFQ0tfVklFV19DT05URU5UU19OT19GTEFHUyk7Cit9CisKK2ludAordmFjbV9jaGVja192aWV3X2NvbnRlbnRzKG5ldHNubXBfcGR1ICpwZHUsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGVja19zdWJ0cmVlLCBpbnQgdmlld3R5cGUsIGludCBmbGFncykKK3sKICAgICBzdHJ1Y3QgdmFjbV9hY2Nlc3NFbnRyeSAqYXA7CiAgICAgc3RydWN0IHZhY21fZ3JvdXBFbnRyeSAqZ3A7CiAgICAgc3RydWN0IHZhY21fdmlld0VudHJ5ICp2cDsKQEAgLTE0MjEsNyArMTQxMCw4IEBACiAgICAgICAgIGNvbnRleHROYW1lSW5kZXhbMF0gPSAnXDAnOwogCiAgICAgY29udGV4dE5hbWVJbmRleFtwZHUtPmNvbnRleHROYW1lTGVuXSA9ICdcMCc7Ci0gICAgaWYgKCFuZXRzbm1wX3N1YnRyZWVfZmluZF9maXJzdChjb250ZXh0TmFtZUluZGV4KSkgeworICAgIGlmICghKGZsYWdzICYgVkFDTV9DSEVDS19WSUVXX0NPTlRFTlRTX0RORV9DT05URVhUX09LKSAmJgorICAgICAgICAhbmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dE5hbWVJbmRleCkpIHsKICAgICAgICAgLyoKICAgICAgICAgICogcmZjIDM0MTUgc2VjdGlvbiAzLjIsIHN0ZXAgMQogICAgICAgICAgKiBubyBzdWNoIGNvbnRleHQgaGVyZTsgcmV0dXJuIG5vIHN1Y2ggY29udGV4dCBlcnJvciAKQEAgLTE0NDcsNyArMTQzNyw3IEBACiAgICAgICAgIHJldHVybiBWQUNNX05PQUNDRVNTOwogICAgIH0KIAotICAgIGlmIChuYW1lID09IDApIHsgICAgICAgICAgICAvKiBvbmx5IGNoZWNrIHRoZSBzZXR1cCBvZiB0aGUgdmFjbSBmb3IgdGhlIHJlcXVlc3QgKi8KKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7IC8qIG9ubHkgY2hlY2sgdGhlIHNldHVwIG9mIHRoZSB2YWNtIGZvciB0aGUgcmVxdWVzdCAqLwogICAgICAgICBERUJVR01TRygoIm1pYklJL3ZhY21fdmFycyIsICIsIERvbmUgY2hlY2tpbmcgc2V0dXBcbiIpKTsKICAgICAgICAgcmV0dXJuIFZBQ01fU1VDQ0VTUzsKICAgICB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCmluZGV4IDhlMTU5NzguLjc4NjRjZTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCkBAIC03LDcgKzcsNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS92YWNtLmg+CiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCiBjb25maWdfYmVsb25nc19pbihhZ2VudF9tb2R1bGUpCiAKICNkZWZpbmUgVkFDTV9DUkVBVEVfU0lNUExFX1YzICAgICAgIDEKQEAgLTQzLDUgKzQyLDEwIEBACiAKICAgICAgaW50ICAgICAgICAgICAgIHZhY21faW5fdmlldyhuZXRzbm1wX3BkdSAqLCBvaWQgKiwgc2l6ZV90LCBpbnQpOwogICAgICBpbnQgICAgICAgICAgICAgdmFjbV9jaGVja192aWV3KG5ldHNubXBfcGR1ICosIG9pZCAqLCBzaXplX3QsIGludCwgaW50KTsKKyAgICAgaW50ICAgICAgICAgICAgIHZhY21fY2hlY2tfdmlld19jb250ZW50cyhuZXRzbm1wX3BkdSAqLCBvaWQgKiwgc2l6ZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50LCBpbnQpOworCisjZGVmaW5lIFZBQ01fQ0hFQ0tfVklFV19DT05URU5UU19OT19GTEFHUyAgICAgICAgMAorI2RlZmluZSBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfRE5FX0NPTlRFWFRfT0sgIDEKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfVkFDTV9DT05GX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKaW5kZXggMDkzN2ZjNS4uNmI3M2E5NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKQEAgLTQ4LDEwICs0OCwxMCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAjaW5jbHVkZSAidmFjbV92YXJzLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAotI2lmZGVmIFVTSU5HX01JQklJX1NZU09SVEFCTEVfTU9EVUxFCiAjaWYgVElNRV9XSVRIX1NZU19USU1FCiAjIGlmZGVmIFdJTjMyCiAjICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KQEAgLTY2LDQxICs2Niw1MiBAQAogIyAgaW5jbHVkZSA8dGltZS5oPgogIyBlbmRpZgogI2VuZGlmCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgotI2VuZGlmCisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgdmFjbVZpZXdTcGluTG9jayA9IDA7CiAKIHZvaWQKIGluaXRfdmFjbV92YXJzKHZvaWQpCiB7CiAKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotICAgIHN0YXRpYyBvaWQgICAgICByZWdbXSA9IHsgU05NUF9PSURfU05NUE1PRFVMRVMsIDE2LCAyLCAyLCAxIH07Ci0jZW5kaWYKKyAgICBvaWQgICAgICByZWdbXSA9IHsgU05NUF9PSURfU05NUE1PRFVMRVMsIDE2LCAyLCAyLCAxIH07CiAKICNkZWZpbmUgUFJJVlJXCShORVRTTk1QX1NOTVBWMkFOWSB8IDB4NTAwMCkKIAogICAgIHN0cnVjdCB2YXJpYWJsZTEgdmFjbV9zZWMyZ3JvdXBbXSA9IHsKLSAgICAgICAge1NFQ1VSSVRZR1JPVVAsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7M319LAotICAgICAgICB7U0VDVVJJVFlTVE9SQUdFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV9zZWMyZ3JvdXAsIDEsIHs0fX0sCi0gICAgICAgIHtTRUNVUklUWVNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7NX19LAorICAgICAgICB7U0VDVVJJVFlHUk9VUCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7M319LAorICAgICAgICB7U0VDVVJJVFlTVE9SQUdFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7NH19LAorICAgICAgICB7U0VDVVJJVFlTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9zZWMyZ3JvdXAsIDEsIHs1fX0sCiAgICAgfTsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTEgdmFjbV9hY2Nlc3NbXSA9IHsKLSAgICAgICAge0FDQ0VTU01BVENILCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs0fX0sCi0gICAgICAgIHtBQ0NFU1NSRUFELCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl92YWNtX2FjY2VzcywgMSwgezV9fSwKLSAgICAgICAge0FDQ0VTU1dSSVRFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl92YWNtX2FjY2VzcywgMSwgezZ9fSwKLSAgICAgICAge0FDQ0VTU05PVElGWSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs3fX0sCi0gICAgICAgIHtBQ0NFU1NTVE9SQUdFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs4fX0sCi0gICAgICAgIHtBQ0NFU1NTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX2FjY2VzcywgMSwgezl9fSwKKyAgICAgICAge0FDQ0VTU01BVENILCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fYWNjZXNzLCAxLCB7NH19LAorICAgICAgICB7QUNDRVNTUkVBRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fYWNjZXNzLCAxLCB7NX19LAorICAgICAgICB7QUNDRVNTV1JJVEUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezZ9fSwKKyAgICAgICAge0FDQ0VTU05PVElGWSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fYWNjZXNzLCAxLCB7N319LAorICAgICAgICB7QUNDRVNTU1RPUkFHRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezh9fSwKKyAgICAgICAge0FDQ0VTU1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezl9fSwKICAgICB9OwogCiAgICAgc3RydWN0IHZhcmlhYmxlMyB2YWNtX3ZpZXdbXSA9IHsKLSAgICAgICAge1ZBQ01WSUVXU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3ZpZXcsIDEsIHsxfX0sCi0gICAgICAgIHtWSUVXTUFTSywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgM319LAotICAgICAgICB7VklFV1RZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3ZpZXcsIDMsIHsyLCAxLCA0fX0sCi0gICAgICAgIHtWSUVXU1RPUkFHRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDV9fSwKLSAgICAgICAge1ZJRVdTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3ZpZXcsIDMsIHsyLCAxLCA2fX0sCisgICAgICAgIHtWQUNNVklFV1NQSU5MT0NLLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMSwgezF9fSwKKyAgICAgICAge1ZJRVdNQVNLLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgM319LAorICAgICAgICB7VklFV1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNH19LAorICAgICAgICB7VklFV1NUT1JBR0UsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNX19LAorICAgICAgICB7VklFV1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3ZpZXcsIDMsIHsyLCAxLCA2fX0sCiAgICAgfTsKIAogICAgIC8qCkBAIC0xMjYsMTEgKzEzNyw3IEBACiAgICAgICAgICAgICAgICAgIHZhY21fYWNjZXNzX29pZCk7CiAgICAgUkVHSVNURVJfTUlCKCJtaWJJSS92YWNtOnZpZXciLCB2YWNtX3ZpZXcsIHZhcmlhYmxlMywgdmFjbV92aWV3X29pZCk7CiAKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotICAgIHJlZ2lzdGVyX3N5c09SVGFibGUocmVnLCAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJWaWV3LWJhc2VkIEFjY2VzcyBDb250cm9sIE1vZGVsIGZvciBTTk1QLiIpOwotI2VuZGlmCi0KKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShyZWcsICJWaWV3LWJhc2VkIEFjY2VzcyBDb250cm9sIE1vZGVsIGZvciBTTk1QLiIpOwogfQogCiAKQEAgLTE4MSwxMyArMTg4LDEzIEBACiAgICAgICAgIGdyb3VwU3VidHJlZSA9IG5hbWUgKyAxMzsKICAgICAgICAgZ3JvdXBTdWJ0cmVlTGVuID0gKmxlbmd0aCAtIDEzOwogICAgICAgICBpZiAoIG5hbWVbMTJdICE9IGdyb3VwU3VidHJlZUxlbiApCi0gICAgICAgICAgICByZXR1cm4gMDsJCS8qIEVpdGhlciBleHRyYSBzdWJpZHMsIG9yIGFuIGluY29tcGxldGUgc3RyaW5nICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsJLyogRWl0aGVyIGV4dHJhIHN1Ymlkcywgb3IgYW4gaW5jb21wbGV0ZSBzdHJpbmcgKi8KICAgICAgICAgY3AgPSBzZWNuYW1lOwogICAgICAgICB3aGlsZSAoZ3JvdXBTdWJ0cmVlTGVuLS0gPiAwKSB7CiAgICAgICAgICAgICBpZiAoKmdyb3VwU3VidHJlZSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsgICAgICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICBpZiAoY3AgLSBzZWNuYW1lID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKmdyb3VwU3VidHJlZSsrOwogICAgICAgICB9CiAgICAgICAgICpjcCA9IDA7CkBAIC0yMDAsOSArMjA3LDkgQEAKICAgICAgICAgY3AgPSBzZWNuYW1lOwogICAgICAgICB3aGlsZSAoZ3JvdXBTdWJ0cmVlTGVuLS0gPiAwKSB7CiAgICAgICAgICAgICBpZiAoKmdyb3VwU3VidHJlZSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsgICAgICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICBpZiAoY3AgLSBzZWNuYW1lID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKmdyb3VwU3VidHJlZSsrOwogICAgICAgICB9CiAgICAgICAgICpjcCA9IDA7CkBAIC0zMTUsMTEgKzMyMiwxMSBAQAogICAgICAgICBvcCA9IG5hbWUgKyAxMTsKICAgICAgICAgbGVuID0gKm9wKys7CiAgICAgICAgIGlmIChsZW4gPiBWQUNNX01BWF9TVFJJTkcpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBjcCA9IGdyb3VwTmFtZTsKICAgICAgICAgd2hpbGUgKGxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpvcCA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsgICAgICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMzI5LDExICszMzYsMTEgQEAKICAgICAgICAgICovCiAgICAgICAgIGxlbiA9ICpvcCsrOwogICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY3AgPSBjb250ZXh0UHJlZml4OwogICAgICAgICB3aGlsZSAobGVuLS0gPiAwKSB7CiAgICAgICAgICAgICBpZiAoKm9wID4gMjU1KQotICAgICAgICAgICAgICAgIHJldHVybiAwOyAgICAgICAvKiBpbGxlZ2FsIHZhbHVlICovCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpvcCsrOwogICAgICAgICB9CiAgICAgICAgICpjcCA9IDA7CkBAIC0zNjEsMTEgKzM2OCwxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGVuID0gKm9wOwogICAgICAgICAgICAgaWYgKGxlbiA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGNwID0gZ3JvdXBOYW1lOwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBsZW47IGkrKykgewogICAgICAgICAgICAgICAgIGlmICgqb3AgPiAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpvcCsrOwogICAgICAgICAgICAgfQpAQCAtMzc1LDExICszODIsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9ICpvcDsKICAgICAgICAgICAgIGlmIChsZW4gPiBWQUNNX01BWF9TVFJJTkcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBjcCA9IGNvbnRleHRQcmVmaXg7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCpvcCA+IDI1NSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsgICAvKiBpbGxlZ2FsIHZhbHVlICovCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKm9wKys7CiAgICAgICAgICAgICB9CkBAIC01MjgsMTEgKzUzNSwxMSBAQAogICAgICAgICAgICAgb3AgPSBuYW1lICsgMTI7CiAgICAgICAgICAgICBsZW4gPSAqb3ArKzsKICAgICAgICAgICAgIGlmIChsZW4gPiBWQUNNX01BWF9TVFJJTkcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBjcCA9IHZpZXdOYW1lOwogICAgICAgICAgICAgd2hpbGUgKGxlbi0tID4gMCkgewogICAgICAgICAgICAgICAgIGlmICgqb3AgPiAyNTUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpjcCA9IDA7CkBAIC01NDMsNyArNTUwLDcgQEAKICAgICAgICAgICAgIHN1YnRyZWVbMF0gPSBsZW4gPSAqb3ArKzsKICAgICAgICAgICAgIHN1YnRyZWVMZW4gPSAxOwogICAgICAgICAgICAgaWYgKGxlbiA+IE1BWF9PSURfTEVOKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKCAob3ArbGVuKSAhPSAobmFtZSArICpsZW5ndGgpICkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgIC8qIERlY2xhcmVkIGxlbmd0aCBkb2Vzbid0IG1hdGNoIHdoYXQgd2UgYWN0dWFsbHkgZ290ICovCiAgICAgICAgICAgICBvcDEgPSAmKHN1YnRyZWVbMV0pOwpAQCAtNTY2LDExICs1NzMsMTEgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGVuID0gKm9wOwogICAgICAgICAgICAgICAgIGlmIChsZW4gPiBWQUNNX01BWF9TVFJJTkcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBjcCA9IHZpZXdOYW1lOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gbGVuICYmIG9wIDwgbmFtZSArICpsZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBpZiAoKm9wID4gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpvcCsrOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgKaW5kZXggODA5MzE1Ny4uODg4YzFiOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgKQEAgLTcsNyArNyw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3ZhY20uaD4KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiBjb25maWdfcmVxdWlyZShtaWJJSS92YWNtX2NvbnRleHQpCiBjb25maWdfcmVxdWlyZShtaWJJSS92YWNtX2NvbmYpCiBjb25maWdfYWRkX21pYihTTk1QLVZJRVctQkFTRUQtQUNNLU1JQikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKaW5kZXggNWNlZjFjZi4uZGZjMWU4ZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlICJrZXJuZWwuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAic3RydWN0LmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogCiAjaWZuZGVmICBNSU4KICNkZWZpbmUgIE1JTihhLGIpICAgICAgICAgICAgICAgICAgICAgKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQpAQCAtMzEzLDcgKzMxMiw3IEBACiBzdGF0aWMgbWliX2lwUm91dGVFbnQgKnJ0ID0gKG1pYl9pcFJvdXRlRW50ICopIDA7CiBzdGF0aWMgdm9pZCAgICAgUm91dGVfU2Nhbl9SZWxvYWQodm9pZCk7CiAjZWxpZiAhZGVmaW5lZChzb2xhcmlzMikKLXN0YXRpYyBSVEVOVFJZICoqcnRoZWFkID0gMDsKK3N0YXRpYyBSVEVOVFJZICoqcnRoZWFkID0gTlVMTDsKIHN0YXRpYyBpbnQgICAgICBydHNpemUgPSAwLCBydGFsbG9jYXRlID0gMDsKIAogc3RhdGljIHZvaWQgICAgIFJvdXRlX1NjYW5fUmVsb2FkKHZvaWQpOwpAQCAtNzYyLDYgKzc2MSwxMCBAQAogICAgICAgICBpZiAoZ2V0TWlic3RhdChNSUJfSVBfUk9VVEUsICZlbnRyeSwgc2l6ZW9mKG1pYjJfaXBSb3V0ZUVudHJ5X3QpLAogICAgICAgICAgICAgICAgICAgICAgICByZXFfdHlwZSwgJklQX0NtcF9Sb3V0ZSwgJk5leHRlbnRyeSkgIT0gMCkKICAgICAgICAgICAgIGJyZWFrOworI2lmZGVmIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUKKyAgICAgICAgaWYoZW50cnkuaXBSb3V0ZUluZm8ucmVfaXJlX3R5cGUmSVJFX0NBQ0hFKQorICAgICAgICAgICAgY29udGludWU7CisjZW5kaWYgLyogSEFWRV9ERUZJTkVEX0lSRV9DQUNIRSAqLwogICAgICAgICBDT1BZX0lQQUREUihjcCwgKHVfY2hhciAqKSAmIGVudHJ5LmlwUm91dGVEZXN0LCBvcCwKICAgICAgICAgICAgICAgICAgICAgY3VycmVudCArIElQX1JPVVRFQUREUl9PRkYpOwogICAgICAgICBpZiAoZXhhY3QpIHsKQEAgLTg2NSw3ICs4NjgsNyBAQAogc3RhdGljIGludCAgICAgIHFzb3J0X2NvbXBhcmUoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFJURU5UUllfNF80KSB8fCBkZWZpbmVkKFJURU5UUllfUlRfTkVYVCkgfHwgZGVmaW5lZChocHV4MTEpCisjaWYgZGVmaW5lZChSVEVOVFJZXzRfNCkgfHwgZGVmaW5lZChSVEVOVFJZX1JUX05FWFQpIHx8IGRlZmluZWQgKGhwdXgxMSkKIAogI2lmIGRlZmluZWQoUlRFTlRSWV80XzQpICYmICFkZWZpbmVkKGhwdXgxMSkKIHZvaWQKQEAgLTg3NSw3ICs4NzgsNyBAQAogICAgIFJURU5UUlkgICAgICAgICBydDsKICAgICBzdHJ1Y3QgaWZuZXQgICAgaWZuZXQ7CiAgICAgY2hhciAgICAgICAgICAgIG5hbWVbMTZdLCB0ZW1wWzE2XTsKLSNpZiAhU1RSVUNUX0lGTkVUX0hBU19JRl9YTkFNRQorI2lmICFIQVZFX1NUUlVDVF9JRk5FVF9JRl9YTkFNRQogICAgIHJlZ2lzdGVyIGNoYXIgICpjcDsKICNlbmRpZgogCkBAIC05MDgsNyArOTExLDcgQEAKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibWliSUkvdmFyX3JvdXRlIiwgImtsb29rdXAgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9YTkFNRQogI2lmIGRlZmluZWQobmV0YnNkMSkgfHwgZGVmaW5lZChvcGVuYnNkMikKICAgICAgICAgICAgIHN0cmxjcHkobmFtZSwgaWZuZXQuaWZfeG5hbWUsIHNpemVvZihuYW1lKSk7CiAjZWxzZQpAQCAtMTQ2Niw3ICsxNDY5LDcgQEAKICAgICAgKiAxLjMuNi4xLjIuMS40LjIxLjEuPy5BLkIuQy5ELCAgd2hlcmUgQS5CLkMuRCBpcyBJUCBhZGRyZXNzLgogICAgICAqIElQQUREUiBzdGFydHMgYXQgb2Zmc2V0IDEwLgogICAgICAqLwotICAgIHJlZ2lzdGVyIGludCAgICBTYXZlX1ZhbGlkLCByZXN1bHQsIFJ0SW5kZXg7CisgICAgcmVnaXN0ZXIgaW50ICAgIFNhdmVfVmFsaWQsIHJlc3VsdCwgUnRJbmRleCA9IDA7CiAgICAgc3RhdGljIGludCAgICAgIHNhdmVOYW1lTGVuID0gMCwgc2F2ZUV4YWN0ID0gMCwgc2F2ZVJ0SW5kZXggPQogICAgICAgICAwLCBydHNpemUgPSAwOwogICAgIHN0YXRpYyBvaWQgICAgICBzYXZlTmFtZVtNQVhfT0lEX0xFTl0sIEN1cnJlbnRbTUFYX09JRF9MRU5dOwpAQCAtMTQ3Nyw4ICsxNDgwLDYgQEAKICAgICBzdGF0aWMgUE1JQl9JUEZPUldBUkRUQUJMRSBwSXBSdHJUYWJsZSA9IE5VTEw7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKICAgICBzdGF0aWMgbG9uZyAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7Ci0gICAgdV9jaGFyICAgICAgICAgIGRlc3RfYWRkcls0XTsKLSAgICBNSUJfSVBGT1JXQVJEUk9XIHRlbXBfcm93OwogICAgIHN0YXRpYyBpbl9hZGRyX3QgYWRkcl9yZXQ7CiAKIApAQCAtMTU3MywxMiArMTU3NCwxNiBAQAogICAgICAgICAgICAgICogZm9yIGNyZWF0aW9uIG9mIG5ldyByb3csIG9ubHkgaXBOZXRUb01lZGlhVGFibGUgY2FzZSBpcyBjb25zaWRlcmVkIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoKmxlbmd0aCA9PSAxNCkgeworICAgICAgICAgICAgICAgIHVfY2hhciAgICAgICAgICAgZGVzdF9hZGRyWzRdOworICAgICAgICAgICAgICAgIE1JQl9JUEZPUldBUkRST1cgdGVtcF9yb3c7CisKICAgICAgICAgICAgICAgICBjcmVhdGVfZmxhZyA9IDE7CiAgICAgICAgICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3J0ZTsKICAgICAgICAgICAgICAgICBkZXN0X2FkZHJbMF0gPSAodV9jaGFyKSBuYW1lWzEwXTsKICAgICAgICAgICAgICAgICBkZXN0X2FkZHJbMV0gPSAodV9jaGFyKSBuYW1lWzExXTsKICAgICAgICAgICAgICAgICBkZXN0X2FkZHJbMl0gPSAodV9jaGFyKSBuYW1lWzEyXTsKICAgICAgICAgICAgICAgICBkZXN0X2FkZHJbM10gPSAodV9jaGFyKSBuYW1lWzEzXTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoJnRlbXBfcm93LCAwLCBzaXplb2YodGVtcF9yb3cpKTsKICAgICAgICAgICAgICAgICB0ZW1wX3Jvdy5kd0ZvcndhcmREZXN0ID0gKigoRFdPUkQgKikgZGVzdF9hZGRyKTsKICAgICAgICAgICAgICAgICB0ZW1wX3Jvdy5kd0ZvcndhcmRQb2xpY3kgPSAwOwogICAgICAgICAgICAgICAgIHRlbXBfcm93LmR3Rm9yd2FyZFByb3RvID0gTUlCX0lQUFJPVE9fTkVUTUdNVDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmgKaW5kZXggOTFlY2VlOC4uNzg2MmM0MyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmgKQEAgLTUsNyArNSw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9WQVJfUk9VVEVfSAogI2RlZmluZSBfTUlCR1JPVVBfVkFSX1JPVVRFX0gKIAotY29uZmlnX3JlcXVpcmUobWliSUkvaXAgdXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwga2VybmVsX3N1bm9zNSkKIAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF92YXJfcm91dGUodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYyBiL2FnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jCmluZGV4IDY2M2E1ZTUuLmNjYTk4NzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogI2luY2x1ZGUgImlwZndhY2MuaCIKIAogLyoKQEAgLTE4NSw0MCArMTg1LDU4IEBACiAgKi8KIAogc3RydWN0IHZhcmlhYmxlMiBpcGZ3YWNjX3ZhcmlhYmxlc1tdID0gewotICAgIHtJUEZXQUNDSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDSU5ERVh9fSwKLSAgICB7SVBGV0FDQ1NSQ0FERFIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NTUkNBRERSfX0sCi0gICAge0lQRldBQ0NTUkNOTSwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1NSQ05NfX0sCi0gICAge0lQRldBQ0NEU1RBRERSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDRFNUQUREUn19LAotICAgIHtJUEZXQUNDRFNUTk0sIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NEU1ROTX19LAotICAgIHtJUEZXQUNDVklBTkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ1ZJQU5BTUV9fSwKLSAgICB7SVBGV0FDQ1ZJQUFERFIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NWSUFBRERSfX0sCi0gICAge0lQRldBQ0NQUk9UTywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQUk9UT319LAotICAgIHtJUEZXQUNDQklESVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDQklESVJ9fSwKLSAgICB7SVBGV0FDQ0RJUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NESVJ9fSwKLSAgICB7SVBGV0FDQ0JZVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0JZVEVTfX0sCi0gICAge0lQRldBQ0NQQUNLRVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BBQ0tFVFN9fSwKLSAgICB7SVBGV0FDQ05TUkNQUlRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ05TUkNQUlRTfX0sCi0gICAge0lQRldBQ0NORFNUUFJUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NORFNUUFJUU319LAotICAgIHtJUEZXQUNDU1JDSVNSTkcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDU1JDSVNSTkd9fSwKLSAgICB7SVBGV0FDQ0RTVElTUk5HLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ0RTVElTUk5HfX0sCi0gICAge0lQRldBQ0NQT1JUMSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUMX19LAotICAgIHtJUEZXQUNDUE9SVDIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDJ9fSwKLSAgICB7SVBGV0FDQ1BPUlQzLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQzfX0sCi0gICAge0lQRldBQ0NQT1JUNCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUNH19LAotICAgIHtJUEZXQUNDUE9SVDUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDV9fSwKLSAgICB7SVBGV0FDQ1BPUlQ2LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ2fX0sCi0gICAge0lQRldBQ0NQT1JUNywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUN319LAotICAgIHtJUEZXQUNDUE9SVDgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDh9fSwKLSAgICB7SVBGV0FDQ1BPUlQ5LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ5fX0sCi0gICAge0lQRldBQ0NQT1JUMTAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDEwfX0KKyAgICB7SVBGV0FDQ0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0lOREVYfX0sCisgICAge0lQRldBQ0NTUkNBRERSLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDU1JDQUREUn19LAorICAgIHtJUEZXQUNDU1JDTk0sIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NTUkNOTX19LAorICAgIHtJUEZXQUNDRFNUQUREUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0RTVEFERFJ9fSwKKyAgICB7SVBGV0FDQ0RTVE5NLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRFNUTk19fSwKKyAgICB7SVBGV0FDQ1ZJQU5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NWSUFOQU1FfX0sCisgICAge0lQRldBQ0NWSUFBRERSLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDVklBQUREUn19LAorICAgIHtJUEZXQUNDUFJPVE8sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUFJPVE99fSwKKyAgICB7SVBGV0FDQ0JJRElSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0JJRElSfX0sCisgICAge0lQRldBQ0NESVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRElSfX0sCisgICAge0lQRldBQ0NCWVRFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NCWVRFU319LAorICAgIHtJUEZXQUNDUEFDS0VUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQQUNLRVRTfX0sCisgICAge0lQRldBQ0NOU1JDUFJUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NOU1JDUFJUU319LAorICAgIHtJUEZXQUNDTkRTVFBSVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDTkRTVFBSVFN9fSwKKyAgICB7SVBGV0FDQ1NSQ0lTUk5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1NSQ0lTUk5HfX0sCisgICAge0lQRldBQ0NEU1RJU1JORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NEU1RJU1JOR319LAorICAgIHtJUEZXQUNDUE9SVDEsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDF9fSwKKyAgICB7SVBGV0FDQ1BPUlQyLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQyfX0sCisgICAge0lQRldBQ0NQT1JUMywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUM319LAorICAgIHtJUEZXQUNDUE9SVDQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDR9fSwKKyAgICB7SVBGV0FDQ1BPUlQ1LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ1fX0sCisgICAge0lQRldBQ0NQT1JUNiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUNn19LAorICAgIHtJUEZXQUNDUE9SVDcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDd9fSwKKyAgICB7SVBGV0FDQ1BPUlQ4LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ4fX0sCisgICAge0lQRldBQ0NQT1JUOSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUOX19LAorICAgIHtJUEZXQUNDUE9SVDEwLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQxMH19CiB9OwogCiBvaWQgICAgICAgICAgICAgaXBmd2FjY192YXJpYWJsZXNfb2lkW10gPQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmggYi9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuaAppbmRleCBkOWI2ZTYxLi42MzljNzM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuaAorKysgYi9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuaApAQCAtNiwxMCArNiwxMCBAQAogI2RlZmluZSBfTUlCR1JPVVBfSVBGV0FDQ19ICiAKIC8qCi0gKiB3ZSB1c2UgY2hlY2ttaWIgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCisgKiB3ZSB1c2UgaGVhZGVyX3NpbXBsZV90YWJsZSBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZQogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiAKICAgICAvKgogICAgICAqIGFkZCB0aGUgbWliIHdlIGltcGxlbWVudCB0byB0aGUgbGlzdCBvZiBkZWZhdWx0IG1pYnMgdG8gbG9hZCAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYwppbmRleCA5YjFmZjUxLi5kNmExZWU0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jCkBAIC0xNiw3ICsxNiw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oPgotI2luY2x1ZGUgIm1pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCIKKyNpbmNsdWRlICJuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgiCiAjaW5jbHVkZSAibm90aWZpY2F0aW9uX2xvZy5oIgogCiAvKgpAQCAtMTQzLDExICsxNDMsMTEgQEAKICAgICAgKi8KICAgICBjb3VudCA9IG5ldHNubXBfdGFibGVfc2V0X251bV9yb3dzKG5sbUxvZ1RhYmxlKTsKICAgICBERUJVR01TR1RMKCgibm90aWZpY2F0aW9uX2xvZyIsCi0gICAgICAgICAgICAgICAgImxvZ2dlZCBub3RpZmljYXRpb25zICVkOyBtYXggJWRcbiIsCisgICAgICAgICAgICAgICAgImxvZ2dlZCBub3RpZmljYXRpb25zICVsdTsgbWF4ICVsdVxuIiwKICAgICAgICAgICAgICAgICAgICAgY291bnQsIG1heF9sb2dnZWQpKTsKICAgICBpZiAoY291bnQgPiBtYXhfbG9nZ2VkKSB7CiAgICAgICAgIGNvdW50ID0gY291bnQgLSBtYXhfbG9nZ2VkOwotICAgICAgICBERUJVR01TR1RMKCgibm90aWZpY2F0aW9uX2xvZyIsICJyZW1vdmluZyAlZCBleHRyYSBub3RpZmljYXRpb25zXG4iLAorICAgICAgICBERUJVR01TR1RMKCgibm90aWZpY2F0aW9uX2xvZyIsICJyZW1vdmluZyAlbHUgZXh0cmEgbm90aWZpY2F0aW9uc1xuIiwKICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsKICAgICAgICAgbmV0c25tcF9ub3RpZl9sb2dfcmVtb3ZlX29sZGVzdChjb3VudCk7CiAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgfQogCiAgICAgaWYgKGNvdW50KSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJub3RpZmljYXRpb25fbG9nIiwgInJlbW92aW5nICVkIGV4cGlyZWQgbm90aWZpY2F0aW9uc1xuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLCAicmVtb3ZpbmcgJWx1IGV4cGlyZWQgbm90aWZpY2F0aW9uc1xuIiwKICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsKICAgICAgICAgbmV0c25tcF9ub3RpZl9sb2dfcmVtb3ZlX29sZGVzdChjb3VudCk7CiAgICAgfQpAQCAtNTYyLDcgKzU2Miw3IEBACiAgICAgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQobmxtTG9nVGFibGUpOwogICAgIG5sbUxvZ1RhYmxlID0gTlVMTDsKIAotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZShubG1fbW9kdWxlX29pZCwgT0lEX0xFTkdUSChubG1fbW9kdWxlX29pZCkpOworICAgIFVOUkVHSVNURVJfU1lTT1JfRU5UUlkobmxtX21vZHVsZV9vaWQpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYwppbmRleCA4OTczNTQ2Li4yMGE5NTVjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKQEAgLTU3LDEzICs1NywxMyBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgU05NUE5PVElGWUZJTFRFUlBST0ZJTEVOQU1FICAzCi0gICAge1NOTVBOT1RJRllGSUxURVJQUk9GSUxFTkFNRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QTk9USUZZRklMVEVSUFJPRklMRU5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUsIDIsIHsxLCAxfX0sCiAjZGVmaW5lICAgU05NUE5PVElGWUZJTFRFUlBST0ZJTEVTVE9SVFlQRSAgNAotICAgIHtTTk1QTk9USUZZRklMVEVSUFJPRklMRVNUT1JUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QTk9USUZZRklMVEVSUFJPRklMRVNUT1JUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUgICBTTk1QTk9USUZZRklMVEVSUFJPRklMRVJPV1NUQVRVUyAgNQotICAgIHtTTk1QTk9USUZZRklMVEVSUFJPRklMRVJPV1NUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLCAyLCB7MSwgM319LAogCiB9OwpAQCAtNjQ5LDYgKzY0OSw4IEBACiAKICAgICAgICAgICAgIFN0b3JhZ2VOZXcgPQogICAgICAgICAgICAgICAgIFNOTVBfTUFMTE9DX1NUUlVDVChzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX2RhdGEpOworICAgICAgICAgICAgaWYgKFN0b3JhZ2VOZXcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICAgICAgU3RvcmFnZU5ldy0+c25tcFRhcmdldFBhcmFtc05hbWUgPQogICAgICAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKHZhcnMtPnZhbC5zdHJpbmcsIHZhcnMtPnZhbF9sZW4pOwogICAgICAgICAgICAgU3RvcmFnZU5ldy0+c25tcFRhcmdldFBhcmFtc05hbWVMZW4gPSB2YXJzLT52YWxfbGVuOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jCmluZGV4IDNkM2U0MDEuLmYxYWJlYWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaD4KLSNpbmNsdWRlICJtaWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAibmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oIgogCiAjaWZkZWYgVVNJTkdfTk9USUZJQ0FUSU9OX0xPR19NSUJfTk9USUZJQ0FUSU9OX0xPR19NT0RVTEUKICMgICBpbmNsdWRlICJub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgiCkBAIC02Miw3ICs2Miw3IEBACiAKIHZvaWQgc2h1dGRvd25fc25tcE5vdGlmeVRhYmxlKHZvaWQpCiB7Ci0gICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlKHNubXBOb3RpZnlGdWxsQ29tcGxpYW5jZSwgT0lEX0xFTkdUSChzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UpKTsKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBOb3RpZnlGdWxsQ29tcGxpYW5jZSk7CiB9CiAKIApAQCAtNzgsMTUgKzc4LDE3IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUgICBTTk1QTk9USUZZVEFHICAgICAgICAgNAotICAgIHtTTk1QTk9USUZZVEFHLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCAyfX0sCisgICAge1NOTVBOT1RJRllUQUcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NubXBOb3RpZnlUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUgICBTTk1QTk9USUZZVFlQRSAgICAgICAgNQotICAgIHtTTk1QTk9USUZZVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3NubXBOb3RpZnlUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7U05NUE5PVElGWVRZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCAzfX0sCiAjZGVmaW5lICAgU05NUE5PVElGWVNUT1JBR0VUWVBFICA2Ci0gICAge1NOTVBOT1RJRllTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3NubXBOb3RpZnlUYWJsZSwgMiwKLSAgICAgezEsIDR9fSwKKyAgICB7U05NUE5PVElGWVNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgNH19LAogI2RlZmluZSAgIFNOTVBOT1RJRllST1dTVEFUVVMgICA3Ci0gICAge1NOTVBOT1RJRllST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsCi0gICAgIHsxLCA1fX0sCisgICAge1NOTVBOT1RJRllST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCA1fX0sCiAKIH07CiAvKgpAQCAtMjE5LDcgKzIyMSw3IEBACiAgICAgbmV0c25tcF9wZHUgICAgKnRlbXBsYXRlX3BkdSA9IChuZXRzbm1wX3BkdSAqKSBzZXJ2ZXJhcmc7CiAgICAgaW50ICAgICAgICAgICAgIGNvdW50ID0gMCwgc2VuZCA9IDA7CiAKLSAgICBERUJVR01TR1RMKCgic2VuZF9ub3RpZmljYXRpb25zIiwgInN0YXJ0aW5nOiBwZHU9JXgsIHZhcnM9JXhcbiIsCisgICAgREVCVUdNU0dUTCgoInNlbmRfbm90aWZpY2F0aW9ucyIsICJzdGFydGluZzogcGR1PSVwLCB2YXJzPSVwXG4iLAogICAgICAgICAgICAgICAgIHRlbXBsYXRlX3BkdSwgdGVtcGxhdGVfcGR1LT52YXJpYWJsZXMpKTsKIAogICAgIGZvciAoaHB0ciA9IHNubXBOb3RpZnlUYWJsZVN0b3JhZ2U7IGhwdHI7IGhwdHIgPSBocHRyLT5uZXh0KSB7CkBAIC0zNTMsNiArMzU1LDEwIEBACiAgICAgICAgIHBwdHItPnNlY01vZGVsID0gc3MtPnNlY3VyaXR5TW9kZWw7CiAgICAgICAgIHBwdHItPnNlY0xldmVsID0gc3MtPnNlY3VyaXR5TGV2ZWw7CiAgICAgICAgIHBwdHItPnNlY05hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3MtPnNlY3VyaXR5TmFtZUxlbiArIDEpOworICAgICAgICBpZiAocHB0ci0+c2VjTmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHBwdHIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgbWVtY3B5KCh2b2lkICopIHBwdHItPnNlY05hbWUsICh2b2lkICopIHNzLT5zZWN1cml0eU5hbWUsCiAgICAgICAgICAgICAgICBzcy0+c2VjdXJpdHlOYW1lTGVuKTsKICAgICAgICAgcHB0ci0+c2VjTmFtZVtzcy0+c2VjdXJpdHlOYW1lTGVuXSA9IDA7CkBAIC0zNjgsNiArMzc0LDEwIEBACiAgICAgICAgIHBwdHItPnNlY05hbWUgPSBOVUxMOwogICAgICAgICBpZiAoc3MtPmNvbW11bml0eSAmJiAoc3MtPmNvbW11bml0eV9sZW4gPiAwKSkgewogICAgICAgICAgICAgcHB0ci0+c2VjTmFtZSA9IChjaGFyICopIG1hbGxvYyhzcy0+Y29tbXVuaXR5X2xlbiArIDEpOworICAgICAgICAgICAgaWYgKHBwdHItPnNlY05hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UocHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtZW1jcHkoKHZvaWQgKikgcHB0ci0+c2VjTmFtZSwgKHZvaWQgKikgc3MtPmNvbW11bml0eSwKICAgICAgICAgICAgICAgICAgICBzcy0+Y29tbXVuaXR5X2xlbik7CiAgICAgICAgICAgICBwcHRyLT5zZWNOYW1lW3NzLT5jb21tdW5pdHlfbGVuXSA9IDA7CkBAIC0zODUsNiArMzk1LDggQEAKICAgICAgKiBub3RpZnkgdGFibGUgCiAgICAgICovCiAgICAgbnB0ciA9IFNOTVBfTUFMTE9DX1NUUlVDVChzbm1wTm90aWZ5VGFibGVfZGF0YSk7CisgICAgaWYgKG5wdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgbnB0ci0+c25tcE5vdGlmeU5hbWUgPSBzdHJkdXAoYnVmKTsKICAgICBucHRyLT5zbm1wTm90aWZ5TmFtZUxlbiA9IHN0cmxlbihidWYpOwogICAgIG5wdHItPnNubXBOb3RpZnlUYWcgPSBzdHJkdXAoYnVmKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMDlkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi5oCkBAIC0wLDAgKzEsOCBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUocm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlKQorY29uZmlnX2FkZF9taWIoUk1PTi1NSUIpCisKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0cy5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNWRkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzLmgKQEAgLTAsMCArMSw3IEBACisvKgorICogbW9kdWxlIHRvIGluY2x1ZGUgdGhlIG1vZHVsZXMKKyAqLworCisjaWYgZGVmaW5lZChsaW51eCkKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXgpCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjY0NmZkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCkBAIC0wLDAgKzEsMzE1IEBACisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAicm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oIgorI2luY2x1ZGUgInJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKyNpbmNsdWRlICJybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oIgorCisvKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGdldGlmYWRkcnMgZmFpbGVkIAorICogQHJldHZhbCAtMiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQKKyAqLworCitzdHJ1Y3QgaWZuYW1lICoKK2V0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQgKHN0cnVjdCBpZm5hbWUgKmxpc3RfaGVhZCwgaW50ICpyZXR2YWwpCit7CisgICAgc3RydWN0IGlmYWRkcnMgKmFkZHJzID0gTlVMTCwgKnAgPSBOVUxMOworICAgIHN0cnVjdCBpZm5hbWUgKm5hbWVwdHIxPU5VTEwsICpuYW1lcHRyMiA9IE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKChnZXRpZmFkZHJzKCZhZGRycykpIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgICAgICJnZXRpZmFkZHJzIGZhaWxlZFxuIikpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIGdldGlmYWRkcnMgZmFpbGVkXG4iKTsKKyAgICAgICAgKnJldHZhbCA9IC0xOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKHAgPSBhZGRyczsgcDsgcCA9IHAtPmlmYV9uZXh0KSB7CisKKyAgICAgICAgaWYgKCFsaXN0X2hlYWQpIHsKKyAgICAgICAgICAgIGlmICggKGxpc3RfaGVhZCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICAgZnJlZWlmYWRkcnMoYWRkcnMpOworICAgICAgICAgICAgICAgICpyZXR2YWwgPSAtMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbXNldChsaXN0X2hlYWQsIDAsIHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgICAgICBzdHJsY3B5KGxpc3RfaGVhZC0+bmFtZSwgcC0+aWZhX25hbWUsIElGX05BTUVTSVpFKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgICBmb3IgKG5hbWVwdHIxID0gbGlzdF9oZWFkOyBuYW1lcHRyMTsgbmFtZXB0cjIgPSBuYW1lcHRyMSwgbmFtZXB0cjEgPSBuYW1lcHRyMS0+aWZuX25leHQpCisgICAgICAgICAgICBpZiAoIXN0cm5jbXAocC0+aWZhX25hbWUsIG5hbWVwdHIxLT5uYW1lLCBJRl9OQU1FU0laRSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKG5hbWVwdHIxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCAobmFtZXB0cjItPmlmbl9uZXh0ID0gKHN0cnVjdCBpZm5hbWUgKikgbWFsbG9jIChzaXplb2Yoc3RydWN0IGlmbmFtZSkpKSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIGV0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIChsaXN0X2hlYWQpOworICAgICAgICAgICAgZnJlZWlmYWRkcnMoYWRkcnMpOworICAgICAgICAgICAgKnJldHZhbCA9IC0yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmFtZXB0cjIgPSBuYW1lcHRyMi0+aWZuX25leHQ7CisgICAgICAgIG1lbXNldChuYW1lcHRyMiwgMCwgc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgc3RybGNweShuYW1lcHRyMi0+bmFtZSwgcC0+aWZhX25hbWUsIElGX05BTUVTSVpFKTsKKyAgICAgICAgY29udGludWU7CisgICAgfQorCisgICAgZnJlZWlmYWRkcnMoYWRkcnMpOworICAgICpyZXR2YWwgPSAwOworICAgIHJldHVybiBsaXN0X2hlYWQ7Cit9CisKKworLyoKKyAqIEByZXR2YWwgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGludmFsaWQgcG9pbnRlcgorICovCisKK2ludAorZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUgKHN0cnVjdCBpZm5hbWUgKmxpc3RfaGVhZCkKK3sKKyAgICBzdHJ1Y3QgaWZuYW1lICpuYW1lcHRyMSA9IE5VTEwsICpuYW1lcHRyMiA9IE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmICghbGlzdF9oZWFkKSB7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWU6IGludmFsaWQgcG9pbnRlciBsaXN0X2hlYWQiKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIiwKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgcG9pbnRlciBsaXN0X2hlYWRcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAobmFtZXB0cjEgPSBsaXN0X2hlYWQ7IG5hbWVwdHIxOyBuYW1lcHRyMSA9IG5hbWVwdHIyKSB7CisgICAgICAgICAgICBuYW1lcHRyMiA9IG5hbWVwdHIxLT5pZm5fbmV4dDsKKyAgICAgICAgICAgIGZyZWUgKG5hbWVwdHIxKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIEByZXR2YWwgIDAgOiBub3QgZm91bmQKKyAqIEByZXR2YWwgITAgOiBpZkluZGV4CisgKi8KKworaW50CitldGhlcnN0YXRzX2ludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCAoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lKSB7CisjaWZuZGVmIFNJT0NHSUZJTkRFWAorICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBzdHJ1Y3QgaWZyZXEgICAgaWZycTsKKyAgICBpbnQgcmMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwiLCAiaWZpbmRleF9nZXRcbiIpKTsKKworICAgIHJjID0gX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGZkLCBTSU9DR0lGSU5ERVgsICZpZnJxLCBuYW1lKTsKKyAgICBpZiAocmMgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0czppb2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJpZmluZGV4X2dldCBlcnJvciBvbiBpbmVyZmFjZSAnJXMnXG4iLCBuYW1lKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppb2N0bCwgaWZpbmRleF9nZXQgZXJyb3Igb24gaW5lcmZhY2UgJyVzJ1xuIiwgbmFtZSk7CisgICAgICAgIHJldHVybiAwOworCisgICAgfQorCisgICAgcmV0dXJuIGlmcnEuaWZyX2lmaW5kZXg7CisjZW5kaWYgLyogU0lPQ0dJRklOREVYICovCit9CisKKy8qCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgY2Fubm90IGdldCBFVEhUT09MX0RSVklORk8gZmFpbGVkIAorICogQHJldHZhbCAtMiBuX3N0YXRzIHplcm8gLSBubyBzdGF0aXN0Y3MgYXZhaWxhYmxlCisgKiBAcmV0dmFsIC0zIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBob2xkaW5nIHRoZSBzdGF0aXN0aWNzIGZhaWxlZAorICogQHJldHZhbCAtNCBjYW5ub3QgZ2V0IEVUSFRPT0xfR1NUUklOR1MgaW5mb3JtYXRpb24KKyAqIEByZXR2YWwgLTUgY2Fubm90IGdldCBFVEhUT09MX0dTVEFUUyBpbmZvcm1hdGlvbgorICogQHJldHZhbCAtNiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGlmIEhBVkVfTElOVVhfRVRIVE9PTF9IIG5vdCBkZWZpbmVkCisgKi8KKworaW50CitpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ICwgaW50IGZkLCBjb25zdCBjaGFyICpuYW1lKSB7CisKKyNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAorCisgICAgZXRoZXJTdGF0c1RhYmxlX2RhdGEgKmRhdGEgPSAmcm93cmVxX2N0eC0+ZGF0YTsKKyAgICBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvIGRyaXZlcl9pbmZvOworICAgIHN0cnVjdCBldGh0b29sX2dzdHJpbmdzICpldGhfc3RyaW5nczsKKyAgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqZXRoX3N0YXRzOworICAgIHN0cnVjdCBpZnJlcSBpZnI7CisgICAgdW5zaWduZWQgaW50IG5zdGF0cywgc2l6ZV9zdHIsIGk7CisgICAgaW50IGVycjsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKyAgICBzdHJsY3B5KGlmci5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpOworCisgICAgbWVtc2V0KCZkcml2ZXJfaW5mbywgMCwgc2l6ZW9mKGRyaXZlcl9pbmZvKSk7CisgICAgZHJpdmVyX2luZm8uY21kID0gRVRIVE9PTF9HRFJWSU5GTzsKKyAgICBpZnIuaWZyX2RhdGEgPSAoY2hhciAqKSZkcml2ZXJfaW5mbzsKKworICAgIGVyciA9IF9ldGhlclN0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJFVEhUT09MX0dFVERSVklORk8gZmFpbGVkIG9uIGludGVyZmFjZSB8JXN8IFxuIiwgbmFtZSkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbnN0YXRzID0gZHJpdmVyX2luZm8ubl9zdGF0czsKKyAgICBpZiAobnN0YXRzIDwgMSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAibm8gc3RhdHMgYXZhaWxhYmxlIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIHNpemVfc3RyID0gbnN0YXRzICogRVRIX0dTVFJJTkdfTEVOOworCisgICAgZXRoX3N0cmluZ3MgPSBtYWxsb2Moc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX2dzdHJpbmdzKSk7CisgICAgaWYgKCFldGhfc3RyaW5ncykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAibm8gbWVtb3J5IGF2YWlsYWJsZVxuIikpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0LCBubyBtZW1vcnkgYXZhaWxhYmxlXG4iKTsKKworICAgICAgICByZXR1cm4gLTM7CisgICAgfQorICAgIG1lbXNldCAoZXRoX3N0cmluZ3MsIDAsIChzaXplX3N0ciArIHNpemVvZiAoc3RydWN0IGV0aHRvb2xfZ3N0cmluZ3MpKSk7CisKKyAgICBldGhfc3RhdHMgPSBtYWxsb2MgKHNpemVfc3RyICsgc2l6ZW9mIChzdHJ1Y3QgZXRodG9vbF9zdGF0cykpOworICAgIGlmICghZXRoX3N0YXRzKSB7CisgICAgICAgIGZyZWUgKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCwgbm8gbWVtb3J5IGF2YWlsYWJsZVxuIik7CisKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKyAgICBtZW1zZXQgKGV0aF9zdGF0cywgMCwgKHNpemVfc3RyICsgc2l6ZW9mIChzdHJ1Y3QgZXRodG9vbF9zdGF0cykpKTsKKworICAgIGV0aF9zdHJpbmdzLT5jbWQgPSBFVEhUT09MX0dTVFJJTkdTOworICAgIGV0aF9zdHJpbmdzLT5zdHJpbmdfc2V0ID0gRVRIX1NTX1NUQVRTOworICAgIGV0aF9zdHJpbmdzLT5sZW4gPSBuc3RhdHM7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikgZXRoX3N0cmluZ3M7CisKKyAgICBlcnIgPSBfZXRoZXJTdGF0c19pb2N0bF9nZXQoZmQsIFNJT0NFVEhUT09MLCAmaWZyLCBuYW1lKTsKKyAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGdldCBzdGF0cyBzdHJpbmdzIGluZm9ybWF0aW9uIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCwgY2Fubm90IGdldCBzdGF0cyBzdHJpbmdzIGluZm9ybWF0aW9uIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpOworCisgICAgICAgIGZyZWUoZXRoX3N0cmluZ3MpOworICAgICAgICBmcmVlKGV0aF9zdGF0cyk7CisgICAgICAgIHJldHVybiAtNDsKKyAgICB9CisKKyAgICBldGhfc3RhdHMtPmNtZCA9IEVUSFRPT0xfR1NUQVRTOworICAgIGV0aF9zdGF0cy0+bl9zdGF0cyA9IG5zdGF0czsKKyAgICBpZnIuaWZyX2RhdGEgPSAoY2hhciAqKSBldGhfc3RhdHM7CisgICAgZXJyID0gX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGZkLCBTSU9DRVRIVE9PTCwgJmlmciwgbmFtZSk7CisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQsIGNhbm5vdCBnZXQgc3RhdHMgaW5mb3JtYXRpb24gZm9yIGludGVyZmFjZSB8JXN8IFxuIiwgbmFtZSk7CisKKyAgICAgICAgZnJlZShldGhfc3RyaW5ncyk7CisgICAgICAgIGZyZWUoZXRoX3N0YXRzKTsKKyAgICAgICAgcmV0dXJuIC01OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBuc3RhdHM7IGkrKykgeworICAgICAgICBjaGFyIHNbRVRIX0dTVFJJTkdfTEVOXTsKKworICAgICAgICBzdHJsY3B5KHMsIChjb25zdCBjaGFyICopICZldGhfc3RyaW5ncy0+ZGF0YVtpICogRVRIX0dTVFJJTkdfTEVOXSwKKyAgICAgICAgICAgICAgICBzaXplb2YocykpOworICAgICAgICAKKyAgICAgICAgaWYgKEVUSEVSU1RBVFNKQUJCRVJTKHMpKSB7CisgICAgICAgICAgICBkYXRhLT5ldGhlclN0YXRzSmFiYmVycyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlNfRkxBRzsKKyAgICAgICAgfQorICAgIH0KKyAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICBmcmVlKGV0aF9zdGF0cyk7CisKKyAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgcmV0dXJuIC02OworI2VuZGlmCisKK30KKworCisvKiBpb2N0bCB3cmFwcGVyCisgKgorICogQHBhcmFtIGZkIDogc29ja2V0IGZkIHRvIHVzZSB3L2lvY3RsLCBvciAtMSB0byBvcGVuL2Nsb3NlIG9uZQorICogQHBhcmFtIHdoaWNoCisgKiBAcGFyYW0gaWZycQorICogcGFyYW0gaWZlbnRyeSA6IGlmZW50cnkgdG8gdXBkYXRlCisgKiBAcGFyYW0gbmFtZQorICoKKyAqIEByZXR2YWwgIDAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIDogaW52YWxpZCBwYXJhbWV0ZXJzCisgKiBAcmV0dmFsIC0yIDogY291bGRuJ3QgY3JlYXRlIHNvY2tldAorICogQHJldHZhbCAtMyA6IGlvY3RsIGNhbGwgZmFpbGVkCisgKi8KK2ludAorX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGludCBmZCwgaW50IHdoaWNoLCBzdHJ1Y3QgaWZyZXEgKmlmcnEsIGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaW50IG91cmZkID0gLTEsIHJjID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsIiwgIl9ldGhlclN0YXRzX2lvY3RsX2dldFxuIikpOworICAgIC8qCisgICAgICogc2FuaXR5IGNoZWNrcworICAgICAqLworICAgIGlmKE5VTEwgPT0gbmFtZSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppb2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJfZXRoZXJTdGF0c19pb2N0bF9nZXQgaW52YWxpZCBpZm5hbWUgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwsIF9ldGhlclN0YXRzX2lvY3RsX2dldCBlcnJvciBvbiBpbmVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qCisgICAgICogY3JlYXRlIHNvY2tldCBmb3IgaW9jdGxzCisgICAgICovCisgICAgaWYoZmQgPCAwKSB7CisgICAgICAgIGZkID0gb3VyZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgICAgIGlmKG91cmZkIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9ldGhlclN0YXRzX2lvY3RsX2dldCBjb3VsZG4ndCBjcmVhdGUgYSBzb2NrZXRcbiIsIG5hbWUpKTsKKyAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppb2N0bCwgX2V0aGVyU3RhdHNfaW9jdGxfZ2V0IGVycm9yIG9uIGluZXJmYWNlICclcydcbiIsIG5hbWUpOworCisgICAgICAgICAgICByZXR1cm4gLTI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJsY3B5KGlmcnEtPmlmcl9uYW1lLCBuYW1lLCBzaXplb2YoaWZycS0+aWZyX25hbWUpKTsKKyAgICByYyA9IGlvY3RsKGZkLCB3aGljaCwgaWZycSk7CisgICAgaWYgKHJjIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppb2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJfZXRoZXJTdGF0c19pb2N0bF9nZXQgaW9jdGwgJWQgcmV0dXJuZWQgJWRcbiIsIHdoaWNoLCByYykpOworICAgICAgICByYyA9IC0zOworICAgIH0KKworICAgIGlmKG91cmZkID49IDApCisgICAgICAgIGNsb3NlKG91cmZkKTsKKworICAgIHJldHVybiByYzsKK30KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzI4NDVlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwxMSBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUocm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0cykKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0KQorY29uZmlnX3JlcXVpcmUocm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldCkKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MpIAorY29uZmlnX3JlcXVpcmUocm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UpCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWE2ZTIyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5jCkBAIC0wLDAgKzEsMjMzIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGV0aGVyU3RhdHNUYWJsZQorICoKKyAqIFxzZWN0aW9uIGludHJvIEludHJvZHVjdGlvbgorICogSW50cm9kdWN0b3J5IHRleHQuCisgKgorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlLmgiCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oPgorCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCitvaWQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZFtdID0geyBFVEhFUlNUQVRTVEFCTEVfT0lEIH07CitpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChldGhlclN0YXRzVGFibGVfb2lkKTsKKworZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiBldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0Oworc3RhdGljIGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKmV0aGVyU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcDsKKwordm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfZXRoZXJTdGF0c1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX2V0aGVyU3RhdHNUYWJsZSh2b2lkKTsKKworCisvKioKKyAqIEluaXRpYWxpemVzIHRoZSBldGhlclN0YXRzVGFibGUgbW9kdWxlCisgKi8KK3ZvaWQKK2luaXRfZXRoZXJTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmluaXRfZXRoZXJTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAwOm86IFBlcmZvcm0gZXRoZXJTdGF0c1RhYmxlIG9uZS10aW1lIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogaGVyZSB3ZSBpbml0aWFsaXplIGFsbCB0aGUgdGFibGVzIHdlJ3JlIHBsYW5uaW5nIG9uIHN1cHBvcnRpbmcKKyAgICAgKi8KKyAgICBpZiAoc2hvdWxkX2luaXQoImV0aGVyU3RhdHNUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2V0aGVyU3RhdHNUYWJsZSgpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRfZXRoZXJTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dC1kb3duIHRoZSBldGhlclN0YXRzVGFibGUgbW9kdWxlIChhZ2VudCBpcyBleGl0aW5nKQorICovCit2b2lkCitzaHV0ZG93bl9ldGhlclN0YXRzVGFibGUodm9pZCkKK3sKKyAgICBpZiAoc2hvdWxkX2luaXQoImV0aGVyU3RhdHNUYWJsZSIpKQorICAgICAgICBzaHV0ZG93bl90YWJsZV9ldGhlclN0YXRzVGFibGUoKTsKKworfQorCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGV0aGVyU3RhdHNUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitpbml0aWFsaXplX3RhYmxlX2V0aGVyU3RhdHNUYWJsZSh2b2lkKQoreworICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTppbml0aWFsaXplX3RhYmxlX2V0aGVyU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMTpvOiBQZXJmb3JtIGV0aGVyU3RhdHNUYWJsZSBvbmUtdGltZSB0YWJsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogVE9ETzozMDI6bzogfC0+SW5pdGlhbGl6ZSBldGhlclN0YXRzVGFibGUgdXNlciBjb250ZXh0CisgICAgICogaWYgeW91J2QgbGlrZSB0byBwYXNzIGluIGEgcG9pbnRlciB0byBzb21lIGRhdGEgZm9yIHRoaXMKKyAgICAgKiB0YWJsZSwgYWxsb2NhdGUgb3Igc2V0IGl0IHVwIGhlcmUuCisgICAgICovCisgICAgLyoKKyAgICAgKiBhIG5ldHNubXBfZGF0YV9saXN0IGlzIGEgc2ltcGxlIHdheSB0byBzdG9yZSB2b2lkIHBvaW50ZXJzLiBBIHNpbXBsZQorICAgICAqIHN0cmluZyB0b2tlbiBpcyB1c2VkIHRvIGFkZCwgZmluZCBvciByZW1vdmUgcG9pbnRlcnMuCisgICAgICovCisgICAgZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wCisJPSBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QoImV0aGVyU3RhdHNUYWJsZSIsIE5VTEwsIE5VTEwpOworCisgICAgLyoKKyAgICAgKiBObyBzdXBwb3J0IGZvciBhbnkgZmxhZ3MgeWV0LCBidXQgaW4gdGhlIGZ1dHVyZSB5b3Ugd291bGQKKyAgICAgKiBzZXQgYW55IGZsYWdzIGhlcmUuCisgICAgICovCisgICAgZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgX2V0aGVyU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorCShldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3AsIGZsYWdzKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUgKi8KKworLyoqCisgKiBTaHV0ZG93biB0aGUgdGFibGUgZXRoZXJTdGF0c1RhYmxlIAorICovCit2b2lkCitzaHV0ZG93bl90YWJsZV9ldGhlclN0YXRzVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGNhbGwgaW50ZXJmYWNlIHNodXRkb3duIGNvZGUKKyAgICAgKi8KKyAgICBfZXRoZXJTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGV0aGVyU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wID0gTlVMTDsKK30KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGluaXRpYWxpemF0aW9uIChlZyBkZWZhdWx0IHZhbHVlcykKKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eCAgICA6IHJvdyByZXF1ZXN0IGNvbnRleHQKKyAqIEBwYXJhbSB1c2VyX2luaXRfY3R4IDogdm9pZCBwb2ludGVyIGZvciB1c2VyIChwYXJhbWV0ZXIgdG8gcm93cmVxX2N0eF9hbGxvY2F0ZSkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICA6IG5vIGVycm9ycworICogQHJldHZhbCBNRkRfRVJST1IgICAgOiBlcnJvciAoY29udGV4dCBhbGxvY2F0ZSB3aWxsIGZhaWwpCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjEwOm86IHwtPiBQZXJmb3JtIGV4dHJhIGV0aGVyU3RhdHNUYWJsZSByb3dyZXEgaW5pdGlhbGl6YXRpb24uIChlZyBERUZWQUxTKQorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0ICovCisKKy8qKgorICogZXh0cmEgY29udGV4dCBjbGVhbnVwCisgKgorICovCit2b2lkCitldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGV0aGVyU3RhdHNUYWJsZSByb3dyZXEgY2xlYW51cC4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCAqLworCisvKioKKyAqIHByZS1yZXF1ZXN0IGNhbGxiYWNrCisgKgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTEwOm86IFBlcmZvcm0gZXRoZXJTdGF0c1RhYmxlIHByZS1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIHBvc3QtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqIE5vdGU6CisgKiAgIE5ldyByb3dzIGhhdmUgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBjb250YWluZXIsIGFuZAorICogICBkZWxldGVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyIGFuZAorICogICByZWxlYXNlZC4KKyAqCisgKiBAcGFyYW0gdXNlcl9jb250ZXh0CisgKiBAcGFyYW0gcmMgOiBNRkRfU1VDQ0VTUyBpZiBhbGwgcmVxdWVzdHMgc3VjY2VlZGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogb3RoZXIgZXJyb3IgKGlnbm9yZWQpCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmMpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBldGhlclN0YXRzVGFibGUgcG9zdC1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICAvKgorICAgICAqIGNoZWNrIHRvIHNldCBpZiBhbnkgcm93cyB3ZXJlIGNoYW5nZWQuCisgICAgICovCisgICAgaWYgKGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQoKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBpZiByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsLiBJZiBzbywgdGhpcyB3b3VsZCBiZQorICAgICAgICAgKiBhIGdvb2QgcGxhY2UgdG8gc2F2ZSBkYXRhIHRvIGl0cyBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKE1GRF9TVUNDRVNTID09IHJjKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc2F2ZSBjaGFuZ2VkIHJvd3MsIGlmIHlvdSBoYXZlbid0IGFscmVhZHkKKyAgICAgICAgICAgICAqLworICAgICAgICB9CisKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2RpcnR5X3NldCgwKTsgICAvKiBjbGVhciB0YWJsZSBkaXJ0eSBmbGFnICovCisgICAgfQorCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKworLyoqIEB7ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY3ZjAzYwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuaApAQCAtMCwwICsxLDMwMyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfSAorI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworLyoqIEBhZGR0b2dyb3VwIG1pc2MgbWlzYzogTWlzY2VsbGFuZW91cyByb3V0aW5lcworICoKKyAqIEB7CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKworICAgIC8qCisgICAgICogT0lEIGFuZCBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciBldGhlclN0YXRzVGFibGUgCisgICAgICovCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX29pZHMuaCIKKworICAgIC8qCisgICAgICogZW51bSBkZWZpbmlvbnMgCisgICAgICovCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2VudW1zLmgiCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgaW5pdF9ldGhlclN0YXRzVGFibGUodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX2V0aGVyU3RhdHNUYWJsZSh2b2lkKTsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogUk1PTi1NSUI6OmV0aGVyU3RhdHNUYWJsZSBpcyBzdWJpZCAxIG9mIHN0YXRpc3RpY3MuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogV2hlbiB5b3UgcmVnaXN0ZXIgeW91ciBtaWIsIHlvdSBnZXQgdG8gcHJvdmlkZSBhIGdlbmVyaWMKKyAgICAgKiBwb2ludGVyIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3UgZm9yIG1vc3Qgb2YgdGhlCisgICAgICogZnVuY3Rpb25zIGNhbGxzLgorICAgICAqCisgICAgICogVE9ETzoxMDA6cjogUmV2aWV3IGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFRPRE86MTAxOm86IHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIHJlZ2lzdHJhdGlvbiBjb250ZXh0LgorICAgICAqLworICAgIHR5cGVkZWYgbmV0c25tcF9kYXRhX2xpc3QgZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbjsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBUT0RPOjExMDpyOiB8LT4gUmV2aWV3IGV0aGVyU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgc3RydWN0dXJlLgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBkYXRhIGZvciBldGhlclN0YXRzVGFibGUuCisgICAgICovCisgICAgLyoKKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBzdG9yYWdlIGZvciBhbGwgdGhlIGNvbHVtbnMgZGVmaW5lZCBpbiB0aGUKKyAgICAgKiBldGhlclN0YXRzVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX2RhdGFfcyB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0RhdGFTb3VyY2UoMikvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL1cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlWzEyOF07CisgICAgICAgIHNpemVfdCAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV9sZW47ICAgICAgIC8qICMgb2Ygb2lkIGVsZW1lbnRzLCBub3QgYnl0ZXMgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRHJvcEV2ZW50cygzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c09jdGV0cyg0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c09jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0cyg1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1BrdHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMoNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzKDcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnMoOCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzVW5kZXJzaXplUGt0cyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c092ZXJzaXplUGt0cygxMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0ZyYWdtZW50cygxMSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0phYmJlcnMoMTIpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzSmFiYmVyczsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQ29sbGlzaW9ucygxMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNjRPY3RldHMoMTQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czY0T2N0ZXRzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cygxNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzKDE2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzKDE3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cygxOCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cygxOSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3duZXIoMjApL093bmVyU3RyaW5nL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9BL1cvZS9SL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lclsxMjddOworICAgICAgICBzaXplX3QgICAgICAgICAgZXRoZXJTdGF0c093bmVyX2xlbjsgICAgLyogIyBvZiBjaGFyIGVsZW1lbnRzLCBub3QgYnl0ZXMgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzU3RhdHVzOworCisgICAgfSBldGhlclN0YXRzVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMTU6bzogfC0+IFJldmlldyBldGhlclN0YXRzVGFibGUgdW5kbyBjb250ZXh0LgorICAgICAqIFdlJ3JlIGp1c3QgZ29pbmcgdG8gdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIGZvciBvdXIKKyAgICAgKiB1bmRvX2NvbnRleHQuIElmIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBtb3JlIGVmZmljZW50LAorICAgICAqIGRlZmluZSB5b3VyIHR5cGVkZWYgaGVyZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIGV0aGVyU3RhdHNUYWJsZV9kYXRhIGV0aGVyU3RhdHNUYWJsZV91bmRvX2RhdGE7CisKKyAgICAvKgorICAgICAqIFRPRE86MTIwOnI6IHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGV0aGVyU3RhdHNUYWJsZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBldGhlclN0YXRzVGFibGVfbWliX2luZGV4X3MgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgbG9uZyAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleDsKKworCisgICAgfSBldGhlclN0YXRzVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBldGhlclN0YXRzVGFibGUgbWF4IGluZGV4IGxlbmd0aC4KKyAgICAgKiBJZiB5b3UgS05PVyB0aGF0IHlvdXIgaW5kZXhlcyB3aWxsIG5ldmVyIGV4Y2VlZCBhIGNlcnRhaW4KKyAgICAgKiBsZW5ndGgsIHVwZGF0ZSB0aGlzIG1hY3JvIHRvIHRoYXQgbGVuZ3RoLgorICAgICAqLworI2RlZmluZSBNQVhfZXRoZXJTdGF0c1RhYmxlX0lEWF9MRU4gICAgIDEKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBldGhlclN0YXRzVGFibGUgUm93IHJlcXVlc3QgKHJvd3JlcSkgY29udGV4dC4KKyAgICAgKiBXaGVuIHlvdXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHlvdSB3aWxsIGJlIHBhc3NlZCBhCisgICAgICogZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggcG9pbnRlci4KKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9ldGhlclN0YXRzVGFibGVfSURYX0xFTl07CisKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCB0YmxfaWR4OworCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kYXRhIGRhdGE7CisgICAgICAgIHVuc2lnbmVkIGludCAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzOyAgICAvKiBmbGFncyBmb3IgZXhpc3RlbmNlICovCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV91bmRvX2RhdGEgKnVuZG87CisgICAgICAgIHVuc2lnbmVkIGludCAgICBjb2x1bW5fc2V0X2ZsYWdzOyAgICAgICAvKiBmbGFncyBmb3Igc2V0IGNvbHVtbnMgKi8KKworCisgICAgICAgIC8qCisgICAgICAgICAqIGZsYWdzIHBlciByb3cuIEN1cnJlbnRseSwgdGhlIGZpcnN0IChsb3dlcikgOCBiaXRzIGFyZSByZXNlcnZlZAorICAgICAgICAgKiBmb3IgdGhlIHVzZXIuIFNlZSBtZmQuaCBmb3Igb3RoZXIgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICB1X2ludCAgICAgICAgICAgcm93cmVxX2ZsYWdzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86MTMxOm86IHwgICB8LT4gQWRkIHVzZWZ1bCBkYXRhIHRvIGV0aGVyU3RhdHNUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgICAgICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogc3RvcmFnZSBmb3IgZnV0dXJlIGV4cGFuc2lvbgorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9kYXRhX2xpc3QgKmV0aGVyU3RhdHNUYWJsZV9kYXRhX2xpc3Q7CisKKyAgICB9IGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX3JlZl9yb3dyZXFfY3R4X3MgeworICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICB9IGV0aGVyU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eDsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jb250ZXh0KTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2NvbnRleHQsIGludCByYyk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdm9pZCAqdXNlcl9pbml0X2N0eCk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmV0aGVyU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworCisgICAgZXh0ZXJuIG9pZCAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gaW50ICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZF9zaXplOworCisKKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmgiCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmgiCisKKyAgICAvKgorICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQorICAgICAqCisgICAgICogVE9ETzowOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjI5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzozOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86NDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRVRIRVJTVEFUU1RBQkxFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNjcxZDAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTAsMCArMSw1MjUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlLmgiCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCisKKyNpZiBkZWZpbmVkKGxpbnV4KQorI2luY2x1ZGUgImlvY3RsX2ltcF9jb21tb24uaCIKKyNlbmRpZgorCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlCisgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKKyAqCisgKiBUaGVzZSByb3V0aW5lcyBhcmUgdXNlZCB0byBsb2NhdGUgdGhlIGRhdGEgdXNlZCB0byBzYXRpc2Z5CisgKiByZXF1ZXN0cy4KKyAqIAorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAqLworCisvKioKKyAqIGluaXRpYWxpemF0aW9uIGZvciBldGhlclN0YXRzVGFibGUgZGF0YSBhY2Nlc3MKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8KKyAqIGFsbG9jYXRlIGFueSByZXNvdXJjZXMgeW91IG5lZWQgZm9yIHRoZSBkYXRhIHRhYmxlLgorICoKKyAqIEBwYXJhbSBldGhlclN0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogdW5yZWNvdmVyYWJsZSBlcnJvci4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVnKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgZXRoZXJTdGF0c1RhYmxlIGRhdGEuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9pbml0X2RhdGEgKi8KKworLyoqCisgKiBjb250YWluZXIgb3ZlcnZpZXcKKyAqCisgKi8KKworLyoqCisgKiBjb250YWluZXIgaW5pdGlhbGl6YXRpb24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0cl9wdHIgQSBwb2ludGVyIHRvIGEgY29udGFpbmVyIHBvaW50ZXIuIElmIHlvdQorICogICAgICAgIGNyZWF0ZSBhIGN1c3RvbSBjb250YWluZXIsIHVzZSB0aGlzIHBhcmFtZXRlciB0byByZXR1cm4gaXQKKyAqICAgICAgICB0byB0aGUgTUZEIGhlbHBlci4gSWYgc2V0IHRvIE5VTEwsIHRoZSBNRkQgaGVscGVyIHdpbGwKKyAqICAgICAgICBhbGxvY2F0ZSBhIGNvbnRhaW5lciBmb3IgeW91LgorICogQHBhcmFtICBjYWNoZSBBIHBvaW50ZXIgdG8gYSBjYWNoZSBzdHJ1Y3R1cmUuIFlvdSBjYW4gc2V0IHRoZSB0aW1lb3V0CisgKiAgICAgICAgIGFuZCBvdGhlciBjYWNoZSBmbGFncyB1c2luZyB0aGlzIHBvaW50ZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLiBJZiBubyBjdXN0b20KKyAqICBjb250YWluZXIgaXMgYWxsb2NhdGVkLCB0aGUgTUZEIGNvZGUgd2lsbCBjcmVhdGUgb25lIGZvciB5b3VyLgorICoKKyAqICBUaGlzIGlzIGFsc28gdGhlIHBsYWNlIHRvIHNldCB1cCBjYWNoZSBiZWhhdmlvci4gVGhlIGRlZmF1bHQsIHRvCisgKiAgc2ltcGx5IHNldCB0aGUgY2FjaGUgdGltZW91dCwgd2lsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdAorICogIGNvbnRhaW5lci4gSWYgeW91IGFyZSB1c2luZyBhIGN1c3RvbSBjb250YWluZXIsIHlvdSBtYXkgd2FudCB0bworICogIGxvb2sgYXQgdGhlIGNhY2hlIGhlbHBlciBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55CisgKiAgZmxhZ3MgeW91IHdhbnQgdG8gc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgb3BlbmluZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCB3aWxsIHN1cHBseSB0aGUgZGF0YSwgb3BlbmluZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lciAqKiBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogRm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBjb250YWluZXIuIElmIHlvdQorICAgICAqIGRvIG5vdCBjcmVhdGUgb25lLCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuCisgICAgICovCisgICAgKmNvbnRhaW5lcl9wdHJfcHRyID0gTlVMTDsKKworICAgIGlmIChOVUxMID09IGNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY2FjaGUgcGFyYW0gdG8gZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogVE9ETzozNDU6QTogU2V0IHVwIGV0aGVyU3RhdHNUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gRVRIRVJTVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQ7ICAgICAvKiBzZWNvbmRzICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIGNvbnRhaW5lciBzaHV0ZG93bgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyIEEgcG9pbnRlciB0byB0aGUgY29udGFpbmVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzaHV0ZG93biB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUoKS4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgY2xlYW51cCBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgY2xvc2luZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCBzdXBwbGllZCB0aGUgZGF0YSwgY2xvc2luZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXJfcHRyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKy8qKgorICogbG9hZCBpbml0aWFsIGRhdGEKKyAqCisgKiBUT0RPOjM1MDpNOiBJbXBsZW1lbnQgZXRoZXJTdGF0c1RhYmxlIGRhdGEgbG9hZAorICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgY2FsbGVkIGJ5IHRoZSBjYWNoZSBoZWxwZXIgdG8gbG9hZAorICogdGhlIGNvbnRhaW5lciBhZ2FpbiAoYWZ0ZXIgdGhlIGNvbnRhaW5lciBmcmVlIGZ1bmN0aW9uIGhhcyBiZWVuCisgKiBjYWxsZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgY29udGVudHMpLgorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBldGhlclN0YXRzVGFibGVfcm93X3ByZXAoKSBmb3IgcG9wdWxhdGluZyBkYXRhLgorICoKKyAqIEBub3RlCisgKiAgSWYgeW91IG5lZWQgY29uc2lzdGVuY3kgYmV0d2VlbiByb3dzIChsaWtlIHlvdSB3YW50IHN0YXRpc3RpY3MKKyAqICBmb3IgZWFjaCByb3cgdG8gYmUgZnJvbSB0aGUgc2FtZSB0aW1lIGZyYW1lKSwgeW91IHNob3VsZCBzZXQgYWxsCisgKiAgZGF0YSBoZXJlLgorICoKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgc2l6ZV90ICAgICAgICAgIGNvdW50ID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozNTI6TTogfCAgIHwtPiBzZXQgaW5kZXhlcyBpbiBuZXcgZXRoZXJTdGF0c1RhYmxlIHJvd3JlcSBjb250ZXh0LgorICAgICAqIGRhdGEgY29udGV4dCB3aWxsIGJlIHNldCBmcm9tIHRoZSBwYXJhbSAodW5sZXNzIE5VTEwsCisgICAgICogICAgICBpbiB3aGljaCBjYXNlIGEgbmV3IGRhdGEgY29udGV4dCB3aWxsIGJlIGFsbG9jYXRlZCkKKyAgICAgKi8KKworICAgIC8qCisgICAgICogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGluZGV4IHZhbHVlcworICAgICAqLworICAgIAorICAgIC8qCisgICAgICogZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oCisgICAgICovCisKKyAgICBsb25nICAgICAgICAgICAgZXRoZXJTdGF0c0luZGV4OworICAgIGludCAgICAgICAgICAgICBmZDsKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSAwLCByZXR2YWwgPSAwOworCisjaWYgZGVmaW5lZChsaW51eCkKKyAgICBzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQgPSBOVUxMLCAqcCA9IE5VTEw7CisjZW5kaWYKKyAgICAKKyAgICAvKgorICAgICAqIGNyZWF0ZSBzb2NrZXQgZm9yIGlvY3RscworICAgICAqLworCisgICAgZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgaWYoZmQgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgY3JlYXRlIHNvY2tldFxuIik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGdldCB0aGUgaW50ZXJmYWNlIG5hbWVzIG9mIHRoZSBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSwgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHZhbCBzdWdnZXN0cyB0aGUgcmVzb24gZm9yIGZhaWx1cmUKKyAgICAgKiBhbmQgbGlzdF9oZWFkIGNvbnRhaW5zIG51bGwKKyAgICAgKi8KKworI2lmIGRlZmluZWQobGludXgpCisgICAgbGlzdF9oZWFkID0gZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2dldCAobGlzdF9oZWFkLCAmcmV0dmFsKTsKKworICAgIGlmICghbGlzdF9oZWFkKSB7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSwgZXJyb3IgZ2V0dGluZyB0aGUgaW50ZXJmYWNlIG5hbWVzIHByZXNlbnQgaW4gdGhlIHN5c3RlbVxuIik7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlIiwgImVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0iKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdhbGsgb3ZlciB0aGUgbGlzdCBvZiBpbnRlcmZhY2UgbmFtZXMgcHJlc2VudCBpbiB0aGUgc3lzdGVtIGFuZCByZXRyZWl2ZSB0aGUgc3RhdGlzdGljcyAKKyAgICAgKi8KKworICAgIGZvciAocCA9IGxpc3RfaGVhZDsgcDsgcCA9IHAtPmlmbl9uZXh0KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlIiwgInByb2Nlc3NpbmcgJyVzJ1xuIiwgcC0+bmFtZSkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBpbmRleCB2aWEgaW9jdGwuCisgICAgICAgICAqLworCisgICAgICAgIGV0aGVyU3RhdHNJbmRleCA9IChsb25nKSBldGhlcnN0YXRzX2ludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCgtMSwgcC0+bmFtZSk7CisKKyAgICAgICAgLyogCisgICAgICAgICAqICBnZXQgdGhlIGV0aGVyc3RhdHMgY29udGVudHMgcG9wdWxhdGVkLCBpZiB0aGUgZGV2aWNlIGlzIG5vdCBhbiBldGhlcm5ldCBkZXZpY2UKKyAgICAgICAgICogIHRoZSBvcGVyYXRpb24gd2lsbCBub3QgYmUgc3VwcG9ydGVkIGFuZCBhbiBlcnJvciBtZXNzYWdlIHdpbGwgYmUgbG9nZ2VkCisgICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgcm93cmVxX2N0eCA9IGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KE5VTEwpOworICAgICAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldChyb3dyZXFfY3R4LCBldGhlclN0YXRzSW5kZXgpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGRhdGEuXG4iKTsKKyAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86MzUyOnI6IHwgICB8LT4gcG9wdWxhdGUgZXRoZXJTdGF0c1RhYmxlIGRhdGEgY29udGV4dC4KKyAgICAgICAgICogUG9wdWxhdGUgZGF0YSBjb250ZXh0IGhlcmUuIChvcHRpb25hbGx5LCBkZWxheSB1bnRpbCByb3cgcHJlcCkKKyAgICAgICAgICovCisgICAgICAgIC8qCisgICAgICAgICAqIG5vbi1UUkFOU0lFTlQgZGF0YTogbm8gbmVlZCB0byBjb3B5LiBzZXQgcG9pbnRlciB0byBkYXRhIAorICAgICAgICAgKi8KKworICAgICAgICBtZW1zZXQgKCZyb3dyZXFfY3R4LT5kYXRhLCAwLCBzaXplb2YgKHJvd3JlcV9jdHgtPmRhdGEpKTsKKyAgICAgICAgcmMgPSBpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQgKHJvd3JlcV9jdHgsIGZkLCBwLT5uYW1lKTsKKworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBnZXR0aW5nIHRoZSBzdGF0aXN0aWNzIGZvciBpbnRlcmZhY2UgfCVzfCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGRhdGEsIG9wZXJhdGlvbiBtaWdodCBub3QgYmUgc3VwcG9ydGVkXG4iLCBwLT5uYW1lKSk7CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBpbnNlcnQgaW50byB0YWJsZSBjb250YWluZXIKKyAgICAgICAgICovCisgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBpbnNlcnRpbmcgfCVzfCAiLCBwLT5uYW1lKSk7CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIGNsb3NlKGZkKTsKKworICAgIC8qCisgICAgICogZnJlZSB0aGUgaW50ZXJmYWNlIG5hbWVzIGxpc3QgCisgICAgICovCisKKyAgICBpZiAoIChldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZShsaXN0X2hlYWQpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsIGVycm9yIGZyZWVpbmcgdGhlIGludGVyZmFjZSBuYW1lIGxpc3QgXG4iKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgZnJlZWluZyB0aGUgaW50ZXJmYWNlIG5hbWUgbGlzdFxuIikpOworICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgIH0KKyNlbmRpZgorICAgIAorICAgIERFQlVHTVNHVCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCIsCisgICAgICAgICAgICAgICAiaW5zZXJ0ZWQgJWQgcmVjb3Jkc1xuIiwgY291bnQpKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQgKi8KKworCisvKioKKyAqIGNvbnRhaW5lciBjbGVhbiB1cAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHdpdGggYWxsIGN1cnJlbnQgaXRlbXMKKyAqCisgKiAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBpcyBjYWxsZWQgcHJpb3IgdG8gYWxsCisgKiAgaXRlbSdzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyLiBJZiB5b3UKKyAqICBuZWVkIHRvIGRvIGFueSBwcm9jZXNzaW5nIGJlZm9yZSB0aGF0LCBkbyBpdCBoZXJlLgorICoKKyAqIEBub3RlCisgKiAgVGhlIE1GRCBoZWxwZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVsZWFzaW5nIGFsbCB0aGUgcm93IGNvbnRleHRzLgorICoKKyAqLwordm9pZAorZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozODA6TTogRnJlZSBldGhlclN0YXRzVGFibGUgY29udGFpbmVyIGRhdGEuCisgICAgICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIHByZXBhcmUgcm93IGZvciBwcm9jZXNzaW5nLgorICoKKyAqICBXaGVuIHRoZSBhZ2VudCBoYXMgbG9jYXRlZCB0aGUgcm93IGZvciBhIHJlcXVlc3QsIHRoaXMgZnVuY3Rpb24gaXMKKyAqICBjYWxsZWQgdG8gcHJlcGFyZSB0aGUgcm93IGZvciBwcm9jZXNzaW5nLiBJZiB5b3UgZnVsbHkgcG9wdWxhdGVkCisgKiAgdGhlIGRhdGEgY29udGV4dCBkdXJpbmcgdGhlIGluZGV4IHNldHVwIHBoYXNlLCB5b3UgbWF5IG5vdCBuZWVkIHRvCisgKiAgZG8gYW55dGhpbmcuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggcG9pbnRlciB0byBhIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfcm93X3ByZXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcm93X3ByZXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzkwOm86IFByZXBhcmUgcm93IGZvciByZXF1ZXN0LgorICAgICAqIElmIHBvcHVsYXRpbmcgcm93IGRhdGEgd2FzIGRlbGF5ZWQsIHRoaXMgaXMgdGhlIHBsYWNlIHRvCisgICAgICogZmlsbCBpbiB0aGUgcm93IGZvciB0aGlzIHJlcXVlc3QuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9yb3dfcHJlcCAqLworCisvKgorICogVE9ETzo0MjA6cjogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBpbmRleCB2YWxpZGF0aW9uLgorICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzSW5kZXgKKyAqIGV0aGVyU3RhdHNJbmRleCBpcyBzdWJpZCAxIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB2YWx1ZSBvZiB0aGlzIG9iamVjdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoaXMKKyAgICAgICAgZXRoZXJTdGF0cyBlbnRyeS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMSAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqIFJhbmdlczogIDEgLSA2NTUzNTsKKyAqCisgKiBJdHMgc3ludGF4IGlzIElOVEVHRVIzMiAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUjMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0lOVEVHRVIuIFRoZSBDIHR5cGUgZGVjbCBpcyBsb25nIChsb25nKQorICovCisvKioKKyAqIGNoZWNrIHZhbGlkaXR5IG9mIGV0aGVyU3RhdHNJbmRleCBpbmRleCBwb3J0aW9uCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgIDogdGhlIGluY29taW5nIHZhbHVlIGlzIGxlZ2FsCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgOiB0aGUgaW5jb21pbmcgdmFsdWUgaXMgTk9UIGxlZ2FsCisgKgorICogQG5vdGUgdGhpcyBpcyBub3QgdGhlIHBsYWNlIHRvIGRvIGFueSBjaGVja3MgZm9yIHRoZSBzYW5pdHkKKyAqICAgICAgIG9mIG11bHRpcGxlIGluZGV4ZXMuIFRob3NlIHR5cGVzIG9mIGNoZWNrcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUKKyAqICAgICAgIGV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleCgpIGZ1bmN0aW9uLgorICoKKyAqIEBub3RlIEFsc28ga2VlcCBpbiBtaW5kIHRoYXQgaWYgdGhlIGluZGV4IHJlZmVycyB0byBhIHJvdyBpbiB0aGlzIG9yCisgKiAgICAgICBzb21lIG90aGVyIHRhYmxlLCB5b3UgY2FuJ3QgY2hlY2sgZm9yIHRoYXQgcm93IGhlcmUgdG8gbWFrZQorICogICAgICAgZGVjaXNpb25zLCBzaW5jZSB0aGF0IHJvdyBtaWdodCBub3QgYmUgY3JlYXRlZCB5ZXQsIGJ1dCBtYXkKKyAqICAgICAgIGJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcm9jZXNzaW5nIHRoaXMgcmVxdWVzdC4gSWYgeW91IGhhdmUKKyAqICAgICAgIHN1Y2ggY2hlY2tzLCB0aGV5IHNob3VsZCBiZSBkb25lIGluIHRoZSBjaGVja19kZXBlbmRlbmNpZXMKKyAqICAgICAgIGZ1bmN0aW9uLCBiZWNhdXNlIGFueSBuZXcvZGVsZXRlZC9jaGFuZ2VkIHJvd3Mgc2hvdWxkIGJlCisgKiAgICAgICBhdmFpbGFibGUgdGhlbi4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGNoZWNrcyBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGZvciB5b3U6CisgKiAgICBUaGUgdmFsdWUgaXMgaW4gKG9uZSBvZikgdGhlIHJhbmdlIHNldChzKTogIDEgLSA2NTUzNQorICoKKyAqIElmIHRoZXJlIGEgbm8gb3RoZXIgY2hlY2tzIHlvdSBuZWVkIHRvIGRvLCBzaW1wbHkgcmV0dXJuIE1GRF9TVUNDRVNTLgorICovCitpbnQKK2V0aGVyU3RhdHNJbmRleF9jaGVja19pbmRleChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNJbmRleF9jaGVja19pbmRleCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0MjY6TTogfC0+IENoZWNrIGV0aGVyU3RhdHNUYWJsZSBpbmRleCBldGhlclN0YXRzSW5kZXguCisgICAgICogY2hlY2sgdGhhdCBpbmRleCB2YWx1ZSBpbiB0aGUgdGFibGUgY29udGV4dCBpcyBsZWdhbC4KKyAgICAgKiAocm93cmVxX2N0eC0+dGJsX2luZGV4LmV0aGVyU3RhdHNJbmRleCkKKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsgICAgICAgICAvKiBldGhlclN0YXRzSW5kZXggaW5kZXggb2sgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0luZGV4X2NoZWNrX2luZGV4ICovCisKKy8qKgorICogdmVyaWZ5IHNwZWNpZmllZCBpbmRleCBpcyB2YWxpZC4KKyAqCisgKiBUaGlzIGNoZWNrIGlzIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgb3Igbm90IHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGZvcgorICogdGhlIGNvbHVtbnMgb2YgdGhlIG5ldyByb3cgYXJlIHZhbGlkLiBDb2x1bW4gdmFsdWVzIGFuZCByb3cgY29uc2lzdGVuY3kKKyAqIHdpbGwgYmUgY2hlY2tlZCBsYXRlci4gQXQgdGhpcyBwb2ludCwgb25seSB0aGUgaW5kZXggdmFsdWVzIHNob3VsZCBiZQorICogY2hlY2tlZC4KKyAqCisgKiBBbGwgb2YgdGhlIGluZGl2aWR1YWwgaW5kZXggdmFsaWRhdGlvbiBmdW5jdGlvbnMgaGF2ZSBiZWVuIGNhbGxlZCwgc28gdGhpcworICogaXMgdGhlIHBsYWNlIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSB2YWxpZCBhcyBhIHdob2xlIHdoZW4gY29tYmluZWQuIElmCisgKiB5b3Ugb25seSBoYXZlIG9uZSBpbmRleCwgdGhlbiB5b3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBlbHNlCisgKiBoZXJlLgorICogCisgKiBAbm90ZSBLZWVwIGluIG1pbmQgdGhhdCBpZiB0aGUgaW5kZXhlcyByZWZlciB0byBhIHJvdyBpbiB0aGlzIG9yCisgKiAgICAgICBzb21lIG90aGVyIHRhYmxlLCB5b3UgY2FuJ3QgY2hlY2sgZm9yIHRoYXQgcm93IGhlcmUgdG8gbWFrZQorICogICAgICAgZGVjaXNpb25zLCBzaW5jZSB0aGF0IHJvdyBtaWdodCBub3QgYmUgY3JlYXRlZCB5ZXQsIGJ1dCBtYXkKKyAqICAgICAgIGJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcm9jZXNzaW5nIHRoaXMgcmVxdWVzdC4gSWYgeW91IGhhdmUKKyAqICAgICAgIHN1Y2ggY2hlY2tzLCB0aGV5IHNob3VsZCBiZSBkb25lIGluIHRoZSBjaGVja19kZXBlbmRlbmNpZXMKKyAqICAgICAgIGZ1bmN0aW9uLCBiZWNhdXNlIGFueSBuZXcvZGVsZXRlZC9jaGFuZ2VkIHJvd3Mgc2hvdWxkIGJlCisgKiAgICAgICBhdmFpbGFibGUgdGhlbi4KKyAqCisgKgorICogQHBhcmFtIGV0aGVyU3RhdHNUYWJsZV9yZWcKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VyIHJlZ2lzdHJhdGlvbiBkYXRhCisgKiBAcGFyYW0gZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfQ0FOTk9UX0NSRUFURV9OT1cgIDogaW5kZXggbm90IHZhbGlkIHJpZ2h0IG5vdworICogQHJldHZhbCBNRkRfQ0FOTk9UX0NSRUFURV9FVkVSIDogaW5kZXggbmV2ZXIgdmFsaWQKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gTUZEX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3ZhbGlkYXRlX2luZGV4IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0MzA6TTogfC0+IFZhbGlkYXRlIHBvdGVudGlhbCBldGhlclN0YXRzVGFibGUgaW5kZXguCisgICAgICovCisgICAgaWYgKDEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJpbnZhbGlkIGluZGV4IGZvciBhIG5ldyByb3cgaW4gdGhlICIKKyAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSB0YWJsZS5cbiIpOworICAgICAgICAvKgorICAgICAgICAgKiBkZXRlcm1pbmUgZmFpbHVyZSB0eXBlLgorICAgICAgICAgKgorICAgICAgICAgKiBJZiB0aGUgaW5kZXggY291bGQgbm90IGV2ZXIgYmUgY3JlYXRlZCwgcmV0dXJuIE1GRF9OT1RfRVZFUgorICAgICAgICAgKiBJZiB0aGUgaW5kZXggY2FuIG5vdCBiZSBjcmVhdGVkIHVuZGVyIHRoZSBwcmVzZW50IGNpcmN1bXN0YW5jZXMKKyAgICAgICAgICogKGV2ZW4gdGhvdWdoIGl0IGNvdWxkIGJlIGNyZWF0ZWQgdW5kZXIgb3RoZXIgY2lyY3Vtc3RhbmNlcyksCisgICAgICAgICAqIHJldHVybiBNRkRfTk9UX05PVy4KKyAgICAgICAgICovCisgICAgICAgIGlmICgwKSB7CisgICAgICAgICAgICByZXR1cm4gTUZEX0NBTk5PVF9DUkVBVEVfRVZFUjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBNRkRfQ0FOTk9UX0NSRUFURV9OT1c7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleCAqLworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDcwMGY0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRVRIRVJTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogUk1PTi1NSUI6OmV0aGVyU3RhdHNUYWJsZSBpcyBzdWJpZCAxIG9mIHN0YXRpc3RpY3MuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGV0aGVyU3RhdHNUYWJsZV9yZWcpOworCisKKyAgICAvKgorICAgICAqIFRPRE86MTgwOm86IFJldmlldyBldGhlclN0YXRzVGFibGUgY2FjaGUgdGltZW91dC4KKyAgICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBjYWNoZSB0aW1lcyBvdXQKKyAgICAgKi8KKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQgICA2MAorCisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lciAqKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpOworICAgIHZvaWQgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NhY2hlX2xvYWQobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY2FjaGVfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyNkZWZpbmUgTUFYX0xJTkVfU0laRSAyNTYKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcm93X3ByZXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3ZhbGlkYXRlX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSW5kZXhfY2hlY2tfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsgICAgICAgLyogaW50ZXJuYWwgKi8KKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFVEhFUlNUQVRTVEFCTEVfREFUQV9BQ0NFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYTUxZDcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmMKQEAgLTAsMCArMSwxNDExIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBnZXQgcm91dGluZXMuCisgKiBUT0RPOjI0MDpNOiBJbXBsZW1lbnQgZXRoZXJTdGF0c1RhYmxlIG1hcHBpbmcgcm91dGluZXMgKGlmIGFueSkuCisgKgorICogVGhlc2Ugcm91dGluZSBhcmUgdXNlZCB0byBnZXQgdGhlIHZhbHVlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMuIFRoZQorICogcm93IGNvbnRleHQgaXMgcGFzc2VkLCBhbG9uZyB3aXRoIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5IHdoZXJlIHRoZQorICogdmFsdWUgc2hvdWxkIGJlIGNvcGllZC4KKyAqCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNUYWJsZSBpcyBzdWJpZCAxIG9mIHN0YXRpc3RpY3MuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICovCisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICogVE9ETzoyMDA6cjogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBldGhlclN0YXRzSW5kZXhfdmFsCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIHNldHRpbmcgYWxsIHRoZSBNSUIgaW5kZXgKKyAqICBjb21wb25lbnRzIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4gSXQgaXMgYXNzdW1lIHRoYXQgdGhlIEMgdmFsdWVzCisgKiAgaGF2ZSBhbHJlYWR5IGJlZW4gbWFwcGVkIGZyb20gdGhlaXIgbmF0aXZlL3Jhd2Zvcm1hdCB0byB0aGUgTUlCIGZvcm1hdC4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICogdGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZXRoZXJTdGF0c0luZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaCAKKyAgICAgKi8KKyAgICB0YmxfaWR4LT5ldGhlclN0YXRzSW5kZXggPSBldGhlclN0YXRzSW5kZXhfdmFsOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBldGhlclN0YXRzSW5kZXhfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPQorICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCgmcm93cmVxX2N0eC0+dGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0luZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZCgmcm93cmVxX2N0eC0+b2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3dyZXFfY3R4LT50YmxfaWR4KSkgeworICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgIH0KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0RhdGFTb3VyY2UKKyAqIGV0aGVyU3RhdHNEYXRhU291cmNlIGlzIHN1YmlkIDIgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBDcmVhdGUuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4yCisgKiBEZXNjcmlwdGlvbjoKK1RoaXMgb2JqZWN0IGlkZW50aWZpZXMgdGhlIHNvdXJjZSBvZiB0aGUgZGF0YSB0aGF0CisgICAgICAgIHRoaXMgZXRoZXJTdGF0cyBlbnRyeSBpcyBjb25maWd1cmVkIHRvIGFuYWx5emUuICBUaGlzCisgICAgICAgIHNvdXJjZSBjYW4gYmUgYW55IGV0aGVybmV0IGludGVyZmFjZSBvbiB0aGlzIGRldmljZS4KKyAgICAgICAgSW4gb3JkZXIgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGludGVyZmFjZSwgdGhpcyBvYmplY3QKKyAgICAgICAgc2hhbGwgaWRlbnRpZnkgdGhlIGluc3RhbmNlIG9mIHRoZSBpZkluZGV4IG9iamVjdCwKKyAgICAgICAgZGVmaW5lZCBpbiBSRkMgMjIzMyBbMTddLCBmb3IgdGhlIGRlc2lyZWQgaW50ZXJmYWNlLgorICAgICAgICBGb3IgZXhhbXBsZSwgaWYgYW4gZW50cnkgd2VyZSB0byByZWNlaXZlIGRhdGEgZnJvbQorICAgICAgICBpbnRlcmZhY2UgIzEsIHRoaXMgb2JqZWN0IHdvdWxkIGJlIHNldCB0byBpZkluZGV4LjEuCisKKyAgICAgICAgVGhlIHN0YXRpc3RpY3MgaW4gdGhpcyBncm91cCByZWZsZWN0IGFsbCBwYWNrZXRzCisgICAgICAgIG9uIHRoZSBsb2NhbCBuZXR3b3JrIHNlZ21lbnQgYXR0YWNoZWQgdG8gdGhlIGlkZW50aWZpZWQKKyAgICAgICAgaW50ZXJmYWNlLgorCisgICAgICAgIEFuIGFnZW50IG1heSBvciBtYXkgbm90IGJlIGFibGUgdG8gdGVsbCBpZiBmdW5kYW1lbnRhbAorICAgICAgICBjaGFuZ2VzIHRvIHRoZSBtZWRpYSBvZiB0aGUgaW50ZXJmYWNlIGhhdmUgb2NjdXJyZWQgYW5kCisgICAgICAgIG5lY2Vzc2l0YXRlIGFuIGludmFsaWRhdGlvbiBvZiB0aGlzIGVudHJ5LiAgRm9yIGV4YW1wbGUsIGEKKyAgICAgICAgaG90LXBsdWdnYWJsZSBldGhlcm5ldCBjYXJkIGNvdWxkIGJlIHB1bGxlZCBvdXQgYW5kIHJlcGxhY2VkCisgICAgICAgIGJ5IGEgdG9rZW4tcmluZyBjYXJkLiAgSW4gc3VjaCBhIGNhc2UsIGlmIHRoZSBhZ2VudCBoYXMgc3VjaAorICAgICAgICBrbm93bGVkZ2Ugb2YgdGhlIGNoYW5nZSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBpdAorICAgICAgICBpbnZhbGlkYXRlIHRoaXMgZW50cnkuCisKKyAgICAgICAgVGhpcyBvYmplY3QgbWF5IG5vdCBiZSBtb2RpZmllZCBpZiB0aGUgYXNzb2NpYXRlZAorICAgICAgICBldGhlclN0YXRzU3RhdHVzIG9iamVjdCBpcyBlcXVhbCB0byB2YWxpZCgxKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMQorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIE9CSkVDVElEIChiYXNlZCBvbiBwZXJsdHlwZSBPQkpFQ1RJRCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9PQkpFQ1RfSUQuIFRoZSBDIHR5cGUgZGVjbCBpcyBvaWQgKG9pZCkKKyAqIFRoaXMgZGF0YSB0eXBlIHJlcXVpcmVzIGEgbGVuZ3RoLgorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNEYXRhU291cmNlIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgb2lkIHZhcmlhYmxlCisgKiBAcGFyYW0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBhIHNpemVfdC4gT24gZW50cnksIGl0IHdpbGwgY29udGFpbiB0aGUgc2l6ZSAoaW4gYnl0ZXMpCisgKiAgICAgICAgcG9pbnRlZCB0byBieSBldGhlclN0YXRzRGF0YVNvdXJjZS4KKyAqICAgICAgICBPbiBleGl0LCB0aGlzIHZhbHVlIHNob3VsZCBjb250YWluIHRoZSBkYXRhIHNpemUgKGluIGJ5dGVzKS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorKgorICogQG5vdGUgSWYgeW91IG5lZWQgbW9yZSB0aGFuICgqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKSBieXRlcyBvZiBtZW1vcnksCisgKiAgICAgICBhbGxvY2F0ZSBpdCB1c2luZyBtYWxsb2MoKSBhbmQgdXBkYXRlIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyLgorICogICAgICAgPGI+RE8gTk9UPC9iPiBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICogICAgICAgVGhlIE1GRCBoZWxwZXIgd2lsbCByZWxlYXNlIHRoZSBtZW1vcnkgeW91IGFsbG9jYXRlLgorICoKKyAqIEByZW1hcmsgSWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiB5b3Vyc2VsZiwgeW91IGFyZSByZXNwb25zaWJsZQorICogICAgICAgICBmb3IgY2hlY2tpbmcgaWYgdGhlIHBvaW50ZXIgY2hhbmdlZCwgYW5kIGZyZWVpbmcgYW55CisgKiAgICAgICAgIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeS4gKE5vdCBuZWNlc3NhcnkgaWYgeW91IHBhc3MKKyAqICAgICAgICAgaW4gYSBwb2ludGVyIHRvIHN0YXRpYyBtZW1vcnksIG9idmlvdXNseS4pCisgKi8KK2ludAorZXRoZXJTdGF0c0RhdGFTb3VyY2VfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiogZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbl9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyIGFuZCBlbm91Z2ggc3RvcmFnZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KChOVUxMICE9IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyKQorICAgICAgICAgICAgICAgICAgICYmIChOVUxMICE9ICpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNEYXRhU291cmNlIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ciApIGRhdGEgYW5kICgqIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIC8qCisgICAgICogbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBmb3IgZXRoZXJTdGF0c0RhdGFTb3VyY2UgZGF0YQorICAgICAqLworICAgIGlmICgoTlVMTCA9PSAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyKSkgfHwKKyAgICAgICAgKCgqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKSA8CisgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gKgorICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlWzBdKSkpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGFsbG9jYXRlIHNwYWNlIGZvciBldGhlclN0YXRzRGF0YVNvdXJjZSBkYXRhCisgICAgICAgICAqLworICAgICAgICAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyKSA9CisgICAgICAgICAgICBtYWxsb2Mocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gKgorICAgICAgICAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlWzBdKSk7CisgICAgICAgIGlmIChOVUxMID09ICgqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeVxuIik7CisgICAgICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgICgqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VbMF0pOworICAgIG1lbWNweSgoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyKSwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZSwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gKgorICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0Ryb3BFdmVudHMKKyAqIGV0aGVyU3RhdHNEcm9wRXZlbnRzIGlzIHN1YmlkIDMgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjMKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBldmVudHMgaW4gd2hpY2ggcGFja2V0cworICAgICAgICB3ZXJlIGRyb3BwZWQgYnkgdGhlIHByb2JlIGR1ZSB0byBsYWNrIG9mIHJlc291cmNlcy4KKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgbnVtYmVyIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgbnVtYmVyIG9mCisgICAgICAgIHBhY2tldHMgZHJvcHBlZDsgaXQgaXMganVzdCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMKKyAgICAgICAgY29uZGl0aW9uIGhhcyBiZWVuIGRldGVjdGVkLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0Ryb3BFdmVudHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzRHJvcEV2ZW50c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c0Ryb3BFdmVudHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzRHJvcEV2ZW50c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRHJvcEV2ZW50c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzRHJvcEV2ZW50cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEcm9wRXZlbnRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRHJvcEV2ZW50c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c09jdGV0cworICogZXRoZXJTdGF0c09jdGV0cyBpcyBzdWJpZCA0IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS40CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIG9mIGRhdGEgKGluY2x1ZGluZworICAgICAgICB0aG9zZSBpbiBiYWQgcGFja2V0cykgcmVjZWl2ZWQgb24gdGhlCisgICAgICAgIG5ldHdvcmsgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZworICAgICAgICBGQ1Mgb2N0ZXRzKS4KKworICAgICAgICBUaGlzIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBhIHJlYXNvbmFibGUgZXN0aW1hdGUgb2YKKyAgICAgICAgMTAtTWVnYWJpdCBldGhlcm5ldCB1dGlsaXphdGlvbi4gIElmIGdyZWF0ZXIgcHJlY2lzaW9uIGlzCisgICAgICAgIGRlc2lyZWQsIHRoZSBldGhlclN0YXRzUGt0cyBhbmQgZXRoZXJTdGF0c09jdGV0cyBvYmplY3RzCisgICAgICAgIHNob3VsZCBiZSBzYW1wbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjb21tb24gaW50ZXJ2YWwuICBUaGUKKyAgICAgICAgZGlmZmVyZW5jZXMgaW4gdGhlIHNhbXBsZWQgdmFsdWVzIGFyZSBQa3RzIGFuZCBPY3RldHMsCisgICAgICAgIHJlc3BlY3RpdmVseSwgYW5kIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBpbiB0aGUgaW50ZXJ2YWwgaXMKKyAgICAgICAgSW50ZXJ2YWwuICBUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBVdGlsaXphdGlvbgorICAgICAgICBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgUGt0cyAqICg5LjYgKyA2LjQpICsgKE9jdGV0cyAqIC44KQorICAgICAgICAgVXRpbGl6YXRpb24gPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnZhbCAqIDEwLDAwMAorCisgICAgICAgIFRoZSByZXN1bHQgb2YgdGhpcyBlcXVhdGlvbiBpcyB0aGUgdmFsdWUgVXRpbGl6YXRpb24gd2hpY2gKKyAgICAgICAgaXMgdGhlIHBlcmNlbnQgdXRpbGl6YXRpb24gb2YgdGhlIGV0aGVybmV0IHNlZ21lbnQgb24gYQorICAgICAgICBzY2FsZSBvZiAwIHRvIDEwMCBwZXJjZW50LgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c09jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c09jdGV0c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c09jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c09jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHMKKyAqIGV0aGVyU3RhdHNQa3RzIGlzIHN1YmlkIDUgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjUKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkIHBhY2tldHMsCisgICAgICAgIGJyb2FkY2FzdCBwYWNrZXRzLCBhbmQgbXVsdGljYXN0IHBhY2tldHMpIHJlY2VpdmVkLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzUGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1BrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0c19nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNQa3RzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzUGt0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzCisgKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0cyBpcyBzdWJpZCA2IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS42CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZ29vZCBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBkaXJlY3RlZCB0byB0aGUgYnJvYWRjYXN0IGFkZHJlc3MuICBOb3RlIHRoYXQgdGhpcworICAgICAgICBkb2VzIG5vdCBpbmNsdWRlIG11bHRpY2FzdCBwYWNrZXRzLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzQnJvYWRjYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzQnJvYWRjYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzQnJvYWRjYXN0UGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c011bHRpY2FzdFBrdHMKKyAqIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzIGlzIHN1YmlkIDcgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjcKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBnb29kIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCisgICAgICAgIGRpcmVjdGVkIHRvIGEgbXVsdGljYXN0IGFkZHJlc3MuICBOb3RlIHRoYXQgdGhpcyBudW1iZXIKKyAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBwYWNrZXRzIGRpcmVjdGVkIHRvIHRoZSBicm9hZGNhc3QKKworICAgICAgICBhZGRyZXNzLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c011bHRpY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzTXVsdGljYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzTXVsdGljYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzTXVsdGljYXN0UGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzTXVsdGljYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzCisgKiBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnMgaXMgc3ViaWQgOCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuOAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdAorICAgICAgICBoYWQgYSBsZW5ndGggKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMsIGJ1dAorICAgICAgICBpbmNsdWRpbmcgRkNTIG9jdGV0cykgb2YgYmV0d2VlbiA2NCBhbmQgMTUxOAorICAgICAgICBvY3RldHMsIGluY2x1c2l2ZSwgYnV0IGhhZCBlaXRoZXIgYSBiYWQKKyAgICAgICAgRnJhbWUgQ2hlY2sgU2VxdWVuY2UgKEZDUykgd2l0aCBhbiBpbnRlZ3JhbAorICAgICAgICBudW1iZXIgb2Ygb2N0ZXRzIChGQ1MgRXJyb3IpIG9yIGEgYmFkIEZDUyB3aXRoCisgICAgICAgIGEgbm9uLWludGVncmFsIG51bWJlciBvZiBvY3RldHMgKEFsaWdubWVudCBFcnJvcikuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNDUkNBbGlnbkVycm9yc19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNDUkNBbGlnbkVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzVW5kZXJzaXplUGt0cworICogZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMgaXMgc3ViaWQgOSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuOQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCisgICAgICAgIGxlc3MgdGhhbiA2NCBvY3RldHMgbG9uZyAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cywKKyAgICAgICAgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKSBhbmQgd2VyZSBvdGhlcndpc2Ugd2VsbAorICAgICAgICBmb3JtZWQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzVW5kZXJzaXplUGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzT3ZlcnNpemVQa3RzCisgKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzIGlzIHN1YmlkIDEwIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xMAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCisgICAgICAgIGxvbmdlciB0aGFuIDE1MTggb2N0ZXRzIChleGNsdWRpbmcgZnJhbWluZyBiaXRzLAorICAgICAgICBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpIGFuZCB3ZXJlIG90aGVyd2lzZQorICAgICAgICB3ZWxsIGZvcm1lZC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzT3ZlcnNpemVQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c092ZXJzaXplUGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT3ZlcnNpemVQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPdmVyc2l6ZVBrdHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNGcmFnbWVudHMKKyAqIGV0aGVyU3RhdHNGcmFnbWVudHMgaXMgc3ViaWQgMTEgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjExCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUgbGVzcyB0aGFuCisgICAgICAgIDY0IG9jdGV0cyBpbiBsZW5ndGggKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZworICAgICAgICBGQ1Mgb2N0ZXRzKSBhbmQgaGFkIGVpdGhlciBhIGJhZCBGcmFtZSBDaGVjayBTZXF1ZW5jZQorICAgICAgICAoRkNTKSB3aXRoIGFuIGludGVncmFsIG51bWJlciBvZiBvY3RldHMgKEZDUyBFcnJvcikgb3IgYQorICAgICAgICBiYWQgRkNTIHdpdGggYSBub24taW50ZWdyYWwgbnVtYmVyIG9mIG9jdGV0cyAoQWxpZ25tZW50CisgICAgICAgIEVycm9yKS4KKworICAgICAgICBOb3RlIHRoYXQgaXQgaXMgZW50aXJlbHkgbm9ybWFsIGZvciBldGhlclN0YXRzRnJhZ21lbnRzIHRvCisgICAgICAgIGluY3JlbWVudC4gIFRoaXMgaXMgYmVjYXVzZSBpdCBjb3VudHMgYm90aCBydW50cyAod2hpY2ggYXJlCisgICAgICAgIG5vcm1hbCBvY2N1cnJlbmNlcyBkdWUgdG8gY29sbGlzaW9ucykgYW5kIG5vaXNlIGhpdHMuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzRnJhZ21lbnRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0ZyYWdtZW50c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0ZyYWdtZW50c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c0ZyYWdtZW50c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNGcmFnbWVudHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0ZyYWdtZW50cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c0ZyYWdtZW50c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzRnJhZ21lbnRzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRnJhZ21lbnRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRnJhZ21lbnRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzSmFiYmVycworICogZXRoZXJTdGF0c0phYmJlcnMgaXMgc3ViaWQgMTIgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjEyCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUKKyAgICAgICAgbG9uZ2VyIHRoYW4gMTUxOCBvY3RldHMgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMsCisgICAgICAgIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cyksIGFuZCBoYWQgZWl0aGVyIGEgYmFkCisgICAgICAgIEZyYW1lIENoZWNrIFNlcXVlbmNlIChGQ1MpIHdpdGggYW4gaW50ZWdyYWwgbnVtYmVyCisgICAgICAgIG9mIG9jdGV0cyAoRkNTIEVycm9yKSBvciBhIGJhZCBGQ1Mgd2l0aCBhIG5vbi1pbnRlZ3JhbAorICAgICAgICBudW1iZXIgb2Ygb2N0ZXRzIChBbGlnbm1lbnQgRXJyb3IpLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIGRlZmluaXRpb24gb2YgamFiYmVyIGlzIGRpZmZlcmVudAorICAgICAgICB0aGFuIHRoZSBkZWZpbml0aW9uIGluIElFRUUtODAyLjMgc2VjdGlvbiA4LjIuMS41CisgICAgICAgICgxMEJBU0U1KSBhbmQgc2VjdGlvbiAxMC4zLjEuNCAoMTBCQVNFMikuICBUaGVzZQorICAgICAgICBkb2N1bWVudHMgZGVmaW5lIGphYmJlciBhcyB0aGUgY29uZGl0aW9uIHdoZXJlIGFueQorICAgICAgICBwYWNrZXQgZXhjZWVkcyAyMCBtcy4gIFRoZSBhbGxvd2VkIHJhbmdlIHRvIGRldGVjdAorICAgICAgICBqYWJiZXIgaXMgYmV0d2VlbiAyMCBtcyBhbmQgMTUwIG1zLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0phYmJlcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzSmFiYmVyc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c0phYmJlcnNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzSmFiYmVyc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c0phYmJlcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzSmFiYmVyc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0phYmJlcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNKYWJiZXJzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNKYWJiZXJzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzSmFiYmVyczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0phYmJlcnNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNDb2xsaXNpb25zCisgKiBldGhlclN0YXRzQ29sbGlzaW9ucyBpcyBzdWJpZCAxMyBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTMKKyAqIERlc2NyaXB0aW9uOgorVGhlIGJlc3QgZXN0aW1hdGUgb2YgdGhlIHRvdGFsIG51bWJlciBvZiBjb2xsaXNpb25zCisgICAgICAgIG9uIHRoaXMgRXRoZXJuZXQgc2VnbWVudC4KKworICAgICAgICBUaGUgdmFsdWUgcmV0dXJuZWQgd2lsbCBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBSTU9OIHByb2JlLiBTZWN0aW9uIDguMi4xLjMgKDEwQkFTRS01KSBhbmQgc2VjdGlvbgorICAgICAgICAxMC4zLjEuMyAoMTBCQVNFLTIpIG9mIElFRUUgc3RhbmRhcmQgODAyLjMgc3RhdGVzIHRoYXQgYQorICAgICAgICBzdGF0aW9uIG11c3QgZGV0ZWN0IGEgY29sbGlzaW9uLCBpbiB0aGUgcmVjZWl2ZSBtb2RlLCBpZgorICAgICAgICB0aHJlZSBvciBtb3JlIHN0YXRpb25zIGFyZSB0cmFuc21pdHRpbmcgc2ltdWx0YW5lb3VzbHkuICBBCisgICAgICAgIHJlcGVhdGVyIHBvcnQgbXVzdCBkZXRlY3QgYSBjb2xsaXNpb24gd2hlbiB0d28gb3IgbW9yZQorCisgICAgICAgIHN0YXRpb25zIGFyZSB0cmFuc21pdHRpbmcgc2ltdWx0YW5lb3VzbHkuICBUaHVzIGEgcHJvYmUKKyAgICAgICAgcGxhY2VkIG9uIGEgcmVwZWF0ZXIgcG9ydCBjb3VsZCByZWNvcmQgbW9yZSBjb2xsaXNpb25zCisgICAgICAgIHRoYW4gYSBwcm9iZSBjb25uZWN0ZWQgdG8gYSBzdGF0aW9uIG9uIHRoZSBzYW1lIHNlZ21lbnQKKyAgICAgICAgd291bGQuCisKKyAgICAgICAgUHJvYmUgbG9jYXRpb24gcGxheXMgYSBtdWNoIHNtYWxsZXIgcm9sZSB3aGVuIGNvbnNpZGVyaW5nCisgICAgICAgIDEwQkFTRS1ULiAgMTQuMi4xLjQgKDEwQkFTRS1UKSBvZiBJRUVFIHN0YW5kYXJkIDgwMi4zCisgICAgICAgIGRlZmluZXMgYSBjb2xsaXNpb24gYXMgdGhlIHNpbXVsdGFuZW91cyBwcmVzZW5jZSBvZiBzaWduYWxzCisgICAgICAgIG9uIHRoZSBETyBhbmQgUkQgY2lyY3VpdHMgKHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nCisgICAgICAgIGF0IHRoZSBzYW1lIHRpbWUpLiAgQSAxMEJBU0UtVCBzdGF0aW9uIGNhbiBvbmx5IGRldGVjdAorICAgICAgICBjb2xsaXNpb25zIHdoZW4gaXQgaXMgdHJhbnNtaXR0aW5nLiAgVGh1cyBwcm9iZXMgcGxhY2VkIG9uCisgICAgICAgIGEgc3RhdGlvbiBhbmQgYSByZXBlYXRlciwgc2hvdWxkIHJlcG9ydCB0aGUgc2FtZSBudW1iZXIgb2YKKyAgICAgICAgY29sbGlzaW9ucy4KKworICAgICAgICBOb3RlIGFsc28gdGhhdCBhbiBSTU9OIHByb2JlIGluc2lkZSBhIHJlcGVhdGVyIHNob3VsZAorICAgICAgICBpZGVhbGx5IHJlcG9ydCBjb2xsaXNpb25zIGJldHdlZW4gdGhlIHJlcGVhdGVyIGFuZCBvbmUgb3IKKyAgICAgICAgbW9yZSBvdGhlciBob3N0cyAodHJhbnNtaXQgY29sbGlzaW9ucyBhcyBkZWZpbmVkIGJ5IElFRUUKKyAgICAgICAgODAyLjNrKSBwbHVzIHJlY2VpdmVyIGNvbGxpc2lvbnMgb2JzZXJ2ZWQgb24gYW55IGNvYXgKKyAgICAgICAgc2VnbWVudHMgdG8gd2hpY2ggdGhlIHJlcGVhdGVyIGlzIGNvbm5lY3RlZC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNDb2xsaXNpb25zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0NvbGxpc2lvbnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNDb2xsaXNpb25zX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0NvbGxpc2lvbnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0NvbGxpc2lvbnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0NvbGxpc2lvbnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzQ29sbGlzaW9uczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0NvbGxpc2lvbnNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNQa3RzNjRPY3RldHMKKyAqIGV0aGVyU3RhdHNQa3RzNjRPY3RldHMgaXMgc3ViaWQgMTQgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjE0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyAoaW5jbHVkaW5nIGJhZAorICAgICAgICBwYWNrZXRzKSByZWNlaXZlZCB0aGF0IHdlcmUgNjQgb2N0ZXRzIGluIGxlbmd0aAorICAgICAgICAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cyBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHM2NE9jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNQa3RzNjRPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czY0T2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzNjRPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHM2NE9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHM2NE9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzCisgKiBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMgaXMgc3ViaWQgMTUgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjE1CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyAoaW5jbHVkaW5nIGJhZAorICAgICAgICBwYWNrZXRzKSByZWNlaXZlZCB0aGF0IHdlcmUgYmV0d2VlbgorICAgICAgICA2NSBhbmQgMTI3IG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzCisgKiBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzIGlzIHN1YmlkIDE2IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xNgorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgMTI4IGFuZCAyNTUgb2N0ZXRzIGluIGxlbmd0aCBpbmNsdXNpdmUKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzCisgKiBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzIGlzIHN1YmlkIDE3IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xNworICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgMjU2IGFuZCA1MTEgb2N0ZXRzIGluIGxlbmd0aCBpbmNsdXNpdmUKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cworICogZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMgaXMgc3ViaWQgMTggb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjE4CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyAoaW5jbHVkaW5nIGJhZAorICAgICAgICBwYWNrZXRzKSByZWNlaXZlZCB0aGF0IHdlcmUgYmV0d2VlbgorICAgICAgICA1MTIgYW5kIDEwMjMgb2N0ZXRzIGluIGxlbmd0aCBpbmNsdXNpdmUKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cworICogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzIGlzIHN1YmlkIDE5IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xOQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgMTAyNCBhbmQgMTUxOCBvY3RldHMgaW4gbGVuZ3RoIGluY2x1c2l2ZQorICAgICAgICAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cyBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNPd25lcgorICogZXRoZXJTdGF0c093bmVyIGlzIHN1YmlkIDIwIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMjAKKyAqIERlc2NyaXB0aW9uOgorVGhlIGVudGl0eSB0aGF0IGNvbmZpZ3VyZWQgdGhpcyBlbnRyeSBhbmQgaXMgdGhlcmVmb3JlCisgICAgICAgIHVzaW5nIHRoZSByZXNvdXJjZXMgYXNzaWduZWQgdG8gaXQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDEgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKiBSYW5nZXM6ICAwIC0gMTI3OworICoKKyAqIEl0cyBzeW50YXggaXMgT3duZXJTdHJpbmcgKGJhc2VkIG9uIHBlcmx0eXBlIE9DVEVUU1RSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09DVEVUX1NUUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGNoYXIgKGNoYXIpCisgKiBUaGlzIGRhdGEgdHlwZSByZXF1aXJlcyBhIGxlbmd0aC4gIChNYXggMTI3KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNPd25lciBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBjaGFyIHZhcmlhYmxlCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gYSBzaXplX3QuIE9uIGVudHJ5LCBpdCB3aWxsIGNvbnRhaW4gdGhlIHNpemUgKGluIGJ5dGVzKQorICogICAgICAgIHBvaW50ZWQgdG8gYnkgZXRoZXJTdGF0c093bmVyLgorICogICAgICAgIE9uIGV4aXQsIHRoaXMgdmFsdWUgc2hvdWxkIGNvbnRhaW4gdGhlIGRhdGEgc2l6ZSAoaW4gYnl0ZXMpLgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisqCisgKiBAbm90ZSBJZiB5b3UgbmVlZCBtb3JlIHRoYW4gKCpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyKSBieXRlcyBvZiBtZW1vcnksCisgKiAgICAgICBhbGxvY2F0ZSBpdCB1c2luZyBtYWxsb2MoKSBhbmQgdXBkYXRlIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ci4KKyAqICAgICAgIDxiPkRPIE5PVDwvYj4gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAqICAgICAgIFRoZSBNRkQgaGVscGVyIHdpbGwgcmVsZWFzZSB0aGUgbWVtb3J5IHlvdSBhbGxvY2F0ZS4KKyAqCisgKiBAcmVtYXJrIElmIHlvdSBjYWxsIHRoaXMgZnVuY3Rpb24geW91cnNlbGYsIHlvdSBhcmUgcmVzcG9uc2libGUKKyAqICAgICAgICAgZm9yIGNoZWNraW5nIGlmIHRoZSBwb2ludGVyIGNoYW5nZWQsIGFuZCBmcmVlaW5nIGFueQorICogICAgICAgICBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkuIChOb3QgbmVjZXNzYXJ5IGlmIHlvdSBwYXNzCisgKiAgICAgICAgIGluIGEgcG9pbnRlciB0byBzdGF0aWMgbWVtb3J5LCBvYnZpb3VzbHkuKQorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl9nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICBjaGFyICoqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyIGFuZCBlbm91Z2ggc3RvcmFnZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KChOVUxMICE9IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cikKKyAgICAgICAgICAgICAgICAgICAmJiAoTlVMTCAhPSAqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfcHRyKSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNPd25lcl9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT3duZXIgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ciApIGRhdGEgYW5kICgqIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAvKgorICAgICAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIGV0aGVyU3RhdHNPd25lciBkYXRhCisgICAgICovCisgICAgaWYgKChOVUxMID09ICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfcHRyKSkgfHwKKyAgICAgICAgKCgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cikgPAorICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbiAqCisgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyWzBdKSkpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGFsbG9jYXRlIHNwYWNlIGZvciBldGhlclN0YXRzT3duZXIgZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgKCpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIpID0KKyAgICAgICAgICAgIG1hbGxvYyhyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lclswXSkpOworICAgICAgICBpZiAoTlVMTCA9PSAoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cikpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5XG4iKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgICAgIH0KKyAgICB9CisgICAgKCpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbiAqCisgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lclswXSk7CisgICAgbWVtY3B5KCgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfcHRyKSwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXIsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbiAqCisgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lclswXSkpOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNTdGF0dXMKKyAqIGV0aGVyU3RhdHNTdGF0dXMgaXMgc3ViaWQgMjEgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBDcmVhdGUuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4yMQorICogRGVzY3JpcHRpb246CitUaGUgc3RhdHVzIG9mIHRoaXMgZXRoZXJTdGF0cyBlbnRyeS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAxICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMQorICoKKyAqIEVudW0gcmFuZ2U6IDIvOC4gVmFsdWVzOiAgdmFsaWQoMSksIGNyZWF0ZVJlcXVlc3QoMiksIHVuZGVyQ3JlYXRpb24oMyksIGludmFsaWQoNCkKKyAqCisgKiBJdHMgc3ludGF4IGlzIEVudHJ5U3RhdHVzIChiYXNlZCBvbiBwZXJsdHlwZSBJTlRFR0VSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0lOVEVHRVIuIFRoZSBDIHR5cGUgZGVjbCBpcyBsb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1N0YXR1cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBsb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzU3RhdHVzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1N0YXR1c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzU3RhdHVzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNTdGF0dXM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfZ2V0ICovCisKKworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzc1MjEyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqIEBmaWxlIGV0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oCisgKgorICogQGFkZHRvZ3JvdXAgZ2V0CisgKgorICogUHJvdG90eXBlcyBmb3IgZ2V0IGZ1bmN0aW9ucworICoKKyAqIEB7CisgKi8KKyNpZm5kZWYgRVRIRVJTVEFUU1RBQkxFX0RBVEFfR0VUX0gKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX0RBVEFfR0VUX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogUk1PTi1NSUI6OmV0aGVyU3RhdHNUYWJsZSBpcyBzdWJpZCAxIG9mIHN0YXRpc3RpY3MuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgICAgICovCisgICAgLyoKKyAgICAgKiBpbmRleGVzCisgICAgICovCisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzUGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl9nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV0aGVyU3RhdHNJbmRleF92YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZXRoZXJTdGF0c0luZGV4X3ZhbCk7CisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0dFVF9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2YzYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5jCkBAIC0wLDAgKzEsOTc3IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA3NyAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9zZXQgZGF0YV9zZXQ6IFJvdXRpbmVzIHRvIHNldCBkYXRhCisgKgorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCB0aGUgbmV3IHZhbHVlLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNUYWJsZSBpcyBzdWJpZCAxIG9mIHN0YXRpc3RpY3MuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICovCisgICAgLyoKKyAgICAgKiBOT1RFOiBpZiB5b3UgdXBkYXRlIHRoaXMgY2hhcnQsIHBsZWFzZSB1cGRhdGUgdGhlIHZlcnNpb25zIGluCisgICAgICogICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3BhcmVudC1zZXQubTJpCisgICAgICogICAgICAgYWdlbnQvbWliZ3JvdXAvaGVscGVycy9iYWJ5X3N0ZXBzLmMKKyAgICAgKiB3aGlsZSB5b3UncmUgYXQgaXQuCisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBCYWJ5IFN0ZXBzIEZsb3cgQ2hhcnQgKDIwMDQuMDYuMDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgICAgKiArLS0tLS0tLS0tLS0tLS0rICAgICs9PT09PT09PT09PT09PT09KyAgICBVID0gdW5jb25kaXRpb25hbCBwYXRoICAgICoKKyAgICAgKiB8b3B0aW9uYWwgc3RhdGV8ICAgIHx8cmVxdWlyZWQgc3RhdGV8fCAgICBTID0gcGF0aCBmb3Igc3VjY2VzcyAgICAgICoKKyAgICAgKiArLS0tLS0tLS0tLS0tLS0rICAgICs9PT09PT09PT09PT09PT09KyAgICBFID0gcGF0aCBmb3IgZXJyb3IgICAgICAgICoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgcHJlICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHJlcXVlc3QgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVQorICAgICAqICstLS0tLS0tLS0tLS0tKyAgICAgICAgKz09PT09PT09PT09PT09KworICAgICAqIHwgICAgcm93ICAgIHxmfDwtLS0tLS0tfHwgIG9iamVjdCAgICB8fAorICAgICAqIHwgIGNyZWF0ZSAgIHwxfCAgICAgIEUgfHwgIGxvb2t1cCAgICB8fAorICAgICAqICstLS0tLS0tLS0tLS0tKyAgICAgICAgKz09PT09PT09PT09PT09KworICAgICAqICAgICBFIHwgICB8IFMgICAgICAgICAgICAgICAgIHwgUworICAgICAqICAgICAgIHwgICArLS0tLS0tLS0tLS0tLS0tLS0tPnwKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICBFIHx8ICAgY2hlY2sgICAgfHwKKyAgICAgKiAgICAgICB8PC0tLS0tLS0tLS0tLS0tLXx8ICAgdmFsdWVzICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IFMKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgICs8LS0tLS0tLXx8ICAgdW5kbyAgICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICBFIHx8ICAgc2V0dXAgICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICB8IFMKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHx8ICAgIHNldCAgICAgfHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8fCAgIHZhbHVlICAgIHx8IEUgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKz09PT09PT09PT09PT09KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICB8IFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfCAgICBjaGVjayAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHwgIGNvbnNpc3RlbmN5IHwgRSAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgIHwgUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICs9PT09PT09PT09PT09PSsgICAgICAgICArPT09PT09PT09PT09PT0rICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8fCAgIGNvbW1pdCAgIHx8LS0tLS0tLS0+fHwgICAgIHVuZG8gICB8fCAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfHwgICAgICAgICAgICB8fCBFICAgICAgIHx8ICAgIGNvbW1pdCAgfHwgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICs9PT09PT09PT09PT09PSsgICAgICAgICArPT09PT09PT09PT09PT0rICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBTICAgICAgICAgICAgICAgICAgICAgVSB8PC0tLS0tLS0tKworICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHwgaXJyZXZlcnNpYmxlIHwgICAgICAgICB8fCAgICB1bmRvICAgIHx8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8ICAgIGNvbW1pdCAgICB8ICAgICAgICAgfHwgICAgIHNldCAgICB8fAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICB8IFUgICAgICAgICAgICAgICAgICAgICBVIHwKKyAgICAgKiAgICAgICB8ICAgICAgICstLS0tLS0tLS0tLS0tLT58PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgIHx8ICAgdW5kbyAgICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgIHx8ICBjbGVhbnVwICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58IFUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIgJiYgZjEpLS0tLS0tLS0tLS0tLS0tLS0tLT4rCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBwb3N0ICAgICAgfDwtLS0tLS0tLXwgICAgICByb3cgICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICByZXF1ZXN0ICAgIHwgICAgICAgVSB8ICAgIHJlbGVhc2UgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKworICAgICAqCisgICAgICovCisKKy8qKgorICogU2V0dXAgdXAgY29udGV4dCB3aXRoIGluZm9ybWF0aW9uIG5lZWRlZCB0byB1bmRvIGEgc2V0IHJlcXVlc3QuCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGluZGl2aWR1YWwgbm9kZSB1bmRvIHNldHVwCisgKiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gSWYgeW91IG5lZWQgdG8gZG8gYW55IHVuZG8gc2V0dXAgdGhhdCBpcyBub3QKKyAqIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBjb2x1bW4sIHlvdSBjYW4gZG8gaXQgaGVyZS4KKyAqCisgKiBOb3RlIHRoYXQgdGhlIHVuZG8gY29udGV4dCBoYXMgYmVlbiBhbGxvY2F0ZWQgd2l0aAorICogZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEoKSwgYnV0IG1heSBuZWVkIGV4dHJhCisgKiBpbml0aWFsaXphdGlvbiBzaW1pbGFyIHRvIHdoYXQgeW91IG1heSBoYXZlIGRvbmUgaW4KKyAqIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoKS4KKyAqIE5vdGUgdGhhdCBhbiBpbmRpdmlkdWFsIG5vZGUncyB1bmRvX3NldHVwIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQKKyAqIGlmIHRoYXQgbm9kZSBpcyBiZWluZyBzZXQgdG8gYSBuZXcgdmFsdWUuCisgKgorICogSWYgdGhlcmUgaXMgYW55IHNldHVwIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gYWxsb2NhdGluZworICogbWVtb3J5IGZvciBhIHN0cmluZyksIHlvdSBzaG91bGQgZG8gdGhhdCBzZXR1cCBpbiB0aGUgbm9kZSdzIHVuZG9fc2V0dXAKKyAqIGZ1bmN0aW9uLCBzbyBpdCB3b24ndCBiZSBkb25lIHVubGVzcyBpdCBpcyBuZWNlc3NhcnkuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB0YWJsZSBjb250ZXh0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfRVJST1IgICA6IGVycm9yLiBzZXQgd2lsbCBmYWlsLgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBNRkRfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDUxOk06IHwtPiBTZXR1cCBldGhlclN0YXRzVGFibGUgdW5kby4KKyAgICAgKiBzZXQgdXAgZXRoZXJTdGF0c1RhYmxlIHVuZG8gaW5mb3JtYXRpb24sIGluIHByZXBhcmF0aW9uIGZvciBhIHNldC4KKyAgICAgKiBVbmRvIHN0b3JhZ2UgaXMgaW4gKCogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyICkqCisgICAgICovCisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwICovCisKKy8qKgorICogVW5kbyBhIHNldCByZXF1ZXN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBpbmRpdmlkdWFsIG5vZGUgdW5kbworICogZnVuY3Rpb25zIGFyZSBjYWxsZWQuIElmIHlvdSBuZWVkIHRvIGRvIGFueSB1bmRvIHRoYXQgaXMgbm90CisgKiByZWxhdGVkIHRvIGEgc3BlY2lmaWMgY29sdW1uLCB5b3UgY2FuIGRvIGl0IGhlcmUuCisgKgorICogTm90ZSB0aGF0IGFuIGluZGl2aWR1YWwgbm9kZSdzIHVuZG8gZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGNhbGxlZAorICogaWYgdGhhdCBub2RlIGlzIGJlaW5nIHNldCB0byBhIG5ldyB2YWx1ZS4KKyAqCisgKiBJZiB0aGVyZSBpcyBhbnl0aGluZyAgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGNvbHVtbiAoZS5nLiByZWxlYXNpbmcKKyAqIG1lbW9yeSBmb3IgYSBzdHJpbmcpLCB5b3Ugc2hvdWxkIGRvIHRoYXQgc2V0dXAgaW4gdGhlIG5vZGUncyB1bmRvCisgKiBmdW5jdGlvbiwgc28gaXQgd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gTUZEX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3VuZG8iLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1MTpNOiB8LT4gZXRoZXJTdGF0c1RhYmxlIHVuZG8uCisgICAgICogZXRoZXJTdGF0c1RhYmxlIHVuZG8gaW5mb3JtYXRpb24sIGluIHJlc3BvbnNlIHRvIGEgZmFpbGVkIHNldC4KKyAgICAgKiBVbmRvIHN0b3JhZ2UgaXMgaW4gKCogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyICkqCisgICAgICovCisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwICovCisKKy8qKgorICogQ2xlYW51cCB1cCBjb250ZXh0IHVuZG8gaW5mb3JtYXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciBzZXQvY29tbWl0IHByb2Nlc3NpbmcuIElmIHlvdQorICogYWxsb2NhdGVkIGFueSByZXNvdXJjZXMgaW4gdW5kb19zZXR1cCwgdGhpcyBpcyB0aGUgcGxhY2UgdG8gcmVsZWFzZQorICogdGhvc2UgcmVzb3VyY2VzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgc2V0CisgKiByZXF1ZXN0LiBJZiB5b3UgbmVlZCB0byBwZXJmb3JtIGRpZmZlcmVudCBzdGVwcyBmb3IgY2xlYW51cCBkZXBlbmRpbmcKKyAqIG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZSwgeW91IGNhbiBhZGQgYSBmbGFnIHRvIHRoZSByb3dyZXFfY3R4LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1MjpNOiB8LT4gQ2xlYW51cCBldGhlclN0YXRzVGFibGUgdW5kby4KKyAgICAgKiBVbmRvIHN0b3JhZ2UgaXMgaW4gKCogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyICkqCisgICAgICovCisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAgKi8KKworLyoqCisgKiBjb21taXQgbmV3IHZhbHVlcy4KKyAqCisgKiBBdCB0aGlzIHBvaW50LCB5b3Ugc2hvdWxkIGhhdmUgZG9uZSBldmVyeXRoaW5nIHlvdSBjYW4gdG8gZW5zdXJlIHRoYXQKKyAqIHRoaXMgY29tbWl0IHdpbGwgbm90IGZhaWwuCisgKgorICogU2hvdWxkIHlvdSBuZWVkIGRpZmZlcmVudCBiZWhhdmlvciBkZXBlbmRpbmcgb24gd2hpY2ggY29sdW1ucyB3ZXJlCisgKiBzZXQsIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3Mgd2lsbCBpbmRpY2F0ZSB3aGljaCB3cml0ZWFibGUgY29sdW1ucyB3ZXJlCisgKiBzZXQuIFRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENPTFVNTl8qX0ZMQUcgYml0cyBjYW4gYmUgZm91bmQgaW4KKyAqIGV0aGVyU3RhdHNUYWJsZV9vaWRzLmguCisgKiBBIG5ldyByb3cgd2lsbCBoYXZlIHRoZSBNRkRfUk9XX0NSRUFURUQgYml0IHNldCBpbiByb3dyZXFfZmxhZ3MuCisgKgorICogQHBhcmFtIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfRVJST1IgICA6IGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2NvbW1pdChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gTUZEX1NVQ0NFU1M7CisgICAgaW50ICAgICAgICAgICAgIHNhdmVfZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbW1pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIHNhdmUgZmxhZ3MsIHRoZW4gY2xlYXIgdW50aWwgd2UgYWN0dWFsbHkgZG8gc29tZXRoaW5nCisgICAgICovCisgICAgc2F2ZV9mbGFncyA9IHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3M7CisgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyA9IDA7CisKKyAgICAvKgorICAgICAqIGNvbW1pdCBldGhlclN0YXRzVGFibGUgZGF0YQorICAgICAqIDEpIGNoZWNrIHRoZSBjb2x1bW4ncyBmbGFnIGluIHNhdmVfZmxhZ3MgdG8gc2VlIGlmIGl0IHdhcyBzZXQuCisgICAgICogMikgY2xlYXIgdGhlIGZsYWcgd2hlbiB5b3UgaGFuZGxlIHRoYXQgY29sdW1uCisgICAgICogMykgc2V0IHRoZSBjb2x1bW4ncyBmbGFnIGluIGNvbHVtbl9zZXRfZmxhZ3MgaWYgaXQgbmVlZHMgdW5kbworICAgICAqICAgIHByb2Nlc3NpbmcgaW4gY2FzZSBvZiBhIGZhaWx1cmUuCisgICAgICovCisgICAgaWYgKHNhdmVfZmxhZ3MgJiBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRykgeworICAgICAgICBzYXZlX2ZsYWdzICY9IH5DT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRzsgICAgICAgIC8qIGNsZWFyIGV0aGVyU3RhdHNEYXRhU291cmNlICovCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86NDgyOm86IHwtPiBjb21taXQgY29sdW1uIGV0aGVyU3RhdHNEYXRhU291cmNlLgorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgaWYgKC0xID09IHJjKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBjb2x1bW4gZXRoZXJTdGF0c0RhdGFTb3VyY2UgY29tbWl0IGZhaWxlZFxuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc2V0IGZsYWcsIGluIGNhc2Ugd2UgbmVlZCB0byB1bmRvIGV0aGVyU3RhdHNEYXRhU291cmNlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0KKyAgICAgICAgICAgICAgICBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzYXZlX2ZsYWdzICYgQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHKSB7CisgICAgICAgIHNhdmVfZmxhZ3MgJj0gfkNPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRzsgICAgIC8qIGNsZWFyIGV0aGVyU3RhdHNPd25lciAqLworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjQ4MjpvOiB8LT4gY29tbWl0IGNvbHVtbiBldGhlclN0YXRzT3duZXIuCisgICAgICAgICAqLworICAgICAgICByYyA9IC0xOworICAgICAgICBpZiAoLTEgPT0gcmMpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGNvbHVtbiBldGhlclN0YXRzT3duZXIgY29tbWl0IGZhaWxlZFxuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc2V0IGZsYWcsIGluIGNhc2Ugd2UgbmVlZCB0byB1bmRvIGV0aGVyU3RhdHNPd25lcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzYXZlX2ZsYWdzICYgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRykgeworICAgICAgICBzYXZlX2ZsYWdzICY9IH5DT0xVTU5fRVRIRVJTVEFUU1NUQVRVU19GTEFHOyAgICAvKiBjbGVhciBldGhlclN0YXRzU3RhdHVzICovCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86NDgyOm86IHwtPiBjb21taXQgY29sdW1uIGV0aGVyU3RhdHNTdGF0dXMuCisgICAgICAgICAqLworICAgICAgICByYyA9IC0xOworICAgICAgICBpZiAoLTEgPT0gcmMpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGNvbHVtbiBldGhlclN0YXRzU3RhdHVzIGNvbW1pdCBmYWlsZWRcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNldCBmbGFnLCBpbiBjYXNlIHdlIG5lZWQgdG8gdW5kbyBldGhlclN0YXRzU3RhdHVzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRzsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogaWYgd2Ugc3VjY2Vzc2Z1bGx5IGNvbW1pdGVkIHRoaXMgcm93LCBzZXQgdGhlIGRpcnR5IGZsYWcuCisgICAgICovCisgICAgaWYgKE1GRF9TVUNDRVNTID09IHJjKSB7CisgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyB8PSBNRkRfUk9XX0RJUlRZOworICAgIH0KKworICAgIGlmIChzYXZlX2ZsYWdzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmhhbmRsZWQgY29sdW1ucyAoMHgleCkgaW4gY29tbWl0XG4iLAorICAgICAgICAgICAgICAgICBzYXZlX2ZsYWdzKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9jb21taXQgKi8KKworLyoqCisgKiB1bmRvIGNvbW1pdCBuZXcgdmFsdWVzLgorICoKKyAqIFNob3VsZCB5b3UgbmVlZCBkaWZmZXJlbnQgYmVoYXZpb3IgZGVwZW5kaW5nIG9uIHdoaWNoIGNvbHVtbnMgd2VyZQorICogc2V0LCByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHdpbGwgaW5kaWNhdGUgd2hpY2ggd3JpdGVhYmxlIGNvbHVtbnMgd2VyZQorICogc2V0LiBUaGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBDT0xVTU5fKl9GTEFHIGJpdHMgY2FuIGJlIGZvdW5kIGluCisgKiBldGhlclN0YXRzVGFibGVfb2lkcy5oLgorICogQSBuZXcgcm93IHdpbGwgaGF2ZSB0aGUgTUZEX1JPV19DUkVBVEVEIGJpdCBzZXQgaW4gcm93cmVxX2ZsYWdzLgorICoKKyAqIEBwYXJhbSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHVzZXJzIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gTUZEX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0ODU6TTogfC0+IFVuZG8gZXRoZXJTdGF0c1RhYmxlIGNvbW1pdC4KKyAgICAgKiBjaGVjayB0aGUgY29sdW1uJ3MgZmxhZyBpbiByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHRvIHNlZQorICAgICAqIGlmIGl0IHdhcyBzZXQgZHVyaW5nIGNvbW1pdCwgdGhlbiB1bmRvIGl0LgorICAgICAqCisgICAgICogZWc6IGlmIChyb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzICYgQ09MVU1OX19GTEFHKSB7fQorICAgICAqLworCisKKyAgICAvKgorICAgICAqIGlmIHdlIHN1Y2Nlc3NmdWxseSB1bi1jb21taXRlZCB0aGlzIHJvdywgY2xlYXIgdGhlIGRpcnR5IGZsYWcuCisgICAgICovCisgICAgaWYgKE1GRF9TVUNDRVNTID09IHJjKSB7CisgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmPSB+TUZEX1JPV19ESVJUWTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdCAqLworCisvKgorICogVE9ETzo0NDA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBub2RlIHZhbHVlIGNoZWNrcy4KKyAqIFRPRE86NDUwOk06IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgdW5kbyBmdW5jdGlvbnMuCisgKiBUT0RPOjQ2MDpNOiBJbXBsZW1lbnQgZXRoZXJTdGF0c1RhYmxlIHNldCBmdW5jdGlvbnMuCisgKiBUT0RPOjQ4MDpNOiBJbXBsZW1lbnQgZXRoZXJTdGF0c1RhYmxlIGNvbW1pdCBmdW5jdGlvbnMuCisgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNEYXRhU291cmNlCisgKiBldGhlclN0YXRzRGF0YVNvdXJjZSBpcyBzdWJpZCAyIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMgorICogRGVzY3JpcHRpb246CitUaGlzIG9iamVjdCBpZGVudGlmaWVzIHRoZSBzb3VyY2Ugb2YgdGhlIGRhdGEgdGhhdAorICAgICAgICB0aGlzIGV0aGVyU3RhdHMgZW50cnkgaXMgY29uZmlndXJlZCB0byBhbmFseXplLiAgVGhpcworICAgICAgICBzb3VyY2UgY2FuIGJlIGFueSBldGhlcm5ldCBpbnRlcmZhY2Ugb24gdGhpcyBkZXZpY2UuCisgICAgICAgIEluIG9yZGVyIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBpbnRlcmZhY2UsIHRoaXMgb2JqZWN0CisgICAgICAgIHNoYWxsIGlkZW50aWZ5IHRoZSBpbnN0YW5jZSBvZiB0aGUgaWZJbmRleCBvYmplY3QsCisgICAgICAgIGRlZmluZWQgaW4gUkZDIDIyMzMgWzE3XSwgZm9yIHRoZSBkZXNpcmVkIGludGVyZmFjZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGFuIGVudHJ5IHdlcmUgdG8gcmVjZWl2ZSBkYXRhIGZyb20KKyAgICAgICAgaW50ZXJmYWNlICMxLCB0aGlzIG9iamVjdCB3b3VsZCBiZSBzZXQgdG8gaWZJbmRleC4xLgorCisgICAgICAgIFRoZSBzdGF0aXN0aWNzIGluIHRoaXMgZ3JvdXAgcmVmbGVjdCBhbGwgcGFja2V0cworICAgICAgICBvbiB0aGUgbG9jYWwgbmV0d29yayBzZWdtZW50IGF0dGFjaGVkIHRvIHRoZSBpZGVudGlmaWVkCisgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICBBbiBhZ2VudCBtYXkgb3IgbWF5IG5vdCBiZSBhYmxlIHRvIHRlbGwgaWYgZnVuZGFtZW50YWwKKyAgICAgICAgY2hhbmdlcyB0byB0aGUgbWVkaWEgb2YgdGhlIGludGVyZmFjZSBoYXZlIG9jY3VycmVkIGFuZAorICAgICAgICBuZWNlc3NpdGF0ZSBhbiBpbnZhbGlkYXRpb24gb2YgdGhpcyBlbnRyeS4gIEZvciBleGFtcGxlLCBhCisgICAgICAgIGhvdC1wbHVnZ2FibGUgZXRoZXJuZXQgY2FyZCBjb3VsZCBiZSBwdWxsZWQgb3V0IGFuZCByZXBsYWNlZAorICAgICAgICBieSBhIHRva2VuLXJpbmcgY2FyZC4gIEluIHN1Y2ggYSBjYXNlLCBpZiB0aGUgYWdlbnQgaGFzIHN1Y2gKKyAgICAgICAga25vd2xlZGdlIG9mIHRoZSBjaGFuZ2UsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgaXQKKyAgICAgICAgaW52YWxpZGF0ZSB0aGlzIGVudHJ5LgorCisgICAgICAgIFRoaXMgb2JqZWN0IG1heSBub3QgYmUgbW9kaWZpZWQgaWYgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgZXRoZXJTdGF0c1N0YXR1cyBvYmplY3QgaXMgZXF1YWwgdG8gdmFsaWQoMSkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBPQkpFQ1RJRCAoYmFzZWQgb24gcGVybHR5cGUgT0JKRUNUSUQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fT0JKRUNUX0lELiBUaGUgQyB0eXBlIGRlY2wgaXMgb2lkIChvaWQpCisgKiBUaGlzIGRhdGEgdHlwZSByZXF1aXJlcyBhIGxlbmd0aC4KKyAqLworLyoqCisgKiBDaGVjayB0aGF0IHRoZSBwcm9wb3NlZCBuZXcgdmFsdWUgaXMgcG90ZW50aWFsbHkgdmFsaWQuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIKKyAqICAgICAgICBBIG9pZCBjb250YWluaW5nIHRoZSBuZXcgdmFsdWUuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4KKyAqICAgICAgICBUaGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBkYXRhIHBvaW50ZWQgdG8gYnkgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgIDogaW5jb21pbmcgdmFsdWUgaXMgbGVnYWwKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9OT1cgIDogaW5jb21pbmcgdmFsdWUgaXMgbm90IHZhbGlkIG5vdworICogQHJldHZhbCBNRkRfTk9UX1ZBTElEX0VWRVIgOiBpbmNvbWluZyB2YWx1ZSBpcyBuZXZlciB2YWxpZAorICoKKyAqIFRoaXMgaXMgdGhlIHBsYWNlIHRvIGNoZWNrIGZvciByZXF1aXJlbWVudHMgdGhhdCBhcmUgbm90CisgKiBleHByZXNzZWQgaW4gdGhlIG1pYiBzeW50YXggKGZvciBleGFtcGxlLCBhIHJlcXVpcmVtZW50IHRoYXQKKyAqIGlzIGRldGFpbGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgYW4gb2JqZWN0KS4KKyAqCisgKiBZb3Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIHJlcXVlc3RlZCBjaGFuZ2UgYmV0d2VlbiB0aGUgdW5kbyB2YWx1ZSBhbmQgdGhlCisgKiBuZXcgdmFsdWUgaXMgbGVnYWwgKGllLCB0aGUgdHJhbnNpc3Rpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlcgorICogaXMgbGVnYWwpLgorICogICAgICAKKyAqQG5vdGUKKyAqIFRoaXMgY2hlY2sgaXMgb25seSB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldyB2YWx1ZQorICogaXMgXGIgcG90ZW50aWFsbHkgdmFsaWQuIFRoaXMgaXMgdGhlIGZpcnN0IGNoZWNrIG9mIG1hbnksIGFuZAorICogaXMgb25lIG9mIHRoZSBzaW1wbGVzdCBvbmVzLgorICogCisgKkBub3RlCisgKiB0aGlzIGlzIG5vdCB0aGUgcGxhY2UgdG8gZG8gYW55IGNoZWNrcyBmb3IgdmFsdWVzCisgKiB3aGljaCBkZXBlbmQgb24gc29tZSBvdGhlciB2YWx1ZSBpbiB0aGUgbWliLiBUaG9zZQorICogdHlwZXMgb2YgY2hlY2tzIHNob3VsZCBiZSBkb25lIGluIHRoZQorICogZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2RlcGVuZGVuY2llcygpIGZ1bmN0aW9uLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgY2hlY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgZm9yIHlvdToKKyAqICAgIFRoZSBzeW50YXggaXMgQVNOX09CSkVDVF9JRAorICogICAgVGhlIGxlbmd0aCBpcyA8IHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlKS4KKyAqCisgKiBJZiB0aGVyZSBhIG5vIG90aGVyIGNoZWNrcyB5b3UgbmVlZCB0byBkbywgc2ltcGx5IHJldHVybiBNRkRfU1VDQ0VTUy4KKyAqCisgKi8KK2ludAorZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ0MTpvOiB8LT4gQ2hlY2sgZm9yIHZhbGlkIGV0aGVyU3RhdHNEYXRhU291cmNlIHZhbHVlLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOyAgICAgICAgIC8qIGV0aGVyU3RhdHNEYXRhU291cmNlIHZhbHVlIG5vdCBpbGxlZ2FsICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlICovCisKKy8qKgorICogU2F2ZSBvbGQgdmFsdWUgaW5mb3JtYXRpb24KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHRhYmxlIGNvbnRleHQgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4KQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IuIHNldCB3aWxsIGZhaWwuCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgdGFibGUgbGV2ZWwgdW5kbyBzZXR1cCBmdW5jdGlvbgorICogZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAgaGFzIGJlZW4gY2FsbGVkLgorICoKKyAqQG5vdGUKKyAqIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiBhIG5ldyB2YWx1ZSBpcyBzZXQgZm9yIHRoaXMgY29sdW1uLgorICoKKyAqIElmIHRoZXJlIGlzIGFueSBzZXR1cCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgY29sdW1uIChlLmcuIGFsbG9jYXRpbmcKKyAqIG1lbW9yeSBmb3IgYSBzdHJpbmcpLCB5b3Ugc2hvdWxkIGRvIHRoYXQgc2V0dXAgaW4gdGhpcyBmdW5jdGlvbiwgc28gaXQKKyAqIHdvbid0IGJlIGRvbmUgdW5sZXNzIGl0IGlzIG5lY2Vzc2FyeS4KKyAqLworaW50CitldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0RhdGFTb3VyY2VfdW5kb19zZXR1cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHNob3VsZCBuZXZlciBnZXQgYSBOVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NTpvOiB8LT4gU2V0dXAgZXRoZXJTdGF0c0RhdGFTb3VyY2UgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c0RhdGFTb3VyY2UgYW5kIGV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiBkYXRhCisgICAgICogc2V0IHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlIGZyb20gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZQorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZSwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZSwKKyAgICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpKTsKKyAgICByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbjsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvX3NldHVwICovCisKKy8qKgorICogU2V0IHRoZSBuZXcgdmFsdWUuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LiBZb3Ugc2hvdWxkIGtub3cgaG93IHRvCisgKiAgICAgICAgbWFuaXB1bGF0ZSB0aGUgdmFsdWUgZnJvbSB0aGlzIG9iamVjdC4KKyAqIEBwYXJhbSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyCisgKiAgICAgICAgQSBvaWQgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuCisgKiAgICAgICAgVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIKKyAqLworaW50CitldGhlclN0YXRzRGF0YVNvdXJjZV9zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuKQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX3NldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHNob3VsZCBuZXZlciBnZXQgYSBOVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86NDYxOk06IHwtPiBTZXQgZXRoZXJTdGF0c0RhdGFTb3VyY2UgdmFsdWUuCisgICAgICogc2V0IGV0aGVyU3RhdHNEYXRhU291cmNlIHZhbHVlIGluIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBtZW1jcHkocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZSwKKyAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0ciwgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pOworICAgIC8qKiBjb252ZXJ0IGJ5dGVzIHRvIG51bWJlciBvZiBvaWQgKi8KKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiA9CisgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuIC8KKyAgICAgICAgc2l6ZW9mKGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJbMF0pOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV9zZXQgKi8KKworLyoqCisgKiB1bmRvIHRoZSBwcmV2aW91cyBzZXQuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LgorICovCitpbnQKK2V0aGVyU3RhdHNEYXRhU291cmNlX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG8iLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDU2Om86IHwtPiBDbGVhbiB1cCBldGhlclN0YXRzRGF0YVNvdXJjZSB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzRGF0YVNvdXJjZSBhbmQgZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuIGRhdGEKKyAgICAgKiBzZXQgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZSBmcm9tIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlCisgICAgICovCisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlLAorICAgICAgICAgICAocm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlWzBdKSkpOworICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuID0KKyAgICAgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG8gKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c093bmVyCisgKiBldGhlclN0YXRzT3duZXIgaXMgc3ViaWQgMjAgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBDcmVhdGUuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4yMAorICogRGVzY3JpcHRpb246CitUaGUgZW50aXR5IHRoYXQgY29uZmlndXJlZCB0aGlzIGVudHJ5IGFuZCBpcyB0aGVyZWZvcmUKKyAgICAgICAgdXNpbmcgdGhlIHJlc291cmNlcyBhc3NpZ25lZCB0byBpdC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMSAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMQorICoKKyAqIFJhbmdlczogIDAgLSAxMjc7CisgKgorICogSXRzIHN5bnRheCBpcyBPd25lclN0cmluZyAoYmFzZWQgb24gcGVybHR5cGUgT0NURVRTVFIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fT0NURVRfU1RSLiBUaGUgQyB0eXBlIGRlY2wgaXMgY2hhciAoY2hhcikKKyAqIFRoaXMgZGF0YSB0eXBlIHJlcXVpcmVzIGEgbGVuZ3RoLiAgKE1heCAxMjcpCisgKi8KKy8qKgorICogQ2hlY2sgdGhhdCB0aGUgcHJvcG9zZWQgbmV3IHZhbHVlIGlzIHBvdGVudGlhbGx5IHZhbGlkLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT3duZXJfdmFsX3B0cgorICogICAgICAgIEEgY2hhciBjb250YWluaW5nIHRoZSBuZXcgdmFsdWUuCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuCisgKiAgICAgICAgVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgOiBpbmNvbWluZyB2YWx1ZSBpcyBsZWdhbAorICogQHJldHZhbCBNRkRfTk9UX1ZBTElEX05PVyAgOiBpbmNvbWluZyB2YWx1ZSBpcyBub3QgdmFsaWQgbm93CisgKiBAcmV0dmFsIE1GRF9OT1RfVkFMSURfRVZFUiA6IGluY29taW5nIHZhbHVlIGlzIG5ldmVyIHZhbGlkCisgKgorICogVGhpcyBpcyB0aGUgcGxhY2UgdG8gY2hlY2sgZm9yIHJlcXVpcmVtZW50cyB0aGF0IGFyZSBub3QKKyAqIGV4cHJlc3NlZCBpbiB0aGUgbWliIHN5bnRheCAoZm9yIGV4YW1wbGUsIGEgcmVxdWlyZW1lbnQgdGhhdAorICogaXMgZGV0YWlsZWQgaW4gdGhlIGRlc2NyaXB0aW9uIGZvciBhbiBvYmplY3QpLgorICoKKyAqIFlvdSBzaG91bGQgY2hlY2sgdGhhdCB0aGUgcmVxdWVzdGVkIGNoYW5nZSBiZXR3ZWVuIHRoZSB1bmRvIHZhbHVlIGFuZCB0aGUKKyAqIG5ldyB2YWx1ZSBpcyBsZWdhbCAoaWUsIHRoZSB0cmFuc2lzdGlvbiBmcm9tIG9uZSB2YWx1ZSB0byBhbm90aGVyCisgKiBpcyBsZWdhbCkuCisgKiAgICAgIAorICpAbm90ZQorICogVGhpcyBjaGVjayBpcyBvbmx5IHRvIGRldGVybWluZSBpZiB0aGUgbmV3IHZhbHVlCisgKiBpcyBcYiBwb3RlbnRpYWxseSB2YWxpZC4gVGhpcyBpcyB0aGUgZmlyc3QgY2hlY2sgb2YgbWFueSwgYW5kCisgKiBpcyBvbmUgb2YgdGhlIHNpbXBsZXN0IG9uZXMuCisgKiAKKyAqQG5vdGUKKyAqIHRoaXMgaXMgbm90IHRoZSBwbGFjZSB0byBkbyBhbnkgY2hlY2tzIGZvciB2YWx1ZXMKKyAqIHdoaWNoIGRlcGVuZCBvbiBzb21lIG90aGVyIHZhbHVlIGluIHRoZSBtaWIuIFRob3NlCisgKiB0eXBlcyBvZiBjaGVja3Mgc2hvdWxkIGJlIGRvbmUgaW4gdGhlCisgKiBldGhlclN0YXRzVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzKCkgZnVuY3Rpb24uCisgKgorICogVGhlIGZvbGxvd2luZyBjaGVja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZG9uZSBmb3IgeW91OgorICogICAgVGhlIHN5bnRheCBpcyBBU05fT0NURVRfU1RSCisgKiAgICBUaGUgbGVuZ3RoIGlzIDwgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyKS4KKyAqICAgIFRoZSBsZW5ndGggaXMgaW4gKG9uZSBvZikgdGhlIHJhbmdlIHNldChzKTogIDAgLSAxMjcKKyAqCisgKiBJZiB0aGVyZSBhIG5vIG90aGVyIGNoZWNrcyB5b3UgbmVlZCB0byBkbywgc2ltcGx5IHJldHVybiBNRkRfU1VDQ0VTUy4KKyAqCisgKi8KK2ludAorZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpldGhlclN0YXRzT3duZXJfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfY2hlY2tfdmFsdWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzo0NDE6bzogfC0+IENoZWNrIGZvciB2YWxpZCBldGhlclN0YXRzT3duZXIgdmFsdWUuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7ICAgICAgICAgLyogZXRoZXJTdGF0c093bmVyIHZhbHVlIG5vdCBpbGxlZ2FsICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNPd25lcl9jaGVja192YWx1ZSAqLworCisvKioKKyAqIFNhdmUgb2xkIHZhbHVlIGluZm9ybWF0aW9uCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB0YWJsZSBjb250ZXh0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfRVJST1IgICA6IGVycm9yLiBzZXQgd2lsbCBmYWlsLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHRhYmxlIGxldmVsIHVuZG8gc2V0dXAgZnVuY3Rpb24KKyAqIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwIGhhcyBiZWVuIGNhbGxlZC4KKyAqCisgKkBub3RlCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgYSBuZXcgdmFsdWUgaXMgc2V0IGZvciB0aGlzIGNvbHVtbi4KKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgc2V0dXAgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGNvbHVtbiAoZS5nLiBhbGxvY2F0aW5nCisgKiBtZW1vcnkgZm9yIGEgc3RyaW5nKSwgeW91IHNob3VsZCBkbyB0aGF0IHNldHVwIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0CisgKiB3b24ndCBiZSBkb25lIHVubGVzcyBpdCBpcyBuZWNlc3NhcnkuCisgKi8KK2ludAorZXRoZXJTdGF0c093bmVyX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfdW5kb19zZXR1cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHNob3VsZCBuZXZlciBnZXQgYSBOVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NTpvOiB8LT4gU2V0dXAgZXRoZXJTdGF0c093bmVyIHVuZG8uCisgICAgICovCisgICAgLyoKKyAgICAgKiBjb3B5IGV0aGVyU3RhdHNPd25lciBhbmQgZXRoZXJTdGF0c093bmVyX2xlbiBkYXRhCisgICAgICogc2V0IHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lciBmcm9tIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyCisgICAgICovCisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lciwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXIsCisgICAgICAgICAgIChyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lclswXSkpKTsKKyAgICByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXJfbGVuID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJfbGVuOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNPd25lcl91bmRvX3NldHVwICovCisKKy8qKgorICogU2V0IHRoZSBuZXcgdmFsdWUuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LiBZb3Ugc2hvdWxkIGtub3cgaG93IHRvCisgKiAgICAgICAgbWFuaXB1bGF0ZSB0aGUgdmFsdWUgZnJvbSB0aGlzIG9iamVjdC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT3duZXJfdmFsX3B0cgorICogICAgICAgIEEgY2hhciBjb250YWluaW5nIHRoZSBuZXcgdmFsdWUuCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuCisgKiAgICAgICAgVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyCisgKi8KK2ludAorZXRoZXJTdGF0c093bmVyX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgIGNoYXIgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuKQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNPd25lcl9zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzo0NjE6TTogfC0+IFNldCBldGhlclN0YXRzT3duZXIgdmFsdWUuCisgICAgICogc2V0IGV0aGVyU3RhdHNPd25lciB2YWx1ZSBpbiByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyLCBldGhlclN0YXRzT3duZXJfdmFsX3B0ciwKKyAgICAgICAgICAgZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuKTsKKyAgICAvKiogY29udmVydCBieXRlcyB0byBudW1iZXIgb2YgY2hhciAqLworICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbiA9CisgICAgICAgIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbiAvIHNpemVvZihldGhlclN0YXRzT3duZXJfdmFsX3B0clswXSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNPd25lcl9zZXQgKi8KKworLyoqCisgKiB1bmRvIHRoZSBwcmV2aW91cyBzZXQuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfdW5kbyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTY6bzogfC0+IENsZWFuIHVwIGV0aGVyU3RhdHNPd25lciB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzT3duZXIgYW5kIGV0aGVyU3RhdHNPd25lcl9sZW4gZGF0YQorICAgICAqIHNldCByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lciBmcm9tIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lcgorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lciwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c093bmVyLAorICAgICAgICAgICAocm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c093bmVyX2xlbiAqCisgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pKSk7CisgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJfbGVuID0KKyAgICAgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c093bmVyX2xlbjsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfdW5kbyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzU3RhdHVzCisgKiBldGhlclN0YXRzU3RhdHVzIGlzIHN1YmlkIDIxIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMjEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHN0YXR1cyBvZiB0aGlzIGV0aGVyU3RhdHMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMSAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKiBFbnVtIHJhbmdlOiAyLzguIFZhbHVlczogIHZhbGlkKDEpLCBjcmVhdGVSZXF1ZXN0KDIpLCB1bmRlckNyZWF0aW9uKDMpLCBpbnZhbGlkKDQpCisgKgorICogSXRzIHN5bnRheCBpcyBFbnRyeVN0YXR1cyAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIENoZWNrIHRoYXQgdGhlIHByb3Bvc2VkIG5ldyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB2YWxpZC4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1N0YXR1c192YWwKKyAqICAgICAgICBBIGxvbmcgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgIDogaW5jb21pbmcgdmFsdWUgaXMgbGVnYWwKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9OT1cgIDogaW5jb21pbmcgdmFsdWUgaXMgbm90IHZhbGlkIG5vdworICogQHJldHZhbCBNRkRfTk9UX1ZBTElEX0VWRVIgOiBpbmNvbWluZyB2YWx1ZSBpcyBuZXZlciB2YWxpZAorICoKKyAqIFRoaXMgaXMgdGhlIHBsYWNlIHRvIGNoZWNrIGZvciByZXF1aXJlbWVudHMgdGhhdCBhcmUgbm90CisgKiBleHByZXNzZWQgaW4gdGhlIG1pYiBzeW50YXggKGZvciBleGFtcGxlLCBhIHJlcXVpcmVtZW50IHRoYXQKKyAqIGlzIGRldGFpbGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgYW4gb2JqZWN0KS4KKyAqCisgKiBZb3Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIHJlcXVlc3RlZCBjaGFuZ2UgYmV0d2VlbiB0aGUgdW5kbyB2YWx1ZSBhbmQgdGhlCisgKiBuZXcgdmFsdWUgaXMgbGVnYWwgKGllLCB0aGUgdHJhbnNpc3Rpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlcgorICogaXMgbGVnYWwpLgorICogICAgICAKKyAqQG5vdGUKKyAqIFRoaXMgY2hlY2sgaXMgb25seSB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldyB2YWx1ZQorICogaXMgXGIgcG90ZW50aWFsbHkgdmFsaWQuIFRoaXMgaXMgdGhlIGZpcnN0IGNoZWNrIG9mIG1hbnksIGFuZAorICogaXMgb25lIG9mIHRoZSBzaW1wbGVzdCBvbmVzLgorICogCisgKkBub3RlCisgKiB0aGlzIGlzIG5vdCB0aGUgcGxhY2UgdG8gZG8gYW55IGNoZWNrcyBmb3IgdmFsdWVzCisgKiB3aGljaCBkZXBlbmQgb24gc29tZSBvdGhlciB2YWx1ZSBpbiB0aGUgbWliLiBUaG9zZQorICogdHlwZXMgb2YgY2hlY2tzIHNob3VsZCBiZSBkb25lIGluIHRoZQorICogZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2RlcGVuZGVuY2llcygpIGZ1bmN0aW9uLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgY2hlY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgZm9yIHlvdToKKyAqICAgIFRoZSBzeW50YXggaXMgQVNOX0lOVEVHRVIKKyAqICAgIFRoZSB2YWx1ZSBpcyBvbmUgb2YgIHZhbGlkKDEpLCBjcmVhdGVSZXF1ZXN0KDIpLCB1bmRlckNyZWF0aW9uKDMpLCBpbnZhbGlkKDQpCisgKgorICogSWYgdGhlcmUgYSBubyBvdGhlciBjaGVja3MgeW91IG5lZWQgdG8gZG8sIHNpbXBseSByZXR1cm4gTUZEX1NVQ0NFU1MuCisgKgorICovCitpbnQKK2V0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1N0YXR1c192YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NDE6bzogfC0+IENoZWNrIGZvciB2YWxpZCBldGhlclN0YXRzU3RhdHVzIHZhbHVlLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOyAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXMgdmFsdWUgbm90IGlsbGVnYWwgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1N0YXR1c19jaGVja192YWx1ZSAqLworCisvKioKKyAqIFNhdmUgb2xkIHZhbHVlIGluZm9ybWF0aW9uCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB0YWJsZSBjb250ZXh0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfRVJST1IgICA6IGVycm9yLiBzZXQgd2lsbCBmYWlsLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHRhYmxlIGxldmVsIHVuZG8gc2V0dXAgZnVuY3Rpb24KKyAqIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwIGhhcyBiZWVuIGNhbGxlZC4KKyAqCisgKkBub3RlCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgYSBuZXcgdmFsdWUgaXMgc2V0IGZvciB0aGlzIGNvbHVtbi4KKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgc2V0dXAgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGNvbHVtbiAoZS5nLiBhbGxvY2F0aW5nCisgKiBtZW1vcnkgZm9yIGEgc3RyaW5nKSwgeW91IHNob3VsZCBkbyB0aGF0IHNldHVwIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0CisgKiB3b24ndCBiZSBkb25lIHVubGVzcyBpdCBpcyBuZWNlc3NhcnkuCisgKi8KK2ludAorZXRoZXJTdGF0c1N0YXR1c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1N0YXR1c191bmRvX3NldHVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDU1Om86IHwtPiBTZXR1cCBldGhlclN0YXRzU3RhdHVzIHVuZG8uCisgICAgICovCisgICAgLyoKKyAgICAgKiBjb3B5IGV0aGVyU3RhdHNTdGF0dXMgZGF0YQorICAgICAqIHNldCByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzU3RhdHVzIGZyb20gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzU3RhdHVzCisgICAgICovCisgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c1N0YXR1cyA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1N0YXR1czsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzU3RhdHVzX3VuZG9fc2V0dXAgKi8KKworLyoqCisgKiBTZXQgdGhlIG5ldyB2YWx1ZS4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHVzZXJzIGNvbnRleHQuIFlvdSBzaG91bGQga25vdyBob3cgdG8KKyAqICAgICAgICBtYW5pcHVsYXRlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgb2JqZWN0LgorICogQHBhcmFtIGV0aGVyU3RhdHNTdGF0dXNfdmFsCisgKiAgICAgICAgQSBsb25nIGNvbnRhaW5pbmcgdGhlIG5ldyB2YWx1ZS4KKyAqLworaW50CitldGhlclN0YXRzU3RhdHVzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1N0YXR1c192YWwpCit7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1N0YXR1c19zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NjE6TTogfC0+IFNldCBldGhlclN0YXRzU3RhdHVzIHZhbHVlLgorICAgICAqIHNldCBldGhlclN0YXRzU3RhdHVzIHZhbHVlIGluIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNTdGF0dXMgPSBldGhlclN0YXRzU3RhdHVzX3ZhbDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1N0YXR1c19zZXQgKi8KKworLyoqCisgKiB1bmRvIHRoZSBwcmV2aW91cyBzZXQuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LgorICovCitpbnQKK2V0aGVyU3RhdHNTdGF0dXNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1N0YXR1c191bmRvIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NjpvOiB8LT4gQ2xlYW4gdXAgZXRoZXJTdGF0c1N0YXR1cyB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzU3RhdHVzIGRhdGEKKyAgICAgKiBzZXQgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzU3RhdHVzIGZyb20gcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c1N0YXR1cworICAgICAqLworICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1N0YXR1cyA9IHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNTdGF0dXM7CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1N0YXR1c191bmRvICovCisKKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OGUwODcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmgKQEAgLTAsMCArMSwzNTYgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDEyMDc3ICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9EQVRBX1NFVF9ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9EQVRBX1NFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFNFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFNFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworCisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV9jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV9zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzRHJvcEV2ZW50c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c09jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT2N0ZXRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1BrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVW5kZXJzaXplUGt0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzRnJhZ21lbnRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0phYmJlcnNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c0phYmJlcnNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0phYmJlcnNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNKYWJiZXJzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX2NoZWNrX3ZhbHVlCisgICAgICAgIChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfY2hlY2tfdmFsdWUKKyAgICAgICAgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3VuZG9fc2V0dXAKKyAgICAgICAgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl9zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c093bmVyX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzU3RhdHVzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eCk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRVRIRVJTVEFUU1RBQkxFX0RBVEFfU0VUX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZW51bXMuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZW51bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTNjMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9lbnVtcy5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMgMTI1MjYgMjAwNS0wNy0xNSAyMjo0MToxNlogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9FTlVNU19ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9FTlVNU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICogTk9URVMgb24gZW51bXMKKyAgICAgKiA9PT09PT09PT09PT09PQorICAgICAqCisgICAgICogVmFsdWUgTWFwcGluZworICAgICAqIC0tLS0tLS0tLS0tLS0KKyAgICAgKiBJZiB0aGUgdmFsdWVzIGZvciB5b3VyIGRhdGEgdHlwZSBkb24ndCBleGFjdGx5IG1hdGNoIHRoZQorICAgICAqIHBvc3NpYmxlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBtaWIsIHlvdSBzaG91bGQgbWFwIHRoZW0KKyAgICAgKiBiZWxvdy4gRm9yIGV4YW1wbGUsIGEgYm9vbGVhbiBmbGFnICgxLzApIGlzIHVzdWFsbHkgcmVwcmVzZW50ZWQKKyAgICAgKiBhcyBhIFRydXRoVmFsdWUgaW4gYSBNSUIsIHdoaWNoIG1hcHMgdG8gdGhlIHZhbHVlcyAoMS8yKS4KKyAgICAgKgorICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogZW51bSBkZWZpbml0aW9ucyBmb3IgdGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBldGhlclN0YXRzU3RhdHVzIChFbnRyeVN0YXR1cyAvIEFTTl9JTlRFR0VSKQorICoKKyAqIHNpbmNlIGEgVGV4dHVhbCBDb252ZW50aW9uIG1heSBiZSByZWZlcmVuY2VkIG1vcmUgdGhhbiBvbmNlIGluIGEKKyAqIE1JQiwgcHJvdGVjdCBhZ2FpbnQgcmVkZWZpbml0aW9ucyBvZiB0aGUgZW51bSB2YWx1ZXMuCisgKi8KKyNpZm5kZWYgRU5UUllTVEFUVVNfRU5VTVMKKyNkZWZpbmUgRU5UUllTVEFUVVNfRU5VTVMKKworI2RlZmluZSBFTlRSWVNUQVRVU19WQUxJRCAgMQorI2RlZmluZSBFTlRSWVNUQVRVU19DUkVBVEVSRVFVRVNUICAyCisjZGVmaW5lIEVOVFJZU1RBVFVTX1VOREVSQ1JFQVRJT04gIDMKKyNkZWZpbmUgRU5UUllTVEFUVVNfSU5WQUxJRCAgNAorCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVOVFJZU1RBVFVTX0VOVU1TICovCisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9FTlVNU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTAzNjJhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMCwwICsxLDIyMjMgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHhfcyB7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworICAgIG5ldHNubXBfY2FjaGUgICpjYWNoZTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKnVzZXJfY3R4OworCisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyB0YmxfaW5mbzsKKworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyBhY2Nlc3NfbXVsdGlwbGV4ZXI7CisKKyAgICB1X2ludCAgICAgICAgICAgdGFibGVfZGlydHk7CisKK30gZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHg7CisKK3N0YXRpYyBldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCBldGhlclN0YXRzVGFibGVfaWZfY3R4OworCitzdGF0aWMgdm9pZCAgICAKK19ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOworc3RhdGljIHZvaWQgICAgCitfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOworCisKK25ldHNubXBfY29udGFpbmVyICoKK2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyOworfQorCitldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2V0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHg7Cit9CisKK2V0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKK3sKKyAgICBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICpvbGQgPSBldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CisgICAgcmV0dXJuIG9sZDsKK30KKworaW50CitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKK3sKKyAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOworfQorCit1X2ludAorZXRoZXJTdGF0c1RhYmxlX2RpcnR5X2dldCh2b2lkKQoreworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfaWZfY3R4LnRhYmxlX2RpcnR5OworfQorCit2b2lkCitldGhlclN0YXRzVGFibGVfZGlydHlfc2V0KHVfaW50IHN0YXR1cykKK3sKKyAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWQuIHdhcyAlZCwgbm93ICVkXG4iLAorICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudGFibGVfZGlydHksIHN0YXR1cykpOworICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudGFibGVfZGlydHkgPSBzdGF0dXM7Cit9CisKKy8qCisgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKKyAqLworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF92YWx1ZXM7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfY2hlY2tfb2JqZWN0czsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXM7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fdmFsdWVzOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NvbW1pdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9pcnJldmVyc2libGVfY29tbWl0OworCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCBpbnQgY29sdW1uKTsKKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV9jaGVja19pbmRleGVzKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CisKK2V0aGVyU3RhdHNUYWJsZV9kYXRhICpldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSh2b2lkKTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGV0aGVyU3RhdHNUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitfZXRoZXJTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfcHRyLCB1X2xvbmcgZmxhZ3MpCit7CisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzICphY2Nlc3NfbXVsdGlwbGV4ZXIgPQorICAgICAgICAmZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC50YmxfaW5mbzsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvOworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXI7CisgICAgaW50ICAgICAgICAgICAgIG1mZF9tb2RlcyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBldGhlclN0YXRzVGFibGUKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFNldHRpbmcgdXAgdGhlIHRhYmxlJ3MgZGVmaW5pdGlvbgorICAgICAqLworICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRibF9pbmZvLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIGluZGV4OiBldGhlclN0YXRzSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIC8qCisgICAgICogRGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2Vzc2libGUgY29sdW1ucy4gIFRoaXMKKyAgICAgKiBvcHRpbWl6ZXMgcmV0cml2YWwuIAorICAgICAqLworICAgIHRibF9pbmZvLT5taW5fY29sdW1uID0gRVRIRVJTVEFUU1RBQkxFX01JTl9DT0w7CisgICAgdGJsX2luZm8tPm1heF9jb2x1bW4gPSBFVEhFUlNUQVRTVEFCTEVfTUFYX0NPTDsKKworICAgIC8qCisgICAgICogc2F2ZSB1c2VycyBjb250ZXh0CisgICAgICovCisgICAgZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IHJlZ19wdHI7CisKKyAgICAvKgorICAgICAqIGNhbGwgZGF0YSBhY2Nlc3MgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIGV0aGVyU3RhdHNUYWJsZV9pbml0X2RhdGEocmVnX3B0cik7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCgmZXRoZXJTdGF0c1RhYmxlX2lmX2N0eCk7CisgICAgaWYgKE5VTEwgPT0gZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgZXRoZXJTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogYWNjZXNzX211bHRpcGxleGVyOiBSRVFVSVJFRCB3cmFwcGVyIGZvciBnZXQgcmVxdWVzdCBoYW5kbGluZworICAgICAqLworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX29iamVjdF9sb29rdXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5nZXRfdmFsdWVzID0gX21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0OworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ID0gX21mZF9ldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0OworCisKKyAgICAvKgorICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZworICAgICAqLworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MgPQorICAgICAgICBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jaGVja19vYmplY3RzOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19zZXR1cCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXAgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzID0gX21mZF9ldGhlclN0YXRzVGFibGVfc2V0X3ZhbHVlczsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cyA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fdmFsdWVzOworCisgICAgLyoKKyAgICAgKiBubyB3cmFwcGVycyB5ZXQKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NvbW1pdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0ID0gX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQ7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0ID0KKyAgICAgICAgX21mZF9ldGhlclN0YXRzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBDcmVhdGUgYSByZWdpc3RyYXRpb24sIHNhdmUgb3VyIHJlZyBkYXRhLCByZWdpc3RlciB0YWJsZS4KKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOmluaXRfZXRoZXJTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgZXRoZXJTdGF0c1RhYmxlIGFzIGEgbWlicy1mb3ItZHVtbWllcyB0YWJsZS5cbiIpKTsKKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcl9nZXQoYWNjZXNzX211bHRpcGxleGVyKTsKKyAgICByZWdpbmZvID0KKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUoImV0aGVyU3RhdHNUYWJsZSIsIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBldGhlclN0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHg7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogc2V0IHVwIGJhYnkgc3RlcHMgaGFuZGxlciwgY3JlYXRlIGl0IGFuZCBpbmplY3QgaXQKKyAgICAgKi8KKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX09CSkVDVF9MT09LVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfSVJSRVZFUlNJQkxFX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3Rfc3ludGF4X2NoZWNrcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19PQkpFQ1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19zZXR1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY2xlYW51cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NMRUFOVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19zZXRzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUUzsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnJvd19jcmVhdGlvbikKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9ST1dfQ1JFQVRFOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19DT05TSVNURU5DWTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOworCisgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IHJvd19tZXJnZSBoZWxwZXIgd2l0aCBwcmVmaXggcm9vdG9pZF9sZW4gKyAyIChlbnRyeS5jb2wpCisgICAgICovCisgICAgaGFuZGxlciA9IG5ldHNubXBfZ2V0X3Jvd19tZXJnZV9oYW5kbGVyKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMik7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YmxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGlmIChOVUxMICE9IGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpIHsKKyAgICAgICAgaGFuZGxlciA9IG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC5jYWNoZSk7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisgICAgfQorCisgICAgLyoKKyAgICAgKiByZWdpc3RlciB0YWJsZQorICAgICAqLworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnaW5mbywgdGJsX2luZm8pOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBldGhlclN0YXRzVGFibGUKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIpCit7CisgICAgLyoKKyAgICAgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHgpOworfQorCit2b2lkCitldGhlclN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV92YWxpZF9jb2x1bW5zX3NldCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogY29udmVydCB0aGUgaW5kZXggY29tcG9uZW50IHN0b3JlZCBpbiB0aGUgY29udGV4dCB0byBhbiBvaWQKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfZXRoZXJTdGF0c0luZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9ldGhlclN0YXRzSW5kZXgsIDB4MDAsIHNpemVvZih2YXJfZXRoZXJTdGF0c0luZGV4KSk7CisgICAgdmFyX2V0aGVyU3RhdHNJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfZXRoZXJTdGF0c0luZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfZXRoZXJTdGF0c0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbWliX2lkeC0+ZXRoZXJTdGF0c0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+ZXRoZXJTdGF0c0luZGV4KSk7CisKKworICAgIGVyciA9IGJ1aWxkX29pZF9ub2FsbG9jKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwgJm9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmdmFyX2V0aGVyU3RhdHNJbmRleCk7CisgICAgaWYgKGVycikKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yICVkIGNvbnZlcnRpbmcgaW5kZXggdG8gb2lkXG4iLCBlcnIpOworCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2V0aGVyU3RhdHNJbmRleCk7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBldGhlclN0YXRzVGFibGUgaW5kZXhlcyBmcm9tIGEgbmV0c25tcF9pbmRleAorICoKKyAqIEByZXR2YWwgU05NUF9FUlJfTk9FUlJPUiAgOiBubyBlcnJvcgorICogQHJldHZhbCBTTk1QX0VSUl9HRU5FUlIgICA6IGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9ldGhlclN0YXRzSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2V0aGVyU3RhdHNJbmRleCwgMHgwMCwgc2l6ZW9mKHZhcl9ldGhlclN0YXRzSW5kZXgpKTsKKyAgICB2YXJfZXRoZXJTdGF0c0luZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9ldGhlclN0YXRzSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcGFyc2UgdGhlIG9pZCBpbnRvIHRoZSBpbmRpdmlkdWFsIGluZGV4IGNvbXBvbmVudHMKKyAgICAgKi8KKyAgICBlcnIgPSBwYXJzZV9vaWRfaW5kZXhlcyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhcl9ldGhlclN0YXRzSW5kZXgpOworICAgIGlmIChlcnIgPT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAvKgorICAgICAgICAgKiBjb3B5IG91dCB2YWx1ZXMKKyAgICAgICAgICovCisgICAgICAgIG1pYl9pZHgtPmV0aGVyU3RhdHNJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9ldGhlclN0YXRzSW5kZXgudmFsLnN0cmluZyk7CisKKworICAgIH0KKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9ldGhlclN0YXRzSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkICovCisKKworLyoKKyAqIGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhCisgKgorICogUHVycG9zZTogY3JlYXRlIG5ldyBldGhlclN0YXRzVGFibGVfZGF0YS4KKyAqLworZXRoZXJTdGF0c1RhYmxlX2RhdGEgKgorZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCkKK3sKKyAgICBldGhlclN0YXRzVGFibGVfZGF0YSAqcnRuID0gU05NUF9NQUxMT0NfVFlQRURFRihldGhlclN0YXRzVGFibGVfZGF0YSk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJ0bikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5hYmxlIHRvIG1hbGxvYyBtZW1vcnkgZm9yIG5ldyAiCisgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfZGF0YS5cbiIpOworICAgIH0KKworICAgIHJldHVybiBydG47Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhICovCisKKy8qCisgKiBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhCisgKgorICogUHVycG9zZTogcmVsZWFzZSBldGhlclN0YXRzVGFibGUgZGF0YS4KKyAqLwordm9pZAorZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YShldGhlclN0YXRzVGFibGVfZGF0YSAqIGRhdGEpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGZyZWUoZGF0YSk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEgKi8KKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEBpbnRlcm5hbAorICogYWxsb2NhdGUgcmVzb3VyY2VzIGZvciBhIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKi8KK2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKK2V0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgIgorICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHguXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzID0gcm93cmVxX2N0eC0+b2lkX3RtcDsKKworICAgIHJvd3JlcV9jdHgtPmV0aGVyU3RhdHNUYWJsZV9kYXRhX2xpc3QgPSBOVUxMOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBhbGxvY2F0ZWQgZGF0YSwgY2FsbCBpbml0IHJvdXRpbmUKKyAgICAgKi8KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkgeworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KHJvd3JlcV9jdHgsIHVzZXJfaW5pdF9jdHgpKSB7CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgcm93cmVxX2N0eCA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqLwordm9pZAorZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAocm93cmVxX2N0eCk7CisKKyAgICBpZiAocm93cmVxX2N0eC0+dW5kbykKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YShyb3dyZXFfY3R4LT51bmRvKTsKKworICAgIC8qCisgICAgICogZnJlZSBpbmRleCBvaWQgcG9pbnRlcgorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgIT0gcm93cmVxX2N0eC0+b2lkX3RtcCkKKyAgICAgICAgZnJlZShyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMpOworCisgICAgU05NUF9GUkVFKHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfZmlyc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAic2tpcHBpbmcgYWRkaXRpb25hbCBwcmVfcmVxdWVzdFxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmMsIHBhY2tldF9yYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIHdhaXQgZm9yIGxhc3QgY2FsbCBiZWZvcmUgY2FsbGluZyB1c2VyCisgICAgICovCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2xhc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAid2FpdGluZyBmb3IgbGFzdCBwb3N0X3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcGFja2V0X3JjID0gbmV0c25tcF9jaGVja19hbGxfcmVxdWVzdHNfZXJyb3IoYWd0cmVxX2luZm8tPmFzcCwgMCk7CisgICAgaWYgKChNRkRfU1VDQ0VTUyAhPSBwYWNrZXRfcmMpICYmIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQoKSkgeworICAgICAgICAvKgorICAgICAgICAgKiB3ZSBzaG91bGRuJ3QgZ2V0IGhlcmUuIHRoZSB1bmRvIHN0ZXBzIHNob3VsZCBhbHNvIGNsZWFyCisgICAgICAgICAqIHRoZSBkaXJ0eSBmbGFncy4KKyAgICAgICAgICovCisgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGRpcnR5IGZsYWcgc2V0IGluIHBvc3RfcmVxdWVzdCAiCisgICAgICAgICAgICAgICAgICJidXQgc3RhdHVzICE9IFNVQ0NFU1MuXG4iKTsKKyAgICB9CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3JjKTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorX21mZF9ldGhlclN0YXRzVGFibGVfcm93cmVxX2Zyb21faW5kZXgobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJjX3B0cikKK3sKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBldGhlclN0YXRzVGFibGVfbWliX2luZGV4IG1pYl9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfZnJvbV9pbmRleCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJjX3B0cikKKyAgICAgICAgcmNfcHRyID0gJnJjOworICAgICpyY19wdHIgPSBNRkRfU1VDQ0VTUzsKKworICAgIG1lbXNldCgmbWliX2lkeCwgMHgwLCBzaXplb2YobWliX2lkeCkpOworCisgICAgLyoKKyAgICAgKiB0cnkgdG8gcGFyc2Ugb2lkCisgICAgICovCisgICAgKnJjX3B0ciA9IGV0aGVyU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChvaWRfaWR4LCAmbWliX2lkeCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9ICpyY19wdHIpIHsKKyAgICAgICAgREVCVUdNU0dUKCgiZXRoZXJTdGF0c1RhYmxlIiwgImVycm9yIHBhcnNpbmcgaW5kZXhcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhbGxvY2F0ZSBuZXcgY29udGV4dAorICAgICAqLworICAgIHJvd3JlcV9jdHggPSBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChOVUxMKTsKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgICpyY19wdHIgPSBNRkRfRVJST1I7CisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworICAgIH0KKworICAgIG1lbWNweSgmcm93cmVxX2N0eC0+dGJsX2lkeCwgJm1pYl9pZHgsIHNpemVvZihtaWJfaWR4KSk7CisKKyAgICAvKgorICAgICAqIGNoZWNrIGluZGV4ZXMKKyAgICAgKi8KKyAgICAqcmNfcHRyID0gX2V0aGVyU3RhdHNUYWJsZV9jaGVja19pbmRleGVzKHJvd3JlcV9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSAqcmNfcHRyKSB7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KCgqcmNfcHRyID09IFNOTVBfRVJSX05PQ1JFQVRJT04pIHx8CisgICAgICAgICAgICAgICAgICAgICAgICgqcmNfcHRyID09IFNOTVBfRVJSX0lOQ09OU0lTVEVOVE5BTUUpKTsKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjb3B5IGluZGV4ZXMKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4LmxlbiA9IG9pZF9pZHgtPmxlbjsKKyAgICBtZW1jcHkocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzLCBvaWRfaWR4LT5vaWRzLAorICAgICAgICAgICBvaWRfaWR4LT5sZW4gKiBzaXplb2Yob2lkKSk7CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfcm93cmVxX2Zyb21faW5kZXggKi8KKworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX29iamVjdF9sb29rdXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGdldCBvdXIgY29udGV4dCBmcm9tIG1mZAorICAgICAqIGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICppZl9jdHggPQorICAgICAqICAgICAgICAgICAgIChldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqKXJlZ2luZm8tPm15X3JlZ192b2lkOworICAgICAqLworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGJscmVxX2luZm87CisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworCisgICAgICAgIHRibHJlcV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0YmxyZXFfaW5mbykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInJlcXVlc3QgaGFkIG5vIHRhYmxlIGluZm9cbiIpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIHRyeSBjcmVhdGUgcm93cmVxCisgICAgICAgICAqLworICAgICAgICBvaWRfaWR4Lm9pZHMgPSB0YmxyZXFfaW5mby0+aW5kZXhfb2lkOworICAgICAgICBvaWRfaWR4LmxlbiA9IHRibHJlcV9pbmZvLT5pbmRleF9vaWRfbGVuOworCisgICAgICAgIHJvd3JlcV9jdHggPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfZnJvbV9pbmRleCgmb2lkX2lkeCwgJnJjKTsKKyAgICAgICAgaWYgKE1GRF9TVUNDRVNTID09IHJjKSB7CisgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworICAgICAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzIHw9IE1GRF9ST1dfQ1JFQVRFRDsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBhZGQgcm93cmVxX2N0eCB0byByZXF1ZXN0IGRhdGEgbGlzdHMKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2luc2VydChyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfaW5kZXggKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCByYyk7CisgICAgZWxzZQorICAgICAgICBldGhlclN0YXRzVGFibGVfcm93X3ByZXAocm93cmVxX2N0eCk7CisKKyAgICByZXR1cm4gU05NUF9WQUxJREFURV9FUlIocmMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEdFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEBpbnRlcm5hbAorICogUmV0cmlldmUgdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsCisgICAgICAgICAgICAgICAgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiAoSU5ERVgpIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0lOREVYOgorICAgICAgICB2YXItPnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKGxvbmcpOworICAgICAgICAoKnZhci0+dmFsLmludGVnZXIpID0gcm93cmVxX2N0eC0+dGJsX2lkeC5ldGhlclN0YXRzSW5kZXg7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEYXRhU291cmNlKDIpL09CSkVDVElEL0FTTl9PQkpFQ1RfSUQvb2lkKG9pZCkvL0wvQS9XL2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRV9GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNEYXRhU291cmNlKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9PQkpFQ1RfSUQ7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvaWQgKiopICYgdmFyLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyLT52YWxfbGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0Ryb3BFdmVudHMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RST1BFVkVOVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNEUk9QRVZFTlRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c0Ryb3BFdmVudHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNEcm9wRXZlbnRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPY3RldHMoNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09DVEVUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU09DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNPY3RldHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPY3RldHNfZ2V0KHJvd3JlcV9jdHgsICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMoNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNQS1RTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNQa3RzX2dldChyb3dyZXFfY3R4LCAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzKDYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNCUk9BRENBU1RQS1RTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzQnJvYWRjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0cyg3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTTVVMVElDQVNUUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzTXVsdGljYXN0UGt0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0NSQ0FMSUdORVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzKDkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNVTkRFUlNJWkVQS1RTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c092ZXJzaXplUGt0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c092ZXJzaXplUGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNGcmFnbWVudHMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNGUkFHTUVOVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNGUkFHTUVOVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzRnJhZ21lbnRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzRnJhZ21lbnRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0phYmJlcnMoMTIpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNKYWJiZXJzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzSmFiYmVyc19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQ29sbGlzaW9ucygxMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0NPTExJU0lPTlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c0NvbGxpc2lvbnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNDb2xsaXNpb25zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNjRPY3RldHMoMTQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjRPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjRPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzUGt0czY0T2N0ZXRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzUGt0czY0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzKDE1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjVUTzEyN09DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzKDE2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEyOFRPMjU1T0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzEyOFRPMjU1T0NURVRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHMoMTcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMoMTgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMoMTkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMDI0VE8xNTE4T0NURVRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c093bmVyKDIwKS9Pd25lclN0cmluZy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvQS9XL2UvUi9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPV05FUjoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c093bmVyKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9PQ1RFVF9TVFI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c093bmVyX2dldChyb3dyZXFfY3R4LCAoY2hhciAqKikgJnZhci0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXItPnZhbF9sZW4pOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzU3RhdHVzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzU3RhdHVzX2dldChyb3dyZXFfY3R4LCAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKEVUSEVSU1RBVFNUQUJMRV9NSU5fQ09MIDw9IGNvbHVtbgorICAgICAgICAgICAgJiYgY29sdW1uIDw9IEVUSEVSU1RBVFNUQUJMRV9NQVhfQ09MKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiYXNzdW1lIGNvbHVtbiAlZCBpcyByZXNlcnZlZFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByYyA9IE1GRF9TS0lQOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4uXG4iLAorICAgICAgICAgICAgICAgICAgICAgY29sdW1uKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiAqLworCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCI5OmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfdmFsdWVzIiwKKyAgICAgICAgICAgICAgICAiZXhpc3RzICV1XG4iLCByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzKSk7CisKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2F2ZSBvbGQgcG9pbnRlciwgc28gd2UgY2FuIGZyZWUgaXQgaWYgcmVwbGFjZWQKKyAgICAgICAgICovCisgICAgICAgIG9sZF9zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nOworICAgICAgICBkYXRhRnJlZUhvb2sgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5kYXRhRnJlZUhvb2s7CisgICAgICAgIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWY7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYgPT0KKyAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiAhPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpKQorICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBjb2x1bW4gZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmktPmNvbG51bSk7CisgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgaWYgKE1GRF9TS0lQID09IHJjKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSA9IFNOTVBfTk9TVUNISU5TVEFOQ0U7CisgICAgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIk5VTEwgdmFyYmluZCBkYXRhIHBvaW50ZXIhXG4iKTsKKyAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIGlmIChyYykKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaWYgdGhlIGJ1ZmZlciB3YXNuJ3QgdXNlZCBwcmV2aW91c2x5IGZvciB0aGUgb2xkIGRhdGEgKGkuZS4gaXQKKyAgICAgICAgICogd2FzIGFsbGNvYXRlZCBtZW1vcnkpICBhbmQgdGhlIGdldCByb3V0aW5lIHJlcGxhY2VkIHRoZSBwb2ludGVyLAorICAgICAgICAgKiB3ZSBuZWVkIHRvIGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgICAgICAgICAqLworICAgICAgICBpZiAob2xkX3N0cmluZyAmJiAob2xkX3N0cmluZyAhPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpICYmCisgICAgICAgICAgICAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZyAhPSBvbGRfc3RyaW5nKSkgeworICAgICAgICAgICAgaWYgKGRhdGFGcmVlSG9vaykKKyAgICAgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKG9sZF9zdHJpbmcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyZWUob2xkX3N0cmluZyk7CisgICAgICAgIH0KKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIHJlc3VsdHMgKi8KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfdmFsdWVzICovCisKK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfY2hlY2tfaW5kZXhlcyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2luZGV4ZXMiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKworICAgIC8qCisgICAgICogKElOREVYKSBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2ggCisgICAgICovCisgICAgLyoKKyAgICAgKiBjaGVjayBkZWZpbmVkIHJhbmdlKHMpLiAKKyAgICAgKi8KKyAgICBpZiAoKFNOTVBFUlJfU1VDQ0VTUyA9PSByYykKKyAgICAgICAgJiYgKChyb3dyZXFfY3R4LT50YmxfaWR4LmV0aGVyU3RhdHNJbmRleCA8IDEpCisgICAgICAgICAgICB8fCAocm93cmVxX2N0eC0+dGJsX2lkeC5ldGhlclN0YXRzSW5kZXggPiA2NTUzNSkpCisgICAgICAgICkgeworICAgICAgICByYyA9IFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIHJjOworICAgIHJjID0gZXRoZXJTdGF0c0luZGV4X2NoZWNrX2luZGV4KHJvd3JlcV9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQ1JFQVRJT047CisKKyAgICAvKgorICAgICAqIGlmIGluZGl2aWR1YWwgcGFydHMgbG9vayBvaywgY2hlY2sgdGhlbSBhcyBhIHdob2xlCisgICAgICovCisgICAgcmV0dXJuIGV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleChldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfY2hlY2tfaW5kZXhlcyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBTeW50YXggY2hlY2tzCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIEBpbnRlcm5hbAorICogQ2hlY2sgdGhlIHN5bnRheCBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsIGludCBjb2x1bW4pCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbiIsCisgICAgICAgICAgICAgICAgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHN3aXRjaCAoY29sdW1uKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIChJTkRFWCkgZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTSU5ERVg6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7ICAgICAgLyogY2FuIG5vdCBjaGFuZ2UgaW5kZXggb2YgYWN0aXZlIHJvdyAqLworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRGF0YVNvdXJjZSgyKS9PQkpFQ1RJRC9BU05fT0JKRUNUX0lEL29pZChvaWQpLy9ML0EvVy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRToKKyAgICAgICAgcmMgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKHZhciwgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlKSk7CisgICAgICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW46ZXRoZXJTdGF0c0RhdGFTb3VyY2UiLCAidmFyYmluZCB2YWxpZGF0aW9uIGZhaWxlZCAoZWcgYmFkIHR5cGUgb3Igc2l6ZSlcbiIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJjID0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWUocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9pZCAqKSB2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbik7CisgICAgICAgICAgICBpZiAoKE1GRF9TVUNDRVNTICE9IHJjKSAmJiAoTUZEX05PVF9WQUxJRF9FVkVSICE9IHJjKQorICAgICAgICAgICAgICAgICYmIChNRkRfTk9UX1ZBTElEX05PVyAhPSByYykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgcmMgJWQgZnJvbSBldGhlclN0YXRzRGF0YVNvdXJjZV9jaGVja192YWx1ZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYyk7CisgICAgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0Ryb3BFdmVudHMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RST1BFVkVOVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPY3RldHMoNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMoNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzKDYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNCUk9BRENBU1RQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0cyg3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTTVVMVElDQVNUUEtUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMoOSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMoMTApL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPVkVSU0laRVBLVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNGcmFnbWVudHMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNGUkFHTUVOVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNKYWJiZXJzKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NvbGxpc2lvbnMoMTMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzKDE0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMoMTUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjVUTzEyN09DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cygxNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMyNTZUTzUxMU9DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMoMTgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMoMTkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c093bmVyKDIwKS9Pd25lclN0cmluZy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvQS9XL2UvUi9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPV05FUjoKKyAgICAgICAgcmMgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKHZhciwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcikpOworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBkZWZpbmVkIHJhbmdlKHMpLiAKKyAgICAgICAgICovCisgICAgICAgIGlmICgoU05NUEVSUl9TVUNDRVNTID09IHJjKQorICAgICAgICAgICAgJiYgKCh2YXItPnZhbF9sZW4gPCAwKSB8fCAodmFyLT52YWxfbGVuID4gMTI3KSkKKyAgICAgICAgICAgICkgeworICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKKyAgICAgICAgfQorICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uOmV0aGVyU3RhdHNPd25lciIsICJ2YXJiaW5kIHZhbGlkYXRpb24gZmFpbGVkIChlZyBiYWQgdHlwZSBvciBzaXplKVxuIikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmMgPSBldGhlclN0YXRzT3duZXJfY2hlY2tfdmFsdWUocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIHZhci0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbik7CisgICAgICAgICAgICBpZiAoKE1GRF9TVUNDRVNTICE9IHJjKSAmJiAoTUZEX05PVF9WQUxJRF9FVkVSICE9IHJjKQorICAgICAgICAgICAgICAgICYmIChNRkRfTk9UX1ZBTElEX05PVyAhPSByYykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgcmMgJWQgZnJvbSBldGhlclN0YXRzT3duZXJfY2hlY2tfdmFsdWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmMpOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNTdGF0dXMoMjEpL0VudHJ5U3RhdHVzL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL1cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVUzoKKyAgICAgICAgcmMgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUodmFyLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzKSk7CisgICAgICAgIC8qCisgICAgICAgICAqIGNoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIG9uZSBvZiBkZWZpbmVkIGVudW1zIAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKChTTk1QRVJSX1NVQ0NFU1MgPT0gcmMpCisgICAgICAgICAgICAmJiAoKnZhci0+dmFsLmludGVnZXIgIT0gRU5UUllTVEFUVVNfVkFMSUQpCisgICAgICAgICAgICAmJiAoKnZhci0+dmFsLmludGVnZXIgIT0gRU5UUllTVEFUVVNfQ1JFQVRFUkVRVUVTVCkKKyAgICAgICAgICAgICYmICgqdmFyLT52YWwuaW50ZWdlciAhPSBFTlRSWVNUQVRVU19VTkRFUkNSRUFUSU9OKQorICAgICAgICAgICAgJiYgKCp2YXItPnZhbC5pbnRlZ2VyICE9IEVOVFJZU1RBVFVTX0lOVkFMSUQpCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgIHJjID0gU05NUF9FUlJfV1JPTkdWQUxVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uOmV0aGVyU3RhdHNTdGF0dXMiLCAidmFyYmluZCB2YWxpZGF0aW9uIGZhaWxlZCAoZWcgYmFkIHR5cGUgb3Igc2l6ZSlcbiIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJjID0gZXRoZXJTdGF0c1N0YXR1c19jaGVja192YWx1ZShyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZykpOworICAgICAgICAgICAgaWYgKChNRkRfU1VDQ0VTUyAhPSByYykgJiYgKE1GRF9OT1RfVkFMSURfRVZFUiAhPSByYykKKyAgICAgICAgICAgICAgICAmJiAoTUZEX05PVF9WQUxJRF9OT1cgIT0gcmMpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJjICVkIGZyb20gZXRoZXJTdGF0c1N0YXR1c19jaGVja192YWx1ZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYyk7CisgICAgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiAgICAvKiogV2Ugc2hvdWxkbid0IGdldCBoZXJlICovCisgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbiAqLworCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX29iamVjdHMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX29iamVjdHMiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZ2V0IGNvbHVtbiBudW1iZXIgZnJvbSB0YWJsZSByZXF1ZXN0IGluZm8sIGFuZCBjaGVjayB0aGF0IGNvbHVtbgorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uKHJvd3JlcV9jdHgsIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfY2hlY2tfb2JqZWN0cyAqLworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNFVDogVW5kbyBzZXR1cAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFNldCB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW4pCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXBfY29sdW1uIiwgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHN3aXRjaCAoY29sdW1uKSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0RhdGFTb3VyY2UoMikvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL1cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0U6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdW5kb19zZXR1cChyb3dyZXFfY3R4KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c093bmVyKDIwKS9Pd25lclN0cmluZy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvQS9XL2UvUi9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPV05FUjoKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUc7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c093bmVyX3VuZG9fc2V0dXAocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNTdGF0dXMoMjEpL0VudHJ5U3RhdHVzL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL1cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVUzoKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVU19GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cChyb3dyZXFfY3R4KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtblxuIiwKKyAgICAgICAgICAgICAgICAgY29sdW1uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXBfY29sdW1uICovCisKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHVuZG8gc2V0dXAKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogYWxsb2NhdGUgdW5kbyBjb250ZXh0CisgICAgICovCisgICAgcm93cmVxX2N0eC0+dW5kbyA9IGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKCk7CisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eC0+dW5kbykgeworICAgICAgICAvKiogbXNnIGFscmVhZHkgbG9nZ2VkICovCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgLyoKKyAgICAgKiByb3cgdW5kbyBzZXR1cAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgPSAwOworICAgIHJjID0gZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAocm93cmVxX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXBcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNvbHVtbiB1bmRvIHNldHVwCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgICAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICByYyA9IF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cF9jb2x1bW4ocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmktPmNvbG51bSk7CisgICAgICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOm1mZCIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXBfY29sdW1uXG4iLCByYykpOworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoYWd0cmVxX2luZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIHJlc3VsdHMgKi8KKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogdW5kbyBzZXR1cAorICovCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZmFpbGVkIHJvdyBjcmVhdGUgaW4gZWFybHkgc3RhZ2VzIGhhcyBubyByb3dyZXFfY3R4CisgICAgICovCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkKKyAgICAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY2xlYW51cAorICAgICAqLworICAgIHJjID0gZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cChyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwXG4iLCByYykpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVsZWFzZSB1bmRvIGNvbnRleHQsIGlmIG5lZWRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4LT51bmRvKSB7CisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+dW5kbyk7CisgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8gPSBOVUxMOworICAgIH0KKworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTRVQ6IFNldCB2YWx1ZXMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogQGludGVybmFsCisgKiBTZXQgdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9zZXRfY29sdW1uIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRGF0YVNvdXJjZSgyKS9PQkpFQ1RJRC9BU05fT0JKRUNUX0lEL29pZChvaWQpLy9ML0EvVy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRToKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRzsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzRGF0YVNvdXJjZV9zZXQocm93cmVxX2N0eCwgKG9pZCAqKSB2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbik7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl9zZXQocm93cmVxX2N0eCwgKGNoYXIgKikgdmFyLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT52YWxfbGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1N0YXR1cygyMSkvRW50cnlTdGF0dXMvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL0EvVy9FL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTOgorICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUc7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1N0YXR1c19zZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKCh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKSk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtblxuIiwKKyAgICAgICAgICAgICAgICAgY29sdW1uKTsKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV9zZXRfY29sdW1uICovCisKK2ludAorX21mZF9ldGhlclN0YXRzVGFibGVfc2V0X3ZhbHVlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXMiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzID0gMDsKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAqLworICAgICAgICB0cmkgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJjID0gX2V0aGVyU3RhdHNUYWJsZV9zZXRfY29sdW1uKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmIsIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOm1mZCIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtblxuIiwgcmMpKTsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoYWd0cmVxX2luZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfc2V0X3ZhbHVlcyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTRVQ6IGNvbW1pdAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKgorICogQGludGVybmFsCisgKiBjb21taXQgdGhlIHZhbHVlcworICovCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX2NvbW1pdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2NvbW1pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHJjID0gZXRoZXJTdGF0c1RhYmxlX2NvbW1pdChyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfY29tbWl0XG4iLCByYykpOworICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICB9CisKKyAgICBpZiAocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19ESVJUWSkgeworICAgICAgICAvKgorICAgICAgICAgKiBpZiB3ZSBzdWNjZXNzZnVsbHkgY29tbWl0ZWQgdGhpcyByb3csIHNldCB0aGUgZGlydHkgZmxhZy4gVXNlIHRoZQorICAgICAgICAgKiBjdXJyZW50IHZhbHVlICsgMSAoaS5lLiBkaXJ0eSA9ICMgcm93cyBjaGFuZ2VkKS4KKyAgICAgICAgICogdGhpcyBpcyBjaGVja2VkIGluIHBvc3RfcmVxdWVzdC4uLgorICAgICAgICAgKi8KKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2RpcnR5X3NldChldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCkgKyAxKTsgICAgIC8qIHNldCB0YWJsZSBkaXJ0eSBmbGFnICovCisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK2ludAorX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBpZiAocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19ESVJUWSkgeworICAgICAgICB1X2ludCAgICAgICAgICAgZCA9IGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQoKTsKKworICAgICAgICBuZXRzbm1wX2Fzc2VydChkICE9IDApOworICAgICAgICBpZiAoZCkKKyAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQoZCAtIDEpOworICAgIH0KKworICAgIHJjID0gZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0KHJvd3JlcV9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOm1mZCIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdFxuIiwgcmMpKTsKKyAgICB9CisKKyAgICBpZiAocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19ESVJUWSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSByb3cgZGlydHkgZmxhZyBzdGlsbCBzZXQgYWZ0ZXIgdW5kb19jb21taXRcbiIpOworICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJj0gfk1GRF9ST1dfRElSVFk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NvbW1pdCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTRVQ6IFVuZG8KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKioKKyAqIEBpbnRlcm5hbAorICogdW5kbyB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfdW5kb19jb2x1bW4iLAorICAgICAgICAgICAgICAgICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEYXRhU291cmNlKDIpL09CSkVDVElEL0FTTl9PQkpFQ1RfSUQvb2lkKG9pZCkvL0wvQS9XL2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFOgorICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG8ocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIHJjID0gZXRoZXJTdGF0c093bmVyX3VuZG8ocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNTdGF0dXMoMjEpL0VudHJ5U3RhdHVzL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL1cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVUzoKKyAgICAgICAgcmMgPSBldGhlclN0YXRzU3RhdHVzX3VuZG8ocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9ldGhlclN0YXRzVGFibGVfdW5kb19jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtbiAqLworCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fdmFsdWVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlcyIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvKHJvd3JlcV9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOm1mZCIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvXG4iLCByYykpOworICAgIH0KKworICAgIGZvciAoOyByZXF1ZXN0czsgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dCkgeworICAgICAgICAvKgorICAgICAgICAgKiBzZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uKHJvd3JlcV9jdHgsIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmktPmNvbG51bSk7CisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uXG4iLCByYykpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb192YWx1ZXMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBpcnJldmVyc2libGUgY29tbWl0CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGNvbW1pdCBpcnJldmVyc2libGUgYWN0aW9ucworICovCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2lycmV2ZXJzaWJsZTpjb21taXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBjaGVjayBmb3IgYW5kIGhhbmRsZSByb3cgY3JlYXRpb24vZGVsZXRpb24KKyAgICAgKiBhbmQgdXBkYXRlIGNvbHVtbiBleGlzdCBmbGFncy4uLgorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpIHsKKyAgICAgICAgaWYgKCEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19DUkVBVEVEKSkKKyAgICAgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfaXJyZXZlcnNpYmxlX2NvbW1pdCIsICJ1cGRhdGluZyBleGlzdHMgKCUjeCkgdy9zZXQgKCUjeCkgPSAlI3hcbiIsIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MsIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MsIChyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHwgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncykpKTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0KKyAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfQ1JFQVRFRCkgeworICAgICAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICY9IH5NRkRfUk9XX0NSRUFURUQ7CisgICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERBVEEgQUNDRVNTCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgICAgIF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyBpbnQKK19jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2NhY2hlX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY2FjaGUgZm9yIGV0aGVyU3RhdHNUYWJsZV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIGFuIGludmFsaWQgb3IgZXhwaXJlZCBjYWNoZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KCgwID09IGNhY2hlLT52YWxpZCkgfHwgKDEgPT0gY2FjaGUtPmV4cGlyZWQpKTsKKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICByZXR1cm4gZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9jYWNoZV9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNhY2hlIGluIGV0aGVyU3RhdHNUYWJsZV9jYWNoZV9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRhaW5lciA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWM7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfaXRlbV9mcmVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfY29udGFpbmVyX2l0ZW1fZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9pdGVtX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb250YWluZXIgaW4gZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuIGluZWZmaWNpZW50LCBidXQgZWFzeS4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbnRhaW5lcl9pdGVtX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBjYWNoZSBpbml0CisgICAgICovCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfb2lkX3NpemUpOworCisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY2FjaGUgZm9yIGV0aGVyU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCgmaWZfY3R4LT5jb250YWluZXIsIGlmX2N0eC0+Y2FjaGUpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKQorICAgICAgICBpZl9jdHgtPmNvbnRhaW5lciA9CisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJldGhlclN0YXRzVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCisgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKKyAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2h1dGRvd24gdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpZl9jdHgtPmNvbnRhaW5lcik7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoaWZfY3R4LT5jb250YWluZXIpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKworZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorZXRoZXJTdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfT0lEX0xFTl07CisgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgc3RvcmFnZSBmb3IgT0lECisgICAgICovCisgICAgb2lkX2lkeC5vaWRzID0gb2lkX3RtcDsKKyAgICBvaWRfaWR4LmxlbiA9IHNpemVvZihvaWRfdG1wKSAvIHNpemVvZihvaWQpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0CisgICAgICovCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKCZvaWRfaWR4LCBtaWJfaWR4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcm93cmVxX2N0eCA9CisgICAgICAgIENPTlRBSU5FUl9GSU5EKGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyLCAmb2lkX2lkeCk7CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMTQ1N2IKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKy8qKiBAaW5ncm91cCBpbnRlcmZhY2U6IFJvdXRpbmVzIHRvIGludGVyZmFjZSB0byBOZXQtU05NUAorICoKKyAqIFx3YXJuaW5nIFRoaXMgY29kZSBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCBjYWxsZWQgZGlyZWN0bHksCisgKiAgICAgICAgICBvciB1c2VkIHRvIGludGVycHJldCBmdW5jdGlvbmFsaXR5LiBJdCBpcyBzdWJqZWN0IHRvCisgKiAgICAgICAgICBjaGFuZ2UgYXQgYW55IHRpbWUuCisgKiAKKyAqIEB7CisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX0lOVEVSRkFDRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlLmgiCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqIFBVQkxJQyBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZSAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2V0aGVyU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2N0eCwgdV9sb25nIGZsYWdzKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2V0aGVyU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4KTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKmV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpOworCisgICAgZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpOworCisgICAgbmV0c25tcF9jb250YWluZXIgKmV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCk7CisKKyAgICB1X2ludCAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2RpcnR5X2dldCh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2RpcnR5X3NldCh1X2ludCBzdGF0dXMpOworCisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKmV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KHZvaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pbmRleF90b19vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2Yyk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRVRIRVJTVEFUU1RBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9vaWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBmMWRhMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtb2lkcy5tMmMgMTI4NTUgMjAwNS0wOS0yNyAxNTo1NjowOFogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9PSURTX0gKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX09JRFNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgZXRoZXJTdGF0c1RhYmxlIAorICAgICAqLworI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfT0lEICAgICAgICAgICAgICAxLDMsNiwxLDIsMSwxNiwxLDEKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0lOREVYICAgICAgICAgMQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0lOREVYX0ZMQUcgICAgKDB4MSA8PCAwKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRSAgICAgICAgIDIKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUcgICAgKDB4MSA8PCAxKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTRFJPUEVWRU5UUyAgICAgICAgIDMKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNEUk9QRVZFTlRTX0ZMQUcgICAgKDB4MSA8PCAyKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTT0NURVRTICAgICAgICAgNAorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU09DVEVUU19GTEFHICAgICgweDEgPDwgMykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMgICAgICAgICA1CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUU19GTEFHICAgICgweDEgPDwgNCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0JST0FEQ0FTVFBLVFMgICAgICAgICA2CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUU19GTEFHICAgICgweDEgPDwgNSkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFMgICAgICAgICA3CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTTVVMVElDQVNUUEtUU19GTEFHICAgICgweDEgPDwgNikKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0NSQ0FMSUdORVJST1JTICAgICAgICAgOAorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0NSQ0FMSUdORVJST1JTX0ZMQUcgICAgKDB4MSA8PCA3KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUUyAgICAgICAgIDkKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNVTkRFUlNJWkVQS1RTX0ZMQUcgICAgKDB4MSA8PCA4KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTICAgICAgICAgMTAKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNPVkVSU0laRVBLVFNfRkxBRyAgICAoMHgxIDw8IDkpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNGUkFHTUVOVFMgICAgICAgICAxMQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0ZSQUdNRU5UU19GTEFHICAgICgweDEgPDwgMTApCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTICAgICAgICAgMTIKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTX0ZMQUcgICAgKDB4MSA8PCAxMSkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0NPTExJU0lPTlMgICAgICAgICAxMworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0NPTExJU0lPTlNfRkxBRyAgICAoMHgxIDw8IDEyKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTICAgICAgICAgMTQKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjRPQ1RFVFNfRkxBRyAgICAoMHgxIDw8IDEzKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFMgICAgICAgICAxNQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxNCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUUyAgICAgICAgIDE2CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEyOFRPMjU1T0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxNSkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMyNTZUTzUxMU9DVEVUUyAgICAgICAgIDE3CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzI1NlRPNTExT0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxNikKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM1MTJUTzEwMjNPQ1RFVFMgICAgICAgICAxOAorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM1MTJUTzEwMjNPQ1RFVFNfRkxBRyAgICAoMHgxIDw8IDE3KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEwMjRUTzE1MThPQ1RFVFMgICAgICAgICAxOQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMDI0VE8xNTE4T0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxOCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSICAgICAgICAgMjAKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHICAgICgweDEgPDwgMTkpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVMgICAgICAgICAyMQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVU19GTEFHICAgICgweDEgPDwgMjApCisKKworI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfTUlOX0NPTCAgIENPTFVNTl9FVEhFUlNUQVRTSU5ERVgKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX01BWF9DT0wgICBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVUworCisKKyAgICAvKgorICAgICAqIFRPRE86NDA1OnI6IFJldmlldyBFVEhFUlNUQVRTVEFCTEVfU0VUVEFCTEVfQ09MUyBtYWNyby4KKyAgICAgKiBPUiB0b2dldGhlciBhbGwgdGhlIHdyaXRhYmxlIGNvbHMuCisgICAgICovCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9TRVRUQUJMRV9DT0xTIChDT0xVTU5fRVRIRVJTVEFUU0lOREVYX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTRFJPUEVWRU5UU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNCUk9BRENBU1RQS1RTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTQ1JDQUxJR05FUlJPUlNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNPVkVSU0laRVBLVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTQ09MTElTSU9OU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjRPQ1RFVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUUzEyOFRPMjU1T0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFMyNTZUTzUxMU9DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMDI0VE8xNTE4T0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVU19GTEFHKQorICAgIC8qCisgICAgICogVE9ETzo0MDU6cjogUmV2aWV3IEVUSEVSU1RBVFNUQUJMRV9SRVFVSVJFRF9DT0xTIG1hY3JvLgorICAgICAqIE9SIHRvZ2V0aGVyIGFsbCB0aGUgcmVxdWlyZWQgcm93cyBmb3Igcm93IGNyZWF0aW9uLgorICAgICAqIGRlZmF1bHQgaXMgd3JpdGFibGUgY29scyB3L291dCBkZWZhdWx0cy4KKyAgICAgKi8KKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX1JFUVVJUkVEX0NPTFMgKENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRV9GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRykKKworI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfVkFMSURfQ09MICAgIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSU19GTEFHIAorCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRVRIRVJTVEFUU1RBQkxFX09JRFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxOTg5NQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgKQEAgLTAsMCArMSwzNSBAQAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+CisjaW5jbHVkZSA8aWZhZGRycy5oPgorCisvKiB1c2Uga2VybmVsJ3MgZXRodG9vbC5oICAqLworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KK3R5cGVkZWYgX191NjQgdTY0OwordHlwZWRlZiBfX3UzMiB1MzI7Cit0eXBlZGVmIF9fdTE2IHUxNjsKK3R5cGVkZWYgX191OCB1ODsKKyNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CisKKy8qIHN0cnVjdHVyZSBmb3Igc3RvcmluZyB0aGUgaW50ZXJmYWNlIG5hbWVzIGluIHRoZSBzeXN0ZW0gKi8KKworc3RydWN0IGlmbmFtZSB7CisgICAgc3RydWN0IGlmbmFtZSAqaWZuX25leHQ7CisgICAgY2hhciBuYW1lIFtJRl9OQU1FU0laRV07Cit9OworCitzdHJ1Y3QgaWZuYW1lICpldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICosIGludCAqKTsKK2ludCBldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSAoc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkKTsKK2ludCBldGhlcnN0YXRzX2ludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCAoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lKTsKK2ludCBfZXRoZXJTdGF0c19pb2N0bF9nZXQoaW50IGZkLCBpbnQgd2hpY2gsIHN0cnVjdCBpZnJlcSAqaWZycSwgY29uc3QgY2hhciogbmFtZSk7CitpbnQgaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4LCBpbnQgZmQsIGNvbnN0IGNoYXIqIG5hbWUpOworCisvKiBmb3IgbWFpbnRhaW5hYmlsaXR5ICovCisKKyNkZWZpbmUgQlJPQURDT01fUkVDRUlWRV9KQUJCRVJTICAgICAgICAgICAgICAgICJyeF9qYWJiZXJzIgorCisjZGVmaW5lIEVUSEVSU1RBVFNKQUJCRVJTKHgpICAgICAgICAgICAgICAgICAgICBzdHJzdHIoeCwgQlJPQURDT01fUkVDRUlWRV9KQUJCRVJTKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYwppbmRleCA0MzVmNTYwLi5jMDNhZWY0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMKQEAgLTEwMyw2ICsxMDMsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMjEsNiArMTIyLDkgQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYwppbmRleCA2MDEwZDg0Li5hZDE0YTQ2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYwpAQCAtMTAxLDYgKzEwMSw3IEBACiAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZywgdGFibGVfaW5mbykpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGhhbmRsZXIgZm9yIHNjdHBBc3NvY1JlbUFkZHJUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMTksNiArMTIwLDggQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jCmluZGV4IGU3MjBhMzguLmYzYTY4YTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYwpAQCAtMTMzLDYgKzEzMyw3IEBACiAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZywgdGFibGVfaW5mbykpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGhhbmRsZXIgZm9yIHNjdHBBc3NvY1RhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTE1MSw2ICsxNTIsMTIgQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAoY2FjaGUpCisgICAgICAgIG5ldHNubXBfY2FjaGVfZnJlZShjYWNoZSk7CisKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYwppbmRleCBiNzk4YjdlLi43YTJiMGIyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYwpAQCAtOTgsNiArOTgsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTE2LDYgKzExNyw4IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKIAogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYwppbmRleCBlZDFiODQ5Li4zMzcwZjUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMKQEAgLTEwMCw2ICsxMDAsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMTgsNiArMTE5LDkgQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYwppbmRleCBmYjdmZjRiLi4yNTQyZWE2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYwpAQCAtOTksNiArOTksNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTEyLDYgKzExMyw4IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKIAogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMKaW5kZXggYjA2MjA1Yy4uYTc2NzRlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYwpAQCAtOTgsNiArOTgsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwTG9va3VwUmVtUG9ydFRhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTExMSw2ICsxMTIsOCBAQAogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jCmluZGV4IDQ0MmUyMDcuLjZiYzBkZTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMKQEAgLTEwMCw2ICsxMDAsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTExMyw2ICsxMTQsOCBAQAogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMKaW5kZXggMDM2ZjQwYy4uODIxMDc5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jCkBAIC0xOCw2ICsxOCw3IEBACiB7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mb19zdGF0czsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvX3BhcmFtczsKKyAgICBpbnQgcmM7CiAKICAgICBERUJVR01TR1RMKCgic2N0cDpzY2FsYXJzOmluaXQiLCAiSW5pdGlhbGl6aW5nXG4iKSk7CiAKQEAgLTI3LDggKzI4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjdHBfc3RhdHNfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNjdHBfc3RhdHNfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKHJlZ2luZm9fc3RhdHMsIFNDVFBfQ1VSUkVTVEFCLAorICAgIGlmICghcmVnaW5mb19zdGF0cykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvX3N0YXRzLCBTQ1RQX0NVUlJFU1RBQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0RJU0NPTlRJTlVJVFlUSU1FKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICByZXR1cm47CisKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm9fc3RhdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0NUUF9TVEFUU19DQUNIRV9USU1FT1VULApAQCAtNDMsOCArNTAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2N0cF9wYXJhbXNfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNjdHBfcGFyYW1zX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvX3BhcmFtcywgU0NUUF9SVE9BTEdPUklUSE0sCisgICAgaWYgKCFyZWdpbmZvX3BhcmFtcykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvX3BhcmFtcywgU0NUUF9SVE9BTEdPUklUSE0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9NQVhJTklUUkVUUik7CisgICAgaWYgKCFyYykKKyAgICAgICAgcmV0dXJuOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mb19wYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0NUUF9QQVJBTVNfQ0FDSEVfVElNRU9VVCwKQEAgLTY1LDcgKzc3LDYgQEAKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnJlcXVlc3R2YjsKICAgICBpbnQgICAgICAgICAgICAgc3ViaWQ7Ci0gICAgaW50ICAgICAgICAgICAgIHJldDsKIAogICAgIERFQlVHTVNHVEwoKCJzY3RwOnNjYWxhcnM6c3RhdHMiLCAiSGFuZGxlciAtIG1vZGUgJXNcbiIsCiAgICAgICAgICAgICAgICAgc2VfZmluZF9sYWJlbF9pbl9zbGlzdCgiYWdlbnRfbW9kZSIsIHJlcWluZm8tPm1vZGUpKSk7CkBAIC0yMTUsNyArMjI2LDYgQEAKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnJlcXVlc3R2YjsKICAgICBpbnQgICAgICAgICAgICAgc3ViaWQ7Ci0gICAgaW50ICAgICAgICAgICAgIHJldDsKIAogICAgIERFQlVHTVNHVEwoKCJzY3RwOnNjYWxhcnM6cGFyYW1zIiwgIkhhbmRsZXIgLSBtb2RlICVzXG4iLAogICAgICAgICAgICAgICAgIHNlX2ZpbmRfbGFiZWxfaW5fc2xpc3QoImFnZW50X21vZGUiLCByZXFpbmZvLT5tb2RlKSkpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgKaW5kZXggMjViMTg3YS4uOGRiYjhiNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oCkBAIC03LDYgKzcsMTAgQEAKIGNvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbikKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eCkKKyNlbGlmIGRlZmluZWQoIGZyZWVic2Q4ICkgfHwgZGVmaW5lZCAoIGZyZWVic2Q3ICkKK2NvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QpCSAKKyNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKK2NvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyKQkgCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YzcyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmMKQEAgLTAsMCArMSw5MyBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBTY2FsYXJzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jb25zdGFudHMuaD4KKwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9zdGF0c19hcmNoX2luaXQoKQoreworfQorCitpbnQKK25ldHNubXBfYWNjZXNzX3NjdHBfc3RhdHNfYXJjaF9sb2FkKG5ldHNubXBfc2N0cF9zdGF0cyAqIHNjdHBfc3RhdHMpCit7CisgIHN0cnVjdCBzY3Rwc3RhdCBzdGF0OworICBzaXplX3QgbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3Rwc3RhdCk7CisKKyAgaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5zdGF0cyIsICZzdGF0LCAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwlyZXR1cm4oLTEpOworICB9CisgIG1lbXNldChzY3RwX3N0YXRzLCAwLCBzaXplb2YobmV0c25tcF9zY3RwX3N0YXRzKSk7CisgIHNjdHBfc3RhdHMtPmN1cnJfZXN0YWIgPSBzdGF0LnNjdHBzX2N1cnJlc3RhYjsKKyAgc2N0cF9zdGF0cy0+YWN0aXZlX2VzdGFicyA9IHN0YXQuc2N0cHNfYWN0aXZlZXN0YWI7CisgIHNjdHBfc3RhdHMtPnBhc3NpdmVfZXN0YWJzID0gc3RhdC5zY3Rwc19wYXNzaXZlZXN0YWI7CisgIHNjdHBfc3RhdHMtPmFib3J0ZWRzID0gc3RhdC5zY3Rwc19hYm9ydGVkOworICBzY3RwX3N0YXRzLT5zaHV0ZG93bnMgPSBzdGF0LnNjdHBzX3NodXRkb3duOworICBzY3RwX3N0YXRzLT5vdXRfb2ZfYmx1ZXMgPSBzdGF0LnNjdHBzX291dG9mdGhlYmx1ZTsKKyAgc2N0cF9zdGF0cy0+Y2hlY2tzdW1fZXJyb3JzID0gc3RhdC5zY3Rwc19jaGVja3N1bWVycm9yczsKKyAgc2N0cF9zdGF0cy0+b3V0X2N0cmxfY2h1bmtzLmxvdyA9IHN0YXQuc2N0cHNfb3V0Y29udHJvbGNodW5rczsKKyAgc2N0cF9zdGF0cy0+b3V0X29yZGVyX2NodW5rcy5sb3cgPSBzdGF0LnNjdHBzX291dG9yZGVyY2h1bmtzOworICBzY3RwX3N0YXRzLT5vdXRfdW5vcmRlcl9jaHVua3MubG93ID0gc3RhdC5zY3Rwc19vdXR1bm9yZGVyY2h1bmtzOworICBzY3RwX3N0YXRzLT5pbl9jdHJsX2NodW5rcy5sb3cgPSBzdGF0LnNjdHBzX2luY29udHJvbGNodW5rczsKKyAgc2N0cF9zdGF0cy0+aW5fb3JkZXJfY2h1bmtzLmxvdyA9IHN0YXQuc2N0cHNfaW5vcmRlcmNodW5rczsKKyAgc2N0cF9zdGF0cy0+aW5fdW5vcmRlcl9jaHVua3MubG93ID0gc3RhdC5zY3Rwc19pbnVub3JkZXJjaHVua3M7CisgIHNjdHBfc3RhdHMtPmZyYWdfdXNyX21zZ3MubG93ID0gc3RhdC5zY3Rwc19mcmFndXNybXNnczsKKyAgc2N0cF9zdGF0cy0+cmVhc21fdXNyX21zZ3MubG93ID0gc3RhdC5zY3Rwc19yZWFzbXVzcm1zZ3M7CisgIHNjdHBfc3RhdHMtPm91dF9zY3RwX3BhY2tzLmxvdyA9IHN0YXQuc2N0cHNfb3V0cGFja2V0czsKKyAgc2N0cF9zdGF0cy0+aW5fc2N0cF9wYWNrcy5sb3cgPSBzdGF0LnNjdHBzX2lucGFja2V0czsKKyAgc2N0cF9zdGF0cy0+ZGlzY29udGludWl0eV90aW1lID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3NjdHBfcGFyYW1zX2FyY2hfaW5pdCgpCit7Cit9CisKK2ludAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9wYXJhbXNfYXJjaF9sb2FkKG5ldHNubXBfc2N0cF9wYXJhbXMgKiBzY3RwX3BhcmFtcykKK3sKKwlzaXplX3QgbGVuID0gc2l6ZW9mKHVpbnQzMl90KTsKKworICAgIHNjdHBfcGFyYW1zLT5ydG9fYWxnb3JpdGhtID0gTkVUU05NUF9TQ1RQX0FMR09SSVRITV9WQU5KOworICAgIHNjdHBfcGFyYW1zLT5tYXhfYXNzb2NzID0gIFNDVFBfTUFYX05VTV9PRl9BU09DOyAKKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLnJ0b19tYXgiLAorCQkJCQkgJnNjdHBfcGFyYW1zLT5ydG9fbWF4LAorCQkJCQkgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJICByZXR1cm4oLTEpOworCX0KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLnJ0b19taW4iLAorCQkJCQkgJnNjdHBfcGFyYW1zLT5ydG9fbWluLAorCQkJCQkgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJICByZXR1cm4oLTEpOworCX0KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLnJ0b19pbml0aWFsIiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+cnRvX2luaXRpYWwsCisJCQkJCSAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwkgIHJldHVybigtMSk7CisJfQorCWlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAudmFsaWRfY29va2llX2xpZmUiLAorCQkJCQkgJnNjdHBfcGFyYW1zLT52YWxfY29va2llX2xpZmUsCisJCQkJCSAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwkgIHJldHVybigtMSk7CisJfQorCWlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAuaW5pdF9ydHhfbWF4IiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+bWF4X2luaXRfcmV0ciwKKwkJCQkJICZsZW4sIE5VTEwsIDApIDwgMCkgeworCSAgcmV0dXJuKC0xKTsKKwl9CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2FiNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYwpAQCAtMCwwICsxLDk1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAic2N0cFNjYWxhcnNfY29tbW9uLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPGluZXQvbWliMi5oPgorCisjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgorCit2b2lkCituZXRzbm1wX2FjY2Vzc19zY3RwX3N0YXRzX2FyY2hfaW5pdCgpCit7Cit9CisKK2ludAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9zdGF0c19hcmNoX2xvYWQobmV0c25tcF9zY3RwX3N0YXRzICogc2N0cF9zdGF0cykKK3sKKyAgICBtaWIyX3NjdHBfdCBzY3Rwc3RhdDsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKHNjdHBzdGF0KTsKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gZ2V0TWlic3RhdChNSUJfU0NUUCwgJnNjdHBzdGF0LCBsZW4sIEdFVF9GSVJTVCwgJkdldF9ldmVyeXRoaW5nLCBOVUxMKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIHNubXBfbG9nX3BlcnJvcigiZ2V0TWlic3RhdCBNSUJfU0NUUCIpOworCXJldHVybiAtMTsKKyAgICB9CisgICAgbWVtc2V0KHNjdHBfc3RhdHMsIDAsIHNpemVvZihuZXRzbm1wX3NjdHBfc3RhdHMpKTsKKyAgICBzY3RwX3N0YXRzLT5jdXJyX2VzdGFiID0gc2N0cHN0YXQuc2N0cEN1cnJFc3RhYjsKKyAgICBzY3RwX3N0YXRzLT5hY3RpdmVfZXN0YWJzID0gc2N0cHN0YXQuc2N0cEFjdGl2ZUVzdGFiOworICAgIHNjdHBfc3RhdHMtPnBhc3NpdmVfZXN0YWJzID0gc2N0cHN0YXQuc2N0cFBhc3NpdmVFc3RhYjsKKyAgICBzY3RwX3N0YXRzLT5hYm9ydGVkcyA9IHNjdHBzdGF0LnNjdHBBYm9ydGVkOworICAgIHNjdHBfc3RhdHMtPnNodXRkb3ducyA9IHNjdHBzdGF0LnNjdHBTaHV0ZG93bnM7CisgICAgc2N0cF9zdGF0cy0+b3V0X29mX2JsdWVzID0gc2N0cHN0YXQuc2N0cE91dE9mQmx1ZTsKKyAgICBzY3RwX3N0YXRzLT5jaGVja3N1bV9lcnJvcnMgPSBzY3Rwc3RhdC5zY3RwQ2hlY2tzdW1FcnJvcjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfY3RybF9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cE91dEN0cmxDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPm91dF9jdHJsX2NodW5rcy5oaWdoID0gc2N0cHN0YXQuc2N0cE91dEN0cmxDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+b3V0X29yZGVyX2NodW5rcy5sb3cgPSBzY3Rwc3RhdC5zY3RwT3V0T3JkZXJDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPm91dF9vcmRlcl9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBPdXRPcmRlckNodW5rcyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfdW5vcmRlcl9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cE91dFVub3JkZXJDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPm91dF91bm9yZGVyX2NodW5rcy5oaWdoID0gc2N0cHN0YXQuc2N0cE91dFVub3JkZXJDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+aW5fY3RybF9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cEluQ3RybENodW5rcyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+aW5fY3RybF9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBJbkN0cmxDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+aW5fb3JkZXJfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBJbk9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5pbl9vcmRlcl9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBJbk9yZGVyQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPmluX3Vub3JkZXJfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBJblVub3JkZXJDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmluX3Vub3JkZXJfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5Vbm9yZGVyQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5PcmRlckNodW5rcyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+aW5fb3JkZXJfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5PcmRlckNodW5rcyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5mcmFnX3Vzcl9tc2dzLmxvdyA9IHNjdHBzdGF0LnNjdHBGcmFnVXNyTXNncyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+ZnJhZ191c3JfbXNncy5oaWdoID0gc2N0cHN0YXQuc2N0cEZyYWdVc3JNc2dzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPnJlYXNtX3Vzcl9tc2dzLmxvdyA9IHNjdHBzdGF0LnNjdHBSZWFzbVVzck1zZ3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPnJlYXNtX3Vzcl9tc2dzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwUmVhc21Vc3JNc2dzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPm91dF9zY3RwX3BhY2tzLmxvdyA9IHNjdHBzdGF0LnNjdHBPdXRTQ1RQUGt0cyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+b3V0X3NjdHBfcGFja3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBPdXRTQ1RQUGt0cyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5pbl9zY3RwX3BhY2tzLmxvdyA9IHNjdHBzdGF0LnNjdHBJblNDVFBQa3RzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5pbl9zY3RwX3BhY2tzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5TQ1RQUGt0cyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5kaXNjb250aW51aXR5X3RpbWUgPSAwOworICAgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2FjY2Vzc19zY3RwX3BhcmFtc19hcmNoX2luaXQoKQoreworfQorCitpbnQKK25ldHNubXBfYWNjZXNzX3NjdHBfcGFyYW1zX2FyY2hfbG9hZChuZXRzbm1wX3NjdHBfcGFyYW1zICogc2N0cF9wYXJhbXMpCit7CisgICAgbWliMl9zY3RwX3Qgc2N0cHN0YXQ7CisgICAgc2l6ZV90IGxlbiA9IHNpemVvZihzY3Rwc3RhdCk7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IGdldE1pYnN0YXQoTUlCX1NDVFAsICZzY3Rwc3RhdCwgbGVuLCBHRVRfRklSU1QsICZHZXRfZXZlcnl0aGluZywgTlVMTCk7CisgICAgaWYgKHJldCkgeworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoImdldE1pYnN0YXQgTUlCX1NDVFAiKTsKKwlyZXR1cm4gLTE7CisgICAgfQorCisgICAgc2N0cF9wYXJhbXMtPnJ0b19hbGdvcml0aG0gPSBzY3Rwc3RhdC5zY3RwUnRvQWxnb3JpdGhtOworICAgIHNjdHBfcGFyYW1zLT5tYXhfYXNzb2NzID0gIHNjdHBzdGF0LnNjdHBNYXhBc3NvY3M7IAorICAgIHNjdHBfcGFyYW1zLT5ydG9fbWF4ID0gc2N0cHN0YXQuc2N0cFJ0b01heDsKKyAgICBzY3RwX3BhcmFtcy0+cnRvX21pbiA9IHNjdHBzdGF0LnNjdHBSdG9NaW47CisgICAgc2N0cF9wYXJhbXMtPnJ0b19pbml0aWFsID0gc2N0cHN0YXQuc2N0cFJ0b0luaXRpYWw7CisgICAgc2N0cF9wYXJhbXMtPnZhbF9jb29raWVfbGlmZSA9IHNjdHBzdGF0LnNjdHBWYWxDb29raWVMaWZlOworICAgIHNjdHBfcGFyYW1zLT5tYXhfaW5pdF9yZXRyID0gc2N0cHN0YXQuc2N0cE1heEluaXRSZXRyOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oCmluZGV4IDU0NDE0NGEuLmQyMmFlYTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgKQEAgLTE0LDExICsxNCwxMiBAQAogY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cEFzc29jVGFibGUpCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFRhYmxlc19saW51eCkKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlKQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDcgKSB8fCBkZWZpbmVkKCBmcmVlYnNkOCApCitjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QpCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCitjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyKQogI2Vsc2UKLS8qCi0qIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotKiByZXF1aXJlIGEgYm9ndXMgZmlsZSB0byBnZW5lcmF0ZSBhbiBlcnJvci4KLSovCi1jb25maWdfcmVxdWlyZShzY3RwLW1pYi90YWJsZXMtdW5rbm93bi1hcmNoKQorY29uZmlnX2Vycm9yKFNDVFAtTUlCIGlzIG5vdCBhdmFpbGFibGUgaW4gdGlocyBlbnZpcm9ubWVudCkKICNlbmRpZgogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ1RQX1RBQkxFU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAppbmRleCBlYjdmOTkwLi5mNDU3NjA1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKQEAgLTEsNiArMSwxMCBAQAogI2lmbmRlZiBTQ1RQX1RBQkxFU19DT01NT05fSAogI2RlZmluZSBTQ1RQX1RBQkxFU19DT01NT05fSAogCisjaWYgZGVmaW5lZChmcmVlYnNkOCkgfHwgZGVmaW5lZChmcmVlYnNkNykKKyNkZWZpbmUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlIFNOTVBfRlJFRQorI2VuZGlmCisKICNkZWZpbmUgU0NUUF9JUEFERFJFU1NfU0laRSAxNgogI2RlZmluZSBTQ1RQX0hPU1ROQU1FX1NJWkUgMjU1CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2ZTlmNQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jCkBAIC0wLDAgKzEsMjQ0IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAic2N0cEFzc29jVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oIgorI2luY2x1ZGUgInNjdHBBc3NvY1JlbUFkZHJUYWJsZS5oIgorI2luY2x1ZGUgInNjdHBUYWJsZXNfY29tbW9uLmgiCisKKyNpbmNsdWRlIDx1dGlsX2Z1bmNzLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NvbnN0YW50cy5oPgorCisKK3N0YXRpYyBpbnQKK3BhcnNlX2Fzc29jX2xvY2FsX2FkZHJlc3NlcyhzY3RwVGFibGVzX2NvbnRhaW5lcnMgKiBjb250YWluZXJzLAorCQkJCQkJCXN0cnVjdCB4c2N0cF9sYWRkciAqeGxhZGRyKQoreworICBpbnQgcmV0OworICBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9lbnRyeSAqZW50cnk7CisgIGVudHJ5ID0gc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfZW50cnlfY3JlYXRlKCk7CisgIGlmIChlbnRyeSA9PSBOVUxMKQorCXJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgZW50cnktPnNjdHBBc3NvY0lkID0gMDsKKyAgaWYgKHhsYWRkci0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgeworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisJZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkcl9sZW4gPSA0OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyLAorCQkgICAmeGxhZGRyLT5hZGRyZXNzLnNpbi5zaW5fYWRkciwKKwkJICAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkcl9sZW4pOworICB9IGVsc2UgaWYgKHhsYWRkci0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHIsCisJCSAgICZ4bGFkZHItPmFkZHJlc3Muc2luNi5zaW42X2FkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuKTsKKyAgfQorICBlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyU3RhcnRUaW1lID0geGxhZGRyLT5zdGFydF90aW1lLnR2X3NlYzsKKyAgcmV0ID0gc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfYWRkX29yX3VwZGF0ZShjb250YWluZXJzLT5zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSwKKwkJCQkJCQkJCQkJICBlbnRyeSk7CisgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitzdGF0aWMgaW50CitwYXJzZV9hc3NvY194c3RjYihzY3RwVGFibGVzX2NvbnRhaW5lcnMgKiBjb250YWluZXJzLCBzdHJ1Y3QgeHNjdHBfdGNiICp4c3RjYikKK3sKKyAgaW50ICAgICAgICAgICAgIHJldDsKKyAgc2N0cEFzc29jVGFibGVfZW50cnkgKmVudHJ5OworCisgIGVudHJ5ID0gc2N0cEFzc29jVGFibGVfZW50cnlfY3JlYXRlKCk7CisgIGlmIChlbnRyeSA9PSBOVUxMKQorCXJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgc3dpdGNoICh4c3RjYi0+c3RhdGUpIHsKKyAgY2FzZSBTQ1RQX1NUQVRFX0lOVVNFOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0RFTEVURVRDQjsKKwlicmVhazsKKyAgY2FzZSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0NPT0tJRVdBSVQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0NPT0tJRUVDSE9FRDsKKwlicmVhazsKKyAgY2FzZSBTQ1RQX1NUQVRFX09QRU46CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfRVNUQUJMSVNIRUQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX1NIVVRET1dOU0VOVDsKKwlicmVhazsKKyAgY2FzZSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX1NIVVRET1dOUkVDRUlWRUQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTkFDS1NFTlQ7CisJYnJlYWs7CisgIGRlZmF1bHQ6CisgIGNhc2UgU0NUUF9TVEFURV9FTVBUWToKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DTE9TRUQ7CisJYnJlYWs7CisgIH07CisgIGVudHJ5LT5zY3RwQXNzb2NIZWFydEJlYXRJbnRlcnZhbCA9IHhzdGNiLT5oZWFydGJlYXRfaW50ZXJ2YWw7CisgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IDA7CisgIGVudHJ5LT5zY3RwQXNzb2NQcmltUHJvY2VzcyA9IHhzdGNiLT5wcmltYXJ5X3Byb2Nlc3M7CisgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbFBvcnQgPSB4c3RjYi0+bG9jYWxfcG9ydDsKKyAgZW50cnktPnNjdHBBc3NvY1JlbVBvcnQgPSB4c3RjYi0+cmVtb3RlX3BvcnQ7CisgIGVudHJ5LT5zY3RwQXNzb2NIZWFydEJlYXRJbnRlcnZhbCA9IHhzdGNiLT5oZWFydGJlYXRfaW50ZXJ2YWw7CisgIGVudHJ5LT5zY3RwQXNzb2NJblN0cmVhbXMgPSB4c3RjYi0+aW5fc3RyZWFtczsKKyAgZW50cnktPnNjdHBBc3NvY091dFN0cmVhbXMgPSB4c3RjYi0+b3V0X3N0cmVhbXM7CisgIGVudHJ5LT5zY3RwQXNzb2NNYXhSZXRyID0geHN0Y2ItPm1heF9ucl9yZXRyYW5zOworICBlbnRyeS0+c2N0cEFzc29jVDFleHBpcmVkcyA9IHhzdGNiLT5UMV9leHBpcmVyaWVzOworICBlbnRyeS0+c2N0cEFzc29jUnR4Q2h1bmtzID0geHN0Y2ItPnJldHJhbnNtaXR0ZWRfdHNuczsKKyAgZW50cnktPnNjdHBBc3NvY1QyZXhwaXJlZHMgPSB4c3RjYi0+VDJfZXhwaXJlcmllczsgCisgIGVudHJ5LT5zY3RwQXNzb2NSZW1Ib3N0TmFtZVswXSA9IDA7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1Ib3N0TmFtZV9sZW4gPSAwOworICBlbnRyeS0+c2N0cEFzc29jRGlzY29udGludWl0eVRpbWUgPSB4c3RjYi0+ZGlzY29udGludWl0eV90aW1lLnR2X3NlYzsKKyAgZW50cnktPnNjdHBBc3NvY1N0YXJ0VGltZSA9IHhzdGNiLT5zdGFydF90aW1lLnR2X3NlYzsJCisKKyAgcmV0ID0gc2N0cEFzc29jVGFibGVfYWRkX29yX3VwZGF0ZShjb250YWluZXJzLT5zY3RwQXNzb2NUYWJsZSwgZW50cnkpOworICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKwlyZXR1cm4gcmV0OworICB9CisKKyAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKworc3RhdGljIGludAorcGFyc2VfcmVtYWRkcl94cmFkZHIoc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywKKwkJCQkJIHN0cnVjdCB4c2N0cF9yYWRkciAqeHJhZGRyKQoreworICBpbnQgICAgICAgICAgICAgcmV0OworICBzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnkgKmVudHJ5OworCisgIGVudHJ5ID0gc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICBpZiAoZW50cnkgPT0gTlVMTCkKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisJCisgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IDA7CisKKyAgaWYoeHJhZGRyLT5hY3RpdmUpIAorICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlID0gVFJVVEhWQUxVRV9UUlVFOworICBlbHNlCisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJBY3RpdmUgPSBUUlVUSFZBTFVFX0ZBTFNFOworICAKKyAgaWYgKHhyYWRkci0+aGVhcnRiZWF0X2VuYWJsZWQpIAorCWVudHJ5LT5zY3RwQXNzb2NSZW1BZGRySEJBY3RpdmUgPSBUUlVUSFZBTFVFX1RSVUU7CisgIGVsc2UKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkckhCQWN0aXZlID0gVFJVVEhWQUxVRV9GQUxTRTsKKworICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkclJUTyA9IHhyYWRkci0+cnRvOworICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkck1heFBhdGhSdHggPSB4cmFkZHItPm1heF9wYXRoX3J0eDsKKyAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJSdHggPSB4cmFkZHItPnJ0eDsKKyAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJTdGFydFRpbWUgPSB4cmFkZHItPnN0YXJ0X3RpbWUudHZfc2VjOworCisgIGlmICh4cmFkZHItPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkclR5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNDsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4gPSA0OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jUmVtQWRkciwKKwkJICAgJnhyYWRkci0+YWRkcmVzcy5zaW4uc2luX2FkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbik7CisgIH0gZWxzZSBpZiAoeHJhZGRyLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgeworCWVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OworCWVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbiA9IDE2OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jUmVtQWRkciwKKwkJICAgJnhyYWRkci0+YWRkcmVzcy5zaW42LnNpbjZfYWRkciwKKwkJICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJfbGVuKTsKKyAgfQorICByZXQgPQorCXNjdHBBc3NvY1JlbUFkZHJUYWJsZV9hZGRfb3JfdXBkYXRlKGNvbnRhaW5lcnMtPgorCQkJCQkJCQkJCXNjdHBBc3NvY1JlbUFkZHJUYWJsZSwgZW50cnkpOworICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKwlyZXR1cm4gcmV0OworICB9CisgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisKK2ludAorc2N0cFRhYmxlc19hcmNoX2xvYWQoc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgdV9sb25nICogZmxhZ3MpCit7CisgIGludCAgICAgICAgICAgICByZXQgPSBTTk1QX0VSUl9OT0VSUk9SOworICBzaXplX3QgbGVuOworICBjYWRkcl90IGJ1ZjsKKyAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgc3RydWN0IHhzY3RwX2lucGNiICp4aW5wOworICBzdHJ1Y3QgeHNjdHBfdGNiICp4c3RjYjsKKyAgc3RydWN0IHhzY3RwX2xhZGRyICp4bGFkZHI7CisgIHN0cnVjdCB4c2N0cF9yYWRkciAqeHJhZGRyOworCisKKyAgKmZsYWdzIHw9IFNDVFBfVEFCTEVTX0xPQURfRkxBR19ERUxFVEVfSU5WQUxJRDsKKyAgKmZsYWdzIHw9IFNDVFBfVEFCTEVTX0xPQURfRkxBR19BVVRPX0xPT0tVUDsKKyAgbGVuID0gMDsKKyAgaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5hc3NvY2xpc3QiLCAwLCAmbGVuLCAwLCAwKSA8IDApIHsKKwlwcmludGYoIkVycm9yICVkICglcykgY291bGQgbm90IGdldCB0aGUgYXNzb2NsaXN0XG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKwlyZXR1cm4oLTEpOworICB9CisgIGlmICgoYnVmID0gKGNhZGRyX3QpbWFsbG9jKGxlbikpID09IDApIHsKKwlwcmludGYoIm1hbGxvYyAlbHUgYnl0ZXMgZmFpbGVkLlxuIiwgKGxvbmcgdW5zaWduZWQpbGVuKTsKKwlyZXR1cm4oLTEpOworICB9CisgIGlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAuYXNzb2NsaXN0IiwgYnVmLCAmbGVuLCAwLCAwKSA8IDApIHsKKwlwcmludGYoIkVycm9yICVkICglcykgY291bGQgbm90IGdldCB0aGUgYXNzb2NsaXN0XG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKwlmcmVlKGJ1Zik7CisJcmV0dXJuKC0xKTsKKyAgfQorICBvZmZzZXQgPSAwOworICB4aW5wID0gKHN0cnVjdCB4c2N0cF9pbnBjYiAqKShidWYgKyBvZmZzZXQpOworICB3aGlsZSAoeGlucC0+bGFzdCA9PSAwKSB7CisJLyogZm9yIGVhY2ggSU5QICovCisJb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfaW5wY2IpOworCS8qIExvY2FsIGFkZHJlc3NlcyAqLworCXhsYWRkciA9IChzdHJ1Y3QgeHNjdHBfbGFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwl3aGlsZSAoeGxhZGRyLT5sYXN0ID09IDApIHsKKwkgIG9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX2xhZGRyKTsKKwkgIHhsYWRkciA9IChzdHJ1Y3QgeHNjdHBfbGFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwl9CisJb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfbGFkZHIpOworCS8qIEFzc29jaWF0aW9ucyAqLworCXhzdGNiID0gKHN0cnVjdCB4c2N0cF90Y2IgKikoYnVmICsgb2Zmc2V0KTsKKwl3aGlsZSAoeHN0Y2ItPmxhc3QgPT0gMCkgeworCSAgeHN0Y2IgPSAoc3RydWN0IHhzY3RwX3RjYiAqKShidWYgKyBvZmZzZXQpOworCSAgb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfdGNiKTsKKwkgIHBhcnNlX2Fzc29jX3hzdGNiKGNvbnRhaW5lcnMsIHhzdGNiKTsKKwkgIC8qIExvY2FsIGFkZHJlc3NlcyAqLworCSAgeGxhZGRyID0gKHN0cnVjdCB4c2N0cF9sYWRkciAqKShidWYgKyBvZmZzZXQpOworCSAgd2hpbGUgKHhsYWRkci0+bGFzdCA9PSAwKSB7CisJCXBhcnNlX2Fzc29jX2xvY2FsX2FkZHJlc3Nlcyhjb250YWluZXJzLCB4bGFkZHIpOworCQlvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9sYWRkcik7CisJCXhsYWRkciA9IChzdHJ1Y3QgeHNjdHBfbGFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIH0KKwkgIG9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX2xhZGRyKTsKKworCSAgLyogUmVtb3RlIGFkZHJlc3NlcyAqLworCSAgeHJhZGRyID0gKHN0cnVjdCB4c2N0cF9yYWRkciAqKShidWYgKyBvZmZzZXQpOworCSAgd2hpbGUgKHhyYWRkci0+bGFzdCA9PSAwKSB7CisJCXBhcnNlX3JlbWFkZHJfeHJhZGRyKGNvbnRhaW5lcnMsIHhyYWRkcik7CisJCW9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX3JhZGRyKTsKKwkJeHJhZGRyID0gKHN0cnVjdCB4c2N0cF9yYWRkciAqKShidWYgKyBvZmZzZXQpOworCSAgfQorCSAgb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfcmFkZHIpOworCSAgeHN0Y2IgPSAoc3RydWN0IHhzY3RwX3RjYiAqKShidWYgKyBvZmZzZXQpOworCX0KKwlvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF90Y2IpOworCXhpbnAgPSAoc3RydWN0IHhzY3RwX2lucGNiICopKGJ1ZiArIG9mZnNldCk7CisgIH0KKyAgZnJlZSgodm9pZCAqKWJ1Zik7CisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMKaW5kZXggZDZmZDgxMC4uMTU4NjU1NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYwpAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlICJzY3RwQXNzb2NSZW1BZGRyVGFibGUuaCIKICNpbmNsdWRlICJzY3RwVGFibGVzX2NvbW1vbi5oIgogCi0jaW5jbHVkZSA8dXRpbF9mdW5jcy5oPgorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CkBAIC0xNTAsMTMgKzE1MCw3IEBACiAgICAgfQogICAgIGVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IHN0cnRvbCh0b2tlbiwgTlVMTCwgMTApOwogCi0gICAgdG9rZW4gPSBzdHJ0b2soTlVMTCwgIiAiKTsgIC8qIEhCS1QgKi8KLSAgICBpZiAodG9rZW4gPT0gTlVMTCkgewotICAgICAgICByZXQgPSBTTk1QX0VSUl9HRU5FUlI7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGVudHJ5LT5zY3RwQXNzb2NIZWFydEJlYXRJbnRlcnZhbCA9IHN0cnRvbCh0b2tlbiwgTlVMTCwgMTApOwotCisgICAgdG9rZW4gPSBzdHJ0b2soTlVMTCwgIiAiKTsgIC8qIEhCS1QsIGlnbm9yZSAqLwogICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBBU1NPQy1JRCwgc3RvcmUgKi8KICAgICBpZiAodG9rZW4gPT0gTlVMTCkgewogICAgICAgICByZXQgPSBTTk1QX0VSUl9HRU5FUlI7CkBAIC0xNzQsNyArMTY4LDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgaW5vZGUgPSBzdHJ0b3VsbCh0b2tlbiwgTlVMTCwgMTApOwotICAgIGVudHJ5LT5zY3RwQXNzb2NQcmltUHJvY2VzcyA9IGdldF9waWRfZnJvbV9pbm9kZShpbm9kZSk7CisgICAgZW50cnktPnNjdHBBc3NvY1ByaW1Qcm9jZXNzID0gbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOwogCiAgICAgdG9rZW4gPSBzdHJ0b2soTlVMTCwgIiAiKTsgIC8qIExQT1JUICovCiAgICAgaWYgKHRva2VuID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTkzYWIzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5jCkBAIC0wLDAgKzEsMTgyIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAic2N0cEFzc29jVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oIgorI2luY2x1ZGUgInNjdHBBc3NvY1JlbUFkZHJUYWJsZS5oIgorI2luY2x1ZGUgInNjdHBUYWJsZXNfY29tbW9uLmgiCisKKyNpbmNsdWRlIDx1dGlsX2Z1bmNzLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPGluZXQvbWliMi5oPgorCisjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgorCitzdGF0aWMgaW50CitwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsCisJCQkgICAgbWliMl9zY3RwQ29ubkxvY2FsRW50cnlfdCAqbGNlKQoreworICAgIGludCByZXQ7CisgICAgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfZW50cnkgKmVudHJ5OworICAgIGVudHJ5ID0gc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfZW50cnlfY3JlYXRlKCk7CisgICAgaWYgKGVudHJ5ID09IE5VTEwpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworICAgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IDA7CisgICAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkclR5cGUgPSBsY2UtPnNjdHBBc3NvY0xvY2FsQWRkclR5cGU7CisgICAgaWYgKGxjZS0+c2N0cEFzc29jTG9jYWxBZGRyVHlwZSA9PSBJTkVUQUREUkVTU1RZUEVfSVBWNCkgeworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkciwKKwkJICAgbGNlLT5zY3RwQXNzb2NMb2NhbEFkZHIuczZfYWRkcisxMiwKKwkJICAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkcl9sZW4pOworICAgIH0gZWxzZSBpZiAobGNlLT5zY3RwQXNzb2NMb2NhbEFkZHJUeXBlID09IElORVRBRERSRVNTVFlQRV9JUFY2KSB7CisJZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkcl9sZW4gPSAxNjsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkciwKKwkJICAgJmxjZS0+c2N0cEFzc29jTG9jYWxBZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbik7CisgICAgfQorICAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJTdGFydFRpbWUgPSAwOworICAgIHJldCA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jTG9jYWxBZGRyVGFibGUsCisJCQkJCSAgICAgIGVudHJ5KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitwYXJzZV9hc3NvYyhzY3RwVGFibGVzX2NvbnRhaW5lcnMgKiBjb250YWluZXJzLCBtaWIyX3NjdHBDb25uRW50cnlfdCAqc2NlKQoreworICAgIGludCAgICAgICAgICAgICByZXQ7CisgICAgc2N0cEFzc29jVGFibGVfZW50cnkgKmVudHJ5OworCisgICAgZW50cnkgPSBzY3RwQXNzb2NUYWJsZV9lbnRyeV9jcmVhdGUoKTsKKyAgICBpZiAoZW50cnkgPT0gTlVMTCkKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisgICAgc3dpdGNoIChzY2UtPnNjdHBBc3NvY1N0YXRlKSB7CisgICAgY2FzZSBNSUIyX1NDVFBfY2xvc2VkOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0NMT1NFRDsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9jb29raWVXYWl0OgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0NPT0tJRVdBSVQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfY29va2llRWNob2VkOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0NPT0tJRUVDSE9FRDsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9lc3RhYmxpc2hlZDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9FU1RBQkxJU0hFRDsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9zaHV0ZG93blBlbmRpbmc6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05QRU5ESU5HOworCWJyZWFrOworICAgIGNhc2UgTUlCMl9TQ1RQX3NodXRkb3duU2VudDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTlNFTlQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfc2h1dGRvd25SZWNlaXZlZDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTlJFQ0VJVkVEOworCWJyZWFrOworICAgIGNhc2UgTUlCMl9TQ1RQX3NodXRkb3duQWNrU2VudDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTkFDS1NFTlQ7CisJYnJlYWs7CisgICAgfQorICAgIGVudHJ5LT5zY3RwQXNzb2NIZWFydEJlYXRJbnRlcnZhbCA9IHNjZS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWw7CisgICAgZW50cnktPnNjdHBBc3NvY0lkID0gc2NlLT5zY3RwQXNzb2NJZDsKKyAgICBlbnRyeS0+c2N0cEFzc29jUHJpbVByb2Nlc3MgPSBzY2UtPnNjdHBBc3NvY1ByaW1Qcm9jZXNzOworICAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbFBvcnQgPSBzY2UtPnNjdHBBc3NvY0xvY2FsUG9ydDsKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJUeXBlID0gc2NlLT5zY3RwQXNzb2NSZW1QcmltQWRkclR5cGU7CisgICAgaWYgKGVudHJ5LT5zY3RwQXNzb2NSZW1QcmltQWRkclR5cGUgPT0gSU5FVEFERFJFU1NUWVBFX0lQVjQpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyLCBzY2UtPnNjdHBBc3NvY1JlbVByaW1BZGRyLnM2X2FkZHIrMTIsCisJICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1QcmltQWRkcl9sZW4pOworICAgIH0KKyAgICBlbHNlIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NSZW1QcmltQWRkciwgc2NlLT5zY3RwQXNzb2NSZW1QcmltQWRkci5zNl9hZGRyLAorCSAgICBlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJfbGVuKTsKKyAgICB9CisgICAgZW50cnktPnNjdHBBc3NvY1JlbVBvcnQgPSBzY2UtPnNjdHBBc3NvY1JlbVBvcnQ7CisgICAgZW50cnktPnNjdHBBc3NvY0luU3RyZWFtcyA9IHNjZS0+c2N0cEFzc29jSW5TdHJlYW1zOworICAgIGVudHJ5LT5zY3RwQXNzb2NPdXRTdHJlYW1zID0gc2NlLT5zY3RwQXNzb2NPdXRTdHJlYW1zOworICAgIGVudHJ5LT5zY3RwQXNzb2NNYXhSZXRyID0gc2NlLT5zY3RwQXNzb2NNYXhSZXRyOworICAgIGVudHJ5LT5zY3RwQXNzb2NUMWV4cGlyZWRzID0gc2NlLT5zY3RwQXNzb2NUMWV4cGlyZWQ7CisgICAgZW50cnktPnNjdHBBc3NvY1J0eENodW5rcyA9IHNjZS0+c2N0cEFzc29jUnR4Q2h1bmtzOworICAgIGVudHJ5LT5zY3RwQXNzb2NUMmV4cGlyZWRzID0gc2NlLT5zY3RwQXNzb2NUMmV4cGlyZWQ7IAorICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1Ib3N0TmFtZVswXSA9IDA7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbUhvc3ROYW1lX2xlbiA9IDA7CisgICAgZW50cnktPnNjdHBBc3NvY0Rpc2NvbnRpbnVpdHlUaW1lID0gMDsKKyAgICBlbnRyeS0+c2N0cEFzc29jU3RhcnRUaW1lID0gc2NlLT5zY3RwQXNzb2NTdGFydFRpbWU7CQorCisgICAgcmV0ID0gc2N0cEFzc29jVGFibGVfYWRkX29yX3VwZGF0ZShjb250YWluZXJzLT5zY3RwQXNzb2NUYWJsZSwgZW50cnkpOworICAgIHJldHVybiByZXQ7Cit9CisKKworc3RhdGljIGludAorcGFyc2VfYXNzb2NfcmVtb3RlX2FkZHJlc3Moc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywKKwkJICAgIG1pYjJfc2N0cENvbm5SZW1vdGVFbnRyeV90ICpyY2UpCit7CisgICAgaW50ICAgICAgICAgICAgIHJldDsKKyAgICBzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnkgKmVudHJ5OworCisgICAgZW50cnkgPSBzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnlfY3JlYXRlKCk7CisgICAgaWYgKGVudHJ5ID09IE5VTEwpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworICAgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IHJjZS0+c2N0cEFzc29jSWQ7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJBY3RpdmUgPSByY2UtPnNjdHBBc3NvY1JlbUFkZHJBY3RpdmU7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJIQkFjdGl2ZSA9IHJjZS0+c2N0cEFzc29jUmVtQWRkckhCQWN0aXZlOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyUlRPID0gcmNlLT5zY3RwQXNzb2NSZW1BZGRyUlRPOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyTWF4UGF0aFJ0eCA9IHJjZS0+c2N0cEFzc29jUmVtQWRkck1heFBhdGhSdHg7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJSdHggPSByY2UtPnNjdHBBc3NvY1JlbUFkZHJSdHg7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJTdGFydFRpbWUgPSAwOworCisgICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJUeXBlID0gcmNlLT5zY3RwQXNzb2NSZW1BZGRyVHlwZTsKKyAgICBpZiAocmNlLT5zY3RwQXNzb2NSZW1BZGRyVHlwZSA9PSBJTkVUQUREUkVTU1RZUEVfSVBWNCkgeworCWVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbiA9IDQ7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyLAorCQkgICByY2UtPnNjdHBBc3NvY1JlbUFkZHIuczZfYWRkcisxMiwKKwkJICAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJfbGVuKTsKKyAgICB9IGVsc2UgaWYgKHJjZS0+c2N0cEFzc29jUmVtQWRkclR5cGUgPT0gSU5FVEFERFJFU1NUWVBFX0lQVjYpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4gPSAxNjsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY1JlbUFkZHIsCisJCSAgICZyY2UtPnNjdHBBc3NvY1JlbUFkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbik7CisgICAgfQorICAgIHJldCA9CisJc2N0cEFzc29jUmVtQWRkclRhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jUmVtQWRkclRhYmxlLAorCQkJCQkgICAgZW50cnkpOworICAgIHJldHVybiByZXQ7Cit9CisKKworaW50CitzY3RwVGFibGVzX2FyY2hfbG9hZChzY3RwVGFibGVzX2NvbnRhaW5lcnMgKiBjb250YWluZXJzLCB1X2xvbmcgKiBmbGFncykKK3sKKyAgICBpbnQgICAgICAgICAgICAgICAgcmV0ID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICBtaWIyX3NjdHBDb25uRW50cnlfdCBzY2U7CisgICAgbWliMl9zY3RwQ29ubkxvY2FsRW50cnlfdCBsY2U7CisgICAgbWliMl9zY3RwQ29ublJlbW90ZUVudHJ5X3QgcmNlOworICAgIHJlcV9lICAgICAgICAgICAgICByZXEgPSBHRVRfRklSU1Q7CisKKyAgICB3aGlsZSAoZ2V0TWlic3RhdChNSUJfU0NUUF9DT05OLCAmc2NlLCBzaXplb2Yoc2NlKSwgcmVxLCAmR2V0X2V2ZXJ5dGhpbmcsIDApID09IDApIHsKKwlyZXEgPSBHRVRfTkVYVDsKKwlwYXJzZV9hc3NvYyhjb250YWluZXJzLCAmc2NlKTsKKyAgICB9CisgICAgcmVxID0gR0VUX0ZJUlNUOworICAgIHdoaWxlIChnZXRNaWJzdGF0KE1JQl9TQ1RQX0NPTk5fTE9DQUwsICZsY2UsIHNpemVvZihsY2UpLCByZXEsICZHZXRfZXZlcnl0aGluZywgMCkgPT0gMCkgeworCXJlcSA9IEdFVF9ORVhUOworCXBhcnNlX2Fzc29jX2xvY2FsX2FkZHJlc3MoY29udGFpbmVycywgJmxjZSk7CisgICAgfQorICAgIHJlcSA9IEdFVF9GSVJTVDsKKyAgICB3aGlsZSAoZ2V0TWlic3RhdChNSUJfU0NUUF9DT05OX1JFTU9URSwgJnJjZSwgc2l6ZW9mKHJjZSksIHJlcSwgJkdldF9ldmVyeXRoaW5nLCAwKSA9PSAwKSB7CisJcmVxID0gR0VUX05FWFQ7CisJcGFyc2VfYXNzb2NfcmVtb3RlX2FkZHJlc3MoY29udGFpbmVycywgJnJjZSk7CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCmluZGV4IDQwMDZiZjcuLmNkMzM4NWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCkBAIC03MSw3ICs3MSw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgogCiAjaW5jbHVkZSAic211eC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAjaW5jbHVkZSAic25tcGQuaCIKIApAQCAtMTIyLDcgKzEyMSw4IEBACiAgICAgLyoKICAgICAgKiBib2d1cyBlbnRyeSwgYXMgaW4gcGFzcy5jIAogICAgICAqLwotICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3NtdXgsIDAsIHtNSUJJTkRFWH19LAorICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NtdXgsIDAsIHtNSUJJTkRFWH19LAogfTsKIAogCkBAIC00MjksNyArNDI5LDcgQEAKICAgICAgICAgICAgICAqIHBlZWsgYXQgd2hhdCdzIHJlY2VpdmVkIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoKGxlbiA9IHJlY3Zmcm9tKHJwdHItPnNyX2ZkLCBidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLCAwKSkgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNVVhNQVhQS1RTSVpFLCBNU0dfUEVFSywgTlVMTCwgTlVMTCkpIDw9IDApIHsKICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ0NCw4ICs0NDQsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIlt2YXJfc211eF93cml0ZV0gUGVla2VkIGF0ICVkIGJ5dGVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFBlZWtlZCBhdCAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgICAgICJkIGJ5dGVzXG4iLCBsZW4pKTsKICAgICAgICAgICAgIERFQlVHRFVNUFNFVFVQKCJ2YXJfc211eF93cml0ZSIsIGJ1ZiwgbGVuKTsKIAogICAgICAgICAgICAgLyoKQEAgLTQ2OCw3ICs0NjgsNyBAQAogICAgICAgICAgICAgZG8KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxlbiA9IHRtcF9sZW47Ci0gICAgICAgICAgICAgICBsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLCBsZW4sIDAsIE5VTEwsIDApOworICAgICAgICAgICAgICAgbGVuID0gcmVjdmZyb20ocnB0ci0+c3JfZmQsIGJ1ZiwgbGVuLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdoaWxlKChsZW4gPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTQ4MCw4ICs0ODAsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIlt2YXJfc211eF93cml0ZV0gUmVjZWl2ZWQgJWQgYnl0ZXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW4pKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIlt2YXJfc211eF93cml0ZV0gUmVjZWl2ZWQgJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICAgICAiZCBieXRlc1xuIiwgbGVuKSk7CiAKICAgICAgICAgICAgIGlmIChidWZbMF0gPT0gU01VWF9UUkFQKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3Zhcl9zbXV4X3dyaXRlXSBSZWNlaXZlZCB0cmFwXG4iKSk7CkBAIC02MTAsNyArNjEwLDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGRvCiAgICAgICAgIHsKLSAgICAgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oZmQsIChjaGFyICopIGRhdGEsIFNNVVhNQVhQS1RTSVpFLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oZmQsIChjaGFyICopIGRhdGEsIFNNVVhNQVhQS1RTSVpFLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSgobGVuZ3RoID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC02ODgsNyArNjg4LDggQEAKIAogICAgIGRvCiAgICAgewotICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBTTVVYTUFYUEtUU0laRSwgTVNHX1BFRUssIE5VTEwsIDApOworICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBTTVVYTUFYUEtUU0laRSwgTVNHX1BFRUssIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgfQogICAgIHdoaWxlKChsZW5ndGggPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTcxNiw3ICs3MTcsNyBAQAogICAgIGRvCiAgICAgewogICAgICAgIGxlbmd0aCA9IHRtcF9sZW5ndGg7Ci0gICAgICAgbGVuZ3RoID0gcmVjdmZyb20oZmQsIChjaGFyICopIGRhdGEsIGxlbmd0aCwgMCwgTlVMTCwgMCk7CisgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oZmQsIChjaGFyICopIGRhdGEsIGxlbmd0aCwgMCwgTlVMTCwgTlVMTCk7CiAgICAgfQogICAgIHdoaWxlKChsZW5ndGggPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTc0Miw4ICs3NDMsOCBAQAogICAgIHNpemVfdCAgICAgICAgICBsZW47CiAgICAgdV9jaGFyICAgICAgICAgKnB0ciwgdHlwZTsKIAotICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3BkdV9wcm9jZXNzXSBQcm9jZXNzaW5nICVkIGJ5dGVzXG4iLAotICAgICAgICAgICAgICAgIGxlbmd0aCkpOworICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3BkdV9wcm9jZXNzXSBQcm9jZXNzaW5nICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICJkIGJ5dGVzXG4iLCBsZW5ndGgpKTsKIAogICAgIGVycm9yID0gMDsKICAgICBwdHIgPSBkYXRhOwpAQCAtNzg1LDcgKzc4Niw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTTVVYX1RSQVA6CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfSU5GTywgIkdvdCB0cmFwIGZyb20gcGVlciBvbiBmZCAlZFxuIiwgZmQpOwotICAgICAgICAgICAgaWYgKHB0ciAhPSAwKQorICAgICAgICAgICAgaWYgKHB0cikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3BkdV9wcm9jZXNzXSBjYWxsIHNtdXhfdHJhcF9wcm9jZXNzLlxuIikpOwogICAgICAgICAgICAgICAgcHRyID0gc211eF90cmFwX3Byb2Nlc3MocHRyLCAmbGVuKTsKQEAgLTgyOSw4ICs4MzAsOCBAQAogICAgICAgICByZXR1cm4gKChwdHIgKz0gKmxlbikpOwogICAgIH0KICAgICBERUJVR01TR1RMKCgic211eCIsCi0gICAgICAgICAgICAgICAgIltzbXV4X29wZW5fcHJvY2Vzc10gdmVyc2lvbiAlZCwgbGVuICVkLCB0eXBlICVkXG4iLAotICAgICAgICAgICAgICAgIHZlcnNpb24sICpsZW4sIChpbnQpIHR5cGUpKTsKKyAgICAgICAgICAgICAgICAiW3NtdXhfb3Blbl9wcm9jZXNzXSB2ZXJzaW9uICVsZCwgbGVuICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICJ1LCB0eXBlICVkXG4iLCB2ZXJzaW9uLCAqbGVuLCAoaW50KSB0eXBlKSk7CiAKICAgICBvaWRfbmFtZV9sZW4gPSBNQVhfT0lEX0xFTjsKICAgICBpZiAoKHB0ciA9IGFzbl9wYXJzZV9vYmppZChwdHIsIGxlbiwgJnR5cGUsIG9pZF9uYW1lLApAQCAtODQ0LDggKzg0NSw4IEBACiAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gc211eCBwZWVyOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgb2lkX3ByaW50KSk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICVkLCB0eXBlICVkXG4iLCAqbGVuLAotICAgICAgICAgICAgICAgICAgICAoaW50KSB0eXBlKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAidSwgdHlwZSAlZFxuIiwgKmxlbiwgKGludCkgdHlwZSkpOwogICAgIH0KIAogICAgIHN0cmluZ19sZW4gPSBTTVVYTUFYU1RSTEVOOwpAQCAtODYxLDggKzg2Miw4IEBACiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBzdHJpbmdfbGVuOyBpKyspCiAgICAgICAgICAgICBERUJVR01TRygoInNtdXgiLCAiJWMiLCBkZXNjcltpXSkpOwogICAgICAgICBERUJVR01TRygoInNtdXgiLCAiXG4iKSk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICVkLCB0eXBlICVkXG4iLCAqbGVuLAotICAgICAgICAgICAgICAgICAgICAoaW50KSB0eXBlKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAidSwgdHlwZSAlZFxuIiwgKmxlbiwgKGludCkgdHlwZSkpOwogICAgIH0KICAgICBkZXNjcltzdHJpbmdfbGVuXSA9IDA7CiAKQEAgLTg3OSw4ICs4ODAsOCBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgc3RyaW5nX2xlbjsgaSsrKQogICAgICAgICAgICAgREVCVUdNU0coKCJzbXV4IiwgIiVjIiwgcGFzc3dkW2ldKSk7CiAgICAgICAgIERFQlVHTVNHKCgic211eCIsICJcbiIpKTsKLSAgICAgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfb3Blbl9wcm9jZXNzXSBsZW4gJWQsIHR5cGUgJWRcbiIsICpsZW4sCi0gICAgICAgICAgICAgICAgICAgIChpbnQpIHR5cGUpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfb3Blbl9wcm9jZXNzXSBsZW4gJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICJ1LCB0eXBlICVkXG4iLCAqbGVuLCAoaW50KSB0eXBlKSk7CiAgICAgfQogICAgIHBhc3N3ZFtzdHJpbmdfbGVuXSA9ICdcMCc7CiAgICAgaWYgKCFzbXV4X2F1dGhfcGVlcihvaWRfbmFtZSwgb2lkX25hbWVfbGVuLCBwYXNzd2QsIGZkKSkgewpAQCAtOTI2LDEwICs5MjcsMjcgQEAKIHNtdXhfYXV0aF9wZWVyKG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lbGVuLCBjaGFyICpwYXNzd2QsIGludCBmZCkKIHsKICAgICBpbnQgICAgICAgICAgICAgaTsKKyAgICBjaGFyICAgICAgICAgICAgb2lkX3ByaW50W1NNVVhNQVhTVFJMRU5dOworCisgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgIHNucHJpbnRfb2JqaWQob2lkX3ByaW50LCBzaXplb2Yob2lkX3ByaW50KSwgbmFtZSwgbmFtZWxlbik7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4OmF1dGgiLCAiW3NtdXhfYXV0aF9wZWVyXSBBdXRob3JpemluZzogJXMsICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBvaWRfcHJpbnQsIHBhc3N3ZCkpOworICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBuYXV0aHM7IGkrKykgeworICAgICAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKKyAgICAgICAgICAgIHNucHJpbnRfb2JqaWQob2lkX3ByaW50LCBzaXplb2Yob2lkX3ByaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aHNbaV0tPnNhX29pZCwgQXV0aHNbaV0tPnNhX29pZF9sZW4pOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNtdXg6YXV0aCIsICJbc211eF9hdXRoX3BlZXJdIENoZWNraW5nIE9JRDogJXMgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgb2lkX3ByaW50LCBpKSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUoQXV0aHNbaV0tPnNhX29pZCwgQXV0aHNbaV0tPnNhX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIG5hbWVsZW4pID09IDApIHsKKyAgICAgICAgICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4OmF1dGgiLCAiW3NtdXhfYXV0aF9wZWVyXSBDaGVja2luZyBQL1c6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBBdXRoc1tpXS0+c2FfcGFzc3dkLCBBdXRoc1tpXS0+c2FfYWN0aXZlX2ZkKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIShzdHJjbXAoQXV0aHNbaV0tPnNhX3Bhc3N3ZCwgcGFzc3dkKSkgJiYKICAgICAgICAgICAgICAgICAoQXV0aHNbaV0tPnNhX2FjdGl2ZV9mZCA9PSAtMSkpIHsKICAgICAgICAgICAgICAgICAvKgpAQCAtOTY2LDcgKzk4NCw3IEBACiAgICAgfQogCiAgICAgREVCVUdNU0dUTCgoInNtdXgiLAotICAgICAgICAgICAgICAgICJbc211eF9jbG9zZV9wcm9jZXNzXSBjbG9zZSBmcm9tIHBlZXIgb24gZmQgJWQgcmVhc29uICVkXG4iLAorICAgICAgICAgICAgICAgICJbc211eF9jbG9zZV9wcm9jZXNzXSBjbG9zZSBmcm9tIHBlZXIgb24gZmQgJWQgcmVhc29uICVsZFxuIiwKICAgICAgICAgICAgICAgICBmZCwgZG93bikpOwogICAgIHNtdXhfcGVlcl9jbGVhbnVwKGZkKTsKIApAQCAtOTk4LDcgKzEwMTYsNyBAQAogICAgICAgICBzbXV4X3NlbmRfcnJzcChzZCwgLTEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBwcmlvcml0eSAlZFxuIiwgcHJpb3JpdHkpKTsKKyAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9ycmVxX3Byb2Nlc3NdIHByaW9yaXR5ICVsZFxuIiwgcHJpb3JpdHkpKTsKIAogICAgIGlmICgocHRyID0gYXNuX3BhcnNlX2ludChwdHIsIGxlbiwgJnR5cGUsICZvcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvcGVyYXRpb24pKSkgPT0gTlVMTCkgewpAQCAtMTAwNyw3ICsxMDI1LDcgQEAKICAgICAgICAgc211eF9zZW5kX3Jyc3Aoc2QsIC0xKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3JyZXFfcHJvY2Vzc10gb3BlcmF0aW9uICVkXG4iLCBvcGVyYXRpb24pKTsKKyAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9ycmVxX3Byb2Nlc3NdIG9wZXJhdGlvbiAlbGRcbiIsIG9wZXJhdGlvbikpOwogCiAgICAgaWYgKG9wZXJhdGlvbiA9PSBTTVVYX1JFR09QX0RFTEVURSkgewogICAgICAgICAvKgpAQCAtMTE0Niw3ICsxMTY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgbnJwdHItPnNyX25hbWUsIG5ycHRyLT5zcl9uYW1lX2xlbikKICAgICAgICAgICAgICAgICAgICAgICE9IFNOTVBFUlJfU1VDQ0VTUykgewogCQlERUJVR01TR1RMKCgic211eCIsICJbc211eF9ycmVxX3Byb2Nlc3NdIEZhaWxlZCB0byByZWdpc3RlciBzdWJ0cmVlXG4iKSk7Ci0JCXNtdXhfbGlzdF9kZXRhY2goJkFjdGl2ZVJlZ3MsICZucnB0cik7CisJCXNtdXhfbGlzdF9kZXRhY2goJkFjdGl2ZVJlZ3MsIG5ycHRyKTsKIAkJZnJlZShucnB0cik7CiAJCXNtdXhfc2VuZF9ycnNwKHNkLCAtMSk7CiAJCXJldHVybiBOVUxMOwpAQCAtMTI0OCw1MCArMTI2Niw2MSBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcHJldiA9IE5VTEw7Ci0gICAgZm9yIChycHRyID0gKmhlYWQ7IHJwdHItPnNyX25leHQ7IHJwdHIgPSBycHRyLT5zcl9uZXh0KSB7CisgICAgZm9yIChycHRyID0gKmhlYWQ7IHJwdHI7IHJwdHIgPSBycHRyLT5zcl9uZXh0KSB7CiAgICAgICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUoYWRkLT5zcl9uYW1lLCBhZGQtPnNyX25hbWVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwdHItPnNyX25hbWUsIHJwdHItPnNyX25hbWVfbGVuKTsKLSAgICAgICAgaWYgKChyZXN1bHQgPT0gMCkgJiYgKGFkZC0+c3JfcHJpb3JpdHkgPT0gcnB0ci0+c3JfcHJpb3JpdHkpKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gMCkgewogICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIHNhbWUgdHJlZSwgc2FtZSBwcmksIG5vcGUgCisgICAgICAgICAgICAgKiBTYW1lIHRyZWUuLi4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGFkZC0+c3JfcHJpb3JpdHkgPT0gcnB0ci0+c3JfcHJpb3JpdHkpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIC4uLiBzYW1lIHByaSA6IG5vcGUgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfSBlbHNlIGlmIChhZGQtPnNyX3ByaW9yaXR5IDwgcnB0ci0+c3JfcHJpb3JpdHkpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIC4uLiBsb3dlciBwcmkgOiBpbnNlcnQgYW5kIHJldHVybgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGFkZC0+c3JfbmV4dCA9IHJwdHI7CisgICAgICAgICAgICAgICAgaWYgKCBwcmV2ICkgeyBwcmV2LT5zcl9uZXh0ID0gYWRkOyB9CisgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgeyAgICAgICAgICpoZWFkID0gYWRkOyB9CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisjaWZkZWYgWFhYCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogLi4uIGhpZ2hlciBwcmkgOiBwdXQgYWZ0ZXIgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgYWRkLT5zcl9uZXh0ICA9IHJwdHItPnNyX25leHQ7CisgICAgICAgICAgICAgICAgcnB0ci0+c3JfbmV4dCA9IGFkZDsKKyNlbmRpZgorICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA8IDApIHsKICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiB0aGlzIGNhbiBvbmx5IGhhcHBlbiBpZiB3ZSBnbyBiZWZvcmUgdGhlIGhlYWQgCisgICAgICAgICAgICAgKiBFYXJsaWVyIHRyZWUgOiBpbnNlcnQgYW5kIHJldHVybgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBhZGQtPnNyX25leHQgPSAqaGVhZDsKLSAgICAgICAgICAgICpoZWFkID0gYWRkOworICAgICAgICAgICAgYWRkLT5zcl9uZXh0ID0gcnB0cjsKKyAgICAgICAgICAgIGlmICggcHJldiApIHsgcHJldi0+c3JfbmV4dCA9IGFkZDsgfQorICAgICAgICAgICAgZWxzZSAgICAgICAgeyAgICAgICAgICpoZWFkID0gYWRkOyB9CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIGlmICgoc25tcF9vaWRfY29tcGFyZShhZGQtPnNyX25hbWUsIGFkZC0+c3JfbmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB0ci0+c3JfbmV4dC0+c3JfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHRyLT5zcl9uZXh0LT5zcl9uYW1lX2xlbikpIDwgMCkgeworI2lmZGVmIFhYWAorICAgICAgICB9IGVsc2UgIHsKICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBpbnNlcnQgaGVyZSAKKyAgICAgICAgICAgICAqIExhdGVyIHRyZWUgOiBwdXQgYWZ0ZXIKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgYWRkLT5zcl9uZXh0ID0gcnB0ci0+c3JfbmV4dDsKICAgICAgICAgICAgIHJwdHItPnNyX25leHQgPSBhZGQ7CiAgICAgICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHByZXYgPSBycHRyOwogICAgIH0KICAgICAvKgotICAgICAqIGNvbXBhcmUgdGhlIGxhc3Qgb25lIAorICAgICAqIE90aGVyd2lzZSwgdGhpcyBlbnRyeSBtdXN0IGNvbWUgbGFzdAogICAgICAqLwotICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUoYWRkLT5zcl9uYW1lLCBhZGQtPnNyX25hbWVfbGVuLCBycHRyLT5zcl9uYW1lLCBycHRyLT5zcl9uYW1lX2xlbik7Ci0gICAgaWYgKChyZXN1bHQgPT0gMCkgJiYgYWRkLT5zcl9wcmlvcml0eSA9PSBycHRyLT5zcl9wcmlvcml0eSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGVsc2UgIGlmIChyZXN1bHQgPCAwICkgewotICAgICAgICBhZGQtPnNyX25leHQgPSBycHRyOwotICAgICAgICBpZiAoIHByZXYgKSB7Ci0gICAgICAgICAgICBwcmV2LT5zcl9uZXh0ID0gYWRkOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKmhlYWQgPSBhZGQ7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBycHRyLT5zcl9uZXh0ID0gYWRkOwotICAgICAgICBhZGQtPnNyX25leHQgPSBOVUxMOwotICAgIH0KKyAgICBpZiAoIHByZXYgKSB7IHByZXYtPnNyX25leHQgPSBhZGQ7IH0KKyAgICBlbHNlICAgICAgICB7ICAgICAgICAgKmhlYWQgPSBhZGQ7IH0KKyAgICBhZGQtPnNyX25leHQgPSBOVUxMOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzUzLDcgKzEzODIsNyBAQAogICAgICAgICB0eXBlID0gU01VWF9HRVRORVhUOwogCiAgICAgaWYgKHNtdXhfYnVpbGQodHlwZSwgc211eF9yZXFpZCwgb2JqaWQsIGxlbiwgMCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAqbGVuLCBwYWNrZXQsICZsZW5ndGgpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICpsZW4sIHBhY2tldCwgKHNpemVfdCAqKSAmbGVuZ3RoKSA8IDApIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIltzbXV4X3NubXBfcHJvY2Vzc106IHNtdXhfYnVpbGQgZmFpbGVkXG4iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTM3Myw3ICsxNDAyLDggQEAKICAgICAgICAgLyoKICAgICAgICAgICogcGVlayBhdCB3aGF0J3MgcmVjZWl2ZWQgCiAgICAgICAgICAqLwotICAgICAgICBsZW5ndGggPSByZWN2ZnJvbShzZCwgKGNoYXIgKikgcmVzdWx0LCBTTVVYTUFYUEtUU0laRSwgTVNHX1BFRUssIE5VTEwsIDApOworICAgICAgICBsZW5ndGggPSByZWN2ZnJvbShzZCwgKGNoYXIgKikgcmVzdWx0LCBTTVVYTUFYUEtUU0laRSwgTVNHX1BFRUssIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBpZiAobGVuZ3RoIDw9IDApIHsKICAgICAgICAgICAgIGlmICgobGVuZ3RoID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpCiAgICAgICAgICAgICB7CkBAIC0xNDEyLDcgKzE0NDIsNyBAQAogICAgICAgICBkbwogICAgICAgICB7CiAgICAgICAgICAgIGxlbmd0aCA9IHRtcF9sZW5ndGg7Ci0gICAgICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKHNkLCAoY2hhciAqKSByZXN1bHQsIGxlbmd0aCwgMCwgTlVMTCwgMCk7CisgICAgICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKHNkLCAoY2hhciAqKSByZXN1bHQsIGxlbmd0aCwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoKGxlbmd0aCA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKTsKIApAQCAtMTQyOSw4ICsxNDU5LDggQEAKICAgICAgICAgaWYgKHJlc3VsdFswXSA9PSBTTVVYX1RSQVApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3NubXBfcHJvY2Vzc10gUmVjZWl2ZWQgdHJhcFxuIikpOwogICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sICJHb3QgdHJhcCBmcm9tIHBlZXIgb24gZmQgJWRcbiIsIHNkKTsKLSAgICAgICAgICAgIHB0ciA9IGFzbl9wYXJzZV9oZWFkZXIocmVzdWx0LCAmbGVuZ3RoLCAmdHlwZSk7Ci0gICAgICAgICAgICBzbXV4X3RyYXBfcHJvY2VzcyhwdHIsICZsZW5ndGgpOworICAgICAgICAgICAgcHRyID0gYXNuX3BhcnNlX2hlYWRlcihyZXN1bHQsIChzaXplX3QgKikgJmxlbmd0aCwgJnR5cGUpOworICAgICAgICAgICAgc211eF90cmFwX3Byb2Nlc3MocHRyLCAoc2l6ZV90ICopICZsZW5ndGgpOwogCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogZ28gYW5kIHBlZWsgYXQgcmVjZWl2ZWQgZGF0YSBhZ2FpbiAKQEAgLTE0OTYsNyArMTUyNiw3IEBACiAgICAgICogWFhYIEhvdyB0byBzZW5kIHNvbWV0aGluZyBpbnRlbGxpZ2VudCBiYWNrIGluIGNhc2Ugb2YgYW4gZXJyb3IgCiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoInNtdXgiLAotICAgICAgICAgICAgICAgICJbc211eF9wYXJzZV0gTWVzc2FnZSB0eXBlICVkLCByZXFpZCAlZCwgZXJyc3RhdCAlZCwgXG5cdGVycmluZGV4ICVkXG4iLAorICAgICAgICAgICAgICAgICJbc211eF9wYXJzZV0gTWVzc2FnZSB0eXBlICVkLCByZXFpZCAlbGQsIGVycnN0YXQgJWxkLCBcblx0ZXJyaW5kZXggJWxkXG4iLAogICAgICAgICAgICAgICAgIChpbnQpIHR5cGUsIHJlcWlkLCBlcnJzdGF0LCBlcnJpbmRleCkpOwogICAgIGlmIChwdHIgPT0gTlVMTCB8fCBlcnJzdGF0ICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTU1Niw4ICsxNTg2LDggQEAKICAgICAgKi8KICAgICBsZW4gPSBTTVVYTUFYUEtUU0laRTsKICAgICBERUJVR01TR1RMKCgic211eCIsCi0gICAgICAgICAgICAgICAgIltzbXV4X3BhcnNlX3Zhcl0gQXNuIGNvZGVkIGxlbiBvZiB2YXIgJWQsIHR5cGUgJWRcbiIsCi0gICAgICAgICAgICAgICAgdmFyX3ZhbF9sZW4sIChpbnQpICp2YXJ0eXBlKSk7CisgICAgICAgICAgICAgICAgIltzbXV4X3BhcnNlX3Zhcl0gQXNuIGNvZGVkIGxlbiBvZiB2YXIgJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgInUsIHR5cGUgJWRcbiIsIHZhcl92YWxfbGVuLCAoaW50KSAqdmFydHlwZSkpOwogCiAgICAgc3dpdGNoICgoc2hvcnQpICp2YXJ0eXBlKSB7CiAgICAgY2FzZSBBU05fSU5URUdFUjoKQEAgLTIwNzAsNyArMjEwMCw3IEBACiAgICByZXR1cm4oMCk7CiB9CiAKLWludCBzbXV4X3NubXBfc2VsZWN0X2xpc3RfZ2V0X2xlbmd0aCgpCitpbnQgc211eF9zbm1wX3NlbGVjdF9saXN0X2dldF9sZW5ndGgodm9pZCkKIHsKICAgIHJldHVybihzZGxlbik7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMKaW5kZXggM2U1ZDVjZS4uMTZiMDE4NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYwpAQCAtNTIsMzIgKzUyLDU1IEBACiAjaW5jbHVkZSAic25tcF9iZ3AuaCIKIAogc3RydWN0IHZhcmlhYmxlMTMgYmdwX3ZhcmlhYmxlc1tdID0gewotICAgIHtCR1BWRVJTSU9OLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2JncCwgMSwgezF9fSwKLSAgICB7QkdQTE9DQUxBUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAxLCB7Mn19LAotICAgIHtCR1BJREVOVElGSUVSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2JncCwgMSwgezR9fSwKLSAgICB7QkdQUEVFUklERU5USUZJRVIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgMX19LAotICAgIHtCR1BQRUVSU1RBVEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDJ9fSwKLSAgICB7QkdQUEVFUkFETUlOU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCAzfX0sCi0gICAge0JHUFBFRVJORUdPVElBVEVEVkVSU0lPTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgNH19LAotICAgIHtCR1BQRUVSTE9DQUxBRERSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDV9fSwKLSAgICB7QkdQUEVFUkxPQ0FMUE9SVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgNn19LAotICAgIHtCR1BQRUVSUkVNT1RFQUREUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCA3fX0sCi0gICAge0JHUFBFRVJSRU1PVEVQT1JULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCA4fX0sCi0gICAge0JHUFBFRVJSRU1PVEVBUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgOX19LAotICAgIHtCR1BQRUVSSU5VUERBVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCAxMH19LAotICAgIHtCR1BQRUVST1VUVVBEQVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgMTF9fSwKLSAgICB7QkdQUEVFUklOVE9UQUxNRVNTQUdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgMTJ9fSwKLSAgICB7QkdQUEVFUk9VVFRPVEFMTUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDEzfX0sCi0gICAge0JHUFBFRVJMQVNURVJST1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgMTR9fSwKLSAgICB7QkdQUEFUSEFUVFJQRUVSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2JncCwgMywgezUsIDEsIDF9fSwKLSAgICB7QkdQUEFUSEFUVFJERVNUTkVUV09SSywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCAyfX0sCi0gICAge0JHUFBBVEhBVFRST1JJR0lOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCAzfX0sCi0gICAge0JHUFBBVEhBVFRSQVNQQVRILCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2JncCwgMywgezUsIDEsIDR9fSwKLSAgICB7QkdQUEFUSEFUVFJORVhUSE9QLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCA1fX0sCi0gICAge0JHUFBBVEhBVFRSSU5URVJBU01FVFJJQywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCA2fX0KKyAgICB7QkdQVkVSU0lPTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDEsIHsxfX0sCisgICAge0JHUExPQ0FMQVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMSwgezJ9fSwKKyAgICB7QkdQSURFTlRJRklFUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDEsIHs0fX0sCisgICAge0JHUFBFRVJJREVOVElGSUVSLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDF9fSwKKyAgICB7QkdQUEVFUlNUQVRFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAyfX0sCisgICAge0JHUFBFRVJBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgM319LAorICAgIHtCR1BQRUVSTkVHT1RJQVRFRFZFUlNJT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDR9fSwKKyAgICB7QkdQUEVFUkxPQ0FMQUREUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA1fX0sCisgICAge0JHUFBFRVJMT0NBTFBPUlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDZ9fSwKKyAgICB7QkdQUEVFUlJFTU9URUFERFIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgN319LAorICAgIHtCR1BQRUVSUkVNT1RFUE9SVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgOH19LAorICAgIHtCR1BQRUVSUkVNT1RFQVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDl9fSwKKyAgICB7QkdQUEVFUklOVVBEQVRFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgMTB9fSwKKyAgICB7QkdQUEVFUk9VVFVQREFURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDExfX0sCisgICAge0JHUFBFRVJJTlRPVEFMTUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDEyfX0sCisgICAge0JHUFBFRVJPVVRUT1RBTE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxM319LAorICAgIHtCR1BQRUVSTEFTVEVSUk9SLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDE0fX0sCisgICAge0JHUFBBVEhBVFRSUEVFUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHs1LCAxLCAxfX0sCisgICAge0JHUFBBVEhBVFRSREVTVE5FVFdPUkssIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgMn19LAorICAgIHtCR1BQQVRIQVRUUk9SSUdJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgM319LAorICAgIHtCR1BQQVRIQVRUUkFTUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHs1LCAxLCA0fX0sCisgICAge0JHUFBBVEhBVFRSTkVYVEhPUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgNX19LAorICAgIHtCR1BQQVRIQVRUUklOVEVSQVNNRVRSSUMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgNn19CiB9OwogCi1vaWQgICAgICAgICAgICAgYmdwX3ZhcmlhYmxlc19vaWRbXSA9IHsgTUlCLCAxNSB9Oworb2lkICAgICAgICAgICAgIGJncF92YXJpYWJsZXNfb2lkW10gPSB7IE5FVFNOTVBfTUlCMl9PSUQsIDE1IH07CiAKIHZvaWQKIGluaXRfc25tcF9iZHAodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jCmluZGV4IDRmNDc1OGMuLjczZjBlNDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYwpAQCAtNTcsMTI5ICs1NywyMjUgQEAKIGV4dGVybiB1X2NoYXIgICBzbXV4X3R5cGU7CiAKIHN0cnVjdCB2YXJpYWJsZTEzIG9zcGZfdmFyaWFibGVzW10gPSB7Ci0gICAge29zcGZSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfb3NwZiwgMywgezEsIDEsIDF9fSwKLSAgICB7b3NwZkFkbWluU3RhdCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCAyfX0sCi0gICAge29zcGZWZXJzaW9uTnVtYmVyLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MSwgMSwgM319LAotICAgIHtvc3BmQXJlYUJkclJ0clN0YXR1cywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDR9fSwKLSAgICB7b3NwZkFTQmRyUnRyU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezEsIDEsIDV9fSwKLSAgICB7b3NwZkV4dGVybkxzYUNvdW50LCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDZ9fSwKLSAgICB7b3NwZkV4dGVybkxzYUNrc3VtU3VtLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MSwgMSwgN319LAotICAgIHtvc3BmVE9TU3VwcG9ydCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCA4fX0sCi0gICAge29zcGZPcmlnaW5hdGVOZXdMc2FzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MSwgMSwgOX19LAotICAgIHtvc3BmUnhOZXdMc2FzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTAsIDB9fSwKLSAgICB7b3NwZkV4dExzZGJMaW1pdCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCAxMX19LAotICAgIHtvc3BmTXVsdGljYXN0RXh0ZW5zaW9ucywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsCi0gICAgIHsxLCAxLCAxMn19LAotICAgIHtvc3BmQXJlYUlkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCAxfX0sCi0gICAge29zcGZBdXRoVHlwZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsyLCAxLCAyfX0sCi0gICAge29zcGZJbXBvcnRBc0V4dGVybiwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsyLCAxLCAzfX0sCi0gICAge29zcGZTcGZSdW5zLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MiwgMSwgNH19LAotICAgIHtvc3BmQXJlYUJkclJ0ckNvdW50LCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDV9fSwKLSAgICB7b3NwZkFzQmRyUnRyQ291bnQsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MiwgMSwgNn19LAotICAgIHtvc3BmQXJlYUxzYUNvdW50LCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDd9fSwKLSAgICB7b3NwZkFyZWFMc2FDa3N1bVN1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDh9fSwKLSAgICB7b3NwZkFyZWFTdW1tYXJ5LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezIsIDEsIDl9fSwKLSAgICB7b3NwZkFyZWFTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MiwgMSwgMTB9fSwKLSAgICB7b3NwZlN0dWJBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezMsIDEsIDF9fSwKLSAgICB7b3NwZlN0dWJUT1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHszLCAxLCAyfX0sCi0gICAge29zcGZTdHViTWV0cmljLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezMsIDEsIDN9fSwKLSAgICB7b3NwZlN0dWJTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MywgMSwgNH19LAotICAgIHtvc3BmU3R1Yk1ldHJpY1R5cGUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MywgMSwgNX19LAotICAgIHtvc3BmTHNkYkFyZWFJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgMX19LAotICAgIHtvc3BmTHNkYlR5cGUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHs0LCAxLCAyfX0sCi0gICAge29zcGZMc2RiTHNpZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgM319LAotICAgIHtvc3BmTHNkYlJvdXRlcklkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs0LCAxLCA0fX0sCi0gICAge29zcGZMc2RiU2VxdWVuY2UsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHs0LCAxLCA1fX0sCi0gICAge29zcGZMc2RiQWdlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgNn19LAotICAgIHtvc3BmTHNkYkNoZWNrc3VtLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgN319LAotICAgIHtvc3BmTHNkYkFkdmVydGlzZW1lbnQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDh9fSwKLSAgICB7b3NwZkFyZWFSYW5nZUFyZWFJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NSwgMSwgMX19LAotICAgIHtvc3BmQXJlYVJhbmdlTmV0LCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs1LCAxLCAyfX0sCi0gICAge29zcGZBcmVhUmFuZ2VNYXNrLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NSwgMSwgM319LAotICAgIHtvc3BmQXJlYVJhbmdlU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezUsIDEsIDR9fSwKLSAgICB7b3NwZkFyZWFSYW5nZUVmZmVjdCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs1LCAxLCA1fX0sCi0gICAge29zcGZIb3N0SXBBZGRyZXNzLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs2LCAxLCAxfX0sCi0gICAge29zcGZIb3N0VE9TLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NiwgMSwgMn19LAotICAgIHtvc3BmSG9zdE1ldHJpYywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs2LCAxLCAzfX0sCi0gICAge29zcGZIb3N0U3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezYsIDEsIDR9fSwKLSAgICB7b3NwZkhvc3RBcmVhSUQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezYsIDEsIDV9fSwKLSAgICB7b3NwZklmSXBBZGRyZXNzLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs3LCAxLCAxfX0sCi0gICAge29zcGZBZGRyZXNzTGVzc0lmLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NywgMSwgMn19LAotICAgIHtvc3BmSWZBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCAzfX0sCi0gICAge29zcGZJZlR5cGUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgNH19LAotICAgIHtvc3BmSWZBZG1pblN0YXQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgNX19LAotICAgIHtvc3BmSWZSdHJQcmlvcml0eSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCA2fX0sCi0gICAge29zcGZJZlRyYW5zaXREZWxheSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCA3fX0sCi0gICAge29zcGZJZlJldHJhbnNJbnRlcnZhbCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCA4fX0sCi0gICAge29zcGZJZkhlbGxvSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgOX19LAotICAgIHtvc3BmSWZSdHJEZWFkSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgMTB9fSwKLSAgICB7b3NwZklmUG9sbEludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDExfX0sCi0gICAge29zcGZJZlN0YXRlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NywgMSwgMTJ9fSwKLSAgICB7b3NwZklmRGVzaWduYXRlZFJvdXRlciwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLAotICAgICB7NywgMSwgMTN9fSwKLSAgICB7b3NwZklmQmFja3VwRGVzaWduYXRlZFJvdXRlciwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLAotICAgICB7NywgMSwgMTR9fSwKLSAgICB7b3NwZklmRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NywgMSwgMTV9fSwKLSAgICB7b3NwZklmQXV0aEtleSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDE2fX0sCi0gICAge29zcGZJZlN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCAxN319LAotICAgIHtvc3BmSWZNdWx0aWNhc3RGb3J3YXJkaW5nLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywKLSAgICAgezcsIDEsIDE4fX0sCi0gICAge29zcGZJZk1ldHJpY0lwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7OCwgMSwgMX19LAotICAgIHtvc3BmSWZNZXRyaWNBZGRyZXNzTGVzc0lmLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLAotICAgICB7OCwgMSwgMn19LAotICAgIHtvc3BmSWZNZXRyaWNUT1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHs4LCAxLCAzfX0sCi0gICAge29zcGZJZk1ldHJpY1ZhbHVlLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezgsIDEsIDR9fSwKLSAgICB7b3NwZklmTWV0cmljU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezgsIDEsIDV9fSwKLSAgICB7b3NwZlZpcnRJZkFyZWFJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7OSwgMSwgMX19LAotICAgIHtvc3BmVmlydElmTmVpZ2hib3IsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezksIDEsIDJ9fSwKLSAgICB7b3NwZlZpcnRJZlRyYW5zaXREZWxheSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs5LCAxLCAzfX0sCi0gICAge29zcGZWaXJ0SWZSZXRyYW5zSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7OSwgMSwgNH19LAotICAgIHtvc3BmVmlydElmSGVsbG9JbnRlcnZhbCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs5LCAxLCA1fX0sCi0gICAge29zcGZWaXJ0SWZSdHJEZWFkSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7OSwgMSwgNn19LAotICAgIHtvc3BmVmlydElmU3RhdGUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHs5LCAxLCA3fX0sCi0gICAge29zcGZWaXJ0SWZFdmVudHMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX29zcGYsIDMsIHs5LCAxLCA4fX0sCi0gICAge29zcGZWaXJ0SWZBdXRoS2V5LCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7OSwgMSwgOX19LAotICAgIHtvc3BmVmlydElmU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezksIDEsIDEwfX0sCi0gICAge29zcGZOYnJJcEFkZHIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCAxfX0sCi0gICAge29zcGZOYnJBZGRyZXNzTGVzc0luZGV4LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDJ9fSwKLSAgICB7b3NwZk5iclJ0cklkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgM319LAotICAgIHtvc3BmTmJyT3B0aW9ucywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCA0fX0sCi0gICAge29zcGZOYnJQcmlvcml0eSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgNX19LAotICAgIHtvc3BmTmJyU3RhdGUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgNn19LAotICAgIHtvc3BmTmJyRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDd9fSwKLSAgICB7b3NwZk5ickxzUmV0cmFuc1FMZW4sIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDh9fSwKLSAgICB7b3NwZk5ibWFOYnJTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDl9fSwKLSAgICB7b3NwZk5ibWFOYnJQZXJtYW5lbmNlLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezEwLCAxLCAxMH19LAotICAgIHtvc3BmVmlydE5ickFyZWEsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezExLCAxLCAxfX0sCi0gICAge29zcGZWaXJ0TmJyUnRySWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezExLCAxLCAyfX0sCi0gICAge29zcGZWaXJ0TmJySXBBZGRyLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgM319LAotICAgIHtvc3BmVmlydE5ick9wdGlvbnMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgNH19LAotICAgIHtvc3BmVmlydE5iclN0YXRlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDV9fSwKLSAgICB7b3NwZlZpcnROYnJFdmVudHMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgNn19LAotICAgIHtvc3BmVmlydE5ickxzUmV0cmFuc1FMZW4sIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDd9fSwKLSAgICB7b3NwZkV4dExzZGJUeXBlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDF9fSwKLSAgICB7b3NwZkV4dExzZGJMc2lkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMiwgMSwgMn19LAotICAgIHtvc3BmRXh0THNkYlJvdXRlcklkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMiwgMSwgM319LAotICAgIHtvc3BmRXh0THNkYlNlcXVlbmNlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDR9fSwKLSAgICB7b3NwZkV4dExzZGJBZ2UsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMiwgMSwgNX19LAotICAgIHtvc3BmRXh0THNkYkNoZWNrc3VtLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDZ9fSwKLSAgICB7b3NwZkV4dExzZGJBZHZlcnRpc2VtZW50LCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX29zcGYsIDMsCi0gICAgIHsxMiwgMSwgN319LAotICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZUFyZWFJRCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLAotICAgICB7MTQsIDEsIDF9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVMc2RiVHlwZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezE0LCAxLCAyfX0sCi0gICAge29zcGZBcmVhQWdncmVnYXRlTmV0LCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxNCwgMSwgM319LAotICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZU1hc2ssIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX29zcGYsIDMsCi0gICAgIHsxNCwgMSwgNH19LAotICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZVN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsCi0gICAgIHsxNCwgMSwgNX19LAotICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZUVmZmVjdCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxNCwgMSwgNn19CisgICAge29zcGZSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDF9fSwKKyAgICB7b3NwZkFkbWluU3RhdCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCAyfX0sCisgICAge29zcGZWZXJzaW9uTnVtYmVyLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgM319LAorICAgIHtvc3BmQXJlYUJkclJ0clN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDR9fSwKKyAgICB7b3NwZkFTQmRyUnRyU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDV9fSwKKyAgICB7b3NwZkV4dGVybkxzYUNvdW50LCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDZ9fSwKKyAgICB7b3NwZkV4dGVybkxzYUNrc3VtU3VtLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgN319LAorICAgIHtvc3BmVE9TU3VwcG9ydCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA4fX0sCisgICAge29zcGZPcmlnaW5hdGVOZXdMc2FzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgOX19LAorICAgIHtvc3BmUnhOZXdMc2FzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTAsIDB9fSwKKyAgICB7b3NwZkV4dExzZGJMaW1pdCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCAxMX19LAorICAgIHtvc3BmTXVsdGljYXN0RXh0ZW5zaW9ucywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCAxMn19LAorICAgIHtvc3BmQXJlYUlkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCAxfX0sCisgICAge29zcGZBdXRoVHlwZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCAyfX0sCisgICAge29zcGZJbXBvcnRBc0V4dGVybiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCAzfX0sCisgICAge29zcGZTcGZSdW5zLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgNH19LAorICAgIHtvc3BmQXJlYUJkclJ0ckNvdW50LCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDV9fSwKKyAgICB7b3NwZkFzQmRyUnRyQ291bnQsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgNn19LAorICAgIHtvc3BmQXJlYUxzYUNvdW50LCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDd9fSwKKyAgICB7b3NwZkFyZWFMc2FDa3N1bVN1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDh9fSwKKyAgICB7b3NwZkFyZWFTdW1tYXJ5LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDl9fSwKKyAgICB7b3NwZkFyZWFTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgMTB9fSwKKyAgICB7b3NwZlN0dWJBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezMsIDEsIDF9fSwKKyAgICB7b3NwZlN0dWJUT1MsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHszLCAxLCAyfX0sCisgICAge29zcGZTdHViTWV0cmljLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezMsIDEsIDN9fSwKKyAgICB7b3NwZlN0dWJTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MywgMSwgNH19LAorICAgIHtvc3BmU3R1Yk1ldHJpY1R5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MywgMSwgNX19LAorICAgIHtvc3BmTHNkYkFyZWFJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgMX19LAorICAgIHtvc3BmTHNkYlR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs0LCAxLCAyfX0sCisgICAge29zcGZMc2RiTHNpZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgM319LAorICAgIHtvc3BmTHNkYlJvdXRlcklkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs0LCAxLCA0fX0sCisgICAge29zcGZMc2RiU2VxdWVuY2UsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs0LCAxLCA1fX0sCisgICAge29zcGZMc2RiQWdlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgNn19LAorICAgIHtvc3BmTHNkYkNoZWNrc3VtLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgN319LAorICAgIHtvc3BmTHNkYkFkdmVydGlzZW1lbnQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDh9fSwKKyAgICB7b3NwZkFyZWFSYW5nZUFyZWFJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NSwgMSwgMX19LAorICAgIHtvc3BmQXJlYVJhbmdlTmV0LCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs1LCAxLCAyfX0sCisgICAge29zcGZBcmVhUmFuZ2VNYXNrLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NSwgMSwgM319LAorICAgIHtvc3BmQXJlYVJhbmdlU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezUsIDEsIDR9fSwKKyAgICB7b3NwZkFyZWFSYW5nZUVmZmVjdCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs1LCAxLCA1fX0sCisgICAge29zcGZIb3N0SXBBZGRyZXNzLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs2LCAxLCAxfX0sCisgICAge29zcGZIb3N0VE9TLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NiwgMSwgMn19LAorICAgIHtvc3BmSG9zdE1ldHJpYywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs2LCAxLCAzfX0sCisgICAge29zcGZIb3N0U3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezYsIDEsIDR9fSwKKyAgICB7b3NwZkhvc3RBcmVhSUQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezYsIDEsIDV9fSwKKyAgICB7b3NwZklmSXBBZGRyZXNzLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxfX0sCisgICAge29zcGZBZGRyZXNzTGVzc0lmLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMn19LAorICAgIHtvc3BmSWZBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAzfX0sCisgICAge29zcGZJZlR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgNH19LAorICAgIHtvc3BmSWZBZG1pblN0YXQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgNX19LAorICAgIHtvc3BmSWZSdHJQcmlvcml0eSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCA2fX0sCisgICAge29zcGZJZlRyYW5zaXREZWxheSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCA3fX0sCisgICAge29zcGZJZlJldHJhbnNJbnRlcnZhbCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCA4fX0sCisgICAge29zcGZJZkhlbGxvSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgOX19LAorICAgIHtvc3BmSWZSdHJEZWFkSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTB9fSwKKyAgICB7b3NwZklmUG9sbEludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDExfX0sCisgICAge29zcGZJZlN0YXRlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTJ9fSwKKyAgICB7b3NwZklmRGVzaWduYXRlZFJvdXRlciwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTN9fSwKKyAgICB7b3NwZklmQmFja3VwRGVzaWduYXRlZFJvdXRlciwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTR9fSwKKyAgICB7b3NwZklmRXZlbnRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTV9fSwKKyAgICB7b3NwZklmQXV0aEtleSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDE2fX0sCisgICAge29zcGZJZlN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxN319LAorICAgIHtvc3BmSWZNdWx0aWNhc3RGb3J3YXJkaW5nLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDE4fX0sCisgICAge29zcGZJZk1ldHJpY0lwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OCwgMSwgMX19LAorICAgIHtvc3BmSWZNZXRyaWNBZGRyZXNzTGVzc0lmLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OCwgMSwgMn19LAorICAgIHtvc3BmSWZNZXRyaWNUT1MsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs4LCAxLCAzfX0sCisgICAge29zcGZJZk1ldHJpY1ZhbHVlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezgsIDEsIDR9fSwKKyAgICB7b3NwZklmTWV0cmljU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezgsIDEsIDV9fSwKKyAgICB7b3NwZlZpcnRJZkFyZWFJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgMX19LAorICAgIHtvc3BmVmlydElmTmVpZ2hib3IsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDJ9fSwKKyAgICB7b3NwZlZpcnRJZlRyYW5zaXREZWxheSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCAzfX0sCisgICAge29zcGZWaXJ0SWZSZXRyYW5zSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgNH19LAorICAgIHtvc3BmVmlydElmSGVsbG9JbnRlcnZhbCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCA1fX0sCisgICAge29zcGZWaXJ0SWZSdHJEZWFkSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgNn19LAorICAgIHtvc3BmVmlydElmU3RhdGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCA3fX0sCisgICAge29zcGZWaXJ0SWZFdmVudHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCA4fX0sCisgICAge29zcGZWaXJ0SWZBdXRoS2V5LCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgOX19LAorICAgIHtvc3BmVmlydElmU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDEwfX0sCisgICAge29zcGZOYnJJcEFkZHIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCAxfX0sCisgICAge29zcGZOYnJBZGRyZXNzTGVzc0luZGV4LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDJ9fSwKKyAgICB7b3NwZk5iclJ0cklkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgM319LAorICAgIHtvc3BmTmJyT3B0aW9ucywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA0fX0sCisgICAge29zcGZOYnJQcmlvcml0eSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgNX19LAorICAgIHtvc3BmTmJyU3RhdGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgNn19LAorICAgIHtvc3BmTmJyRXZlbnRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDd9fSwKKyAgICB7b3NwZk5ickxzUmV0cmFuc1FMZW4sIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDh9fSwKKyAgICB7b3NwZk5ibWFOYnJTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDl9fSwKKyAgICB7b3NwZk5ibWFOYnJQZXJtYW5lbmNlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCAxMH19LAorICAgIHtvc3BmVmlydE5ickFyZWEsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezExLCAxLCAxfX0sCisgICAge29zcGZWaXJ0TmJyUnRySWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezExLCAxLCAyfX0sCisgICAge29zcGZWaXJ0TmJySXBBZGRyLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgM319LAorICAgIHtvc3BmVmlydE5ick9wdGlvbnMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgNH19LAorICAgIHtvc3BmVmlydE5iclN0YXRlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDV9fSwKKyAgICB7b3NwZlZpcnROYnJFdmVudHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgNn19LAorICAgIHtvc3BmVmlydE5ickxzUmV0cmFuc1FMZW4sIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDd9fSwKKyAgICB7b3NwZkV4dExzZGJUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDF9fSwKKyAgICB7b3NwZkV4dExzZGJMc2lkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMiwgMSwgMn19LAorICAgIHtvc3BmRXh0THNkYlJvdXRlcklkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMiwgMSwgM319LAorICAgIHtvc3BmRXh0THNkYlNlcXVlbmNlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDR9fSwKKyAgICB7b3NwZkV4dExzZGJBZ2UsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMiwgMSwgNX19LAorICAgIHtvc3BmRXh0THNkYkNoZWNrc3VtLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDZ9fSwKKyAgICB7b3NwZkV4dExzZGJBZHZlcnRpc2VtZW50LCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMiwgMSwgN319LAorICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZUFyZWFJRCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDF9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVMc2RiVHlwZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezE0LCAxLCAyfX0sCisgICAge29zcGZBcmVhQWdncmVnYXRlTmV0LCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxNCwgMSwgM319LAorICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZU1hc2ssIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxNCwgMSwgNH19LAorICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZVN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxNCwgMSwgNX19LAorICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZUVmZmVjdCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxNCwgMSwgNn19CiB9OwogCi1vaWQgICAgICAgICAgICAgb3NwZl92YXJpYWJsZXNfb2lkW10gPSB7IE1JQiwgMTQgfTsKK29pZCAgICAgICAgICAgICBvc3BmX3ZhcmlhYmxlc19vaWRbXSA9IHsgTkVUU05NUF9NSUIyX09JRCwgMTQgfTsKIAogdm9pZAogaW5pdF9zbm1wX29zcGYodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jCmluZGV4IGM1YjEzNjQuLmI5ODdhMDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX3JpcDIuYwpAQCAtNTcsMzEgKzU3LDUzIEBACiBleHRlcm4gdV9jaGFyICAgc211eF90eXBlOwogCiBzdHJ1Y3QgdmFyaWFibGUxMyByaXAyX3ZhcmlhYmxlc1tdID0gewotICAgIHtSSVAyR0xPQkFMUk9VVEVDSEFOR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAyLCB7MSwgMX19LAotICAgIHtSSVAyR0xPQkFMUVVFUklFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfcmlwMiwgMiwgezEsIDJ9fSwKLSAgICB7UklQMklGU1RBVEFERFJFU1MsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfcmlwMiwgMywgezIsIDEsIDF9fSwKLSAgICB7UklQMklGU1RBVFJDVkJBRFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDMsIHsyLCAxLCAyfX0sCi0gICAge1JJUDJJRlNUQVRSQ1ZCQURST1VURVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDMsIHsyLCAxLCAzfX0sCi0gICAge1JJUDJJRlNUQVRTRU5UVVBEQVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezIsIDEsIDR9fSwKLSAgICB7UklQMklGU1RBVFNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHsyLCAxLCA1fX0sCi0gICAge1JJUDJJRkNPTkZBRERSRVNTLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX3JpcDIsIDMsIHszLCAxLCAxfX0sCi0gICAge1JJUDJJRkNPTkZET01BSU4sIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCAyfX0sCi0gICAge1JJUDJJRkNPTkZBVVRIVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCAzfX0sCi0gICAge1JJUDJJRkNPTkZBVVRIS0VZLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgNH19LAotICAgIHtSSVAySUZDT05GU0VORCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCA1fX0sCi0gICAge1JJUDJJRkNPTkZSRUNFSVZFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcmlwMiwgMywgezMsIDEsIDZ9fSwKLSAgICB7UklQMklGQ09ORkRFRkFVTFRNRVRSSUMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgN319LAotICAgIHtSSVAySUZDT05GU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcmlwMiwgMywgezMsIDEsIDh9fSwKLSAgICB7UklQMklGQ09ORlNSQ0FERFJFU1MsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCA5fX0sCi0gICAge1JJUDJQRUVSQUREUkVTUywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9yaXAyLCAzLCB7NCwgMSwgMX19LAotICAgIHtSSVAyUEVFUkRPTUFJTiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7NCwgMSwgMn19LAotICAgIHtSSVAyUEVFUkxBU1RVUERBVEUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDN9fSwKLSAgICB7UklQMlBFRVJWRVJTSU9OLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7NCwgMSwgNH19LAotICAgIHtSSVAyUEVFUlJDVkJBRFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDMsIHs0LCAxLCA1fX0sCi0gICAge1JJUDJQRUVSUkNWQkFEUk9VVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7NCwgMSwgNn19CisgICAge1JJUDJHTE9CQUxST1VURUNIQU5HRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDIsIHsxLCAxfX0sCisgICAge1JJUDJHTE9CQUxRVUVSSUVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAyLCB7MSwgMn19LAorICAgIHtSSVAySUZTVEFUQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7MiwgMSwgMX19LAorICAgIHtSSVAySUZTVEFUUkNWQkFEUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDJ9fSwKKyAgICB7UklQMklGU1RBVFJDVkJBRFJPVVRFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDN9fSwKKyAgICB7UklQMklGU1RBVFNFTlRVUERBVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7MiwgMSwgNH19LAorICAgIHtSSVAySUZTVEFUU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDV9fSwKKyAgICB7UklQMklGQ09ORkFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDF9fSwKKyAgICB7UklQMklGQ09ORkRPTUFJTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDJ9fSwKKyAgICB7UklQMklGQ09ORkFVVEhUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDN9fSwKKyAgICB7UklQMklGQ09ORkFVVEhLRVksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCA0fX0sCisgICAge1JJUDJJRkNPTkZTRU5ELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDV9fSwKKyAgICB7UklQMklGQ09ORlJFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9yaXAyLCAzLCB7MywgMSwgNn19LAorICAgIHtSSVAySUZDT05GREVGQVVMVE1FVFJJQywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCA3fX0sCisgICAge1JJUDJJRkNPTkZTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9yaXAyLCAzLCB7MywgMSwgOH19LAorICAgIHtSSVAySUZDT05GU1JDQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDl9fSwKKyAgICB7UklQMlBFRVJBRERSRVNTLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHs0LCAxLCAxfX0sCisgICAge1JJUDJQRUVSRE9NQUlOLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHs0LCAxLCAyfX0sCisgICAge1JJUDJQRUVSTEFTVFVQREFURSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgM319LAorICAgIHtSSVAyUEVFUlZFUlNJT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHs0LCAxLCA0fX0sCisgICAge1JJUDJQRUVSUkNWQkFEUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezQsIDEsIDV9fSwKKyAgICB7UklQMlBFRVJSQ1ZCQURST1VURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHs0LCAxLCA2fX0KIH07CiAKLW9pZCAgICAgICAgICAgICByaXAyX3ZhcmlhYmxlc19vaWRbXSA9IHsgTUlCLCAyMyB9Oworb2lkICAgICAgICAgICAgIHJpcDJfdmFyaWFibGVzX29pZFtdID0geyBORVRTTk1QX01JQjJfT0lELCAyMyB9OwogCiB2b2lkCiBpbml0X3NubXBfcmlwMih2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKaW5kZXggY2IwMGY2NS4uYzg1MTI1ZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCkBAIC0yNiw5ICsyNiw5IEBACiAKICNpbmNsdWRlICJzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW10gPQorY29uc3Qgb2lkICAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRbXSA9CiAgICAgeyBTTk1QTk9USUZZRklMVEVSVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplID0KK2NvbnN0IGludCAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSChzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkKTsKIAogc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKaW5kZXggNWJmZWI3ZC4uM2ZmMmY5NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCkBAIC0zMTEsOCArMzExLDggQEAKICAgICAgICAgKiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgICAgIChzbm1wTm90aWZ5RmlsdGVyVGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCAzNDJlMDY0Li4zYzZiY2M1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI0Myw3ICsyNDMsOCBAQAogICAgICAgICArK2NvdW50OwogICAgIH0KIAotICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c25tcE5vdGlmeUZpbHRlclRhYmxlOnNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfbG9hZCIsICJpbnNlcnRlZCAlZCByZWNvcmRzXG4iLCBjb3VudCkpOworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c25tcE5vdGlmeUZpbHRlclRhYmxlOnNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfbG9hZCIsCisgICAgICAgICAgICAgICAiaW5zZXJ0ZWQgJSIgTkVUU05NUF9QUkl6ICJ1IHJlY29yZHNcbiIsIGNvdW50KSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA0OGYzZTdlLi45ZjY0YjQ2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtNzc0LDYgKzc3NCw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfc25tcE5vdGlmeUZpbHRlclRhYmxlX3Bvc3RfcmVxdWVzdCAqLwogCisKIC8qKgogICogQGludGVybmFsCiAgKiB3cmFwcGVyCkBAIC0yMDQxLDcgKzIwNDIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKG5ldHNubXBfY29udGFpbmVyICopIGNsaWVudGFyZzsKIAotICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpzbm1wTm90aWZ5RmlsdGVyVGFibGU6X3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzIiwgInNhdmluZyAlZCByb3dzXG4iLCBDT05UQUlORVJfU0laRShjKSkpOworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpzbm1wTm90aWZ5RmlsdGVyVGFibGU6IgorICAgICAgICAgICAgICAgICJfc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9zYXZlX3Jvd3MiLAorICAgICAgICAgICAgICAgICJzYXZpbmcgJSIgTkVUU05NUF9QUkl6ICJ1IHJvd3NcbiIsIENPTlRBSU5FUl9TSVpFKGMpKSk7CiAKICAgICByZWFkX2NvbmZpZ19zdG9yZSgoY2hhciAqKSB0eXBlLCBzZXApOwogICAgIHJlYWRfY29uZmlnX3N0b3JlKChjaGFyICopIHR5cGUsIGJ1Zik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuYwppbmRleCAwNWQ4MzExLi41MDEwMTk3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgInVzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkW10gPSB7IFVTTURIVVNFUktFWVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICB1c21ESFVzZXJLZXlUYWJsZV9vaWRbXSA9IHsgVVNNREhVU0VSS0VZVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSCh1c21ESFVzZXJLZXlUYWJsZV9vaWQpOwogCiB1c21ESFVzZXJLZXlUYWJsZV9yZWdpc3RyYXRpb24gdXNtREhVc2VyS2V5VGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmgKaW5kZXggZTIwZDViYy4uYjM0M2Q3OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5oCkBAIC0xOTksOCArMTk5LDggQEAKICAgICAgICAgKnVzbURIVXNlcktleVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAodXNtREhVc2VyS2V5VGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICB1c21ESFVzZXJLZXlUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgInVzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMKaW5kZXggNGNhMjk4Ny4uZDU5OThmMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jCkBAIC0xMCwyMSArMTAsMjcgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0jaW5jbHVkZSAibWliSUkvc3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJzbm1wRW5naW5lLmgiCiAKIHN0cnVjdCB2YXJpYWJsZTIgc25tcEVuZ2luZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7U05NUEVOR0lORUlELCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3NubXBFbmdpbmUsIDEsIHsxfX0sCisgICAge1NOTVBFTkdJTkVJRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7MX19LAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQotICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAotICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCisgICAge1NOTVBFTkdJTkVCT09UUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHsyfX0sCisgICAge1NOTVBFTkdJTkVUSU1FLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKICNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIU5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAqLwotICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3NubXBFbmdpbmUsIDEsIHsyfX0sCi0gICAge1NOTVBFTkdJTkVUSU1FLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9zbm1wRW5naW5lLCAxLCB7M319LAorICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHsyfX0sCisgICAge1NOTVBFTkdJTkVUSU1FLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7M319LAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KLSAgICB7U05NUEVOR0lORU1BWE1FU1NBR0VTSVpFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9zbm1wRW5naW5lLCAxLCB7NH19LAorICAgIHtTTk1QRU5HSU5FTUFYTUVTU0FHRVNJWkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHs0fX0sCiB9OwogCiAvKgpAQCAtNTYsMTAgKzYyLDggQEAKIHZvaWQKIGluaXRfc25tcEVuZ2luZSh2b2lkKQogewotI2lmZGVmIFVTSU5HX01JQklJX1NZU09SVEFCTEVfTU9EVUxFCi0gICAgc3RhdGljIG9pZCAgICAgIHJlZ1tdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMCwgMywgMSwgMSB9OwotICAgIHJlZ2lzdGVyX3N5c09SVGFibGUocmVnLCAxMCwgIlRoZSBTTk1QIE1hbmFnZW1lbnQgQXJjaGl0ZWN0dXJlIE1JQi4iKTsKLSNlbmRpZgorICAgIG9pZCAgICAgIHJlZ1tdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMCwgMywgMSwgMSB9OworICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHJlZywgIlRoZSBTTk1QIE1hbmFnZW1lbnQgQXJjaGl0ZWN0dXJlIE1JQi4iKTsKICAgICByZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnMoKTsKIH0KIApAQCAtODUsMTEgKzg5LDExIEBACiAgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwogICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGVuZ2luZUlEW1NOTVBfTUFYQlVGXTsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOyAgICAgICAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOyAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLwogCiAgICAgaWYgKGhlYWRlcl9nZW5lcmljKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKgogICAgICAqIHRoaXMgaXMgd2hlcmUgd2UgZG8gdGhlIHZhbHVlIGFzc2lnbm1lbnRzIGZvciB0aGUgbWliIHJlc3VsdHMuIApAQCAtMTI1LDcgKzEyOSw3IEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc25tcEVuZ2luZVxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogfQogCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaAppbmRleCAzNDNlZWFhLi5iNjJhMjIwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmgKQEAgLTEwLDEwICsxMCwxMCBAQAogI2RlZmluZSBfTUlCR1JPVVBfU05NUEVOR0lORV9ICiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlCiAgKi8KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiBjb25maWdfYWRkX21pYihTTk1QLUZSQU1FV09SSy1NSUIpCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jCmluZGV4IGM3ZWZiYzguLjM3MzRhY2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmMKQEAgLTEwLDE3ICsxMCwxOSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgIm1pYklJL3N5c09SVGFibGUuaCIKICNpbmNsdWRlICJzbm1wTVBEU3RhdHMuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAKIHN0cnVjdCB2YXJpYWJsZTIgc25tcE1QRFN0YXRzX3ZhcmlhYmxlc1tdID0gewotICAgIHtTTk1QVU5LTk9XTlNFQ1VSSVRZTU9ERUxTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wTVBEU3RhdHMsIDEsCi0gICAgIHsxfX0sCi0gICAge1NOTVBJTlZBTElETVNHUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcE1QRFN0YXRzLCAxLCB7Mn19LAotICAgIHtTTk1QVU5LTk9XTlBEVUhBTkRMRVJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wTVBEU3RhdHMsIDEsIHszfX0sCisgICAge1NOTVBVTktOT1dOU0VDVVJJVFlNT0RFTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3NubXBNUERTdGF0cywgMSwgezF9fSwKKyAgICB7U05NUElOVkFMSURNU0dTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wTVBEU3RhdHMsIDEsIHsyfX0sCisgICAge1NOTVBVTktOT1dOUERVSEFORExFUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3NubXBNUERTdGF0cywgMSwgezN9fSwKIH07CiAKIC8qCkBAIC0zMiwxMiArMzQsOSBAQAogdm9pZAogaW5pdF9zbm1wTVBEU3RhdHModm9pZCkKIHsKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogICAgIHN0YXRpYyBvaWQgICAgICByZWdbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTEsIDMsIDEsIDEgfTsKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHJlZywgMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBmb3IgTWVzc2FnZSBQcm9jZXNzaW5nIGFuZCBEaXNwYXRjaGluZy4iKTsKLSNlbmRpZgotCisgICAgUkVHSVNURVJfU1lTT1JfRU5UUlkocmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIGZvciBNZXNzYWdlIFByb2Nlc3NpbmcgYW5kIERpc3BhdGNoaW5nLiIpOwogICAgIFJFR0lTVEVSX01JQigic25tcHYzL3NubXBNUERTdGF0cyIsIHNubXBNUERTdGF0c192YXJpYWJsZXMsIHZhcmlhYmxlMiwKICAgICAgICAgICAgICAgICAgc25tcE1QRFN0YXRzX3ZhcmlhYmxlc19vaWQpOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCmluZGV4IGQxN2MzNzEuLjQxZWFiMWQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgKQEAgLTgsMTAgKzgsMTEgQEAKICNkZWZpbmUgX01JQkdST1VQX1NOTVBNUERTVEFUU19ICiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX2V4Y2x1ZGUoc25tcHYzL3NubXBNUERTdGF0c181XzUpCiBjb25maWdfYWRkX21pYihTTk1QLU1QRC1NSUIpCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEyYTkzNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIHNubXBNUERTdGF0cy5jOiB0YWxsaWVzIGVycm9ycyBmb3IgU05NUHYzIG1lc3NhZ2UgcHJvY2Vzc2luZy4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgorCisjaW5jbHVkZSAic25tcE1QRFN0YXRzXzVfNS5oIgorCisjaW5jbHVkZSA8dXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oPgorCisjZGVmaW5lIHNubXBNUERNSUIgMSwgMywgNiwgMSwgNiwgMywgMTEKKyNkZWZpbmUgc25tcE1QRE1JQk9iamVjdHMgc25tcE1QRE1JQiwgMgorI2RlZmluZSBzbm1wTVBETUlCQ29tcGxpYW5jZXMgc25tcE1QRE1JQiwgMywgMQorCitzdGF0aWMgb2lkIHNubXBNUERTdGF0c1tdID0geyBzbm1wTVBETUlCT2JqZWN0cywgMSB9OworCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogc25tcE1QRFN0YXRzX3JlZyA9IE5VTEw7CitzdGF0aWMgb2lkIHNubXBNUERDb21wbGlhbmNlW10gPSB7IHNubXBNUERNSUJDb21wbGlhbmNlcywgMSB9OworCit2b2lkCitpbml0X3NubXBNUERTdGF0c181XzUodm9pZCkKK3sKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKiBzID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAic25tcE1QRFN0YXRzIiwgTlVMTCwgc25tcE1QRFN0YXRzLCBPSURfTEVOR1RIKHNubXBNUERTdGF0cyksCisgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKHMgJiYKKwlORVRTTk1QX1JFR0lTVEVSX1NUQVRJU1RJQ19IQU5ETEVSKHMsIDEsIE1QRCkgPT0gTUlCX1JFR0lTVEVSRURfT0spIHsKKyAgICAgICAgUkVHSVNURVJfU1lTT1JfRU5UUlkoc25tcE1QRENvbXBsaWFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIGZvciBNZXNzYWdlIFByb2Nlc3NpbmcgYW5kIERpc3BhdGNoaW5nLiIpOworICAgICAgICBzbm1wTVBEU3RhdHNfcmVnID0gczsKKyAgICB9Cit9CisKK3ZvaWQKK3NodXRkb3duX3NubXBNUERTdGF0c181XzUodm9pZCkKK3sKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBNUERDb21wbGlhbmNlKTsKKyAgICBpZiAoc25tcE1QRFN0YXRzX3JlZykgeworICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihzbm1wTVBEU3RhdHNfcmVnKTsKKyAgICAgICAgc25tcE1QRFN0YXRzX3JlZyA9IE5VTEw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRkYTAzYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKQEAgLTAsMCArMSwxMSBAQAorI2lmbmRlZiBfTUlCR1JPVVBfU05NUE1QRFNUQVRTX0gKKyNkZWZpbmUgX01JQkdST1VQX1NOTVBNUERTVEFUU19ICisKK2NvbmZpZ19yZXF1aXJlKHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMpCitjb25maWdfZXhjbHVkZShzbm1wdjMvc25tcE1QRFN0YXRzKQorY29uZmlnX2FkZF9taWIoU05NUC1NUEQtTUlCKQorCit2b2lkIGluaXRfc25tcE1QRFN0YXRzXzVfNSh2b2lkKTsKK3ZvaWQgc2h1dGRvd25fc25tcE1QRFN0YXRzXzVfNSh2b2lkKTsKKworI2VuZGlmIC8qIF9NSUJHUk9VUF9TTk1QTVBEU1RBVFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYwppbmRleCBkODFlMTI3Li43NDUxZmU2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYwpAQCAtMTEsMTkgKzExLDI0IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotI2luY2x1ZGUgIm1pYklJL3N5c09SVGFibGUuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidXNtU3RhdHMuaCIKIAogc3RydWN0IHZhcmlhYmxlMiB1c21TdGF0c192YXJpYWJsZXNbXSA9IHsKLSAgICB7VVNNU1RBVFNVTlNVUFBPUlRFRFNFQ0xFVkVMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsCi0gICAgIHsxfX0sCi0gICAge1VTTVNUQVRTTk9USU5USU1FV0lORE9XUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHsyfX0sCi0gICAge1VTTVNUQVRTVU5LTk9XTlVTRVJOQU1FUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHszfX0sCi0gICAge1VTTVNUQVRTVU5LTk9XTkVOR0lORUlEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHs0fX0sCi0gICAge1VTTVNUQVRTV1JPTkdESUdFU1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl91c21TdGF0cywgMSwgezV9fSwKLSAgICB7VVNNU1RBVFNERUNSWVBUSU9ORVJST1JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl91c21TdGF0cywgMSwgezZ9fSwKKyAgICB7VVNNU1RBVFNVTlNVUFBPUlRFRFNFQ0xFVkVMUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHsxfX0sCisgICAge1VTTVNUQVRTTk9USU5USU1FV0lORE9XUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHsyfX0sCisgICAge1VTTVNUQVRTVU5LTk9XTlVTRVJOQU1FUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHszfX0sCisgICAge1VTTVNUQVRTVU5LTk9XTkVOR0lORUlEUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHs0fX0sCisgICAge1VTTVNUQVRTV1JPTkdESUdFU1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl91c21TdGF0cywgMSwgezV9fSwKKyAgICB7VVNNU1RBVFNERUNSWVBUSU9ORVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl91c21TdGF0cywgMSwgezZ9fSwKIH07CiAKIC8qCkBAIC0zNSwxMiArNDAsMTAgQEAKIHZvaWQKIGluaXRfdXNtU3RhdHModm9pZCkKIHsKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogICAgIHN0YXRpYyBvaWQgICAgICByZWdbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTUsIDIsIDEsIDEgfTsKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHJlZywgMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZGVmaW5pdGlvbnMgZm9yIHRoZSBTTk1QIFVzZXItYmFzZWQgU2VjdXJpdHkgTW9kZWwuIik7Ci0jZW5kaWYKLQorICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZGVmaW5pdGlvbnMgZm9yIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNOTVAgVXNlci1iYXNlZCBTZWN1cml0eSBNb2RlbC4iKTsKICAgICBSRUdJU1RFUl9NSUIoInNubXB2My91c21TdGF0cyIsIHVzbVN0YXRzX3ZhcmlhYmxlcywgdmFyaWFibGUyLAogICAgICAgICAgICAgICAgICB1c21TdGF0c192YXJpYWJsZXNfb2lkKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgKaW5kZXggNzE4OGUxYS4uNTY4NTM4MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgKQEAgLTksMTAgKzksMTEgQEAKICNkZWZpbmUgX01JQkdST1VQX1VTTVNUQVRTX0gKIAogLyoKLSAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBhbmQgY2hlY2ttaWIgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCisgKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCiAgKi8KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCitjb25maWdfZXhjbHVkZShzbm1wdjMvdXNtU3RhdHNfNV81KQogY29uZmlnX2FkZF9taWIoU05NUC1VU0VSLUJBU0VELVNNLU1JQikKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM0OGFlNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogdXNtU3RhdHMuYzogaW1wbGVtZW50cyB0aGUgdXNtU3RhdHMgcG9ydGlvbiBvZiB0aGUgU05NUC1VU0VSLUJBU0VELVNNLU1JQgorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CisKKyNpbmNsdWRlICJ1c21TdGF0c181XzUuaCIKKworI2luY2x1ZGUgPHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaD4KKworI2RlZmluZSBzbm1wVXNtTUlCIDEsIDMsIDYsIDEsIDYsIDMsIDE1CisjZGVmaW5lIHVzbU1JQkNvbXBsaWFuY2VzIHNubXBVc21NSUIsIDIsIDEKKworc3RhdGljIG9pZCB1c21TdGF0c1tdID0geyBzbm1wVXNtTUlCLCAxLCAxIH07CisKK3N0YXRpYyBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKiB1c21TdGF0c19yZWcgPSBOVUxMOworc3RhdGljIG9pZCB1c21NSUJDb21wbGlhbmNlW10gPSB7IHVzbU1JQkNvbXBsaWFuY2VzLCAxIH07CisKK3ZvaWQKK2luaXRfdXNtU3RhdHNfNV81KHZvaWQpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogcyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgInVzbVN0YXRzIiwgTlVMTCwgdXNtU3RhdHMsIE9JRF9MRU5HVEgodXNtU3RhdHMpLAorICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmIChzICYmCisJTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUihzLCAxLCBVU00pID09IE1JQl9SRUdJU1RFUkVEX09LKSB7CisgICAgICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHVzbU1JQkNvbXBsaWFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNOTVAgVXNlci1iYXNlZCBTZWN1cml0eSBNb2RlbC4iKTsKKyAgICAgICAgdXNtU3RhdHNfcmVnID0gczsKKyAgICB9Cit9CisKK3ZvaWQKK3NodXRkb3duX3VzbVN0YXRzXzVfNSh2b2lkKQoreworICAgIFVOUkVHSVNURVJfU1lTT1JfRU5UUlkodXNtTUlCQ29tcGxpYW5jZSk7CisgICAgaWYgKHVzbVN0YXRzX3JlZykgeworICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcih1c21TdGF0c19yZWcpOworICAgICAgICB1c21TdGF0c19yZWcgPSBOVUxMOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmM5Zjc2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5oCkBAIC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX01JQkdST1VQX1VTTVNUQVRTX0gKKyNkZWZpbmUgX01JQkdST1VQX1VTTVNUQVRTX0gKKworY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYykKK2NvbmZpZ19leGNsdWRlKHNubXB2My91c21TdGF0cykKK2NvbmZpZ19hZGRfbWliKFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIpCisKK3ZvaWQgaW5pdF91c21TdGF0c181XzUodm9pZCk7Cit2b2lkIHNodXRkb3duX3VzbVN0YXRzXzVfNSh2b2lkKTsKKworI2VuZGlmIC8qIF9NSUJHUk9VUF9VU01TVEFUU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYwppbmRleCAwZWIwZGFjLi4yNjZhNjNiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKQEAgLTE4LDMwICsxOCwzNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidXNtVXNlci5oIgogCiBpbnQgdXNtU3RhdHVzQ2hlY2soc3RydWN0IHVzbVVzZXIgKnVwdHIpOwogCiBzdHJ1Y3QgdmFyaWFibGU0IHVzbVVzZXJfdmFyaWFibGVzW10gPSB7Ci0gICAge1VTTVVTRVJTUElOTE9DSywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDEsIHsxfX0sCi0gICAge1VTTVVTRVJTRUNVUklUWU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDN9fSwKLSAgICB7VVNNVVNFUkNMT05FRlJPTSwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDR9fSwKLSAgICB7VVNNVVNFUkFVVEhQUk9UT0NPTCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywKLSAgICAgezIsIDEsIDV9fSwKLSAgICB7VVNNVVNFUkFVVEhLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsCi0gICAgIHsyLCAxLCA2fX0sCi0gICAge1VTTVVTRVJPV05BVVRIS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLAotICAgICB7MiwgMSwgN319LAotICAgIHtVU01VU0VSUFJJVlBST1RPQ09MLCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLAotICAgICB7MiwgMSwgOH19LAotICAgIHtVU01VU0VSUFJJVktFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywKLSAgICAgezIsIDEsIDl9fSwKLSAgICB7VVNNVVNFUk9XTlBSSVZLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsCi0gICAgIHsyLCAxLCAxMH19LAotICAgIHtVU01VU0VSUFVCTElDLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTF9fSwKLSAgICB7VVNNVVNFUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDEyfX0sCi0gICAge1VTTVVTRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTN9fSwKKyAgICB7VVNNVVNFUlNQSU5MT0NLLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMSwgezF9fSwKKyAgICB7VVNNVVNFUlNFQ1VSSVRZTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgM319LAorICAgIHtVU01VU0VSQ0xPTkVGUk9NLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgNH19LAorICAgIHtVU01VU0VSQVVUSFBST1RPQ09MLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgNX19LAorICAgIHtVU01VU0VSQVVUSEtFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDZ9fSwKKyAgICB7VVNNVVNFUk9XTkFVVEhLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCA3fX0sCisgICAge1VTTVVTRVJQUklWUFJPVE9DT0wsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCA4fX0sCisgICAge1VTTVVTRVJQUklWS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgOX19LAorICAgIHtVU01VU0VST1dOUFJJVktFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDEwfX0sCisgICAge1VTTVVTRVJQVUJMSUMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAxMX19LAorICAgIHtVU01VU0VSU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTJ9fSwKKyAgICB7VVNNVVNFUlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAxM319LAogCiB9OwogCkBAIC0zMDEsNyArMzA3LDcgQEAKICAgICBpZiAoIXZwIHx8ICFuYW1lIHx8ICFsZW5ndGggfHwgIXZhcl9sZW4pCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgKndyaXRlX21ldGhvZCA9IDA7ICAgICAgICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7ICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsgICAgICAgIC8qIGFzc3VtZSBhbiBpbnRlZ2VyIGFuZCBjaGFuZ2UgbGF0ZXIgaWYgbm90ICovCiAKICAgICBpZiAodnAtPm1hZ2ljICE9IFVTTVVTRVJTUElOTE9DSykgewpAQCAtMzE1LDcgKzMyMSw3IEBACiAgICAgICAgICAgICAoZXhhY3QgPT0gMSAmJiBydGVzdCAhPSAwKSkgewogICAgICAgICAgICAgaWYgKHZhcl9sZW4pCiAgICAgICAgICAgICAgICAgKnZhcl9sZW4gPSAwOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBtZW1zZXQobmV3bmFtZSwgMCwgc2l6ZW9mKG5ld25hbWUpKTsKICAgICAgICAgaWYgKCgoaW50KSAqbGVuZ3RoKSA8PSAoaW50KSB2cC0+bmFtZWxlbiB8fCBydGVzdCA9PSAtMSkgewpAQCAtMzg0LDcgKzM5MCw3IEBACiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaGVhZGVyX2dlbmVyaWModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmRpZiAtLSB2cC0+bWFnaWMgIT0gVVNNVVNFUlNQSU5MT0NLICovCiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewpAQCAtNDU4LDcgKzQ2NCw3IEBACiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV91c21Vc2VyUHVibGljOwogICAgICAgICBpZiAodXB0cikgewogICAgICAgICAgICAgaWYgKHVwdHItPnVzZXJQdWJsaWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbigoY2hhciAqKSB1cHRyLT51c2VyUHVibGljU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAqdmFyX2xlbiA9IHVwdHItPnVzZXJQdWJsaWNTdHJpbmdMZW47CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVwdHItPnVzZXJQdWJsaWNTdHJpbmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqc3RyaW5nID0gMDsKQEAgLTQ4OCw3ICs0OTQsNyBAQAogICAgICAgICBERUJVR01TR1RMKCgic25tcGQiLCAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3VzbVVzZXJcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgdmFyX3VzbVVzZXIoKSAqLwogCkBAIC0xMTc3LDE0ICsxMTgzLDE1IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKHVwdHItPnVzZXJQdWJsaWNTdHJpbmcpCiAgICAgICAgICAgICBmcmVlKHVwdHItPnVzZXJQdWJsaWNTdHJpbmcpOwotICAgICAgICB1cHRyLT51c2VyUHVibGljU3RyaW5nID0gKHVfY2hhciAqKSBtYWxsb2ModmFyX3ZhbF9sZW4gKyAxKTsKKyAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZyA9ICh1X2NoYXIgKikgbWFsbG9jKHZhcl92YWxfbGVuKTsKICAgICAgICAgaWYgKHVwdHItPnVzZXJQdWJsaWNTdHJpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICAgICAgfQogICAgICAgICBtZW1jcHkodXB0ci0+dXNlclB1YmxpY1N0cmluZywgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOwotICAgICAgICB1cHRyLT51c2VyUHVibGljU3RyaW5nW3Zhcl92YWxfbGVuXSA9IDA7Ci0gICAgICAgIERFQlVHTVNHKCgidXNtVXNlciIsICJzZXR0aW5nIHB1YmxpYyBzdHJpbmc6ICVkIC0gJXNcbiIsCi0gICAgICAgICAgICAgICAgICB2YXJfdmFsX2xlbiwgdXB0ci0+dXNlclB1YmxpY1N0cmluZykpOworICAgICAgICB1cHRyLT51c2VyUHVibGljU3RyaW5nTGVuID0gdmFyX3ZhbF9sZW47CisgICAgICAgIERFQlVHTVNHKCgidXNtVXNlciIsICJzZXR0aW5nIHB1YmxpYyBzdHJpbmc6ICVkIC0gIiwgKGludCl2YXJfdmFsX2xlbikpOworICAgICAgICBERUJVR01TR0hFWCgoInVzbVVzZXIiLCB1cHRyLT51c2VyUHVibGljU3RyaW5nLCB2YXJfdmFsX2xlbikpOworICAgICAgICBERUJVR01TRygoInVzbVVzZXIiLCAiXG4iKSk7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgd3JpdGVfdXNtVXNlclB1YmxpYygpICovCkBAIC0xMjQxLDcgKzEyNDgsNyBAQAogICAgICAgICAgICAgICogQ29udmVudGlvbiBhcHBseS4gIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtVXNlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibG9uZ19yZXQgJWQgdXB0ci0+c3QgJWQgdXB0ci0+c3RhdHVzICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgImxvbmdfcmV0ICVsZCB1cHRyLT5zdCAlZCB1cHRyLT5zdGF0dXMgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX3JldCwgdXB0ci0+dXNlclN0b3JhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgdXB0ci0+dXNlclN0YXR1cykpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAppbmRleCBlOTIwYjIwLi4yYWZlY2I0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKQEAgLTE1LDEwICsxNSwxMCBAQAogI2RlZmluZSBVU01fTEVOR1RIX09JRF9NQVgJNjYKIAogLyoKLSAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBhbmQgY2hlY2ttaWIgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCisgKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIGNvbmZpZ19hZGRfbWliKFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIpCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oCmluZGV4IDYwZjY2NmQuLjhlNWEwMTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgKQEAgLTcsOCArNyw4IEBACiAgKi8KIAogY29uZmlnX3JlcXVpcmUoc25tcHYzL3NubXBFbmdpbmUpCi1jb25maWdfcmVxdWlyZShzbm1wdjMvc25tcE1QRFN0YXRzKQotY29uZmlnX3JlcXVpcmUoc25tcHYzL3VzbVN0YXRzKQorY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoc25tcHYzL3NubXBNUERTdGF0cywgNS41LCBzbm1wdjMvc25tcE1QRFN0YXRzXzVfNSkpCitjb25maWdfdmVyc2lvbl9yZXF1aXJlKChzbm1wdjMvdXNtU3RhdHMsIDUuNSwgc25tcHYzL3VzbVN0YXRzXzVfNSkpCiBjb25maWdfcmVxdWlyZShzbm1wdjMvdXNtQ29uZikKIGNvbmZpZ19yZXF1aXJlKHNubXB2My91c21Vc2VyKQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOU01QVjNNSUJTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oIGIvYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgKaW5kZXggMTBiODQzZC4uYzMzYzk2YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgKQEAgLTE5LDcgKzE5LDcgQEAKICAgICB1bnNpZ25lZCBsb25nICAgbWlib2lkW01JQk1BWF07CiAgICAgc2l6ZV90ICAgICAgICAgIG1pYmxlbjsKICAgICBpbnQgICAgICAgICAgICAgcGlkOwotI2lmIGRlZmluZWQoV0lOMzIpCisjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQgKG1pbmd3MzIpCiAgICAgSEFORExFICAgICAgICAgIHRpZDsgICAgICAgICAgICAgICAgLyogV0lOMzIgdGhyZWFkICovCiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC5oCmluZGV4IDM5ZmFkZmUuLjU4YzViNGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC5oCkBAIC0xLDUgKzEsNSBAQAogY29uZmlnX3JlcXVpcmUodGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkpCiBjb25maWdfcmVxdWlyZSh0YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5KQogY29uZmlnX3JlcXVpcmUodGFyZ2V0L3RhcmdldCkKLWNvbmZpZ19yZXF1aXJlKHRhcmdldC90YXJnZXRfY291bnRlcnMpCitjb25maWdfdmVyc2lvbl9yZXF1aXJlKCh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLCA1LjUsIHRhcmdldC90YXJnZXRfY291bnRlcnNfNV81KSkKIGNvbmZpZ19hZGRfbWliKFNOTVAtVEFSR0VULU1JQikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCmluZGV4IGJiNzMwMmQuLjUyZjc3YjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJzbm1wVGFyZ2V0QWRkckVudHJ5LmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogI2RlZmluZSBzbm1wVGFyZ2V0QWRkck9JRExlbiAxMSAvKlRoaXMgaXMgYmFzZStjb2x1bW4sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpLmUuIGV2ZXJ5dGhpbmcgYnV0IGluZGV4ICovCkBAIC0zMiw3ICszMiw3IEBACiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMiwgMSwgMCB9OwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBzbm1wVGFyZ2V0U3BpbkxvY2sgPSAwOwotc3RhdGljIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICphQWRkclRhYmxlID0gMDsKK3N0YXRpYyBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqYUFkZHJUYWJsZSA9IE5VTEw7CiAKIAogLyoKQEAgLTY3LDIxICs2NywyMSBAQAogICAgIG5ld0VudHJ5ID0gbWFsbG9jKHNpemVvZigqbmV3RW50cnkpKTsKIAogICAgIGlmIChuZXdFbnRyeSkgewotICAgICAgICBuZXdFbnRyeS0+bmFtZSA9IDA7CisgICAgICAgIG5ld0VudHJ5LT5uYW1lID0gTlVMTDsKIAogICAgICAgICBuZXdFbnRyeS0+dERvbWFpbkxlbiA9IDA7Ci0gICAgICAgIG5ld0VudHJ5LT50QWRkcmVzcyA9IDA7CisgICAgICAgIG5ld0VudHJ5LT50QWRkcmVzcyA9IE5VTEw7CiAKICAgICAgICAgbmV3RW50cnktPnRpbWVvdXQgPSAxNTAwOwogICAgICAgICBuZXdFbnRyeS0+cmV0cnlDb3VudCA9IDM7CiAKICAgICAgICAgbmV3RW50cnktPnRhZ0xpc3QgPSBzdHJkdXAoIiIpOwotICAgICAgICBuZXdFbnRyeS0+cGFyYW1zID0gMDsKKyAgICAgICAgbmV3RW50cnktPnBhcmFtcyA9IE5VTEw7CiAKICAgICAgICAgbmV3RW50cnktPnN0b3JhZ2VUeXBlID0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFOwogICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzID0gU05NUF9ST1dfTk9ORVhJU1RFTlQ7CiAgICAgICAgIG5ld0VudHJ5LT5zZXNzID0gTlVMTDsKLSAgICAgICAgbmV3RW50cnktPm5leHQgPSAwOworICAgICAgICBuZXdFbnRyeS0+bmV4dCA9IE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIG5ld0VudHJ5OwpAQCAtMTk3LDE0ICsxOTcsMTQgQEAKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqdHB0cjsKIAotICAgIGlmICgodHB0ciA9ICpsaXN0UHRyKSA9PSAwKQorICAgIGlmICgodHB0ciA9ICpsaXN0UHRyKSA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAgICAgZWxzZSBpZiAodHB0ciA9PSBvbGRFbnRyeSkgewogICAgICAgICAqbGlzdFB0ciA9ICgqbGlzdFB0ciktPm5leHQ7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZSh0cHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHdoaWxlICh0cHRyLT5uZXh0ICE9IDApIHsKKyAgICAgICAgd2hpbGUgKHRwdHItPm5leHQgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHRwdHItPm5leHQgPT0gb2xkRW50cnkpIHsKICAgICAgICAgICAgICAgICB0cHRyLT5uZXh0ID0gdHB0ci0+bmV4dC0+bmV4dDsKICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2Uob2xkRW50cnkpOwpAQCAtMjM0LDcgKzIzNCw3IEBACiAgICAgICovCiAgICAgbWVtY3B5KG5ld051bSwgYmFzZU5hbWUsIGJhc2VOYW1lTGVuICogc2l6ZW9mKG9pZCkpOwogCi0gICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFBZGRyVGFibGU7IHRlbXBfc3RydWN0ICE9IDA7CisgICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFBZGRyVGFibGU7IHRlbXBfc3RydWN0ICE9IE5VTEw7CiAgICAgICAgICB0ZW1wX3N0cnVjdCA9IHRlbXBfc3RydWN0LT5uZXh0KSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBzdHJsZW4odGVtcF9zdHJ1Y3QtPm5hbWUpOyBpKyspIHsKICAgICAgICAgICAgIG5ld051bVtiYXNlTmFtZUxlbiArIGldID0gdGVtcF9zdHJ1Y3QtPm5hbWVbaV07CkBAIC0yNTIsNyArMjUyLDcgQEAKICAgICAgICAgICAgIHJldHVybiB0ZW1wX3N0cnVjdDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gKDApOworICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWFyY2hfc25tcFRhcmdldEFkZHJUYWJsZSAgKi8KIAogCkBAIC0yNzgsMjcgKzI3OCwyOCBAQAogICovCiAKIHN0cnVjdCB2YXJpYWJsZTIgc25tcFRhcmdldEFkZHJFbnRyeV92YXJpYWJsZXNbXSA9IHsKLSAgICB7U05NUFRBUkdFVEFERFJURE9NQUlOLCBBU05fT0JKRUNUX0lELCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSVERPTUFJTiwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSVERPTUFJTkNPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlRBRERSRVNTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSVEFERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRBRERSRVNTQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRBRERSVElNRU9VVCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVEFERFJUSU1FT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSVElNRU9VVENPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlJFVFJZQ09VTlQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSUkVUUllDT1VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlJFVFJZQ09VTlRDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJUQUdMSVNULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSVEFHTElTVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSVEFHTElTVENPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlBBUkFNUywgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlBBUkFNUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSUEFSQU1TQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRBRERSU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5LCAxLCB7U05NUFRBUkdFVEFERFJTVE9SQUdFVFlQRUNPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlJPV1NUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVEFERFJST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5LCAxLCB7U05NUFRBUkdFVEFERFJST1dTVEFUVVNDT0xVTU59fSwKIAogfTsKIAogc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0U3BpbkxvY2tfdmFyW10gPSB7Ci0gICAge1NOTVBUQVJHRVRTUElOTE9DSywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RhcmdldFNwaW5Mb2NrLCAxLCB7MX19CisgICAge1NOTVBUQVJHRVRTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RhcmdldFNwaW5Mb2NrLCAxLCB7MX19CiB9OwogCiBzdGF0aWMgb2lkICAgICAgc25tcFRhcmdldFNwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSB9OwpAQCAtMzEzLDcgKzMxNCw3IEBACiB2b2lkCiBpbml0X3NubXBUYXJnZXRBZGRyRW50cnkodm9pZCkKIHsKLSAgICBhQWRkclRhYmxlID0gMDsKKyAgICBhQWRkclRhYmxlID0gTlVMTDsKICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsICJpbml0XG4iKSk7CiAgICAgUkVHSVNURVJfTUlCKCJ0YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzLCB2YXJpYWJsZTIsCkBAIC0zMjIsNyArMzIzLDggQEAKICAgICAgICAgICAgICAgICAgdmFyaWFibGUyLCBzbm1wVGFyZ2V0U3BpbkxvY2tfb2lkKTsKIAogICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJ0YXJnZXRBZGRyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0QWRkciwgMCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsCisJCQkJICAodm9pZCAoKikodm9pZCkpMCwgTlVMTCk7CiAKICAgICAvKgogICAgICAqIHdlIG5lZWQgdG8gYmUgY2FsbGVkIGJhY2sgbGF0ZXIgCkBAIC0zMzcsNyArMzM5LDcgQEAKIHNubXBUYXJnZXRBZGRyX2FkZE5hbWUoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LCBjaGFyICpjcHRyKQogewogICAgIHNpemVfdCAgICAgICAgICBsZW47Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gbmFtZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC0zNjIsNyArMzY0LDcgQEAKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuID0gMTI4OwogCi0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gdERvbWFpbiBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC0zOTIsNyArMzk0LDcgQEAKIHNubXBUYXJnZXRBZGRyX2FkZFRBZGRyZXNzKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIsIHNpemVfdCBsZW4pCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gdEFkZHJlc3MgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDE4LDcgKzQyMCw3IEBACiBpbnQKIHNubXBUYXJnZXRBZGRyX2FkZFRpbWVvdXQoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LCBjaGFyICpjcHRyKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gVGltZW91dCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC00NDMsNyArNDQ1LDcgQEAKIHNubXBUYXJnZXRBZGRyX2FkZFJldHJ5Q291bnQoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gUmV0cnkgQ291bnQgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDcxLDcgKzQ3Myw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGRUYWdMaXN0KHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHRhZyBsaXN0IGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQ5Niw3ICs0OTgsNyBAQAogc25tcFRhcmdldEFkZHJfYWRkUGFyYW1zKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHBhcmFtcyBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC01MjAsMTUgKzUyMiwxNSBAQAogc25tcFRhcmdldEFkZHJfYWRkU3RvcmFnZVR5cGUoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgYnVmZlsxMDI0XTsKLQotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKLSAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHN0b3JhZ2UgdHlwZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7CisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBzdG9yYWdlIHR5cGUgaW4gY29uZmlnICIKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwogICAgIH0gZWxzZSBpZiAoIShpc2RpZ2l0KCpjcHRyKSkpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogc3RvcmFnZSB0eXBlIGlzIG5vdCBhIGRpZ2l0IGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IHN0b3JhZ2UgdHlwZSBpcyBub3QgYSBkaWdpdCAiCisgICAgICAgICAgICAgICAgICAgICJpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIC8qCkBAIC01NDAsMTQgKzU0MiwxMyBAQAogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFKSAmJgogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkgJiYKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9SRUFET05MWSkpIHsKLSAgICAgICAgc25wcmludGYoYnVmZiwgc2l6ZW9mKGJ1ZmYpLAotICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBzdG9yYWdlIHR5cGUgbm90IGEgdmFsaWQgdmFsdWUgb2Ygb3RoZXIoJWQpLCB2b2xhdGlsZSglZCksIG5vbnZvbGF0aWxlKCVkKSwgcGVybWFuZW50KCVkKSwgb3IgcmVhZG9ubHkoJWQpIGluIGNvbmZpZyBzdHJpbmcuXG4iLAotICAgICAgICAgICAgICAgIFNOTVBfU1RPUkFHRV9PVEhFUiwgU05NUF9TVE9SQUdFX1ZPTEFUSUxFLAotICAgICAgICAgICAgICAgIFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSwgU05NUF9TVE9SQUdFX1BFUk1BTkVOVCwKLSAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfUkVBRE9OTFkpOwotICAgICAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLCBidWZmKSk7Ci0KKwlERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBzdG9yYWdlIHR5cGUgbm90IGEgdmFsaWQgIgorICAgICAgICAgICAgICAgICAgICAidmFsdWUgb2Ygb3RoZXIoJWQpLCB2b2xhdGlsZSglZCksIG5vbnZvbGF0aWxlKCVkKSwgIgorICAgICAgICAgICAgICAgICAgICAicGVybWFuZW50KCVkKSwgb3IgcmVhZG9ubHkoJWQpIGluIGNvbmZpZyBzdHJpbmcuXG4iLAorICAgICAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfT1RIRVIsIFNOTVBfU1RPUkFHRV9WT0xBVElMRSwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFLCBTTk1QX1NUT1JBR0VfUEVSTUFORU5ULAorICAgICAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfUkVBRE9OTFkpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9CiAgICAgcmV0dXJuICgxKTsKQEAgLTU1OCwxNSArNTU5LDE1IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGRSb3dTdGF0dXMoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZmZbMTAyNF07Ci0KLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBSb3cgU3RhdHVzIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIFJvdyBTdGF0dXMgaW4gY29uZmlnICIKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwogICAgIH0gZWxzZSBpZiAoIShpc2RpZ2l0KCpjcHRyKSkpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogUm93IFN0YXR1cyBpcyBub3QgYSBkaWdpdCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBSb3cgU3RhdHVzIGlzIG5vdCBhIGRpZ2l0IGluICIKKyAgICAgICAgICAgICAgICAgICAgImNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9CiAgICAgLyoKQEAgLTU3NiwxMiArNTc3LDExIEBACiAgICAgICAgICAgICAgICE9IFNOTVBfUk9XX0FDVElWRSkgJiYKICAgICAgICAgICAgICAoZW50cnktPnJvd1N0YXR1cyAhPSBTTk1QX1JPV19OT1RJTlNFUlZJQ0UpICYmCiAgICAgICAgICAgICAgKGVudHJ5LT5yb3dTdGF0dXMgIT0gU05NUF9ST1dfTk9UUkVBRFkpKSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmYsIHNpemVvZihidWZmKSwKLSAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogUm93IFN0YXR1cyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBvZiBhY3RpdmUoJWQpLCBub3RpbnNlcnZpY2UoJWQpLCBvciBub3RyZWFkeSglZCkgaW4gY29uZmlnIHN0cmluZy5cbiIsCi0gICAgICAgICAgICAgICAgU05NUF9ST1dfQUNUSVZFLCBTTk1QX1JPV19OT1RJTlNFUlZJQ0UsIFNOTVBfUk9XX05PVFJFQURZKTsKLSAgICAgICAgYnVmZlsgc2l6ZW9mKGJ1ZmYpLTEgXSA9IDA7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgYnVmZikpOwotCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKKyAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IFJvdyBTdGF0dXMgaXMgbm90IGEgdmFsaWQgIgorICAgICAgICAgICAgICAgICAgICAidmFsdWUgb2YgYWN0aXZlKCVkKSwgbm90aW5zZXJ2aWNlKCVkKSwgb3Igbm90cmVhZHkoJWQpICIKKyAgICAgICAgICAgICAgICAgICAgImluIGNvbmZpZyBzdHJpbmcuXG4iLAorICAgICAgICAgICAgICAgICAgICBTTk1QX1JPV19BQ1RJVkUsIFNOTVBfUk9XX05PVElOU0VSVklDRSwgU05NUF9ST1dfTk9UUkVBRFkpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9CiAgICAgcmV0dXJuICgxKTsKQEAgLTY2MSw3ICs2NjEsNyBAQAogICAgICAgICAgICAgbmV3RW50cnktPnRhZ0xpc3QsIG5ld0VudHJ5LT5wYXJhbXMsIG5ld0VudHJ5LT5zdG9yYWdlVHlwZSwKICAgICAgICAgICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMpOwogICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOwotICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgYnVmZikpOworICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgIiVzIiwgYnVmZikpOwogCiAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9hZGRUb0xpc3QobmV3RW50cnksICZhQWRkclRhYmxlKTsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldCAqLwpAQCAtNjg1LDggKzY4NSw4IEBACiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CiAgICAgaW50ICAgICAgICAgICAgIGk7CiAKLSAgICBpZiAoKGN1cnJfc3RydWN0ID0gYUFkZHJUYWJsZSkgIT0gMCkgewotICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gMCkgeworICAgIGlmICgoY3Vycl9zdHJ1Y3QgPSBhQWRkclRhYmxlKSAhPSBOVUxMKSB7CisgICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoKGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSA9PSBTTk1QX1NUT1JBR0VfTk9OVk9MQVRJTEUgfHwKICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQpCiAgICAgICAgICAgICAgICAgJiYKQEAgLTc5Miw4ICs3OTIsOCBAQAogICAgICAqLwogICAgIGlmICgodGVtcF9zdHJ1Y3QgPSBzZWFyY2hfc25tcFRhcmdldEFkZHJUYWJsZSh2cC0+bmFtZSwgdnAtPm5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3QpKSA9PSAwKSB7Ci0gICAgICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0KSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKgpAQCAtODA1LDcgKzgwNSw3IEBACiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIFNOTVBUQVJHRVRBRERSVERPTUFJTjoKICAgICAgICAgaWYgKHRlbXBfc3RydWN0LT50RG9tYWluTGVuIDw9IDApIHsKLSAgICAgICAgICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZW1wX3N0cnVjdC0+dERvbWFpbkxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgb2JqaWRbaV0gPSB0ZW1wX3N0cnVjdC0+dERvbWFpbltpXTsKQEAgLTgxNSw4ICs4MTUsOCBAQAogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgb2JqaWQ7CiAKICAgICBjYXNlIFNOTVBUQVJHRVRBRERSVEFERFJFU1M6Ci0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+dEFkZHJlc3MgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAoMCk7CisgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+dEFkZHJlc3MgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAqdmFyX2xlbiA9IHRlbXBfc3RydWN0LT50QWRkcmVzc0xlbjsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopIHRlbXBfc3RydWN0LT50QWRkcmVzczsKIApAQCAtODMwLDcgKzgzMCw3IEBACiAKICAgICBjYXNlIFNOTVBUQVJHRVRBRERSVEFHTElTVDoKICAgICAgICAgaWYgKHRlbXBfc3RydWN0LT50YWdMaXN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHN0cmNweShzdHJpbmcsIHRlbXBfc3RydWN0LT50YWdMaXN0KTsKKyAgICAgICAgICAgIHN0cmxjcHkoc3RyaW5nLCB0ZW1wX3N0cnVjdC0+dGFnTGlzdCwgc2l6ZW9mKHN0cmluZykpOwogICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSBzdHJpbmc7CiAgICAgICAgIH0gZWxzZSB7CkBAIC04MzgsOSArODM4LDkgQEAKICAgICAgICAgfQogCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlBBUkFNUzoKLSAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5wYXJhbXMgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgICAgIHN0cmNweShzdHJpbmcsIHRlbXBfc3RydWN0LT5wYXJhbXMpOworICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnBhcmFtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCB0ZW1wX3N0cnVjdC0+cGFyYW1zLCBzaXplb2Yoc3RyaW5nKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSBzdHJpbmc7CiAKQEAgLTg1Nyw3ICs4NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBUYXJnZXRBZGRyRW50cnlcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFyX3NubXBUYXJnZXRBZGRyRW50cnkgKi8KIAogCkBAIC04OTAsNyArODkwLDcgQEAKICAgICAgICAgaWYgKCh0YXJnZXQgPQogICAgICAgICAgICAgIHNlYXJjaF9zbm1wVGFyZ2V0QWRkclRhYmxlKHNubXBUYXJnZXRBZGRyT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lETGVuLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lX2xlbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldEFkZHJURG9tYWluOiBCQUQgT0lEIVxuIikpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0lOQ09OU0lTVEVOVE5BTUU7CkBAIC05NzYsNyArOTc2LDcgQEAKICAgICAgICAgaWYgKCh0YXJnZXQgPQogICAgICAgICAgICAgIHNlYXJjaF9zbm1wVGFyZ2V0QWRkclRhYmxlKHNubXBUYXJnZXRBZGRyT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lETGVuLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lX2xlbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldEFkZHJUQWRkcmVzczogQkFEIE9JRCFcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAKICAgICAgICAgaWYgKCh0ZW1wX3N0cnVjdCA9CiAgICAgICAgICAgICAgc2VhcmNoX3NubXBUYXJnZXRBZGRyVGFibGUoc25tcFRhcmdldEFkZHJPSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcFRhcmdldEFkZHJPSURMZW4sIG5hbWUsICZuYW1lX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldEFkZHJUaW1lb3V0IDogQkFEIE9JRFxuIikpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PU1VDSE5BTUU7CkBAIC0xMjk2LDcgKzEyOTYsNyBAQAogICAgICAgICBpZiAoKHRhcmdldCA9CiAgICAgICAgICAgICAgc2VhcmNoX3NubXBUYXJnZXRBZGRyVGFibGUoc25tcFRhcmdldEFkZHJPSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcFRhcmdldEFkZHJPSURMZW4sIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfbGVuLCAxKSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lX2xlbiwgMSkpID09IE5VTEwpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZSB0byBzbm1wVGFyZ2V0QWRkclBhcmFtczogQkFEIE9JRCFcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAKICAgICAgICAgaWYgKG5hbWVfbGVuIDwgc25tcFRhcmdldEFkZHJPSURMZW4gKyAxIHx8CiAgICAgICAgICAgICBuYW1lX2xlbiA+IHNubXBUYXJnZXRBZGRyT0lETGVuICsgMzIpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgImJhZCBpbmRleCBsZW5ndGggJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2xlbiAtIHNubXBUYXJnZXRBZGRyT0lETGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShuYW1lX2xlbiAtIHNubXBUYXJnZXRBZGRyT0lETGVuKSkpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQ1JFQVRJT047CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKaW5kZXggYjFiNWFkMS4uN2VkODM4ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCkBAIC0xMCwxMCArMTAsMTAgQEAKICNkZWZpbmUgX01JQkdST1VQX1NOTVBUQVJHRVRBRERSRU5UUllfSAogCiAvKgotICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGFuZCBjaGVja21pYiBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKKyAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZQogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jCmluZGV4IDA2OTM2YjEuLjM5NjdiODIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMKQEAgLTMwLDcgKzMwLDcgQEAKIG9pZCAgICAgICAgICAgICBzbm1wVGFyZ2V0UGFyYW1zT0lEW3NubXBUYXJnZXRQYXJhbXNPSURMZW5dID0KICAgICB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCAzLCAxLCAwIH07CiAKLXN0YXRpYyBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmFQVGFibGUgPSAwOworc3RhdGljIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqYVBUYWJsZSA9IE5VTEw7CiAKIAogLyoKQEAgLTUxLDE2ICs1MSwxNiBAQAogICAgIG5ld0VudHJ5ID0gKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqKQogICAgICAgICBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCkpOwogCi0gICAgbmV3RW50cnktPnBhcmFtTmFtZSA9IDA7CisgICAgbmV3RW50cnktPnBhcmFtTmFtZSA9IE5VTEw7CiAgICAgbmV3RW50cnktPm1wTW9kZWwgPSAtMTsKIAogICAgIG5ld0VudHJ5LT5zZWNNb2RlbCA9IC0xOwotICAgIG5ld0VudHJ5LT5zZWNOYW1lID0gMDsKKyAgICBuZXdFbnRyeS0+c2VjTmFtZSA9IE5VTEw7CiAgICAgbmV3RW50cnktPnNlY0xldmVsID0gLTE7CiAKICAgICBuZXdFbnRyeS0+c3RvcmFnZVR5cGUgPSBTTk1QX1NUT1JBR0VfTk9OVk9MQVRJTEU7CiAgICAgbmV3RW50cnktPnJvd1N0YXR1cyA9IFNOTVBfUk9XX05PTkVYSVNURU5UOwotICAgIG5ld0VudHJ5LT5uZXh0ID0gMDsKKyAgICBuZXdFbnRyeS0+bmV4dCA9IE5VTEw7CiAgICAgcmV0dXJuIG5ld0VudHJ5OwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogc2VhcmNoIHRocm91Z2ggdGhlIGxpc3QgZm9yIGFuIGVxdWFsIG9yIGdyZWF0ZXIgT0lEIHZhbHVlIAogICAgICAgICAgKi8KLSAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IDApIHsKKyAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGN1cnJPSURMZW4gPSBzdHJsZW4oY3Vycl9zdHJ1Y3QtPnBhcmFtTmFtZSk7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgY3Vyck9JRExlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgY3Vyck9JRFtpXSA9IGN1cnJfc3RydWN0LT5wYXJhbU5hbWVbaV07CkBAIC0xNjgsMTQgKzE2OCwxNCBAQAogewogICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqdHB0cjsKIAotICAgIGlmICgodHB0ciA9ICpsaXN0UHRyKSA9PSAwKQorICAgIGlmICgodHB0ciA9ICpsaXN0UHRyKSA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAgICAgZWxzZSBpZiAodHB0ciA9PSBvbGRFbnRyeSkgewogICAgICAgICAqbGlzdFB0ciA9ICgqbGlzdFB0ciktPm5leHQ7CiAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UodHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAgICAgICB3aGlsZSAodHB0ci0+bmV4dCAhPSAwKSB7CisgICAgICAgIHdoaWxlICh0cHRyLT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICh0cHRyLT5uZXh0ID09IG9sZEVudHJ5KSB7CiAgICAgICAgICAgICAgICAgdHB0ci0+bmV4dCA9IHRwdHItPm5leHQtPm5leHQ7CiAgICAgICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfZGlzcG9zZShvbGRFbnRyeSk7CkBAIC0yMDUsNyArMjA1LDcgQEAKICAgICAgKi8KICAgICBtZW1jcHkobmV3TnVtLCBiYXNlTmFtZSwgYmFzZU5hbWVMZW4gKiBzaXplb2Yob2lkKSk7CiAKLSAgICBmb3IgKHRlbXBfc3RydWN0ID0gYVBUYWJsZTsgdGVtcF9zdHJ1Y3QgIT0gMDsKKyAgICBmb3IgKHRlbXBfc3RydWN0ID0gYVBUYWJsZTsgdGVtcF9zdHJ1Y3QgIT0gTlVMTDsKICAgICAgICAgIHRlbXBfc3RydWN0ID0gdGVtcF9zdHJ1Y3QtPm5leHQpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIHN0cmxlbih0ZW1wX3N0cnVjdC0+cGFyYW1OYW1lKTsgaSsrKSB7CiAgICAgICAgICAgICBuZXdOdW1bYmFzZU5hbWVMZW4gKyBpXSA9IHRlbXBfc3RydWN0LT5wYXJhbU5hbWVbaV07CkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICAgICAgICAgIHJldHVybiB0ZW1wX3N0cnVjdDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gKDApOworICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWFyY2hfc25tcFRhcmdldFBhcmFtc1RhYmxlICovCiAKIApAQCAtMjM2LDcgKzIzNiw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX3Jvd1N0YXR1c0NoZWNrKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnkpCiB7CiAgICAgaWYgKChlbnRyeS0+bXBNb2RlbCA8IDApIHx8IChlbnRyeS0+c2VjTW9kZWwgPCAwKSB8fAotICAgICAgICAoZW50cnktPnNlY0xldmVsIDwgMCkgfHwgKGVudHJ5LT5zZWNOYW1lID09IDApKQorICAgICAgICAoZW50cnktPnNlY0xldmVsIDwgMCkgfHwgKGVudHJ5LT5zZWNOYW1lID09IE5VTEwpKQogICAgICAgICByZXR1cm4gMDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiAxOwpAQCAtMjU0LDE3ICsyNTQsMTcgQEAKICAqLwogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRQYXJhbXNFbnRyeV92YXJpYWJsZXNbXSA9IHsKLSAgICB7U05NUFRBUkdFVFBBUkFNU01QTU9ERUwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRQQVJBTVNNUE1PREVMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU01QTU9ERUxDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTU9ERUwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTU9ERUxDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnksIDEsIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWUxFVkVMLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWUxFVkVMQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVFBBUkFNU1NUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU1NUT1JBR0VUWVBFQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRQQVJBTVNST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnksIDEsIHtTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTQ09MVU1OfX0KIH07CiAKQEAgLTI3OCwxNSArMjc4LDE1IEBACiB2b2lkCiBpbml0X3NubXBUYXJnZXRQYXJhbXNFbnRyeSh2b2lkKQogewotICAgIGFQVGFibGUgPSAwOworICAgIGFQVGFibGUgPSBOVUxMOwogCiAgICAgUkVHSVNURVJfTUlCKCJ0YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtc0VudHJ5X3ZhcmlhYmxlcywgdmFyaWFibGUyLAogICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0UGFyYW1zRW50cnlfdmFyaWFibGVzX29pZCk7CiAKICAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigidGFyZ2V0UGFyYW1zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRQYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKCopKHZvaWQpKTAsIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiB3ZSBuZWVkIHRvIGJlIGNhbGxlZCBiYWNrIGxhdGVyIApAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewogICAgIHNpemVfdCAgICAgICAgICBsZW47Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHBhcmFtIG5hbWUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzI1LDcgKzMyNSw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZE1QTW9kZWwoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldFBhcmFtc0VudHJ5OiBubyBtcCBtb2RlbCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC0zNTAsNyArMzUwLDcgQEAKIHNubXBUYXJnZXRQYXJhbXNfYWRkU2VjTW9kZWwoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gc2VjIG1vZGVsIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTM3Niw3ICszNzYsNyBAQAogc25tcFRhcmdldFBhcmFtc19hZGRTZWNOYW1lKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gc2VjdXJpdHkgbmFtZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC0zOTEsNyArMzkxLDcgQEAKIHNubXBUYXJnZXRQYXJhbXNfYWRkU2VjTGV2ZWwoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gc2VjdXJpdHkgbGV2ZWwgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDE3LDcgKzQxNyw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFN0b3JhZ2VUeXBlKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHN0b3JhZ2UgdHlwZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC00NTUsNyArNDU1LDcgQEAKIHNubXBUYXJnZXRQYXJhbXNfYWRkUm93U3RhdHVzKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldFBhcmFtc0VudHJ5OiBubyByb3cgc3RhdHVzIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTUzNSwxMyArNTM1LDExIEBACiAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UobmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNucHJpbnRmKGJ1ZmYsIHNpemVvZihidWZmKSwKLSAgICAgICAgICAgICJzbm1wX3BhcnNlX2NvbmZpZ190YXJnZXRQYXJhbXMsIHJlYWQ6ICVzICVkICVkICVzICVkICVkICVkXG4iLAotICAgICAgICAgICAgbmV3RW50cnktPnBhcmFtTmFtZSwgbmV3RW50cnktPm1wTW9kZWwsIG5ld0VudHJ5LT5zZWNNb2RlbCwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5zZWNOYW1lLCBuZXdFbnRyeS0+c2VjTGV2ZWwsIG5ld0VudHJ5LT5zdG9yYWdlVHlwZSwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMpOwotICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOwotICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLCBidWZmKSk7CisgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCisgICAgICAgICAgICAgICAgInNubXBfcGFyc2VfY29uZmlnX3RhcmdldFBhcmFtcywgcmVhZDogJXMgJWQgJWQgJXMgJWQgJWQgJWRcbiIsCisgICAgICAgICAgICAgICAgbmV3RW50cnktPnBhcmFtTmFtZSwgbmV3RW50cnktPm1wTW9kZWwsIG5ld0VudHJ5LT5zZWNNb2RlbCwKKyAgICAgICAgICAgICAgICBuZXdFbnRyeS0+c2VjTmFtZSwgbmV3RW50cnktPnNlY0xldmVsLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCisgICAgICAgICAgICAgICAgbmV3RW50cnktPnJvd1N0YXR1cykpOwogCiAgICAgdXBkYXRlX3RpbWVzdGFtcChuZXdFbnRyeSk7CiAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfYWRkVG9MaXN0KG5ld0VudHJ5LCAmYVBUYWJsZSk7CkBAIC01NjYsOCArNTY0LDggQEAKICAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKIAogICAgIHN0cmNweShsaW5lLCAiIik7Ci0gICAgaWYgKChjdXJyX3N0cnVjdCA9IGFQVGFibGUpICE9IDApIHsKLSAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IDApIHsKKyAgICBpZiAoKGN1cnJfc3RydWN0ID0gYVBUYWJsZSkgIT0gTlVMTCkgeworICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKChjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFIHx8CiAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSA9PSBTTk1QX1NUT1JBR0VfUEVSTUFORU5UKQogICAgICAgICAgICAgICAgICYmCkBAIC02NDIsOCArNjQwLDggQEAKICAgICAgKi8KICAgICBpZiAoKHRlbXBfc3RydWN0ID0gc2VhcmNoX3NubXBUYXJnZXRQYXJhbXNUYWJsZSh2cC0+bmFtZSwgdnAtPm5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0KSkgPT0gMCkgewotICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0KSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKgpAQCAtNjU5LDcgKzY1Nyw3IEBACiAgICAgICAgICAqIGlmIHVuc2V0IHZhbHVlLCAoaS5lLiBuZXcgcm93KSAKICAgICAgICAgICovCiAgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+bXBNb2RlbCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbG9uZ19yZXQgPSB0ZW1wX3N0cnVjdC0+bXBNb2RlbDsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKIApAQCAtNjY4LDcgKzY2Niw3IEBACiAgICAgICAgICAqIGlmIHVuc2V0IHZhbHVlLCAoaS5lLiBuZXcgcm93KSAKICAgICAgICAgICovCiAgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+c2VjTW9kZWwgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGxvbmdfcmV0ID0gdGVtcF9zdHJ1Y3QtPnNlY01vZGVsOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogCkBAIC02NzYsOCArNjc0LDggQEAKICAgICAgICAgLyoKICAgICAgICAgICogaWYgdW5zZXQgdmFsdWUsIChpLmUuIG5ldyByb3cpIAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5zZWNOYW1lID09IDApCi0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnNlY05hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAvKgogICAgICAgICAgKiBpbmNsdWRpbmcgbnVsbCBjaGFyYWN0ZXIuIAogICAgICAgICAgKi8KQEAgLTY5MSw3ICs2ODksNyBAQAogICAgICAgICAgKiBpZiB1bnNldCB2YWx1ZSwgKGkuZS4gbmV3IHJvdykgCiAgICAgICAgICAqLwogICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnNlY0xldmVsID09IC0xKQotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBsb25nX3JldCA9IHRlbXBfc3RydWN0LT5zZWNMZXZlbDsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKIApAQCAtNzA4LDcgKzcwNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5XG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnkgKi8KIAogLyoKQEAgLTg0Miw3ICs4NDAsNyBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChmaW5kX3NlY19tb2QobG9uZ19yZXQpID09IE5VTEwgJiYgbG9uZ19yZXQgPj0gMykgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldFBhcmFtc1NlY01vZGVsOiBzZWNNb2RlbCAlZCB1bnN1cHBvcnRlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZSB0byBzbm1wVGFyZ2V0UGFyYW1zU2VjTW9kZWw6IHNlY01vZGVsICVsZCB1bnN1cHBvcnRlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfcmV0KSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUU7CiAgICAgICAgIH0KQEAgLTEyNzMsNyArMTI3MSw3IEBACiAgICAgICAgIGlmIChuYW1lX2xlbiA8IHNubXBUYXJnZXRQYXJhbXNPSURMZW4gKyAxIHx8CiAgICAgICAgICAgICBuYW1lX2xlbiA+IHNubXBUYXJnZXRQYXJhbXNPSURMZW4gKyAzMikgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsICJiYWQgaW5kZXggbGVuZ3RoICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9sZW4gLSBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShuYW1lX2xlbiAtIHNubXBUYXJnZXRQYXJhbXNPSURMZW4pKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmggYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKaW5kZXggOWI1YWI4NS4uODI4NmE2NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaApAQCAtOSwxMiArOSw2IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9TTk1QVEFSR0VUUEFSQU1TRU5UUllfSAogI2RlZmluZSBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKIAotLyoKLSAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBhbmQgY2hlY2ttaWIgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCi0gKi8KLQotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLQogICAgIC8qCiAgICAgICogTWFnaWMgbnVtYmVyIGRlZmluaXRpb25zOiAKICAgICAgKi8KQEAgLTUzLDYgKzQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXdFbnRyeSk7CiAgICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqc25tcFRhcmdldFBhcmFtVGFibGVfY3JlYXRlKHZvaWQpOworICAgICB2b2lkIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2Uoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICopOwogCiAvKgogICogZnVuY3Rpb24gZGVmaW5pdGlvbnMgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMKaW5kZXggM2NjYmExYy4uODhlZTc3MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYwpAQCAtMTYzLDcgKzE2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc3Nlc3MudGltZW91dCA9ICh0YXJnYWRkcnMtPnRpbWVvdXQpICogMTAwMDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc3Nlc3MucmV0cmllcyA9IHRhcmdhZGRycy0+cmV0cnlDb3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGFyZ2V0X3Nlc3Npb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dDogJWQgLT4gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQ6ICVkIC0+ICVsZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPnRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc3Nlc3MudGltZW91dCkpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKaW5kZXggMDJlYmI3Mi4uOGEyZjBkMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYwpAQCAtMTIsMTIgKzEyLDEyIEBACiAjaW5jbHVkZSAidGFyZ2V0X2NvdW50ZXJzLmgiCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaD4KIAotc3RhdGljIG9pZCAgIHVuYXZhaWxhYmxlX2NvbnRleHRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA0IH07Ci1zdGF0aWMgb2lkICAgdW5rbm93bl9jb250ZXh0X29pZFtdICAgICA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEsIDUgfTsKLQogdm9pZAogaW5pdF90YXJnZXRfY291bnRlcnModm9pZCkKIHsKKyAgICBjb25zdCBvaWQgdW5hdmFpbGFibGVfY29udGV4dF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEsIDQgfTsKKyAgICBjb25zdCBvaWQgdW5rbm93bl9jb250ZXh0X29pZFtdICAgICA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEsIDUgfTsKKwogICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfY291bnRlcnMiLCAiaW5pdGlhbGl6aW5nXG4iKSk7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCmluZGV4IGE3ZGJmMGEuLmM0ODVjNGMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKQEAgLTIsNiArMiw4IEBACiAgKiB0ZXN0aGFuZGxlci5oIAogICovCiAKK2NvbmZpZ19leGNsdWRlKHRhcmdldC90YXJnZXRfY291bnRlcnMpCisKIHZvaWQgICAgICAgICAgICBpbml0X3RhcmdldF9jb3VudGVycyh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGdldF91bmF2YWlsYWJsZV9jb250ZXh0X2NvdW50OwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgZ2V0X3Vua25vd25fY29udGV4dF9jb3VudDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOGIyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jCkBAIC0wLDAgKzEsMjcgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlICJ0YXJnZXRfY291bnRlcnNfNV81LmgiCisKKyNpbmNsdWRlIDx1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmg+CisKK3ZvaWQKK2luaXRfdGFyZ2V0X2NvdW50ZXJzXzVfNSh2b2lkKQoreworICAgIG9pZCB0YXJnZXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxIH07CisKKyAgICBERUJVR01TR1RMKCgidGFyZ2V0X2NvdW50ZXJzIiwgImluaXRpYWxpemluZ1xuIikpOworCisgICAgTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUigKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAidGFyZ2V0X2NvdW50ZXJzIiwgTlVMTCwgdGFyZ2V0X29pZCwgT0lEX0xFTkdUSCh0YXJnZXRfb2lkKSwKKyAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwgNCwgVEFSR0VUKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmggYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiODEyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oCkBAIC0wLDAgKzEsNCBAQAorY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYykKK2NvbmZpZ19leGNsdWRlKHRhcmdldC90YXJnZXRfY291bnRlcnMpCisKK3ZvaWQgICAgICAgICAgICBpbml0X3RhcmdldF9jb3VudGVyc181XzUodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaCBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCmluZGV4IDUwMDMxNTcuLjFlYzM1ODggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCkBAIC0yMCw2ICsyMCw3IEBACiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eCkKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlKQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyKQogI2Vsc2UKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMKaW5kZXggOGVhMDgyYi4uMzc2Y2Y1YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMKQEAgLTExLDcgKzExLDcgQEAKIAogI2luY2x1ZGUgInRjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9jb25zdGFudHMuaCIKICNpbmNsdWRlICJ0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fcHJpdmF0ZS5oIgotCisjaW5jbHVkZSAibWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCIKIHN0YXRpYyBpbnQKIGxpbnV4X3N0YXRlc1sxMl0gPSB7IDEsIDUsIDMsIDQsIDYsIDcsIDExLCAxLCA4LCA5LCAyLCAxMCB9OwogCkBAIC04MSw3ICs4MSw3IEBACiAgICAgaW50IHJjID0gMDsKIAogICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLAotICAgICAgICAgICAgICAgICJ0Y3Bjb25uX2NvbnRhaW5lcl9hcmNoX2xvYWQgKGZsYWdzICVwKVxuIiwgbG9hZF9mbGFncykpOworICAgICAgICAgICAgICAgICJ0Y3Bjb25uX2NvbnRhaW5lcl9hcmNoX2xvYWQgKGZsYWdzICV4KVxuIiwgbG9hZF9mbGFncykpOwogCiAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3NfdGNwY29ublxuIik7CkBAIC0xMzUsMTYgKzEzNSwxOSBAQAogICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgewogICAgICAgICBuZXRzbm1wX3RjcGNvbm5fZW50cnkgKmVudHJ5OwogICAgICAgICBpbnQgICAgICAgICAgICAgc3RhdGUsIHJjLCBsb2NhbF9wb3J0LCByZW1vdGVfcG9ydCwgdG1wX3N0YXRlOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW5vZGU7CiAgICAgICAgIHNpemVfdCAgICAgICAgICBidWZfbGVuLCBvZmZzZXQ7CiAgICAgICAgIGNoYXIgICAgICAgICAgICBsb2NhbF9hZGRyWzEwXSwgcmVtb3RlX2FkZHJbMTBdOwogICAgICAgICB1X2NoYXIgICAgICAgICAqdG1wX3B0cjsKIAotICAgICAgICBpZiAoNSAhPSAocmMgPSBzc2NhbmYobGluZSwgIiUqZDogJThbMC05QS1aXToleCAlOFswLTlBLVpdOiV4ICV4IiwKKyAgICAgICAgaWYgKDYgIT0gKHJjID0gc3NjYW5mKGxpbmUsICIlKmQ6ICU4WzAtOUEtWl06JXggJThbMC05QS1aXToleCAleCAlKng6JSp4ICUqeDolKnggJSp4ICUqeCAlKnggJWxsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9hZGRyLCAmbG9jYWxfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9hZGRyLCAmcmVtb3RlX3BvcnQsICZ0bXBfc3RhdGUpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2FkZHIsICZyZW1vdGVfcG9ydCwgJnRtcF9zdGF0ZSwgJmlub2RlKSkpIHsKICAgICAgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsCi0gICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBwYXJzaW5nIGxpbmUgKCVkICE9IDUpXG4iLCByYykpOworICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgcGFyc2luZyBsaW5lICglZCAhPSA2KVxuIiwgcmMpKTsKICAgICAgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsIiBsaW5lICclcydcbiIsIGxpbmUpKTsKKwkgICAgc25tcF9sb2coTE9HX0VSUiwgInRjcDpfbG9hZDQ6IGJhZCBsaW5lIGluICIgUFJPQ0ZJTEUgIjogJXNcbiIsIGxpbmUpOworCSAgICByYyA9IDA7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsIiBsaW5lICclcydcbiIsIGxpbmUpKTsKQEAgLTE4MCw2ICsxODMsNyBAQAogICAgICAgICBlbnRyeS0+bG9jX3BvcnQgPSAodW5zaWduZWQgc2hvcnQpIGxvY2FsX3BvcnQ7CiAgICAgICAgIGVudHJ5LT5ybXRfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCkgcmVtb3RlX3BvcnQ7CiAgICAgICAgIGVudHJ5LT50Y3BDb25uU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgZW50cnktPnBpZCA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKICAgICAgICAgCiAgICAgICAgIC8qKiB0aGUgYWRkciBzdHJpbmcgbWF5IG5lZWQgd29yayAqLwogICAgICAgICBidWZfbGVuID0gc3RybGVuKGxvY2FsX2FkZHIpOwpAQCAtMjUzLDI4ICsyNTcsMTcgQEAKIHsKICAgICBpbnQgICAgICAgICAgICAgcmMgPSAwOwogICAgIEZJTEUgICAgICAgICAgICppbjsKLSAgICBjaGFyICAgICAgICAgICAgbGluZVsxODBdOwotICAgIHN0YXRpYyBpbnQgICAgICBsb2dfb3Blbl9lcnIgPSAxOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzM2MF07CiAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CiAKICN1bmRlZiBQUk9DRklMRQogI2RlZmluZSBQUk9DRklMRSAiL3Byb2MvbmV0L3RjcDYiCiAgICAgaWYgKCEoaW4gPSBmb3BlbihQUk9DRklMRSwgInIiKSkpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKLSAgICAgICAgaWYgKDEgPT0gbG9nX29wZW5fZXJyKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjb3VsZCBub3Qgb3BlbiAiIFBST0NGSUxFICJcbiIpOwotICAgICAgICAgICAgbG9nX29wZW5fZXJyID0gMDsKLSAgICAgICAgfQorICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0gICAgLyoKLSAgICAgKiBpZiB3ZSB0dXJuZWQgb2ZmIGxvZ2dpbmcgb2Ygb3BlbiBlcnJvcnMsIHR1cm4gaXQgYmFjayBvbiBub3cgdGhhdAotICAgICAqIHdlIGhhdmUgYmVlbiBhYmxlIHRvIG9wZW4gdGhlIGZpbGUuCi0gICAgICovCi0gICAgaWYgKDAgPT0gbG9nX29wZW5fZXJyKQotICAgICAgICBsb2dfb3Blbl9lcnIgPSAxOwotICAgIAorCiAgICAgZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbik7IC8qIHNraXAgaGVhZGVyICovCiAKICAgICAvKgpAQCAtMjg2LDE2ICsyNzksMTkgQEAKICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgbmV0c25tcF90Y3Bjb25uX2VudHJ5ICplbnRyeTsKICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXRlLCBsb2NhbF9wb3J0LCByZW1vdGVfcG9ydCwgdG1wX3N0YXRlOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgIGlub2RlOwogICAgICAgICBzaXplX3QgICAgICAgICAgYnVmX2xlbiwgb2Zmc2V0OwogICAgICAgICBjaGFyICAgICAgICAgICAgbG9jYWxfYWRkcls0OF0sIHJlbW90ZV9hZGRyWzQ4XTsKICAgICAgICAgdV9jaGFyICAgICAgICAgKnRtcF9wdHI7CiAKLSAgICAgICAgaWYgKDUgIT0gKHJjID0gc3NjYW5mKGxpbmUsICIlKmQ6ICU0N1swLTlBLVpdOiV4ICU0N1swLTlBLVpdOiV4ICV4IiwKKyAgICAgICAgaWYgKDYgIT0gKHJjID0gc3NjYW5mKGxpbmUsICIlKmQ6ICU0N1swLTlBLVpdOiV4ICU0N1swLTlBLVpdOiV4ICV4ICUqeDolKnggJSp4OiUqeCAlKnggJSp4ICUqeCAlbGx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2FkZHIsICZsb2NhbF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2FkZHIsICZyZW1vdGVfcG9ydCwgJnRtcF9zdGF0ZSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfYWRkciwgJnJlbW90ZV9wb3J0LCAmdG1wX3N0YXRlLCAmaW5vZGUpKSkgewogICAgICAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHBhcnNpbmcgbGluZSAoJWQgIT0gNSlcbiIsIHJjKSk7CisgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBwYXJzaW5nIGxpbmUgKCVkICE9IDYpXG4iLCByYykpOwogICAgICAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwiIGxpbmUgJyVzJ1xuIiwgbGluZSkpOworCSAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGNwOl9sb2FkNjogYmFkIGxpbmUgaW4gIiBQUk9DRklMRSAiOiAlc1xuIiwgbGluZSk7CisJICAgIHJjID0gMDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIERFQlVHTVNHVCgoInZlcmJvc2U6YWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwiIGxpbmUgJyVzJ1xuIiwgbGluZSkpOwpAQCAtMzMxLDYgKzMyNyw3IEBACiAgICAgICAgIGVudHJ5LT5sb2NfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCkgbG9jYWxfcG9ydDsKICAgICAgICAgZW50cnktPnJtdF9wb3J0ID0gKHVuc2lnbmVkIHNob3J0KSByZW1vdGVfcG9ydDsKICAgICAgICAgZW50cnktPnRjcENvbm5TdGF0ZSA9IHN0YXRlOworICAgICAgICBlbnRyeS0+cGlkID0gbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOwogCiAgICAgICAgIC8qKiB0aGUgYWRkciBzdHJpbmcgbWF5IG5lZWQgd29yayAqLwogICAgICAgICBidWZfbGVuID0gc3RybGVuKGxvY2FsX2FkZHIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuYwppbmRleCBlYjkwZjQwLi5mNWQwNTRmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAidGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZFtdID0geyBUQ1BDT05ORUNUSU9OVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkW10gPSB7IFRDUENPTk5FQ1RJT05UQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSCh0Y3BDb25uZWN0aW9uVGFibGVfb2lkKTsKIAogdGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbiB0Y3BDb25uZWN0aW9uVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmggYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuaAppbmRleCA5YTdiMjliLi4xN2QzMTA1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuaApAQCAtMzAxLDggKzMwMSw4IEBACiAgICAgICAgICogdGNwQ29ubmVjdGlvblRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAodGNwQ29ubmVjdGlvblRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAidGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA2NmM0MmI1Li5hNGY1YmJlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMTg3LDcgKzE4NywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5ybXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+cm10X2FkZHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5ybXRfcG9ydCkpKSB7Ci0gICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KSkgeworICAgICAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfREVCVUcsCisgICAgICAgICAgICAgICAgICAgICJFcnJvciBpbnNlcnRpbmcgZW50cnkgdG8gdGNwQ29ubmVjdGlvblRhYmxlLCJcCisgICAgICAgICAgICAgICAgICAgICIgZW50cnkgYWxyZWFkeSBleGlzdHMuIikpOworICAgICAgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyb3dyZXFfY3R4KSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igc2V0dGluZyBpbmRleCB3aGlsZSBsb2FkaW5nICIKQEAgLTI2MCw3ICsyNjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfVENQQ09OTl9GUkVFX0RPTlRfQ0xFQVIpOwogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTp0Y3BDb25uZWN0aW9uVGFibGU6dGNwQ29ubmVjdGlvblRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9sb2FkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYwppbmRleCAyYTZmZTdiLi5lYmQ2NzJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgInRjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZFtdID0geyBUQ1BMSVNURU5FUlRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIHRjcExpc3RlbmVyVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIHRjcExpc3RlbmVyVGFibGVfb2lkW10gPSB7IFRDUExJU1RFTkVSVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKHRjcExpc3RlbmVyVGFibGVfb2lkKTsKIAogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb24gdGNwTGlzdGVuZXJUYWJsZV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaAppbmRleCAwODk4ZjljLi4wOGE3NDFhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKQEAgLTE4Miw4ICsxODIsOCBAQAogICAgICAgICAqIHRjcExpc3RlbmVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KHRjcExpc3RlbmVyVGFibGVfbWliX2luZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJ0Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggMDUwM2ZiMy4uNGFhMTRmZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNTgsNyArMjU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1RDUENPTk5fRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6dGNwTGlzdGVuZXJUYWJsZTp0Y3BMaXN0ZW5lclRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGNwTGlzdGVuZXJUYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYyBiL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKaW5kZXggODA4NTljZS4uYzA4NjZkZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYworKysgYi9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCkBAIC03NCw2ICs3NCw4IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybjsKIAogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCBBU05fSU5URUdFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKQEAgLTEyMyw2ICsxMjUsOCBAQAogICAgICAqIGF1dG9tYXRpY2FsbHkgcGFyc2VkIGNvbHVtbiBhbmQgaW5kZXggaW5mb3JtYXRpb24gCiAgICAgICovCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisgICAgaWYgKHRhYmxlX2luZm8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwgMCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmMgYi9hZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmMKaW5kZXggY2ZiZWU0Ni4uY2Y2ZWVkYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYwpAQCAtNjIsOCArNjIsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAidHVubmVsLmgiCiAKICNpZm5kZWYgTUlOCkBAIC0xMzcsMzIgKzEzNywzNSBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTE9DQUxBRERSRVNTICAgICAgICAgIDEKLSAgICB7TE9DQUxBRERSRVNTLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgMX19LAorICAgIHtMT0NBTEFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCAxfX0sCiAjZGVmaW5lICAgUkVNT1RFQUREUkVTUyAgICAgICAgIDIKLSAgICB7UkVNT1RFQUREUkVTUywgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfdHVubmVsSWZFbnRyeSwgMywKLSAgICAgezEsIDEsIDJ9fSwKKyAgICB7UkVNT1RFQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDJ9fSwKICNkZWZpbmUgICBFTkNBUFNNRVRIT0QgICAgICAgICAgMwotICAgIHtFTkNBUFNNRVRIT0QsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCAzfX0sCisgICAge0VOQ0FQU01FVEhPRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDN9fSwKICNkZWZpbmUgICBIT1BMSU1JVCAgICAgICAgICAgICAgNAotICAgIHtIT1BMSU1JVCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA0fX0sCisgICAge0hPUExJTUlULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDR9fSwKICNkZWZpbmUgICBTRUNVUklUWSAgICAgICAgICAgICAgNQotICAgIHtTRUNVUklUWSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDV9fSwKKyAgICB7U0VDVVJJVFksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA1fX0sCiAjZGVmaW5lICAgVE9TICAgICAgICAgICAgICAgICAgIDYKLSAgICB7VE9TLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDZ9fSwKKyAgICB7VE9TLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDZ9fSwKIAogI2RlZmluZSAgIElGSU5ERVggICAgICAgICAgICAgICA3Ci0gICAge0lGSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3R1bm5lbENvbmZpZ0VudHJ5LCAzLCB7MiwgMSwgNX19LAorICAgIHtJRklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90dW5uZWxDb25maWdFbnRyeSwgMywgezIsIDEsIDV9fSwKICNkZWZpbmUgICBST1dTVEFUVVMgICAgICAgICAgICAgOAotICAgIHtST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl90dW5uZWxDb25maWdFbnRyeSwgMywgezIsIDEsIDZ9fSwKKyAgICB7Uk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHVubmVsQ29uZmlnRW50cnksIDMsIHsyLCAxLCA2fX0sCiB9OwogCiAKIAotZXh0ZXJuIGludCAgICAgIHJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCwgY29uc3QgY2hhciAqKTsKLWV4dGVybiBpbnQgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCk7Ci0KIHN0YXRpYyBvaWQgICAgICBzeXNPUlRhYmxlX3JlZ1tdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxMCwgMTMxIH07Ci1zdGF0aWMgc2l6ZV90ICAgc3lzT1JUYWJsZV9yZWdsZW4gPSA4OwogCiBzdGF0aWMgc3RydWN0IHR1bm5lbCAqdHVubmVsczsKIApAQCAtMTcxLDcgKzE3NCw3IEBACiB2b2lkCiBkZWluaXRfdHVubmVsKHZvaWQpCiB7Ci0gICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlKHN5c09SVGFibGVfcmVnLCBzeXNPUlRhYmxlX3JlZ2xlbik7CisgICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzeXNPUlRhYmxlX3JlZyk7CiB9CiAKIApAQCAtMTg4LDcgKzE5MSw3IEBACiB2b2lkCiBpbml0X3R1bm5lbCh2b2lkKQogewotICAgIHJlZ2lzdGVyX3N5c09SVGFibGUoc3lzT1JUYWJsZV9yZWcsIHN5c09SVGFibGVfcmVnbGVuLAorICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHN5c09SVGFibGVfcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgIlJGQyAyNjY3IFRVTk5FTC1NSUIgaW1wbGVtZW50YXRpb24gZm9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICJMaW51eCAyLjIueCBrZXJuZWxzLiIpOwogCkBAIC0yMTMsOCArMjE2LDggQEAKICAgICBvaWQgICAgICAgICAgICAgbmFtZVtNQVhfT0lEX0xFTl0gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDIsIDIsIDEsIDMgfTsKICAgICBzaXplX3QgICAgICAgICAgbGVuZ3RoID0gMTA7CiAgICAgc3RydWN0IHZhcmlhYmxlIGlmVHlwZV92YXJpYWJsZSA9Ci0gICAgICAgIHsgMywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMTAsCi0gICAgICAgIHsxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAzfQorICAgICAgICB7IDMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWZFbnRyeSwgMTAsIHsxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAzfQogICAgIH07CiAgICAgdW5zaWduZWQgY2hhciAgKnA7CiAgICAgc2l6ZV90ICAgICAgICAgIHZhcl9sZW47CkBAIC0yNTIsOCArMjU1LDggQEAKICAgICBvaWQgICAgICAgICAgICAgbmFtZVtNQVhfT0lEX0xFTl0gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDIsIDIsIDEsIDIgfTsKICAgICBzaXplX3QgICAgICAgICAgbGVuZ3RoID0gMTA7CiAgICAgc3RydWN0IHZhcmlhYmxlIGlmTmFtZV92YXJpYWJsZSA9Ci0gICAgICAgIHsgMiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMTAsCi0gICAgICAgIHsxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAyfQorICAgICAgICB7IDIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWZFbnRyeSwgMTAsIHsxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAyfQogICAgIH07CiAgICAgdW5zaWduZWQgY2hhciAgKnA7CiAgICAgc2l6ZV90ICAgICAgICAgIHZhcl9sZW47CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKaW5kZXggYmQ3ODRmYy4uNGQzYWZhOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYwpAQCAtNCw2ICs0LDEyIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorLyogd29ya2Fyb3VuZCBmb3IgYnVnIGluIGF1dG9jb25mIDIuNjBiIGFuZCAyLjYxICovCisjaWZkZWYgSEFWRV9HRVRNTlRFTlQKKyN1bmRlZiBIQVZFX0dFVE1OVEVOVAorI2RlZmluZSBIQVZFX0dFVE1OVEVOVCAxIC8qIHByZXZpb3VzbHkgbWlnaHQgYmUgb25seSAiI2RlZmluZSBIQVZFX0dFVE1OVEVOVCIgKi8KKyNlbmRpZgorCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2lmIEhBVkVfU1RETElCX0gKQEAgLTE0MCw3ICsxNDYsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAiZGlzay5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpZiBVU0lOR19VQ0RfU05NUF9FUlJPUk1JQl9NT0RVTEUKICNpbmNsdWRlICJlcnJvcm1pYi5oIgogI2Vsc2UKQEAgLTE3MCwxMCArMTc2LDggQEAKICAgICBpbnQgICAgICAgICAgICAgbWlucGVyY2VudDsKIH07CiAKLSNpZm5kZWYgIElOVDMyX01BWAotI2RlZmluZSAgSU5UMzJfTUFYICAweDdmZmZmZmZmCi0jZW5kaWYKLQorI2RlZmluZSBNQVhfSU5UXzMyIDB4N2ZmZmZmZmYKKyNkZWZpbmUgTUFYX1VJTlRfMzIgMHhmZmZmZmZmZgogCiB1bnNpZ25lZCBpbnQgICAgbnVtZGlza3M7CiBpbnQgICAgICAgICAgICAgYWxsRGlza3NJbmNsdWRlZCA9IDA7CkBAIC0xODEsMjMgKzE4NSw0MiBAQAogc3RydWN0IGRpc2twYXJ0ICpkaXNrczsKIAogc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX2Rpc2tfdmFyaWFibGVzW10gPSB7Ci0gIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7TUlCSU5ERVh9fSwKLSAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtFUlJPUk5BTUV9fSwKLSAge0RJU0tERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLAotICAge0RJU0tERVZJQ0V9fSwKLSAge0RJU0tNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsCi0gICB7RElTS01JTklNVU19fSwKLSAge0RJU0tNSU5QRVJDRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsCi0gICB7RElTS01JTlBFUkNFTlR9fSwKLSAge0RJU0tUT1RBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS1RPVEFMfX0sCi0gIHtESVNLQVZBSUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tBVkFJTH19LAotICB7RElTS1VTRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tVU0VEfX0sCi0gIHtESVNLUEVSQ0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLAotICAge0RJU0tQRVJDRU5UfX0sCi0gIHtESVNLUEVSQ0VOVE5PREUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwKLSAgIHtESVNLUEVSQ0VOVE5PREV9fSwKLSAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JGTEFHfX0sCi0gIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtFUlJPUk1TR319CisgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge01JQklOREVYfX0sCisgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9STkFNRX19LAorICB7RElTS0RFVklDRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS0RFVklDRX19LAorICB7RElTS01JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLTUlOSU1VTX19LAorICB7RElTS01JTlBFUkNFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLTUlOUEVSQ0VOVH19LAorICB7RElTS1RPVEFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS1RPVEFMfX0sCisgIHtESVNLQVZBSUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUx9fSwKKyAge0RJU0tVU0VELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS1VTRUR9fSwKKyAge0RJU0tQRVJDRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS1BFUkNFTlR9fSwKKyAge0RJU0tQRVJDRU5UTk9ERSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tQRVJDRU5UTk9ERX19LAorICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JGTEFHfX0sCisgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JNU0d9fSwKKyAgIHtESVNLVE9UQUxMT1csIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tUT1RBTExPV319LAorICAge0RJU0tUT1RBTEhJR0gsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tUT1RBTEhJR0h9fSwKKyAgIHtESVNLQVZBSUxMT1csIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tBVkFJTExPV319LAorICAge0RJU0tBVkFJTEhJR0gsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tBVkFJTEhJR0h9fSwKKyAgIHtESVNLVVNFRExPVywgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS1VTRURMT1d9fSwKKyAgIHtESVNLVVNFREhJR0gsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tVU0VESElHSH19LAogfTsKIAogLyoKQEAgLTI0Myw3ICsyNjYsNiBAQAogZGlza19wYXJzZV9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7CiAjaWYgSEFWRV9GU1RBQl9IIHx8IEhBVkVfR0VUTU5URU5UIHx8IEhBVkVfU1RBVEZTCi0gIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CiAgIGNoYXIgICAgICAgICAgICBwYXRoW1NUUk1BWF07CiAgIGludCAgICAgICAgICAgICBtaW5wZXJjZW50OwogICBpbnQgICAgICAgICAgICAgbWluc3BhY2U7CkBAIC0yNTQsOSArMjc2LDcgQEAKICAgICAgICAgICBkaXNrcyA9IG1hbGxvYyhtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbXNldChkaXNrcywgMCwgbWF4ZGlza3MgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CkBAIC0yNjUsOSArMjg1LDcgQEAKICAgICAgICAgICBkaXNrcyA9IHJlYWxsb2MoZGlza3MsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwogICAgICAgICAgIGlmICghZGlza3MpIHsKICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigibWFsbG9jIGZhaWxlZCBmb3IgbmV3IGRpc2sgYWxsb2NhdGlvbi4iKTsKLSAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwotICAgICAgICAgICAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwkgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiXHRpZ25vcmluZzogICVzIiwgY3B0cik7CiAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICB9CiAgICAgICAgICAgbWVtc2V0KGRpc2tzICsgbWF4ZGlza3MvMiwgMCwgbWF4ZGlza3MvMiAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKQEAgLTI4NSw3ICszMDMsNyBAQAogICAgKiByZWFkIG9wdGlvbmFsIG1pbmltdW0gZGlzayB1c2FnZSBzcGVjIAogICAgKi8KICAgaWYoY3B0ciAhPSBOVUxMKSB7Ci0gICAgICBpZihzdHJjaHIoY3B0ciwgJyUnKSA9PSAwKSB7CisgICAgICBpZihzdHJjaHIoY3B0ciwgJyUnKSA9PSBOVUxMKSB7CiAgICAgICAgICAgbWluc3BhY2UgPSBhdG9pKGNwdHIpOwogICAgICAgICAgIG1pbnBlcmNlbnQgPSAtMTsKICAgICAgIH0KQEAgLTMxMCw3ICszMjgsNiBAQAogZGlza19wYXJzZV9jb25maWdfYWxsKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogI2lmIEhBVkVfRlNUQUJfSCB8fCBIQVZFX0dFVE1OVEVOVCB8fCBIQVZFX1NUQVRGUwotICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwogICBpbnQgICAgICAgICAgICAgbWlucGVyY2VudCA9IERJU0tNSU5QRVJDRU5UOwogICAgIAogICBpZiAobnVtZGlza3MgPT0gbWF4ZGlza3MpIHsKQEAgLTMxOSw4ICszMzYsNyBAQAogICAgICAgICAgIGRpc2tzID0gbWFsbG9jKG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwogICAgICAgICAgIGlmICghZGlza3MpIHsKICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigibWFsbG9jIGZhaWxlZCBmb3IgbmV3IGRpc2sgYWxsb2NhdGlvbi4iKTsKLSAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbXNldChkaXNrcywgMCwgbWF4ZGlza3MgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CkBAIC0zMjksOCArMzQ1LDcgQEAKICAgICAgICAgICBkaXNrcyA9IHJlYWxsb2MoZGlza3MsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwogICAgICAgICAgIGlmICghZGlza3MpIHsKICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigibWFsbG9jIGZhaWxlZCBmb3IgbmV3IGRpc2sgYWxsb2NhdGlvbi4iKTsKLSAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbXNldChkaXNrcyArIG1heGRpc2tzLzIsIDAsIG1heGRpc2tzLzIgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CkBAIC0zNDAsNyArMzU1LDcgQEAKICAgICogcmVhZCB0aGUgbWluaW11bSBkaXNrIHVzYWdlIHBlcmNlbnQKICAgICovCiAgIGlmKGNwdHIgIT0gTlVMTCkgewotICAgICAgaWYoc3RyY2hyKGNwdHIsICclJykgIT0gMCkgeworICAgICAgaWYoc3RyY2hyKGNwdHIsICclJykgIT0gTlVMTCkgewogICAgICAgICAgIG1pbnBlcmNlbnQgPSBhdG9pKGNwdHIpOwogICAgICAgfQogICB9CkBAIC0zNTIsOCArMzY3LDcgQEAKICAgICovCiAgIGlmKGFsbERpc2tzSW5jbHVkZWQpIHsKICAgICAgIGNvbmZpZ19wZXJyb3IoImluY2x1ZGVBbGxEaXNrcyBhbHJlYWR5IHNwZWNpZmllZC4iKTsKLSAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiBpbmNsdWRlQWxsRGlza3MgJXMiLCBjcHRyKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiBpbmNsdWRlQWxsRGlza3MgJXMiLCBjcHRyKTsKICAgfQogICBlbHNlIHsKICAgICAgIGFsbERpc2tzSW5jbHVkZWQgPSAxOwpAQCAtMzc4LDEwICszOTIsNyBAQAogICAgICAgICAgIG1heGRpc2tzID0gNTA7CiAgICAgICAgICAgZGlza3MgPSBtYWxsb2MobWF4ZGlza3MgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CiAgICAgICAgICAgaWYgKCFkaXNrcykgewotICAgICAgICAgICAgICBjaGFyIHRtcGJ1ZlsxMDI0XTsKLSAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIlx0aWdub3Jpbmc6ICAlcyIsIGRldmljZSk7Ci0gICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBkZXZpY2UpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbXNldChkaXNrcywgMCwgbWF4ZGlza3MgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CkBAIC0zODksMTEgKzQwMCw4IEBACiAgICAgICAgICAgbWF4ZGlza3MgKj0gMjsKICAgICAgICAgICBkaXNrcyA9IHJlYWxsb2MoZGlza3MsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwogICAgICAgICAgIGlmICghZGlza3MpIHsKLSAgICAgICAgICAgICAgY2hhciB0bXBidWZbMTAyNF07CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBkZXZpY2UpOwotICAgICAgICAgICAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwkgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiXHRpZ25vcmluZzogICVzIiwgZGV2aWNlKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MgKyBtYXhkaXNrcy8yLCAwLCBtYXhkaXNrcy8yICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtNDY0LDcgKzQ3Miw3IEBACiAjaWYgZGVmaW5lZChIQVZFX0dFVE1OVEVOVCkgfHwgZGVmaW5lZChIQVZFX0ZTVEFCX0gpCiAgIGludCBkdW1teSA9IDA7CiAjZW5kaWYKLSAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKKwogICAvKiAKICAgICogZmluZCB0aGUgZGV2aWNlIGZvciB0aGUgcGF0aCBhbmQgY29weSB0aGUgZGV2aWNlIGludG8gdGhlCiAgICAqIHN0cmluZyBkZWNsYXJlZCBhYm92ZSBhbmQgYXQgdGhlIGVuZCBvZiB0aGUgcm91dGluZSByZXR1cm4gaXQKQEAgLTQ3NSw4ICs0ODMsNyBAQAogI2lmIEhBVkVfU0VUTU5URU5UCiAgIG1udGZwID0gc2V0bW50ZW50KEVUQ19NTlRUQUIsICJyIik7CiAgIGlmICghbW50ZnApIHsKLSAgICAgIHNucHJpbnRmKCB0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ2FuJ3Qgb3BlbiAlcyAoc2V0bW50ZW50KVxuIiwgRVRDX01OVFRBQiApOwotICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkNhbid0IG9wZW4gJXMgKHNldG1udGVudClcbiIsIEVUQ19NTlRUQUIpOwogICAgICAgcmV0dXJuOwogICB9CiAgIHdoaWxlIChtbnRmcCAmJiBOVUxMICE9IChtbnRlbnQgPSBnZXRtbnRlbnQobW50ZnApKSkgewpAQCAtNDkzLDggKzUwMCw3IEBACiAjZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldG1lbnRlbnQgYnV0IG5vdCBzZXRtbnRlbnQgKi8KICAgbW50ZnAgPSBmb3BlbihFVENfTU5UVEFCLCAiciIpOwogICBpZiAoIW1udGZwKSB7Ci0gICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbid0IG9wZW4gJXMgKGZvcGVuKVxuIiwgRVRDX01OVFRBQiApOwotICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkNhbid0IG9wZW4gJXMgKGZvcGVuKVxuIiwgRVRDX01OVFRBQik7CiAgICAgICByZXR1cm47CiAgIH0KICAgd2hpbGUgKChpID0gZ2V0bW50ZW50KG1udGZwLCAmbW50dGFiKSkgPT0gMCkgewpAQCAtNTQ1LDExICs1NTEsOCBAQAogICAgIGlmIChudW1kaXNrcyA9PSBtYXhkaXNrcykgewogICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLAotICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIGRldmljZSBmb3IgZGlzayAlcyIsCi0gICAgICAgICAgICAgZGlza3NbbnVtZGlza3NdLnBhdGgpOwotICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICBjb25maWdfcHdhcm4odG1wYnVmKTsKKyAgICBuZXRzbm1wX2NvbmZpZ193YXJuKCJDb3VsZG4ndCBmaW5kIGRldmljZSBmb3IgZGlzayAlcyIsCisJCQlkaXNrc1tudW1kaXNrc10ucGF0aCk7CiAgICAgZGlza3NbbnVtZGlza3NdLm1pbmltdW1zcGFjZSA9IC0xOwogICAgIGRpc2tzW251bWRpc2tzXS5taW5wZXJjZW50ID0gLTE7CiAgICAgZGlza3NbbnVtZGlza3NdLnBhdGhbMF0gPSAwOwpAQCAtNTc2LDcgKzU3OSw2IEBACiAjZWxpZiBIQVZFX1NUQVRGUwogICBzdHJ1Y3Qgc3RhdGZzICAgc3RhdGY7CiAjZW5kaWYKLSAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKICAgc3RhdGljIGNoYXIgICAgIGRldmljZVtTVFJNQVhdOwogI2lmIGRlZmluZWQoSEFWRV9HRVRNTlRFTlQpICYmICFkZWZpbmVkKEhBVkVfU0VUTU5URU5UKQogICBpbnQgICAgICAgICAgICAgaTsKQEAgLTU5NCw4ICs1OTYsNyBAQAogI2lmIEhBVkVfU0VUTU5URU5UCiAgIG1udGZwID0gc2V0bW50ZW50KEVUQ19NTlRUQUIsICJyIik7CiAgIGlmICghbW50ZnApIHsKLSAgICAgIHNucHJpbnRmKCB0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ2FuJ3Qgb3BlbiAlcyAoc2V0bW50ZW50KVxuIiwgRVRDX01OVFRBQiApOwotICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkNhbid0IG9wZW4gJXMgKHNldG1udGVudClcbiIsIEVUQ19NTlRUQUIpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KICAgd2hpbGUgKG1udGZwICYmIE5VTEwgIT0gKG1udGVudCA9IGdldG1udGVudChtbnRmcCkpKQpAQCAtNjEzLDggKzYxNCw3IEBACiAjZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldG1lbnRlbnQgYnV0IG5vdCBzZXRtbnRlbnQgKi8KICAgbW50ZnAgPSBmb3BlbihFVENfTU5UVEFCLCAiciIpOwogICBpZiAoIW1udGZwKSB7Ci0gICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbid0IG9wZW4gJXMgKGZvcGVuKVxuIiwgRVRDX01OVFRBQiApOwotICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkNhbid0IG9wZW4gJXMgKGZvcGVuKVxuIiwgRVRDX01OVFRBQik7CiAgICAgICByZXR1cm4gTlVMTDsKICAgfQogICB3aGlsZSAoKGkgPSBnZXRtbnRlbnQobW50ZnAsICZtbnR0YWIpKSA9PSAwKQpAQCAtNjQ4LDkgKzY0OCw3IEBACiAgIH0KICNlbmRpZgogICBlbHNlIHsKLSAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLAotCSAgICBwYXRoKTsKLSAgICBjb25maWdfcHdhcm4odG1wYnVmKTsKKyAgICBuZXRzbm1wX2NvbmZpZ193YXJuKCJDb3VsZG4ndCBmaW5kIGRldmljZSBmb3IgZGlzayAlcyIsIHBhdGgpOwogICB9CiAjZWxzZQogICBjb25maWdfcGVycm9yKCInZGlzaycgY2hlY2tzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBhcmNoaXRlY3R1cmUuIik7CkBAIC02NTksMzkgKzY1NywzMyBAQAogfQogI2VuZGlmCiAKLQogLyoKLSAqIHZhcl9leHRlbnNpYmxlX2Rpc2soLi4uCi0gKiBBcmd1bWVudHM6Ci0gKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQotICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAotICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCi0gKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAotICogd3JpdGVfbWV0aG9kCi0gKiAKKyAqIFBhcnQgb2YgVUNELVNOTVAtTUlCOjpkc2tFbnRyeSwgd2hpY2ggaXMgc28gaGFyZCB0byBmaWxsIAorICogKGkuZS4gcGxhdGZvcm0gZGVwZW5kZW50IHBhcnRzKS4KICAqLwotdV9jaGFyICAgICAgICAgKgotdmFyX2V4dGVuc2libGVfZGlzayhzdHJ1Y3QgdmFyaWFibGUgKnZwLAotICAgICAgICAgICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoteworc3RydWN0IGRza19lbnRyeSB7CisgICAgdW5zaWduZWQgbG9uZyBsb25nICBkc2tUb3RhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgIGRza1VzZWQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nICBkc2tBdmFpbDsKKyAgICB1bnNpZ25lZCBsb25nICAgICAgIGRza1BlcmNlbnQ7CisgICAgdW5zaWduZWQgbG9uZyAgICAgICBkc2tQZXJjZW50SW5vZGU7CisgICAgdW5zaWduZWQgbG9uZyAgICAgICBkc2tFcnJvckZsYWc7Cit9OwogCi0gICAgaW50ICAgICAgICAgICAgIHBlcmNlbnQsIGlzZXJyb3I7Ci0gICAgdW5zaWduZWQgaW50ICAgIGRpc2tudW0gPSAwOwotI2lmICFkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkgJiYgIWRlZmluZWQoSEFWRV9TVEFURlMpCi0gICAgZG91YmxlICAgICAgICAgIHRvdGFsYmxrcywgZnJlZSwgdXNlZCwgYXZhaWwsIGF2YWlsYmxrczsKLSNlbHNlCi0gICAgc3RhdGljIGxvbmcgICAgIGF2YWlsOwotI2lmIGRlZmluZWQoU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRklMRVMpIHx8IGRlZmluZWQoU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUykKLSAgICBpbnQgICAgICAgICAgICAgcGVyY2VudF9pbm9kZTsKLSNlbmRpZgotI2VuZGlmCi0gICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwotICAgIHN0YXRpYyBjaGFyICAgICBlcnJtc2dbMzAwXTsKKy8qKgorICogRmlsbCBpbiB0aGUgcHJvdmlkZWQgZHNrX2VudHJ5IHN0cnVjdHVyZS4KKyAqIFJldHVybnMgLTEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4KKyAqLworCitzdGF0aWMgaW50CitmaWxsX2Rza19lbnRyeShpbnQgZGlza251bSwgc3RydWN0IGRza19lbnRyeSAqZW50cnkpCit7CisjaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpIHx8IGRlZmluZWQoSEFWRV9TVEFURlMpCiAgICAgZmxvYXQgICAgICAgICAgIG11bHRpcGxpZXI7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfRlNUQUJfSCkgJiYgIWRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSAmJiAhZGVmaW5lZChIQVZFX1NUQVRGUykKKyAgICBkb3VibGUgICAgICAgICAgdG90YWxibGtzLCBmcmVlLCB1c2VkLCBhdmFpbCwgYXZhaWxibGtzOworI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgfHwgZGVmaW5lZChIQVZFX1NUQVRGUykKICNpZmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCkBAIC03MTMsNiArNzA1LDEzMiBAQAogI2VuZGlmCiAjZW5kaWYKIAorICAgIGVudHJ5LT5kc2tQZXJjZW50SW5vZGUgPSAtMTsKKworI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSB8fCBkZWZpbmVkKEhBVkVfU1RBVEZTKQorI2lmZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKKyAgICBpZiAoc3RhdHZmcyhkaXNrc1tkaXNrbnVtXS5wYXRoLCAmZnNkKSA9PSAtMSkKKyNlbHNlCisgICAgaWYgKHN0YXR2ZnMoZGlza3NbZGlza251bV0ucGF0aCwgJnZmcykgPT0gLTEpCisjZW5kaWYKKyAgICB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBvcGVuIGRldmljZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0uZGV2aWNlKTsKKyAgICAgICAgc2V0UGVycm9yc3RhdHVzKCJzdGF0dmZzIGRldi9kaXNrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgU1RBVF9TVEFURlNfRlNfREFUQQorICAgIHZmcy5mX2Jsb2NrcyA9IGZzZC5mZF9idG90OworICAgIHZmcy5mX2JmcmVlID0gZnNkLmZkX2JmcmVlOworICAgIHZmcy5mX2JhdmFpbCA9IGZzZC5mZF9iZnJlZW47CisgICAgdmZzLmZfYnNpemUgPSAxMDI0OyAgICAgICAgIC8qICBVbHRyaXggZl9ic2l6ZSBpcyBhIFZNIHBhcmFtZXRlciBhcHBhcmVudGx5LiAgKi8KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9PRFMpCisgICAgdmZzLmZfYmxvY2tzID0gdmZzLmZfc3BhcmVbMF07CisgICAgdmZzLmZfYmZyZWUgPSB2ZnMuZl9zcGFyZVsxXTsKKyAgICB2ZnMuZl9iYXZhaWwgPSB2ZnMuZl9zcGFyZVsyXTsKKyNlbmRpZgorCisgICAgbXVsdGlwbGllciA9IChmbG9hdCl2ZnMuZl9ic2l6ZSAvIChmbG9hdCkxMDI0LjA7CisjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZSU0laRQorICAgIGlmICh2ZnMuZl9mcnNpemUgPiAyNTUpCisgICAgICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpdmZzLmZfZnJzaXplIC8gKGZsb2F0KTEwMjQuMDsKKyNlbmRpZgorCisgICAgZW50cnktPmRza1RvdGFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykodmZzLmZfYmxvY2tzICogbXVsdGlwbGllcik7CisgICAgZW50cnktPmRza0F2YWlsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykodmZzLmZfYmF2YWlsICogbXVsdGlwbGllcik7CisgICAgZW50cnktPmRza1VzZWQgPSAodW5zaWduZWQgbG9uZyBsb25nKSgodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpICogbXVsdGlwbGllcik7CisKKyAgICBlbnRyeS0+ZHNrUGVyY2VudCA9IAorICAgICAgICB2ZnMuZl9ibG9ja3MgPT0gMCA/IDAgOgorICAgICAgICB2ZnMuZl9iYXZhaWwgPD0gMCA/IDEwMCA6CisgICAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpIC8KKyAgICAgICAgICAgICAgIChkb3VibGUpICh2ZnMuZl9ibG9ja3MgLQorICAgICAgICAgICAgICAgICAgICAgICAgICh2ZnMuZl9iZnJlZSAtIHZmcy5mX2JhdmFpbCkpICogMTAwLjAgKyAwLjUpOworCisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRklMRVMpIHx8IGRlZmluZWQgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkFWQUlMCisgICAgZW50cnktPmRza1BlcmNlbnRJbm9kZSA9IHZmcy5mX2ZhdmFpbCA8PSAwID8gMTAwIDoKKyAgICAgICAgKGludCkgKChkb3VibGUpICh2ZnMuZl9maWxlcyAtIHZmcy5mX2ZmcmVlKSAvCisgICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfZmlsZXMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICh2ZnMuZl9mZnJlZSAtIHZmcy5mX2ZhdmFpbCkpICogMTAwLjAgKyAwLjUpOworI2Vsc2UKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZJTEVTKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFKQorICAgIGVudHJ5LT5kc2tQZXJjZW50SW5vZGUgPSB2ZnMuZl9maWxlcyA9PSAwID8gMTAwLjAgOgorICAgICAgKGludCkgKChkb3VibGUpICh2ZnMuZl9maWxlcyAtIHZmcy5mX2ZmcmVlKSAvCisgICAgICAgICAgICAgIChkb3VibGUpICh2ZnMuZl9maWxlcykgKiAxMDAuMCArIDAuNSk7CisjZW5kaWYgCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRklMRVMpICovCisKKyNlbHNlCisjaWYgSEFWRV9GU1RBQl9ICisgICAgLyoKKyAgICAgKiByZWFkIHRoZSBkaXNrIGluZm9ybWF0aW9uIAorICAgICAqLworICAgIGlmICgoZmlsZSA9IG9wZW4oZGlza3NbZGlza251bV0uZGV2aWNlLCAwKSkgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBvcGVuIGRldmljZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0uZGV2aWNlKTsKKyAgICAgICAgc2V0UGVycm9yc3RhdHVzKCJvcGVuIGRldi9kaXNrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbHNlZWsoZmlsZSwgKGxvbmcpIChTQkxPQ0sgKiBERVZfQlNJWkUpLCAwKTsKKyAgICBpZiAocmVhZChmaWxlLCAoY2hhciAqKSAmZmlsZXN5cywgU0JTSVpFKSAhPSBTQlNJWkUpIHsKKyAgICAgICAgc2V0UGVycm9yc3RhdHVzKCJvcGVuIGRldi9kaXNrIik7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJFcnJvciByZWFkaW5nIGRldmljZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0uZGV2aWNlKTsKKyAgICAgICAgY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgY2xvc2UoZmlsZSk7CisKKyAgICB0b3RhbGJsa3MgPSBmaWxlc3lzLmZzX2RzaXplOworICAgIGZyZWUgPSBmaWxlc3lzLmZzX2NzdG90YWwuY3NfbmJmcmVlICogZmlsZXN5cy5mc19mcmFnICsKKyAgICAgICAgZmlsZXN5cy5mc19jc3RvdGFsLmNzX25mZnJlZTsKKyAgICB1c2VkID0gdG90YWxibGtzIC0gZnJlZTsKKyAgICBhdmFpbGJsa3MgPSB0b3RhbGJsa3MgKiAoMTAwIC0gZmlsZXN5cy5mc19taW5mcmVlKSAvIDEwMDsKKyAgICBhdmFpbCA9IGF2YWlsYmxrcyA+IHVzZWQgPyBhdmFpbGJsa3MgLSB1c2VkIDogMDsKKyAgICBlbnRyeS0+ZHNrUGVyY2VudCA9CisgICAgICAgIHRvdGFsYmxrcyA9PSAwID8gMCA6CisgICAgICAgIGF2YWlsYmxrcyA9PSAwID8gMTAwIDoKKyAgICAgICAgKGludCkgKChkb3VibGUpIHVzZWQgLyAoZG91YmxlKSB0b3RhbGJsa3MgKiAxMDAuMCArIDAuNSk7CisgICAgbXVsdGlwbGllciA9IChmbG9hdClmaWxlc3lzLmZzX2ZzaXplIC8gKGZsb2F0KTEwMjQuMDsKKyAgICBlbnRyeS0+ZHNrVG90YWwgPSAodW5zaWduZWQgbG9uZyBsb25nKSh0b3RhbGJsa3MgKiBtdWx0aXBsaWVyKTsKKyAgICBlbnRyeS0+ZHNrQXZhaWwgPSAodW5zaWduZWQgbG9uZyBsb25nKShhdmFpbCAqIG11bHRpcGxpZXIpOworICAgIGVudHJ5LT5kc2tVc2VkID0gKHVuc2lnbmVkIGxvbmcgbG9uZykodXNlZCAqIG11bHRpcGxpZXIpOworI2VuZGlmCisjZW5kaWYKKworICAgIGVudHJ5LT5kc2tFcnJvckZsYWcgPQorICAgICAgICAoZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlID49IDAKKyAgICAgICAgICAgID8gZW50cnktPmRza0F2YWlsIDwgZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlCisgICAgICAgICAgICA6IDEwMCAtIGVudHJ5LT5kc2tQZXJjZW50IDw9IGRpc2tzW2Rpc2tudW1dLm1pbnBlcmNlbnQpID8gMSA6IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHZhcl9leHRlbnNpYmxlX2Rpc2soLi4uCisgKiBBcmd1bWVudHM6CisgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQorICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCisgKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAorICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCisgKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAorICogd3JpdGVfbWV0aG9kCisgKiAKKyAqLwordV9jaGFyICAgICAgICAgKgordmFyX2V4dGVuc2libGVfZGlzayhzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIGludCAgICAgICAgICAgICByZXQ7CisJdW5zaWduZWQgaW50CWRpc2tudW0gPSAwOworICAgIHN0cnVjdCBkc2tfZW50cnkgZW50cnk7CisgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OworICAgIHN0YXRpYyBjaGFyICAgICBlcnJtc2dbMzAwXTsKKwogdHJ5QWdhaW46CiAgICAgaWYgKGhlYWRlcl9zaW1wbGVfdGFibGUKICAgICAgICAgKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QsIG51bWRpc2tzKSkKQEAgLTczNywxODkgKzg1NSw4NiBAQAogICAgICAgICBsb25nX3JldCA9IGRpc2tzW2Rpc2tudW1dLm1pbnBlcmNlbnQ7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CiAgICAgfQotI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSB8fCBkZWZpbmVkKEhBVkVfU1RBVEZTKQotI2lmZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKLSAgICBpZiAoc3RhdHZmcyhkaXNrc1tkaXNrbnVtXS5wYXRoLCAmZnNkKSA9PSAtMSkKLSNlbHNlCi0gICAgaWYgKHN0YXR2ZnMoZGlza3NbZGlza251bV0ucGF0aCwgJnZmcykgPT0gLTEpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBvcGVuIGRldmljZSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0uZGV2aWNlKTsKLSAgICAgICAgc2V0UGVycm9yc3RhdHVzKCJzdGF0dmZzIGRldi9kaXNrIik7CisKKyAgICByZXQgPSBmaWxsX2Rza19lbnRyeShkaXNrbnVtLCAmZW50cnkpOworICAgIGlmIChyZXQgPCAwKSB7CiAgICAgICAgIGlmICghZXhhY3QpCiAgICAgICAgICAgICBnb3RvIHRyeUFnYWluOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0jaWZkZWYgU1RBVF9TVEFURlNfRlNfREFUQQotICAgIHZmcy5mX2Jsb2NrcyA9IGZzZC5mZF9idG90OwotICAgIHZmcy5mX2JmcmVlID0gZnNkLmZkX2JmcmVlOwotICAgIHZmcy5mX2JhdmFpbCA9IGZzZC5mZF9iZnJlZW47Ci0gICAgdmZzLmZfYnNpemUgPSAxMDI0OyAgICAgICAgIC8qICBVbHRyaXggZl9ic2l6ZSBpcyBhIFZNIHBhcmFtZXRlciBhcHBhcmVudGx5LiAgKi8KLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9PRFMpCi0gICAgdmZzLmZfYmxvY2tzID0gdmZzLmZfc3BhcmVbMF07Ci0gICAgdmZzLmZfYmZyZWUgPSB2ZnMuZl9zcGFyZVsxXTsKLSAgICB2ZnMuZl9iYXZhaWwgPSB2ZnMuZl9zcGFyZVsyXTsKLSNlbmRpZgotICAgIHBlcmNlbnQgPQotICAgICAgICB2ZnMuZl9ibG9ja3MgPT0gMCA/IDAgOgotICAgICAgICB2ZnMuZl9iYXZhaWwgPD0gMCA/IDEwMCA6Ci0gICAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpIC8KLSAgICAgICAgICAgICAgIChkb3VibGUpICh2ZnMuZl9ibG9ja3MgLQotICAgICAgICAgICAgICAgICAgICAgICAgICh2ZnMuZl9iZnJlZSAtIHZmcy5mX2JhdmFpbCkpICogMTAwLjAgKyAwLjUpOwotICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpdmZzLmZfYnNpemUgLyAoZmxvYXQpMTAyNC4wOwotI2lmZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRQotICAgIGlmICh2ZnMuZl9mcnNpemUgPiAyNTUpCi0gICAgICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpdmZzLmZfZnJzaXplIC8gKGZsb2F0KTEwMjQuMDsKLSNlbmRpZgotICAgIGF2YWlsID0gKGxvbmcpKHZmcy5mX2JhdmFpbCAqIG11bHRpcGxpZXIpOwotICAgIGlzZXJyb3IgPSAoZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlID49IDAgPwotICAgICAgICAgICAgICAgdmZzLmZfYmF2YWlsIDwgKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZS9tdWx0aXBsaWVyKSA6Ci0gICAgICAgICAgICAgICAxMDAgLSBwZXJjZW50IDw9IGRpc2tzW2Rpc2tudW1dLm1pbnBlcmNlbnQpID8gMSA6IDA7Ci0jaWYgZGVmaW5lZChTVFJVQ1RfU1RBVFZGU19IQVNfRl9GSUxFUykgfHwgZGVmaW5lZCBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZBVkFJTAotICAgIHBlcmNlbnRfaW5vZGUgPSB2ZnMuZl9mYXZhaWwgPD0gMCA/IDEwMCA6Ci0gICAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfZmlsZXMgLSB2ZnMuZl9mZnJlZSkgLwotICAgICAgICAgICAgICAgKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfZmZyZWUgLSB2ZnMuZl9mYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKLSNlbHNlCi0jaWYgZGVmaW5lZChTVFJVQ1RfU1RBVEZTX0hBU19GX0ZJTEVTKSAmJiBkZWZpbmVkKFNUUlVDVF9TVEFURlNfSEFTX0ZfRkZSRUUpCi0gICBwZXJjZW50X2lub2RlID0gdmZzLmZfZmlsZXMgPT0gMCA/IDEwMC4wIDoKLSAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfZmlsZXMgLSB2ZnMuZl9mZnJlZSkgLwotCSAgICAgICAgICAoZG91YmxlKSAodmZzLmZfZmlsZXMpICogMTAwLjAgKyAwLjUpOwotI2VuZGlmIAotI2VuZGlmIC8qIGRlZmluZWQoU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRklMRVMpICovIAorCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIERJU0tUT1RBTDoKLSAgICAgICAgaWYgKCB2ZnMuZl9ibG9ja3MgPiAoIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOworICAgICAgICBpZiAoZW50cnkuZHNrVG90YWwgPiBNQVhfSU5UXzMyKQorICAgICAgICAgICAgbG9uZ19yZXQgPSBNQVhfSU5UXzMyOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKSh2ZnMuZl9ibG9ja3MgKiBtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKGVudHJ5LmRza1RvdGFsKTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tUT1RBTExPVzoKKyAgICAgICAgbG9uZ19yZXQgPSBlbnRyeS5kc2tUb3RhbCAmIE1BWF9VSU5UXzMyOworICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworICAgIGNhc2UgRElTS1RPVEFMSElHSDoKKyAgICAgICAgbG9uZ19yZXQgPSBlbnRyeS5kc2tUb3RhbCA+PiAzMjsKKyAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICAgICAgCiAgICAgY2FzZSBESVNLQVZBSUw6Ci0gICAgICAgIGlmICggdmZzLmZfYmF2YWlsID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKKyAgICAgICAgaWYgKGVudHJ5LmRza0F2YWlsID4gTUFYX0lOVF8zMikKKyAgICAgICAgICAgIGxvbmdfcmV0ID0gTUFYX0lOVF8zMjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykodmZzLmZfYmF2YWlsICogbXVsdGlwbGllcik7CisgICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShlbnRyeS5kc2tBdmFpbCk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgY2FzZSBESVNLQVZBSUxMT1c6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrQXZhaWwgJiBNQVhfVUlOVF8zMjsKKyAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tBVkFJTEhJR0g6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrQXZhaWwgPj4gMzI7CisgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisKICAgICBjYXNlIERJU0tVU0VEOgotICAgICAgICBpZiAoICh2ZnMuZl9ibG9ja3MgLSB2ZnMuZl9iZnJlZSkgPiAoIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOworICAgICAgICBpZiAoZW50cnkuZHNrVXNlZCA+IE1BWF9JTlRfMzIpCisgICAgICAgICAgICBsb25nX3JldCA9IE1BWF9JTlRfMzI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKCh2ZnMuZl9ibG9ja3MgLSB2ZnMuZl9iZnJlZSkgKiBtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKGVudHJ5LmRza1VzZWQpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworICAgIGNhc2UgRElTS1VTRURMT1c6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrVXNlZCAmIE1BWF9VSU5UXzMyOworICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworICAgIGNhc2UgRElTS1VTRURISUdIOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1VzZWQgPj4gMzI7CisgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisKICAgICBjYXNlIERJU0tQRVJDRU5UOgotICAgICAgICBsb25nX3JldCA9IHBlcmNlbnQ7CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrUGVyY2VudDsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKLSNpZiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTKSB8fCBkZWZpbmVkIChTVFJVQ1RfU1RBVEZTX0hBU19GX0ZJTEVTKQorCiAgICAgY2FzZSBESVNLUEVSQ0VOVE5PREU6Ci0gICAgICAgIGxvbmdfcmV0ID0gcGVyY2VudF9pbm9kZTsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKLSNlbmRpZgorICAgICAgICBpZiAoZW50cnkuZHNrUGVyY2VudElub2RlID49IDApIHsKKyAgICAgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrUGVyY2VudElub2RlOworICAgICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGNhc2UgRVJST1JGTEFHOgotICAgICAgICBsb25nX3JldCA9IGlzZXJyb3I7CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrRXJyb3JGbGFnOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworCiAgICAgY2FzZSBFUlJPUk1TRzoKLSAgICAgICAgaWYgKGlzZXJyb3IpIHsKKyAgICAgICAgaWYgKGVudHJ5LmRza0Vycm9yRmxhZykgewogICAgICAgICAgICAgaWYgKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwKQogICAgICAgICAgICAgICAgIHNucHJpbnRmKGVycm1zZywgc2l6ZW9mKGVycm1zZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGxlc3MgdGhhbiAlZCBmcmVlICg9ICVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5wYXRoLCBkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAoaW50KSBhdmFpbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSBlbnRyeS5kc2tBdmFpbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc25wcmludGYoZXJybXNnLCBzaXplb2YoZXJybXNnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICIlczogbGVzcyB0aGFuICVkJSUgZnJlZSAoPSAlZCUlKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5wYXRoLCBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWVudHJ5LmRza1BlcmNlbnQpOwogICAgICAgICAgICAgZXJybXNnWyBzaXplb2YoZXJybXNnKS0xIF0gPSAwOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGVycm1zZ1swXSA9IDA7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoZXJybXNnKSk7CiAgICAgfQotI2Vsc2UKLSNpZiBIQVZFX0ZTVEFCX0gKLSAgICAvKgotICAgICAqIHJlYWQgdGhlIGRpc2sgaW5mb3JtYXRpb24gCi0gICAgICovCi0gICAgaWYgKChmaWxlID0gb3BlbihkaXNrc1tkaXNrbnVtXS5kZXZpY2UsIDApKSA8IDApIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IG9wZW4gZGV2aWNlICVzXG4iLAotICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5kZXZpY2UpOwotICAgICAgICBzZXRQZXJyb3JzdGF0dXMoIm9wZW4gZGV2L2Rpc2siKTsKLSAgICAgICAgaWYgKCFleGFjdCkKLSAgICAgICAgICAgIGdvdG8gdHJ5QWdhaW47Ci0gICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgfQotICAgIGxzZWVrKGZpbGUsIChsb25nKSAoU0JMT0NLICogREVWX0JTSVpFKSwgMCk7Ci0gICAgaWYgKHJlYWQoZmlsZSwgKGNoYXIgKikgJmZpbGVzeXMsIFNCU0laRSkgIT0gU0JTSVpFKSB7Ci0gICAgICAgIHNldFBlcnJvcnN0YXR1cygib3BlbiBkZXYvZGlzayIpOwotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXJyb3IgcmVhZGluZyBkZXZpY2UgJXNcbiIsCi0gICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7Ci0gICAgICAgIGNsb3NlKGZpbGUpOwotICAgICAgICBpZiAoIWV4YWN0KQotICAgICAgICAgICAgZ290byB0cnlBZ2FpbjsKLSAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICB9Ci0gICAgY2xvc2UoZmlsZSk7Ci0gICAgdG90YWxibGtzID0gZmlsZXN5cy5mc19kc2l6ZTsKLSAgICBmcmVlID0gZmlsZXN5cy5mc19jc3RvdGFsLmNzX25iZnJlZSAqIGZpbGVzeXMuZnNfZnJhZyArCi0gICAgICAgIGZpbGVzeXMuZnNfY3N0b3RhbC5jc19uZmZyZWU7Ci0gICAgdXNlZCA9IHRvdGFsYmxrcyAtIGZyZWU7Ci0gICAgYXZhaWxibGtzID0gdG90YWxibGtzICogKDEwMCAtIGZpbGVzeXMuZnNfbWluZnJlZSkgLyAxMDA7Ci0gICAgYXZhaWwgPSBhdmFpbGJsa3MgPiB1c2VkID8gYXZhaWxibGtzIC0gdXNlZCA6IDA7Ci0gICAgcGVyY2VudCA9Ci0gICAgICAgIHRvdGFsYmxrcyA9PSAwID8gMCA6Ci0gICAgICAgIGF2YWlsYmxrcyA9PSAwID8gMTAwIDoKLSAgICAgICAgKGludCkgKChkb3VibGUpIHVzZWQgLyAoZG91YmxlKSB0b3RhbGJsa3MgKiAxMDAuMCArIDAuNSk7Ci0gICAgbXVsdGlwbGllciA9IChmbG9hdClmaWxlc3lzLmZzX2ZzaXplIC8gKGZsb2F0KTEwMjQuMDsKLSAgICBpc2Vycm9yID0KLSAgICAgICAgKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwCi0gICAgICAgICAgICA/IGF2YWlsICogbXVsdGlwbGllciA8IGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZQotICAgICAgICAgICAgOiAxMDAgLSBwZXJjZW50IDw9IGRpc2tzW2Rpc2tudW1dLm1pbnBlcmNlbnQpID8gMSA6IDA7Ci0gICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIERJU0tUT1RBTDoKLSAgICAgICAgaWYgKCB0b3RhbGJsa3MgPiAoIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKSh0b3RhbGJsa3MgKiBtdWx0aXBsaWVyKTsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKLSAgICBjYXNlIERJU0tBVkFJTDoKLSAgICAgICAgaWYgKCBhdmFpbCA+ICggSU5UMzJfTUFYIC8gbXVsdGlwbGllciApKQotICAgICAgICAgICAgbG9uZ19yZXQgPSBJTlQzMl9NQVg7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKGF2YWlsICogbXVsdGlwbGllcik7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBESVNLVVNFRDoKLSAgICAgICAgaWYgKCB1c2VkID4gKCAgSU5UMzJfTUFYIC8gbXVsdGlwbGllciApKQotICAgICAgICAgICAgbG9uZ19yZXQgPSBJTlQzMl9NQVg7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKHVzZWQgKiBtdWx0aXBsaWVyKTsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKLSAgICBjYXNlIERJU0tQRVJDRU5UOgotICAgICAgICBsb25nX3JldCA9IHBlcmNlbnQ7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBFUlJPUkZMQUc6Ci0gICAgICAgIGxvbmdfcmV0ID0gaXNlcnJvcjsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKLSAgICBjYXNlIEVSUk9STVNHOgotICAgICAgICBpZiAoaXNlcnJvcikgewotICAgICAgICAgICAgaWYgKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwKQotICAgICAgICAgICAgICAgIHNucHJpbnRmKGVycm1zZywgc2l6ZW9mKGVycm1zZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGxlc3MgdGhhbiAlZCBmcmVlICg9ICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5wYXRoLCBkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBhdmFpbCAqIGZpbGVzeXMuZnNfZnNpemUgLyAxMDI0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBsZXNzIHRoYW4gJWQlJSBmcmVlICg9ICVkJSUpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLnBhdGgsIGRpc2tzW2Rpc2tudW1dLm1pbnBlcmNlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50KTsKLSAgICAgICAgICAgIGVycm1zZ1sgc2l6ZW9mKGVycm1zZyktMSBdID0gMDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBlcnJtc2dbMF0gPSAwOwotICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihlcnJtc2cpOwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKGVycm1zZykpOwotICAgIH0KLSNlbmRpZgotI2VuZGlmCiAgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmgKaW5kZXggNmJjNWIxNC4uMjBlOTMzMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaApAQCAtNyw3ICs3LDcgQEAKIAogdm9pZCAgICAgICAgICAgIGluaXRfZGlzayh2b2lkKTsKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKIAogICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfZXh0ZW5zaWJsZV9kaXNrOwogCkBAIC0yMSw1ICsyMSwxMSBAQAogI2RlZmluZSBESVNLVVNFRCA4CiAjZGVmaW5lIERJU0tQRVJDRU5UIDkKICNkZWZpbmUgRElTS1BFUkNFTlROT0RFIDEwCisjZGVmaW5lIERJU0tUT1RBTExPVyAxMQorI2RlZmluZSBESVNLVE9UQUxISUdIIDEyCisjZGVmaW5lIERJU0tBVkFJTExPVyAxMworI2RlZmluZSBESVNLQVZBSUxISUdIIDE0CisjZGVmaW5lIERJU0tVU0VETE9XIDE1CisjZGVmaW5lIERJU0tVU0VESElHSCAxNgogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9ESVNLX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMKaW5kZXggMDhlZjNmMS4uZjI5Mzg4ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMKQEAgLTI1LDEzICsyNSwxMiBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpbmNsdWRlIDxtYXRoLmg+CisKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLS8qCi0gKiBoZWFkZXJfZ2VuZXJpYygpIGNvbWVzIGZyb20gaGVyZSAKLSAqLwotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAogLyoKICAqIGluY2x1ZGUgb3VyIC5oIGZpbGUgCkBAIC02MSwxOCArNjAsMjIgQEAKIHN0YXRpYyBpbnQgcHNfbnVtZGlza3M7CQkJLyogbnVtYmVyIG9mIGRpc2tzIGluIHN5c3RlbSwgbWF5IGNoYW5nZSB3aGlsZSBydW5uaW5nICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoYnNkaTMpIHx8IGRlZmluZWQoYnNkaTQpCisjaWYgZGVmaW5lZChic2RpMykgfHwgZGVmaW5lZChic2RpNCkgfHwgZGVmaW5lZChvcGVuYnNkNCkKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaWZkZWYgb3BlbmJzZDQKKyNpbmNsdWRlIDxzeXMvZGlzay5oPgorI2Vsc2UKICNpbmNsdWRlIDxzeXMvZGlza3N0YXRzLmg+CisjZW5kaWYKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnNkaSAqLwogCi0jaWYgZGVmaW5lZCAoZnJlZWJzZDQpIHx8IGRlZmluZWQoZnJlZWJzZDUpCisjaWYgZGVmaW5lZChIQVZFX0dFVERFVlMpIHx8IGRlZmluZWQoSEFWRV9ERVZTVEFUX0dFVERFVlMpCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTAxCisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4gICAgICAgLyogZm9yIENQVVNUQVRFUyBpbiBkZXZzdGF0LmggKi8KLSNlbGlmICFkZWZpbmVkKGRyYWdvbmZseSkKKyNlbGlmIEhBVkVfU1lTX0RLU1RBVF9ICiAjaW5jbHVkZSA8c3lzL2Rrc3RhdC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8ZGV2c3RhdC5oPgpAQCAtODQsMTIgKzg3LDE3IEBACiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZnJlZWJzZCAqLwogCi0jaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3CisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgI2RlZmluZSBHRVRERVZTKHgpIGRldnN0YXRfZ2V0ZGV2cyhOVUxMLCAoeCkpCiAjZWxzZQogICAjZGVmaW5lIEdFVERFVlMoeCkgZ2V0ZGV2cygoeCkpCiAjZW5kaWYKIAorI2lmIGRlZmluZWQgKGxpbnV4KQorI2RlZmluZSBESVNLSU9fU0FNUExFX0lOVEVSVkFMIDUKK3ZvaWQgZGV2bGFfZ2V0c3RhdHModW5zaWduZWQgaW50IHJlZ25vLCB2b2lkICogZHVtbXkpOworI2VuZGlmIC8qIGxpbnV4ICovCisKICNpZiBkZWZpbmVkIChkYXJ3aW4pCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxJT0tpdC9JT0tpdExpYi5oPgpAQCAtMTAyLDcgKzExMCw3IEBACiAKIHZvaWQgICAgICAgICAgICBkaXNraW9fcGFyc2VfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKIAotI2lmIGRlZmluZWQgKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQorI2lmIGRlZmluZWQgKEhBVkVfR0VUREVWUykgfHwgZGVmaW5lZChIQVZFX0RFVlNUQVRfR0VUREVWUykKIHZvaWQJCWRldmxhX2dldHN0YXRzKHVuc2lnbmVkIGludCByZWdubywgdm9pZCAqZHVtbXkpOwogI2VuZGlmCiAKQEAgLTE0MiwxOSArMTUwLDMwIEBACiAgICAgICovCiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGRpc2tpb192YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge0RJU0tJT19JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7MX19LAotICAgICAgICB7RElTS0lPX0RFVklDRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHsyfX0sCi0gICAgICAgIHtESVNLSU9fTlJFQUQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezN9fSwKLSAgICAgICAge0RJU0tJT19OV1JJVFRFTiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7NH19LAotICAgICAgICB7RElTS0lPX1JFQURTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHs1fX0sCi0gICAgICAgIHtESVNLSU9fV1JJVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHs2fX0sCi0jaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkKLSAgICAgICAge0RJU0tJT19MQTEsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezl9fSwKLSAgICAgICAge0RJU0tJT19MQTUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezEwfX0sCi0gICAgICAgIHtESVNLSU9fTEExNSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7MTF9fSwKKyAgICAgICAge0RJU0tJT19JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezF9fSwKKyAgICAgICAge0RJU0tJT19ERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezJ9fSwKKyAgICAgICAge0RJU0tJT19OUkVBRCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezN9fSwKKyAgICAgICAge0RJU0tJT19OV1JJVFRFTiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezR9fSwKKyAgICAgICAge0RJU0tJT19SRUFEUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezV9fSwKKyAgICAgICAge0RJU0tJT19XUklURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHs2fX0sCisjaWYgZGVmaW5lZChIQVZFX0dFVERFVlMpIHx8IGRlZmluZWQoSEFWRV9ERVZTVEFUX0dFVERFVlMpIHx8IGRlZmluZWQobGludXgpCisgICAgICAgIHtESVNLSU9fTEExLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZGlza2lvLCAxLCB7OX19LAorICAgICAgICB7RElTS0lPX0xBNSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezEwfX0sCisgICAgICAgIHtESVNLSU9fTEExNSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezExfX0sCiAjZW5kaWYKLSAgICAgICAge0RJU0tJT19OUkVBRFgsIEFTTl9DT1VOVEVSNjQsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7MTJ9fSwKLSAgICAgICAge0RJU0tJT19OV1JJVFRFTlgsIEFTTl9DT1VOVEVSNjQsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7MTN9fSwKKyAgICAgICAge0RJU0tJT19OUkVBRFgsIEFTTl9DT1VOVEVSNjQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezEyfX0sCisgICAgICAgIHtESVNLSU9fTldSSVRURU5YLCBBU05fQ09VTlRFUjY0LCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxM319LAogICAgIH07CiAKICAgICAvKgpAQCAtMjAwLDEwICsyMTksMTAgQEAKICAgICBwc19kaXNrID0gTlVMTDsKICNlbmRpZgogCi0jaWYgZGVmaW5lZCAoZnJlZWJzZDQpIHx8IGRlZmluZWQoZnJlZWJzZDUpCi0JZGV2bGFfZ2V0c3RhdHMoMCwgTlVMTCk7Ci0JLyogY29sbGVjdCBMQSBkYXRhIHJlZ3VsYXJseSAqLwotCXNubXBfYWxhcm1fcmVnaXN0ZXIoRElTS0lPX1NBTVBMRV9JTlRFUlZBTCwgU0FfUkVQRUFULCBkZXZsYV9nZXRzdGF0cywgTlVMTCk7CisjaWYgZGVmaW5lZCAoSEFWRV9HRVRERVZTKSB8fCBkZWZpbmVkKEhBVkVfREVWU1RBVF9HRVRERVZTKSB8fCBkZWZpbmVkKGxpbnV4KQorICAgIGRldmxhX2dldHN0YXRzKDAsIE5VTEwpOworICAgIC8qIGNvbGxlY3QgTEEgZGF0YSByZWd1bGFybHkgKi8KKyAgICBzbm1wX2FsYXJtX3JlZ2lzdGVyKERJU0tJT19TQU1QTEVfSU5URVJWQUwsIFNBX1JFUEVBVCwgZGV2bGFfZ2V0c3RhdHMsIE5VTEwpOwogI2VuZGlmCiAKIH0KQEAgLTQyMiwxMiArNDQxLDI4OSBAQAogfQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBic2RpICovCiAKLSNpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQorI2lmIGRlZmluZWQob3BlbmJzZDQpCitzdGF0aWMgaW50ICAgICAgbmRpc2s7CitzdGF0aWMgc3RydWN0IGRpc2tzdGF0cyAqZGs7CitzdGF0aWMgY2hhciAgICoqZGtuYW1lOworCitzdGF0aWMgaW50CitnZXRzdGF0cyh2b2lkKQoreworICAgIHRpbWVfdCAgICAgICAgICBub3c7CisgICAgaW50ICAgICAgICAgICAgIG1pYlsyXTsKKyAgICBjaGFyICAgICAgICAgICAqdCwgKnRwLCp0ZTsKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZSwgZGtuX3NpemU7CisgICAgaW50ICAgICAgICAgICAgIGk7CisKKyAgICBub3cgPSB0aW1lKE5VTEwpOworICAgIGlmIChjYWNoZV90aW1lICsgQ0FDSEVfVElNRU9VVCA+IG5vdykgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgbWliWzBdID0gQ1RMX0hXOworICAgIG1pYlsxXSA9IEhXX0RJU0tTVEFUUzsKKyAgICBzaXplID0gMDsKKyAgICBpZiAoc3lzY3RsKG1pYiwgMiwgTlVMTCwgJnNpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBzaXplIG9mIEhXX0RJU0tTVEFUUyBtaWIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChuZGlzayAhPSBzaXplIC8gc2l6ZW9mKCpkaykpIHsKKyAgICAgICAgaWYgKGRrKQorICAgICAgICAgICAgZnJlZShkayk7CisgICAgICAgIGlmIChka25hbWUpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGlzazsgaSsrKQorICAgICAgICAgICAgICAgIGlmIChka25hbWVbaV0pCisgICAgICAgICAgICAgICAgICAgIGZyZWUoZGtuYW1lW2ldKTsKKyAgICAgICAgICAgIGZyZWUoZGtuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBuZGlzayA9IHNpemUgLyBzaXplb2YoKmRrKTsKKyAgICAgICAgaWYgKG5kaXNrID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGtuYW1lID0gbWFsbG9jKG5kaXNrICogc2l6ZW9mKGNoYXIgKikpOworICAgICAgICBtaWJbMF0gPSBDVExfSFc7CisgICAgICAgIG1pYlsxXSA9IEhXX0RJU0tOQU1FUzsKKyAgICAgICAgaWYgKHN5c2N0bChtaWIsIDIsIE5VTEwsICZka25fc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBzaXplIG9mIEhXX0RJU0tOQU1FUyBtaWIiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHRlID0gdHAgPSB0ID0gbWFsbG9jKGRrbl9zaXplKTsKKyAgICAgICAgaWYgKHN5c2N0bChtaWIsIDIsIHQsICZka25fc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBzaXplIG9mIEhXX0RJU0tOQU1FUyBtaWIiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGlzazsgaSsrKSB7CisJICAgIHdoaWxlICh0ZS10IDwgZGtuX3NpemUgJiYgKnRlICE9ICcsJykgdGUrKzsKKwkgICAgKnRlKysgPSAnXDAnOworICAgICAgICAgICAgZGtuYW1lW2ldID0gc3RyZHVwKHRwKTsKKyAgICAgICAgICAgIHRwID0gdGU7CisgICAgICAgIH0KKyAgICAgICAgZnJlZSh0KTsKKyAgICAgICAgZGsgPSBtYWxsb2MobmRpc2sgKiBzaXplb2YoKmRrKSk7CisgICAgfQorICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBIV19ESVNLU1RBVFM7CisgICAgaWYgKHN5c2N0bChtaWIsIDIsIGRrLCAmc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIHBlcnJvcigiQ2FuJ3QgZ2V0IEhXX0RJU0tTVEFUUyBtaWIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNhY2hlX3RpbWUgPSBub3c7CisgICAgcmV0dXJuIDE7Cit9CisKK3VfY2hhciAgICAgICAgICoKK3Zhcl9kaXNraW8oc3RydWN0IHZhcmlhYmxlICogdnAsCisgICAgICAgICAgIG9pZCAqIG5hbWUsCisgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKKyAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCit7CisgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OworICAgIHN0YXRpYyBzdHJ1Y3QgY291bnRlcjY0IGM2NF9yZXQ7CisgICAgdW5zaWduZWQgaW50ICAgIGluZHg7CisKKyAgICBpZiAoZ2V0c3RhdHMoKSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChoZWFkZXJfc2ltcGxlX3RhYmxlCisgICAgICAgICh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kLCBuZGlzaykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaW5keCA9ICh1bnNpZ25lZCBpbnQpIChuYW1lWypsZW5ndGggLSAxXSAtIDEpOworICAgIGlmIChpbmR4ID49IG5kaXNrKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisgICAgY2FzZSBESVNLSU9fSU5ERVg6CisgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpIGluZHggKyAxOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX0RFVklDRToKKyAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZGtuYW1lW2luZHhdKTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgZGtuYW1lW2luZHhdOworICAgIGNhc2UgRElTS0lPX05SRUFEOgorICAgICAgICBsb25nX3JldCA9ICh1bnNpZ25lZCBsb25nKSAoZGtbaW5keF0uZHNfcmJ5dGVzKSAmIDB4ZmZmZmZmZmY7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisgICAgY2FzZSBESVNLSU9fTldSSVRURU46CisgICAgICAgIGxvbmdfcmV0ID0gKHVuc2lnbmVkIGxvbmcpIChka1tpbmR4XS5kc193Ynl0ZXMpICYgMHhmZmZmZmZmZjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19SRUFEUzoKKyAgICAgICAgbG9uZ19yZXQgPSAodW5zaWduZWQgbG9uZykgZGtbaW5keF0uZHNfcnhmZXIgJiAweGZmZmZmZmZmOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX1dSSVRFUzoKKyAgICAgICAgbG9uZ19yZXQgPSAodW5zaWduZWQgbG9uZykgZGtbaW5keF0uZHNfd3hmZXIgJiAweGZmZmZmZmZmOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX05SRUFEWDoKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgIGM2NF9yZXQubG93ID0gZGtbaW5keF0uZHNfcmJ5dGVzICYgMHhmZmZmZmZmZjsKKyAgICAgICAgYzY0X3JldC5oaWdoID0gZGtbaW5keF0uZHNfcmJ5dGVzID4+IDMyOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGM2NF9yZXQ7CisgICAgY2FzZSBESVNLSU9fTldSSVRURU5YOgorICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgYzY0X3JldC5sb3cgPSBka1tpbmR4XS5kc19yYnl0ZXMgJiAweGZmZmZmZmZmOworICAgICAgICBjNjRfcmV0LmhpZ2ggPSBka1tpbmR4XS5kc19yYnl0ZXMgPj4gMzI7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgYzY0X3JldDsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEVSUk9SX01TRygiZGlza2lvLmM6IGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSB0aGlzIHJlcXVlc3QuIik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGVuYnNkICovCisKKyNpZmRlZiBfX05ldEJTRF9fCisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorc3RhdGljIGludCAgICAgIG5kaXNrOworI2lmZGVmIEhXX0lPU1RBVE5BTUVTCitzdGF0aWMgaW50IG5taWJbMl0gPSB7Q1RMX0hXLCBIV19JT1NUQVROQU1FU307CisjZWxzZQorc3RhdGljIGludCBubWliWzJdID0ge0NUTF9IVywgSFdfRElTS05BTUVTfTsKKyNlbmRpZgorI2lmZGVmIEhXX0RJU0tTVEFUUworI2luY2x1ZGUgPHN5cy9kaXNrLmg+CitzdGF0aWMgaW50IGRtaWJbM10gPSB7Q1RMX0hXLCBIV19ESVNLU1RBVFMsIHNpemVvZihzdHJ1Y3QgZGlza19zeXNjdGwpfTsKK3N0YXRpYyBzdHJ1Y3QgZGlza19zeXNjdGwgKmRrOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworI2luY2x1ZGUgPHN5cy9pb3N0YXQuaD4KK3N0YXRpYyBpbnQgZG1pYlszXSA9IHtDVExfSFcsIEhXX0lPU1RBVFMsIHNpemVvZihzdHJ1Y3QgaW9fc3lzY3RsKX07CitzdGF0aWMgc3RydWN0IGlvX3N5c2N0bCAqZGs7CisjZW5kaWYKK3N0YXRpYyBjaGFyICAgKipka25hbWU7CisKK3N0YXRpYyBpbnQKK2dldHN0YXRzKHZvaWQpCit7CisgICAgdGltZV90ICAgICAgICAgIG5vdzsKKyAgICBjaGFyICAgICAgICAgICAqdCwgKnRwOworICAgIHNpemVfdCAgICAgICAgICBzaXplLCBka25fc2l6ZTsKKyAgICBpbnQgICAgICAgICAgICAgaTsKKworICAgIG5vdyA9IHRpbWUoTlVMTCk7CisgICAgaWYgKGNhY2hlX3RpbWUgKyBDQUNIRV9USU1FT1VUID4gbm93KSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBzaXplID0gMDsKKyAgICBpZiAoc3lzY3RsKGRtaWIsIDMsIE5VTEwsICZzaXplLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLU1RBVFMvSFdfSU9TVEFUUyBtaWIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChuZGlzayAhPSBzaXplIC8gZG1pYlsyXSkgeworICAgICAgICBpZiAoZGspCisgICAgICAgICAgICBmcmVlKGRrKTsKKyAgICAgICAgaWYgKGRrbmFtZSkgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5kaXNrOyBpKyspCisgICAgICAgICAgICAgICAgaWYgKGRrbmFtZVtpXSkKKyAgICAgICAgICAgICAgICAgICAgZnJlZShka25hbWVbaV0pOworICAgICAgICAgICAgZnJlZShka25hbWUpOworICAgICAgICB9CisgICAgICAgIG5kaXNrID0gc2l6ZSAvIGRtaWJbMl07CisgICAgICAgIGlmIChuZGlzayA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRrbmFtZSA9IG1hbGxvYyhuZGlzayAqIHNpemVvZihjaGFyICopKTsKKyAgICAgICAgZGtuX3NpemUgPSAwOworICAgICAgICBpZiAoc3lzY3RsKG5taWIsIDIsIE5VTEwsICZka25fc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBzaXplIG9mIEhXX0RJU0tOQU1FUyBtaWIiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHQgPSBtYWxsb2MoZGtuX3NpemUpOworICAgICAgICBpZiAoc3lzY3RsKG5taWIsIDIsIHQsICZka25fc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBzaXplIG9mIEhXX0RJU0tOQU1FUyBtaWIiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDAsIHRwID0gc3RydG9rKHQsICIgIik7IHRwICYmIGkgPCBuZGlzazsgaSsrLAorCSAgICB0cCA9IHN0cnRvayhOVUxMLCAiICIpKSB7CisgICAgICAgICAgICBka25hbWVbaV0gPSBzdHJkdXAodHApOworICAgICAgICB9CisgICAgICAgIGZyZWUodCk7CisgICAgICAgIGRrID0gbWFsbG9jKG5kaXNrICogc2l6ZW9mKCpkaykpOworICAgIH0KKyAgICBpZiAoc3lzY3RsKGRtaWIsIDMsIGRrLCAmc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIHBlcnJvcigiQ2FuJ3QgZ2V0IEhXX0RJU0tTVEFUUy9IV19JT1NUQVRTIG1pYiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY2FjaGVfdGltZSA9IG5vdzsKKyAgICByZXR1cm4gMTsKK30KKwordV9jaGFyICoKK3Zhcl9kaXNraW8oc3RydWN0IHZhcmlhYmxlICogdnAsCisgICAgICAgICAgIG9pZCAqIG5hbWUsCisgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKKyAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCit7CisgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OworICAgIHVuc2lnbmVkIGludCAgICBpbmR4OworCisgICAgaWYgKGdldHN0YXRzKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQorICAgICAgICAodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCwgbmRpc2spKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGluZHggPSAodW5zaWduZWQgaW50KSAobmFtZVsqbGVuZ3RoIC0gMV0gLSAxKTsKKyAgICBpZiAoaW5keCA+PSBuZGlzaykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgRElTS0lPX0lOREVYOgorICAgICAgICBsb25nX3JldCA9IChsb25nKSBpbmR4ICsgMTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKworICAgIGNhc2UgRElTS0lPX0RFVklDRToKKyAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZGtuYW1lW2luZHhdKTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgZGtuYW1lW2luZHhdOworCisgICAgY2FzZSBESVNLSU9fTlJFQUQ6CisjaWZkZWYgSFdfRElTS1NUQVRTCisgICAgIAlsb25nX3JldCA9IGRrW2luZHhdLmRrX3JieXRlczsKKyNlbmRpZgorI2lmZGVmIEhXX0lPU1RBVFMKKwlpZiAoZGtbaW5keF0udHlwZSA9PSBJT1NUQVRfRElTSykKKwkgICAgbG9uZ19yZXQgPSBka1tpbmR4XS5yYnl0ZXM7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKworICAgIGNhc2UgRElTS0lPX05XUklUVEVOOgorI2lmZGVmIEhXX0RJU0tTVEFUUworICAgICAJbG9uZ19yZXQgPSBka1tpbmR4XS5ka193Ynl0ZXM7CisjZW5kaWYKKyNpZmRlZiBIV19JT1NUQVRTCisJaWYgKGRrW2luZHhdLnR5cGUgPT0gSU9TVEFUX0RJU0spCisJICAgIGxvbmdfcmV0ID0gZGtbaW5keF0ud2J5dGVzOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19SRUFEUzoKKyNpZmRlZiBIV19ESVNLU1RBVFMKKyAgICAgCWxvbmdfcmV0ID0gZGtbaW5keF0uZGtfcnhmZXI7CisjZW5kaWYKKyNpZmRlZiBIV19JT1NUQVRTCisJaWYgKGRrW2luZHhdLnR5cGUgPT0gSU9TVEFUX0RJU0spCisJICAgIGxvbmdfcmV0ID0gZGtbaW5keF0ucnhmZXI7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKworICAgIGNhc2UgRElTS0lPX1dSSVRFUzoKKyNpZmRlZiBIV19ESVNLU1RBVFMKKyAgICAgCWxvbmdfcmV0ID0gZGtbaW5keF0uZGtfd3hmZXI7CisjZW5kaWYKKyNpZmRlZiBIV19JT1NUQVRTCisJaWYgKGRrW2luZHhdLnR5cGUgPT0gSU9TVEFUX0RJU0spCisJICAgIGxvbmdfcmV0ID0gZGtbaW5keF0ud3hmZXI7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEVSUk9SX01TRygiZGlza2lvLmM6IGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSB0aGlzIHJlcXVlc3QuIik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmIC8qIF9fTmV0QlNEX18gKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRERVZTKSB8fCBkZWZpbmVkKEhBVkVfREVWU1RBVF9HRVRERVZTKQogCiAvKiBkaXNrIGxvYWQgYXZlcmFnZSBwYXRjaCBieSBSb2plciAqLwogCiBzdHJ1Y3QgZGV2X2xhIHsKLSNpZiAoIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNyApCisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgICAgICAgc3RydWN0IGJpbnRpbWUgcHJldjsKICNlbHNlCiAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHByZXY7CkBAIC00MzksNyArNzM1LDcgQEAKIHN0YXRpYyBzdHJ1Y3QgZGV2X2xhICpkZXZsb2FkcyA9IE5VTEw7CiBzdGF0aWMgaW50IG5kZXZzID0gMDsKIAotI2lmICEgKCBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcgKQorI2lmICEgSEFWRV9ERVZTVEFUX0dFVERFVlMKIGRvdWJsZSBkZXZsYV90aW1ldmFsX2RpZmYoc3RydWN0IHRpbWV2YWwgKnQxLCBzdHJ1Y3QgdGltZXZhbCAqdDIpIHsKIAogICAgICAgICBkb3VibGUgZHQxID0gKGRvdWJsZSkgdDEtPnR2X3NlYyArIChkb3VibGUpIHQxLT50dl91c2VjICogMC4wMDAwMDE7CkBAIC00ODgsNyArNzg0LDcgQEAKICAgICAgICAgaWYgKG5kZXZzID09IDApIHsKICAgICAgICAgICAgICAgICBuZGV2cyA9IGxhc3RhdC0+ZGluZm8tPm51bWRldnM7CiAgICAgICAgICAgICAgICAgZGV2bG9hZHMgPSAoc3RydWN0IGRldl9sYSAqKSBtYWxsb2MobmRldnMgKiBzaXplb2Yoc3RydWN0IGRldl9sYSkpOwotICAgICAgICAgICAgICAgIGJ6ZXJvKGRldmxvYWRzLCBuZGV2cyAqIHNpemVvZihzdHJ1Y3QgZGV2X2xhKSk7CisgICAgICAgICAgICAgICAgbWVtc2V0KGRldmxvYWRzLCAnXDAnLCBuZGV2cyAqIHNpemVvZihzdHJ1Y3QgZGV2X2xhKSk7CiAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBuZGV2czsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZsb2Fkc1tpXS5sYTEgPSBkZXZsb2Fkc1tpXS5sYTUgPSBkZXZsb2Fkc1tpXS5sYTE1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmZGV2bG9hZHNbaV0ucHJldiwgJmxhc3RhdC0+ZGluZm8tPmRldmljZXNbaV0uYnVzeV90aW1lLCBzaXplb2YoZGV2bG9hZHNbaV0ucHJldikpOwpAQCAtNTAxLDcgKzc5Nyw3IEBACiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaT0wOyBpPG5kZXZzOyBpKyspIHsKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICAgICAgICAgIGJ1c3lfdGltZSA9IGRldnN0YXRfY29tcHV0ZV9ldGltZSgmbGFzdGF0LT5kaW5mby0+ZGV2aWNlc1tpXS5idXN5X3RpbWUsICZkZXZsb2Fkc1tpXS5wcmV2KTsKICNlbHNlCiAgICAgICAgICAgICAgICAgYnVzeV90aW1lID0gZGV2bGFfdGltZXZhbF9kaWZmKCZkZXZsb2Fkc1tpXS5wcmV2LCAmbGFzdGF0LT5kaW5mby0+ZGV2aWNlc1tpXS5idXN5X3RpbWUpOwpAQCAtNTk3LDE0ICs4OTMsMTQgQEAKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uZGV2aWNlX25hbWUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5kZXZpY2VfbmFtZTsKICAgICBjYXNlIERJU0tJT19OUkVBRDoKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uYnl0ZXNbREVWU1RBVF9SRUFEXTsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc19yZWFkOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CiAgICAgY2FzZSBESVNLSU9fTldSSVRURU46Ci0jaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3CisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzW0RFVlNUQVRfV1JJVEVdOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzX3dyaXR0ZW47CkBAIC02MTIsNyArOTA4LDcgQEAKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKICAgICBjYXNlIERJU0tJT19OUkVBRFg6CiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIGxvbmdsb25nX3JldCA9IHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzW0RFVlNUQVRfUkVBRF07CiAjZWxzZQogICAgICAgICBsb25nbG9uZ19yZXQgPSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc19yZWFkOwpAQCAtNjIyLDcgKzkxOCw3IEBACiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgYzY0X3JldDsKICAgICBjYXNlIERJU0tJT19OV1JJVFRFTlg6CiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIGxvbmdsb25nX3JldCA9IHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzW0RFVlNUQVRfV1JJVEVdOwogI2Vsc2UKICAgICAgICAgbG9uZ2xvbmdfcmV0ID0gc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uYnl0ZXNfd3JpdHRlbjsKQEAgLTYzMSwxNCArOTI3LDE0IEBACiAgICAgICAgIGM2NF9yZXQuaGlnaCA9IGxvbmdsb25nX3JldCA+PiAzMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBjNjRfcmV0OwogICAgIGNhc2UgRElTS0lPX1JFQURTOgotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5vcGVyYXRpb25zW0RFVlNUQVRfUkVBRF07CiAjZWxzZQogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0ubnVtX3JlYWRzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CiAgICAgY2FzZSBESVNLSU9fV1JJVEVTOgotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5vcGVyYXRpb25zW0RFVlNUQVRfV1JJVEVdOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLm51bV93cml0ZXM7CkBAIC02ODUsNiArOTgxLDEzIEBACiAgICAgdW5zaWduZWQgbG9uZyAgYXZlcTsKIH0gbGludXhfZGlza2lvOwogCisvKiBkaXNrIGxvYWQgYXZlcmFnZXMgKi8KK3R5cGVkZWYgc3RydWN0IGxpbnV4X2Rpc2tpb19sYQoreworICAgIHVuc2lnbmVkIGxvbmcgdXNlX3ByZXY7CisgICAgZG91YmxlIGxhMSwgbGE1LCBsYTE1OworfSBsaW51eF9kaXNraW9fbGE7CisKIHR5cGVkZWYgc3RydWN0IGxpbnV4X2Rpc2tpb19oZWFkZXIKIHsKICAgICBsaW51eF9kaXNraW8qIGluZGljZXM7CkBAIC02OTIsOCArOTk1LDU5IEBACiAgICAgaW50IGFsbG9jOwogfSBsaW51eF9kaXNraW9faGVhZGVyOwogCi1zdGF0aWMgbGludXhfZGlza2lvX2hlYWRlciBoZWFkOwordHlwZWRlZiBzdHJ1Y3QgbGludXhfZGlza2lvX2xhX2hlYWRlcgoreworICAgIGxpbnV4X2Rpc2tpb19sYSAqIGluZGljZXM7ICAgCisgICAgaW50IGxlbmd0aDsKK30gbGludXhfZGlza2lvX2xhX2hlYWRlcjsKIAorc3RhdGljIGxpbnV4X2Rpc2tpb19oZWFkZXIgaGVhZDsKK3N0YXRpYyBsaW51eF9kaXNraW9fbGFfaGVhZGVyIGxhX2hlYWQ7CisKK3ZvaWQgZGV2bGFfZ2V0c3RhdHModW5zaWduZWQgaW50IHJlZ25vLCB2b2lkICogZHVtbXkpIHsKKworICAgIHN0YXRpYyBkb3VibGUgZXhwb24xLCBleHBvbjUsIGV4cG9uMTU7CisgICAgZG91YmxlIGJ1c3lfdGltZSwgYnVzeV9wZXJjZW50OworICAgIGludCBpZHg7CisKKyAgICBpZiAoZ2V0c3RhdHMoKSA9PSAxKSB7CisgICAgICAgIEVSUk9SX01TRygiY2FuJ3QgZG8gZGlza2lvIGdldHN0YXRzKClcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFsYV9oZWFkLmxlbmd0aCkgeworICAgICAgICBsYV9oZWFkLmluZGljZXMgPSAobGludXhfZGlza2lvX2xhICopIG1hbGxvYyhoZWFkLmxlbmd0aCAqIHNpemVvZihsaW51eF9kaXNraW9fbGEpKTsKKyAgICAgICAgZm9yIChpZHg9MDsgaWR4PGhlYWQubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAgICAgbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGE1ID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExNSA9IDAuOyAKKyAgICAgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLnVzZV9wcmV2ID0gaGVhZC5pbmRpY2VzW2lkeF0udXNlOworICAgICAgICB9CisgICAgICAgIGxhX2hlYWQubGVuZ3RoID0gaGVhZC5sZW5ndGg7CisgICAgICAgIGV4cG9uMSA9IGV4cCgtKCgoZG91YmxlKURJU0tJT19TQU1QTEVfSU5URVJWQUwpIC8gKChkb3VibGUpNjApKSk7CisgICAgICAgIGV4cG9uNSA9IGV4cCgtKCgoZG91YmxlKURJU0tJT19TQU1QTEVfSU5URVJWQUwpIC8gKChkb3VibGUpMzAwKSkpOworICAgICAgICBleHBvbjE1ID0gZXhwKC0oKChkb3VibGUpRElTS0lPX1NBTVBMRV9JTlRFUlZBTCkgLyAoKGRvdWJsZSk5MDApKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGhlYWQubGVuZ3RoIC0gbGFfaGVhZC5sZW5ndGgpIHsKKyAgICAgICAgbGFfaGVhZC5pbmRpY2VzID0gKGxpbnV4X2Rpc2tpb19sYSAqKSByZWFsbG9jKGxhX2hlYWQuaW5kaWNlcywgaGVhZC5sZW5ndGggKiBzaXplb2YobGludXhfZGlza2lvX2xhKSk7CisgICAgICAgIGZvciAoaWR4PWxhX2hlYWQubGVuZ3RoOyBpZHg8aGVhZC5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTEgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTUgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTE1ID0gMC47IAorICAgICAgICAgICAgbGFfaGVhZC5pbmRpY2VzW2lkeF0udXNlX3ByZXYgPSBoZWFkLmluZGljZXNbaWR4XS51c2U7CisgICAgICAgIH0KKyAgICAgICAgbGFfaGVhZC5sZW5ndGggPSBoZWFkLmxlbmd0aDsKKyAgICB9CisKKyAgICBmb3IgKGlkeD0wOyBpZHg8aGVhZC5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgIGJ1c3lfdGltZSA9IGhlYWQuaW5kaWNlc1tpZHhdLnVzZSAtIGxhX2hlYWQuaW5kaWNlc1tpZHhdLnVzZV9wcmV2OworICAgICAgICBidXN5X3BlcmNlbnQgPSBidXN5X3RpbWUgKiAxMDAuIC8gKChkb3VibGUpIERJU0tJT19TQU1QTEVfSU5URVJWQUwpIC8gMTAwMC47CisgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMSA9IGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMSAqIGV4cG9uMSArIGJ1c3lfcGVyY2VudCAqICgxLiAtIGV4cG9uMSk7CisgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhNSA9IGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhNSAqIGV4cG9uNSArIGJ1c3lfcGVyY2VudCAqICgxLiAtIGV4cG9uNSk7CisgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMTUgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTE1ICogZXhwb24xNSArIGJ1c3lfcGVyY2VudCAqICgxLiAtIGV4cG9uMTUpOworICAgICAgICAvKgorICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKCVkKSB1cGRhdGUgbGExPSVmIGxhNT0lZiBsYTE1PSVmXG4iLAorICAgICAgICAgIGlkeCwgbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExLCBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTUsIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMTUpOyAgIAorICAgICAgICAqLworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS51c2VfcHJldiA9IGhlYWQuaW5kaWNlc1tpZHhdLnVzZTsKKyAgICB9Cit9CiAKIGludCBnZXRzdGF0cyh2b2lkKQogewpAQCAtODI2LDYgKzExODAsMTUgQEAKICAgICBjYXNlIERJU0tJT19XUklURVM6CiAgICAgICBsb25nX3JldCA9IGhlYWQuaW5kaWNlc1tpbmR4XS53aW8gJiAweGZmZmZmZmZmOwogICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19MQTE6CisgICAgICBsb25nX3JldCA9IGxhX2hlYWQuaW5kaWNlc1tpbmR4XS5sYTE7CisgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX0xBNToKKyAgICAgIGxvbmdfcmV0ID0gbGFfaGVhZC5pbmRpY2VzW2luZHhdLmxhNTsKKyAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisgICAgY2FzZSBESVNLSU9fTEExNToKKyAgICAgIGxvbmdfcmV0ID0gbGFfaGVhZC5pbmRpY2VzW2luZHhdLmxhMTU7CisgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OwogICAgIGNhc2UgRElTS0lPX05SRUFEWDoKICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwogICAgICAgYzY0X3JldC5sb3cgPSBoZWFkLmluZGljZXNbaW5keF0ucnNlY3QgKiA1MTIgJiAweGZmZmZmZmZmOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uaAppbmRleCAwNTU5NmFiLi44Y2QyMDZiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uaApAQCAtMSw3ICsxLDcgQEAKICNpZm5kZWYgX01JQkdST1VQX0RJU0tJT19ICiAjZGVmaW5lIF9NSUJHUk9VUF9ESVNLSU9fSAogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogY29uZmlnX2FkZF9taWIoVUNELURJU0tJTy1NSUIpCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMKaW5kZXggYTZiOWIzNC4uMGE4NTIxMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCkBAIC0yOSw5ICsyOSw2IEBACiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogCi0jaWYgZGVmaW5lZChIQVZFX0RMRkNOX0gpICYmIChkZWZpbmVkKEhBVkVfRExPUEVOKSB8fCBkZWZpbmVkKEhBVkVfTElCREwpKSBcCi0gICAgfHwgZGVmaW5lZChXSU4zMikKLQogI2lmIGRlZmluZWQoV0lOMzIpCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2Vsc2UKQEAgLTUxLDExICs0OCwxNiBAQAogICogaW5mb3JtYXRpb24gZm9yIHRoZSBkbG1vZCBtaWIKICAqLwogc3RhdGljIHN0cnVjdCB2YXJpYWJsZTQgZGxtb2RfdmFyaWFibGVzW10gPSB7Ci0gICAge0RMTU9ETkVYVElOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9kbG1vZCwgMSwgezF9fSwKLSAgICB7RExNT0ROQU1FLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgMn19LAotICAgIHtETE1PRFBBVEgsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCAzfX0sCi0gICAge0RMTU9ERVJST1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDR9fSwKLSAgICB7RExNT0RTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgNX19LAorICAgIHtETE1PRE5FWFRJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZGxtb2QsIDEsIHsxfX0sCisgICAge0RMTU9ETkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDJ9fSwKKyAgICB7RExNT0RQQVRILCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgM319LAorICAgIHtETE1PREVSUk9SLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA0fX0sCisgICAge0RMTU9EU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDV9fSwKIH07CiAKIHN0YXRpYyBvaWQgICAgICBkbG1vZF92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDEzLCAxNCB9OwpAQCAtMjkzLDExICsyOTUsMTggQEAKIAogICAgIHNucHJpbnRmKHN5bV9kZWluaXQsIHNpemVvZihzeW1fZGVpbml0KSwgImRlaW5pdF8lcyIsIGRsbS0+bmFtZSk7CiAgICAgZGxfZGVpbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9kZWluaXQpOwotICAgIGlmIChkbF9kZWluaXQgPT0gTlVMTCkgewotICAgICAgICBzbnByaW50ZihkbG0tPmVycm9yLCBzaXplb2YoZGxtLT5lcnJvciksCi0gICAgICAgICAgICAgICAgICJkbHN5bSBmYWlsZWQ6IGNhbid0IGZpbmQgXCclc1wnIiwgc3ltX2RlaW5pdCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoZGxfZGVpbml0KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJDYWxsaW5nIGRlaW5pdF8lcygpXG4iLCBkbG0tPm5hbWUpKTsKICAgICAgICAgZGxfZGVpbml0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc25wcmludGYoc3ltX2RlaW5pdCwgc2l6ZW9mKHN5bV9kZWluaXQpLCAic2h1dGRvd25fJXMiLCBkbG0tPm5hbWUpOworICAgICAgICBkbF9kZWluaXQgPSBkbG1vZF9kbHN5bShkbG0tPmhhbmRsZSwgc3ltX2RlaW5pdCk7CisgICAgICAgIGlmIChkbF9kZWluaXQpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJDYWxsaW5nIHNodXRkb3duXyVzKClcbiIsIGRsbS0+bmFtZSkpOworICAgICAgICAgICAgZGxfZGVpbml0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiTm8gZGVzdHJ1Y3RvciBmb3IgJXNcbiIsIGRsbS0+bmFtZSkpOworICAgICAgICB9CiAgICAgfQogICAgIGRsbW9kX2RsY2xvc2UoZGxtLT5oYW5kbGUpOwogICAgIGRsbS0+c3RhdHVzID0gRExNT0RfVU5MT0FERUQ7CkBAIC02NTgsMTQgKzY2NywzIEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQotCi0jZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIGRsb3BlbiBzdXBwb3J0ICovCi0KLXZvaWQKLWluaXRfZGxtb2Qodm9pZCkKLXsKLSAgICBERUJVR01TR1RMKCgiZGxtb2QiLAotICAgICAgICAgICAgICAgICJEeW5hbWljIG1vZHVsZXMgbm90IHN1cHBvcnQgb24gdGhpcyBwbGF0Zm9ybVxuIikpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCmluZGV4IDY5MGJjNDUuLjRmYmZiOWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaApAQCAtNyw4ICs3LDExIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9ETE1PRF9ICiAKIC8qCi0gKiBUT0RPICNpbmNsdWRlICJtaWJkZWZzLmgiIAorICogVE9ETyAjaW5jbHVkZSAibWliZGVmcy5oIgogICovCisjaWYgKCFkZWZpbmVkKEhBVkVfRExGQ05fSCkgfHwgIWRlZmluZWQoSEFWRV9ETE9QRU4pKSAmJiAhZGVmaW5lZChXSU4zMikKK2NvbmZpZ19lcnJvcihEeW5hbWljIG1vZHVsZXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtKQorI2VuZGlmCiAKIGNvbmZpZ19hZGRfbWliKFVDRC1ETE1PRC1NSUIpCiAjaWZuZGVmIFNOTVBETE1PRFBBVEgKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jCmluZGV4IDBmMTFlOTkuLjBmYWZiNTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYwpAQCAtMTIyLDcgKzEyMiw3IEBACiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKICNpbmNsdWRlICJlcnJvcm1pYi5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIHN0YXRpYyB0aW1lX3QgICBlcnJvcnN0YXR1c3RpbWUgPSAwOwogc3RhdGljIGludCAgICAgIGVycm9yc3RhdHVzcHJpb3IgPSAwOwpAQCAtMTU5LDE0ICsxNTksMTQgQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfZXJyb3JfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Vycm9ycywgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Vycm9ycywgMSwKLSAgICAgICAgIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsIHtFUlJPUk1TR319CiAgICAgfTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaAppbmRleCA1ZGNiMmNjLi41MDE2NDJjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKQEAgLTYsNyArNiw3IEBACiAKIHZvaWQgICAgICAgICAgICBpbml0X2Vycm9ybWliKHZvaWQpOwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgICB2b2lkICAgICAgICAgICAgc2V0UGVycm9yc3RhdHVzKGNvbnN0IGNoYXIgKik7CiAgICAgIHZvaWQgICAgICAgICAgICBzZXRlcnJvcnN0YXR1cyhjb25zdCBjaGFyICosIGludCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKaW5kZXggNDI5OTIxNy4uZGIxN2E5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAiZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgInV0aWxpdGllcy9leGVjdXRlLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogCiBleHRlcm4gc3RydWN0IG15cHJvYyAqcHJvY3dhdGNoOyAgICAgICAgLyogbW92ZWQgdG8gcHJvYy5jICovCiBleHRlcm4gaW50ICAgICAgbnVtcHJvY3M7ICAgICAgIC8qIGRpdHRvICovCkBAIC0xMzMsMjAgKzEzMywyMCBAQAogICogdGhlIHJlbG9jYXRhYmxlIGV4dGVuc2libGUgY29tbWFuZHMgdmFyaWFibGVzIAogICovCiBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfcmVsb2NhdGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7TUlCSU5ERVh9fSwKLSAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsCi0gICAgIHtFUlJPUk5BTUV9fSwKLSAgICB7U0hFTExDT01NQU5ELCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsCi0gICAgIHtTSEVMTENPTU1BTkR9fSwKLSAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JGTEFHfX0sCi0gICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsCi0gICAgIHtFUlJPUk1TR319LAotICAgIHtFUlJPUkZJWCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsCi0gICAgIHtFUlJPUkZJWH19LAotICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JGSVhDTUR9fQorICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge01JQklOREVYfX0sCisgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLCB7RVJST1JOQU1FfX0sCisgICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLCB7U0hFTExDT01NQU5EfX0sCisgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9SRkxBR319LAorICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLCB7RVJST1JNU0d9fSwKKyAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLCB7RVJST1JGSVh9fSwKKyAgICB7RVJST1JGSVhDTUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9SRklYQ01EfX0KIH07CiAKIApAQCAtMTU1LDIwICsxNTUsMjAgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9leHRlbnNpYmxlX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U0hFTExDT01NQU5ELCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsCi0gICAgICAgICB7U0hFTExDT01NQU5EfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9STVNHfX0sCi0gICAgICAgIHtFUlJPUkZJWCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsCi0gICAgICAgICB7RVJST1JGSVh9fSwKLSAgICAgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsCi0gICAgICAgICB7RVJST1JGSVhDTUR9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U0hFTExDT01NQU5ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLCB7U0hFTExDT01NQU5EfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9STVNHfX0sCisgICAgICAgIHtFUlJPUkZJWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLCB7RVJST1JGSVh9fSwKKyAgICAgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLCB7RVJST1JGSVhDTUR9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5oCmluZGV4IDU1OGYxNGIuLjkyODM2OTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmgKQEAgLTcsNyArNyw3IEBACiAKIHZvaWQgICAgICAgICAgICBpbml0X2V4dGVuc2libGUodm9pZCk7CiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiBjb25maWdfcmVxdWlyZSh1dGlsaXRpZXMvZXhlY3V0ZSkKIAogICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfZXh0ZW5zaWJsZV9zaGVsbDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYwppbmRleCAwMGM5OGQ0Li5hOGRkMTU0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jCkBAIC00MSw3ICs0MSw3IEBACiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKICNpbmNsdWRlICJmaWxlLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogCiAjZGVmaW5lIE1BWEZJTEUgICAyMAogCkBAIC01MiwxMiArNTIsMTggQEAKIGluaXRfZmlsZSh2b2lkKQogewogICAgIHN0cnVjdCB2YXJpYWJsZTIgZmlsZV90YWJsZVtdID0gewotICAgICAgICB7RklMRV9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezF9fSwKLSAgICAgICAge0ZJTEVfTkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9maWxlX3RhYmxlLCAxLCB7Mn19LAotICAgICAgICB7RklMRV9TSVpFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9maWxlX3RhYmxlLCAxLCB7M319LAotICAgICAgICB7RklMRV9NQVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2ZpbGVfdGFibGUsIDEsIHs0fX0sCi0gICAgICAgIHtGSUxFX0VSUk9SLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9maWxlX3RhYmxlLCAxLCB7MTAwfX0sCi0gICAgICAgIHtGSUxFX01TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9maWxlX3RhYmxlLCAxLCB7MTAxfX0KKyAgICAgICAge0ZJTEVfSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9maWxlX3RhYmxlLCAxLCB7MX19LAorICAgICAgICB7RklMRV9OQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9maWxlX3RhYmxlLCAxLCB7Mn19LAorICAgICAgICB7RklMRV9TSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezN9fSwKKyAgICAgICAge0ZJTEVfTUFYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezR9fSwKKyAgICAgICAge0ZJTEVfRVJST1IsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9maWxlX3RhYmxlLCAxLCB7MTAwfX0sCisgICAgICAgIHtGSUxFX01TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezEwMX19CiAgICAgfTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmgKaW5kZXggOGIyMjJjNS4uNDU1MDg2ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaApAQCAtNyw2ICs3LDggQEAKIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQorCiB2b2lkICAgICAgICAgICAgaW5pdF9maWxlKHZvaWQpOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jCmluZGV4IGRiMDk0ZDMuLjljNWY5ZjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmMKQEAgLTMwLDE1ICszMCwyMSBAQAogICAgICAqIGluZm9ybWF0aW9uIGF0IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgaHBfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtIUENPTkYsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0hQQ09ORn19LAotICAgICAgICB7SFBSRUNPTkZJRywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2hwLCAxLCB7SFBSRUNPTkZJR319LAotICAgICAgICB7SFBGTEFHLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfaHAsIDEsIHtIUEZMQUd9fSwKLSAgICAgICAge0hQTE9HTUFTSywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2hwLCAxLCB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtIUFNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2hwLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7SFBDT05GLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7SFBDT05GfX0sCisgICAgICAgIHtIUFJFQ09ORklHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7SFBSRUNPTkZJR319LAorICAgICAgICB7SFBGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7SFBGTEFHfX0sCisgICAgICAgIHtIUExPR01BU0ssIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfaHAsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0hQU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGhwdHJhcF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge0hQVFJBUCwgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfaHAsIDEsIHtIUFRSQVB9fSwKKyAgICAgICAge0hQVFJBUCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7SFBUUkFQfX0sCiAgICAgfTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCmluZGV4IGM1Y2U5MDYuLjUxOWM4MGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCkBAIC03Myw3ICs3Myw3IEBACiAgKiBtaW5pbWFsIGluY2x1ZGUgZGlyZWN0aXZlcyAKICAqLwogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogI2luY2x1ZGUgPHRpbWUuaD4KIAogLyoKQEAgLTEzMSw0MSArMTMxLDQxIEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUgICBMTVRFTVBTRU5TT1JTSU5ERVggICAgMwotICAgIHtMTVRFTVBTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7MiwgMSwgMX19LAorICAgIHtMTVRFTVBTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MiwgMSwgMX19LAogI2RlZmluZSAgIExNVEVNUFNFTlNPUlNERVZJQ0UgICA0Ci0gICAge0xNVEVNUFNFTlNPUlNERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHsyLCAxLCAyfX0sCisgICAge0xNVEVNUFNFTlNPUlNERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG1TZW5zb3JzVGFibGUsIDMsIHsyLCAxLCAyfX0sCiAjZGVmaW5lICAgTE1URU1QU0VOU09SU1ZBTFVFICAgIDUKLSAgICB7TE1URU1QU0VOU09SU1ZBTFVFLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHsyLCAxLCAzfX0sCisgICAge0xNVEVNUFNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MiwgMSwgM319LAogI2RlZmluZSAgIExNRkFOU0VOU09SU0lOREVYICAgICA4Ci0gICAge0xNRkFOU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezMsIDEsIDF9fSwKKyAgICB7TE1GQU5TRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MywgMSwgMX19LAogI2RlZmluZSAgIExNRkFOU0VOU09SU0RFVklDRSAgICA5Ci0gICAge0xNRkFOU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezMsIDEsIDJ9fSwKKyAgICB7TE1GQU5TRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MywgMSwgMn19LAogI2RlZmluZSAgIExNRkFOU0VOU09SU1ZBTFVFICAgICAxMAotICAgIHtMTUZBTlNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7MywgMSwgM319LAorICAgIHtMTUZBTlNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MywgMSwgM319LAogI2RlZmluZSAgIExNVk9MVFNFTlNPUlNJTkRFWCAgICAxMwotICAgIHtMTVZPTFRTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NCwgMSwgMX19LAorICAgIHtMTVZPTFRTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NCwgMSwgMX19LAogI2RlZmluZSAgIExNVk9MVFNFTlNPUlNERVZJQ0UgICAxNAotICAgIHtMTVZPTFRTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NCwgMSwgMn19LAorICAgIHtMTVZPTFRTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NCwgMSwgMn19LAogI2RlZmluZSAgIExNVk9MVFNFTlNPUlNWQUxVRSAgICAxNQotICAgIHtMTVZPTFRTRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezQsIDEsIDN9fSwKKyAgICB7TE1WT0xUU0VOU09SU1ZBTFVFLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG1TZW5zb3JzVGFibGUsIDMsIHs0LCAxLCAzfX0sCiAjZGVmaW5lICAgTE1NSVNDU0VOU09SU0lOREVYICAgIDE4Ci0gICAge0xNTUlTQ1NFTlNPUlNJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHs1LCAxLCAxfX0sCisgICAge0xNTUlTQ1NFTlNPUlNJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG1TZW5zb3JzVGFibGUsIDMsIHs1LCAxLCAxfX0sCiAjZGVmaW5lICAgTE1NSVNDU0VOU09SU0RFVklDRSAgIDE5Ci0gICAge0xNTUlTQ1NFTlNPUlNERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHs1LCAxLCAyfX0sCisgICAge0xNTUlTQ1NFTlNPUlNERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG1TZW5zb3JzVGFibGUsIDMsIHs1LCAxLCAyfX0sCiAjZGVmaW5lICAgTE1NSVNDU0VOU09SU1ZBTFVFICAgIDIwCi0gICAge0xNTUlTQ1NFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NSwgMSwgM319LAorICAgIHtMTU1JU0NTRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezUsIDEsIDN9fSwKIH07CiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmgKaW5kZXggYWZlZDZmYS4uOTIwOThhNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmgKQEAgLTYsNyArNiw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9MTVNFTlNPUlNfSAogI2RlZmluZSBfTUlCR1JPVVBfTE1TRU5TT1JTX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKIGNvbmZpZ19hZGRfbWliKExNLVNFTlNPUlMtTUlCKQogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X2xtU2Vuc29ycyh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlYTc0ZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jCkBAIC0wLDAgKzEsMjA1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaD4KKyNpbmNsdWRlICJ1Y2Qtc25tcC9sbXNlbnNvcnNNaWIuaCIKKworbmV0c25tcF9jb250YWluZXIgKnNlbnNvckNvbnRhaW5lciA9IE5VTEw7CisKK3ZvaWQgaW5pdGlhbGl6ZV9sbVNlbnNvcnNUYWJsZShjb25zdCBjaGFyICp0YWJsZU5hbWUsIGNvbnN0IG9pZCAqdGFibGVPSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfb3AgKmZpbHRlciwgaW50IG11bHQgKTsKKworaW50IF9zZW5zb3JfZmlsdGVyX3RlbXAoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICk7CitpbnQgX3NlbnNvcl9maWx0ZXJfZmFuKCAgbmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKnYgKTsKK2ludCBfc2Vuc29yX2ZpbHRlcl92b2x0KCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApOworaW50IF9zZW5zb3JfZmlsdGVyX21pc2MoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICk7CisKK3N0YXRpYyBjb25zdCBvaWQgbG1UZW1wU2Vuc29yc1RhYmxlX29pZFtdICAgPSB7MSwzLDYsMSw0LDEsMjAyMSwxMywxNiwyfTsKK3N0YXRpYyBjb25zdCBvaWQgbG1GYW5TZW5zb3JzVGFibGVfb2lkW10gICAgPSB7MSwzLDYsMSw0LDEsMjAyMSwxMywxNiwzfTsKK3N0YXRpYyBjb25zdCBvaWQgbG1Wb2x0U2Vuc29yc1RhYmxlX29pZFtdICAgPSB7MSwzLDYsMSw0LDEsMjAyMSwxMywxNiw0fTsKK3N0YXRpYyBjb25zdCBvaWQgbG1NaXNjU2Vuc29yc1RhYmxlX29pZFtdICAgPSB7MSwzLDYsMSw0LDEsMjAyMSwxMywxNiw1fTsKKyAgICAgICAgICAgIC8qIEFsbCB0aGUgdGFibGVzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIHJvb3QgT0lEICovCitjb25zdCBzaXplX3QgbG1TZW5zb3JzVGFibGVzX29pZF9sZW4gPSBPSURfTEVOR1RIKGxtTWlzY1NlbnNvcnNUYWJsZV9vaWQpOworCisKKy8qIEluaXRpYWxpc2UgdGhlIExNIFNlbnNvcnMgTUlCIG1vZHVsZSAqLwordm9pZAoraW5pdF9sbXNlbnNvcnNNaWIodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgidWNkLXNubXAvbG1zZW5zb3JzTWliIiwiSW5pdGlhbGl6aW5nIExNLVNFTlNPUlMtTUlCIHRhYmxlc1xuIikpOworCisgICAgLyogCisgICAgICogSW5pdGlhbGlzZSB0aGUgZm91ciBMTS1TRU5TT1JTLU1JQiB0YWJsZXMKKyAgICAgKgorICAgICAqIFRoZXkgYXJlIGFsbW9zdCBpZGVudGljYWwsIHNvIHdlIGNhbiB1c2UgdGhlIHNhbWUgcmVnaXN0cmF0aW9uIGNvZGUuCisgICAgICovCisgICAgaW5pdGlhbGl6ZV9sbVNlbnNvcnNUYWJsZSggImxtVGVtcFNlbnNvcnNUYWJsZSIsIGxtVGVtcFNlbnNvcnNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZW5zb3JfZmlsdGVyX3RlbXAsIDEwMDAgKTsgIC8qIE1JQiBhc2tzIGZvciBtQyAqLworICAgIGluaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoICJsbUZhblNlbnNvcnNUYWJsZSIsICBsbUZhblNlbnNvcnNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZW5zb3JfZmlsdGVyX2ZhbiwgIDEpOworICAgIGluaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoICJsbVZvbHRTZW5zb3JzVGFibGUiLCBsbVZvbHRTZW5zb3JzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2Vuc29yX2ZpbHRlcl92b2x0LCAxMDAwICk7ICAvKiBNSUIgYXNrcyBmb3IgbVYgKi8KKyAgICBpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKCAibG1NaXNjU2Vuc29yc1RhYmxlIiwgbG1NaXNjU2Vuc29yc1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvcl9maWx0ZXJfbWlzYywgMSApOworfQorCisvKgorICogQ29tbW9uIGluaXRpYWxpc2F0aW9uIGNvZGUsIHVzZWQgZm9yIHNldHRpbmcgdXAgYWxsIGZvdXIgdGFibGVzCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoY29uc3QgY2hhciAqdGFibGVOYW1lLCBjb25zdCBvaWQgKnRhYmxlT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9vcCAqZmlsdGVyLCBpbnQgbXVsdCApCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisgICAgbmV0c25tcF9jYWNoZSAgICAgKmNhY2hlOworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICAvKgorICAgICAqIEVuc3VyZSB0aGUgSEFMIHNlbnNvcnMgbW9kdWxlIGhhcyBiZWVuIGluaXRpYWxpc2VkLAorICAgICAqICAgYW5kIHJldHJpZXZlIHRoZSBtYWluIHNlbnNvcnMgY29udGFpbmVyLgorICAgICAqIFRoaXMgdGFibGUgd2lsbCB0aGVuIGJlIHJlZ2lzdGVyZWQgdXNpbmcgYSBmaWx0ZXIgb24gdGhpcyBjb250YWluZXIuCisgICAgICovCisgICAgc2Vuc29yQ29udGFpbmVyID0gZ2V0X3NlbnNvcl9jb250YWluZXIoKTsKKyAgICBpZiAoICFzZW5zb3JDb250YWluZXIgKSB7CisgICAgICAgIGluaXRfaHdfc2Vuc29ycyggKTsKKyAgICAgICAgc2Vuc29yQ29udGFpbmVyID0gZ2V0X3NlbnNvcl9jb250YWluZXIoKTsKKyAgICB9CisgICAgY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgic2Vuc29yVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgY29udGFpbmVyLT5pbnNlcnRfZmlsdGVyID0gZmlsdGVyOworICAgIG5ldHNubXBfY29udGFpbmVyX2FkZF9pbmRleCggc2Vuc29yQ29udGFpbmVyLCBjb250YWluZXIgKTsKKworCisgICAgLyoKKyAgICAgKiBDcmVhdGUgYSBiYXNpYyByZWdpc3RyYXRpb24gc3RydWN0dXJlIGZvciB0aGUgdGFibGUKKyAgICAgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgIHRhYmxlTmFtZSwgbG1TZW5zb3JzVGFibGVzX2hhbmRsZXIsCisgICAgICAgICAgICAgICB0YWJsZU9JRCwgIGxtU2Vuc29yc1RhYmxlc19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWQorICAgICAgICAgICAgICApOworCisgICAgLyoKKyAgICAgKiBSZWdpc3RlciB0aGUgdGFibGUgdXNpbmcgdGhlIGZpbHRlcmVkIGNvbnRhaW5lcgorICAgICAqIEluY2x1ZGUgYW4gaW5kaWNhdG9yIG9mIGFueSBzY2FsaW5nIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNlbnNvciB2YWx1ZQorICAgICAqLworICAgIHJlZy0+bXlfcmVnX3ZvaWQgPSAodm9pZCAqKW11bHQ7CisgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKTsKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgMCk7CisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9MTVNFTlNPUlNfSU5ERVg7CisgICAgdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9MTVNFTlNPUlNfVkFMVUU7CisgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcmVnaXN0ZXIoIHJlZywgdGFibGVfaW5mbywgY29udGFpbmVyLCAwICk7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBIQUwgc2Vuc29ycyBtb2R1bGUgd2FzIGNvbmZpZ3VyZWQgYXMgYW4gb24tZGVtYW5kIGNhY2hpbmcKKyAgICAgKiAgbW9kdWxlIChyYXRoZXIgdGhhbiBiZWluZyBhdXRvbWF0aWNhbGx5IGxvYWRlZCByZWd1bGFybHkpLAorICAgICAqICB0aGVuIGVuc3VyZSB0aGlzIHRhYmxlIG1ha2VzIHVzZSBvZiB0aGF0IGNhY2hlLgorICAgICAqLworICAgIGNhY2hlID0gZ2V0X3NlbnNvcl9jYWNoZSgpOworICAgIGlmICggY2FjaGUgKSB7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXJfYmVmb3JlKCByZWcsIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQoIGNhY2hlICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWJsZV9jb250YWluZXIiKTsKKyAgICB9CisKK30KKworCisvKgorICogIENvbnRhaW5lciBmaWx0ZXJzIGZvciB0aGUgZm91ciB0YWJsZXMKKyAqCisgKiAgVXNlZCB0byBlbnN1cmUgdGhhdCBzZW5zb3IgZW50cmllcyBhcHBlYXIgaW4gdGhlIGFwcHJvcHJpYXRlIHRhYmxlLgorICovCitpbnQgX3NlbnNvcl9maWx0ZXJfdGVtcCggbmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKnYgKSB7CisgICAgY29uc3QgbmV0c25tcF9zZW5zb3JfaW5mbyAqc3AgPSAoY29uc3QgbmV0c25tcF9zZW5zb3JfaW5mbyAqKXY7CisgICAgLyogT25seSBtYXRjaGVzIHRlbXBlcmF0dXJlIHNlbnNvcnMgKi8KKyAgICByZXR1cm4gKCggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSApID8gMCA6IDEgKTsKK30KKworaW50IF9zZW5zb3JfZmlsdGVyX2ZhbiggbmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKnYgKSB7CisgICAgY29uc3QgbmV0c25tcF9zZW5zb3JfaW5mbyAqc3AgPSAoY29uc3QgbmV0c25tcF9zZW5zb3JfaW5mbyAqKXY7CisgICAgLyogT25seSBtYXRjaGVzIGZhbiBzZW5zb3JzICovCisgICAgcmV0dXJuICgoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNICkgPyAwIDogMSApOworfQorCitpbnQgX3NlbnNvcl9maWx0ZXJfdm9sdCggbmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKnYgKSB7CisgICAgY29uc3QgbmV0c25tcF9zZW5zb3JfaW5mbyAqc3AgPSAoY29uc3QgbmV0c25tcF9zZW5zb3JfaW5mbyAqKXY7CisgICAgLyogT25seSBtYXRjaGVzIHZvbHRhZ2Ugc2Vuc29ycyAoQUMgb3IgREMpICovCisgICAgcmV0dXJuICgoKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfREMgKSB8fAorICAgICAgICAgICAgICggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0FDICkpID8gMCA6IDEgKTsKK30KKworaW50IF9zZW5zb3JfZmlsdGVyX21pc2MoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE1hdGNoZXMgZXZlcnl0aGluZyBleGNlcHQgdGVtcGVyYXR1cmUsIGZhbiBvciB2b2x0YWdlIHNlbnNvcnMgKi8KKyAgICByZXR1cm4gKCgoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgKSB8fAorICAgICAgICAgICAgICggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9SUE0gICAgICAgICApIHx8CisgICAgICAgICAgICAgKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfREMgICkgfHwKKyAgICAgICAgICAgICAoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9BQyAgKSkgPyAxIDogMCApOworfQorCisKKy8qCisgKiBIYW5kbGUgcmVxdWVzdHMgZm9yIGFueSBvZiB0aGUgZm91ciBsbVh4eHhTZW5zb3JzVGFibGVzIAorICoKKyAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBhbGwgdGhlIHRhYmxlIHNoYXJlIHRoZQorICogIHNhbWUgc3RydWN0dXJlIGFuZCBiZWhhdmlvdXIuCisgKi8KK2ludAorbG1TZW5zb3JzVGFibGVzX2hhbmRsZXIoCisgICAgbmV0c25tcF9taWJfaGFuZGxlciAgICAgICAgICAgICAgICpoYW5kbGVyLAorICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgICAqcmVnaW5mbywKKyAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICAgICAgKnJlcWluZm8sCisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAgICAgICpyZXF1ZXN0cykgeworCisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgKnJlcXVlc3Q7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNlbnNvcl9pbmZvOworICAgIGludCBtdWx0ICA9IChpbnQpcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisKKyAgICBERUJVR01TR1RMKCggInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsImxtU2Vuc29yc1RhYmxlc19oYW5kbGVyIC0gcm9vdDogIikpOworICAgIERFQlVHTVNHT0lEKCgidWNkLXNubXAvbG1zZW5zb3JzTWliIiwgcmVnaW5mby0+cm9vdG9pZCwgcmVnaW5mby0+cm9vdG9pZF9sZW4pKTsKKyAgICBERUJVR01TRygoICAgInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsIiwgbW9kZSAlZFxuIiwgcmVxaW5mby0+bW9kZSApKTsKKyAgICAvKgorICAgICAqIFRoaXMgaXMgYSByZWFkLW9ubHkgdGFibGUsIHNvIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgR0VUIHJlcXVlc3RzLgorICAgICAqICAgIChUaGUgY29udGFpbmVyIGhlbHBlciBjb252ZXJ0cyBHRVRORVhULT5HRVQgcmVxdWVzdHMgYXV0b21hdGljYWxseSkuCisgICAgICovCisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisgICAgY2FzZSBNT0RFX0dFVDoKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHNlbnNvcl9pbmZvID0gKG5ldHNubXBfc2Vuc29yX2luZm8gKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoICFzZW5zb3JfaW5mbyApIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgdGFibGVfaW5mbyAgID0gIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0xNU0VOU09SU19JTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc29yX2luZm8tPmlkeC5vaWRzWzBdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0xNU0VOU09SU19ERVZJQ0U6CisgICAgICAgICAgICAgICAgaWYgKCBzZW5zb3JfaW5mby0+ZGVzY3JbMF0gIT0gJ1wwJyApIHsKKyAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc29yX2luZm8tPmRlc2NyLCBzdHJsZW4oc2Vuc29yX2luZm8tPmRlc2NyKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc29yX2luZm8tPm5hbWUsICBzdHJsZW4oc2Vuc29yX2luZm8tPm5hbWUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9MTVNFTlNPUlNfVkFMVUU6CisgICAgICAgICAgICAgICAgLyogTXVsdGlwbHkgdGhlIHZhbHVlIGJ5IHRoZSBhcHByb3ByaWF0ZSBzY2FsaW5nIGZhY3RvciBmb3IgdGhpcyB0YWJsZSAqLworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKCByZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9HQVVHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobXVsdCpzZW5zb3JfaW5mby0+dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDg1ZGQxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmgKQEAgLTAsMCArMSwyMyBAQAorI2lmbmRlZiBMTV9TRU5TT1JTX01JQl9ICisjZGVmaW5lIExNX1NFTlNPUlNfTUlCX0gKKworY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycykKK2NvbmZpZ19hZGRfbWliKExNLVNFTlNPUlMtTUlCKQorCisvKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KK3ZvaWQgaW5pdF9sbXNlbnNvcnNNaWIodm9pZCk7CisKKy8qCisgKiBIYW5kbGVyIGFuZCBDb2x1bW4gZGVmaW5pdGlvbnMgZm9yIGxtWHh4eFNlbnNvcnNUYWJsZQorICoKKyAqIE5vdGUgdGhhdCB0aGUgc2FtZSBoYW5kbGVyIChhbmQgaGVuY2UgdGhlIHNhbWUKKyAqICBjb2x1bW4gaWRlbnRpZmllcnMpIGFyZSB1c2VkIGZvciBhbGwgZm91ciB0YWJsZXMuCisgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgYWxsIHRoZSB0YWJsZSBzaGFyZSB0aGUKKyAqICBzYW1lIHN0cnVjdHVyZSBhbmQgYmVoYXZpb3VyLgorICovCitOZXRzbm1wX05vZGVfSGFuZGxlciBsbVNlbnNvcnNUYWJsZXNfaGFuZGxlcjsKKyNkZWZpbmUgQ09MVU1OX0xNU0VOU09SU19JTkRFWAkJMQorI2RlZmluZSBDT0xVTU5fTE1TRU5TT1JTX0RFVklDRQkJMgorI2RlZmluZSBDT0xVTU5fTE1TRU5TT1JTX1ZBTFVFCQkzCisKKyNlbmRpZiAvKiBMTV9TRU5TT1JTX01JQl9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMKaW5kZXggYzMwNjUwNi4uMjU0OGVkOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYwpAQCAtMTM0LDcgKzEzNCw3IEBACiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKICNpbmNsdWRlICJsb2FkYXZlLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogI2luY2x1ZGUgImtlcm5lbC5oIgogCiBkb3VibGUgICAgICAgICAgbWF4bG9hZFszXTsKQEAgLTE0OCwyNCArMTQ4LDI0IEBACiAgICAgICogaW5mb3JtYXRpb24gYXQgCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX2xvYWRhdmVfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7TE9BREFWRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsCi0gICAgICAgICB7TE9BREFWRX19LAotICAgICAgICB7TE9BRE1BWFZBTCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsCi0gICAgICAgICB7TE9BRE1BWFZBTH19LAotICAgICAgICB7TE9BREFWRUlOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0xPQURBVkVJTlR9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtMT0FEQVZFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsIHtMT0FEQVZFfX0sCisgICAgICAgIHtMT0FETUFYVkFMLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsIHtMT0FETUFYVkFMfX0sCisgICAgICAgIHtMT0FEQVZFSU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TE9BREFWRUlOVH19LAogI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwotICAgICAgICB7TE9BREFWRUZMT0FULCBBU05fT1BBUVVFX0ZMT0FULCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtMT0FEQVZFRkxPQVR9fSwKKyAgICAgICAge0xPQURBVkVGTE9BVCwgQVNOX09QQVFVRV9GTE9BVCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TE9BREFWRUZMT0FUfX0sCiAjZW5kaWYKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0VSUk9STVNHfX0KKyAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKQEAgLTM0Myw3ICszNDMsNyBAQAogICAgIH0KICAgICBpZiAodHJ5X2dldGxvYWRhdmcoJmF2ZW5ydW5bMF0sIHNpemVvZihhdmVucnVuKSAvIHNpemVvZihhdmVucnVuWzBdKSkKICAgICAgICAgPT0gLTEpCi0gICAgICAgIHJldHVybiAoMCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBMT0FEQVZFOgogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmgKaW5kZXggNDk3YmZiOC4uNGY1ZTdhNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaApAQCAtNCw3ICs0LDcgQEAKICNpZm5kZWYgX01JQkdST1VQX0xPQURBVkVfSAogI2RlZmluZSBfTUlCR1JPVVBfTE9BREFWRV9ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfbG9hZGF2ZSh2b2lkKTsKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfbG9hZGF2ZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jCmluZGV4IDZiNjcyZmEuLjhkMDE3MzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYwpAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJsb2dtYXRjaC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAKLSNkZWZpbmUgTUFYTE9HTUFUQ0ggICA1MAorI2RlZmluZSBNQVhMT0dNQVRDSCAgIDI1MAogCiBzdHJ1Y3QgbG9nbWF0Y2hzdGF0IGxvZ21hdGNoVGFibGVbTUFYTE9HTUFUQ0hdOwogaW50ICAgICAgICAgICAgIGxvZ21hdGNoQ291bnQ7CkBAIC01MSwyOCArNTEsMzcgQEAKIGluaXRfbG9nbWF0Y2godm9pZCkKIHsKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGxvZ21hdGNoX2luZm9bXSA9IHsKLSAgICAgICAge0xPR01BVENIX0lORk8sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAwfQorICAgICAgICB7TE9HTUFUQ0hfSU5GTywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAwfQogICAgIH07CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGxvZ21hdGNoX3RhYmxlW10gPSB7Ci0gICAgICAgIHtMT0dNQVRDSF9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxfX0sCi0gICAgICAgIHtMT0dNQVRDSF9OQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7Mn19LAotICAgICAgICB7TE9HTUFUQ0hfRklMRU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsCi0gICAgICAgICB7M319LAotICAgICAgICB7TE9HTUFUQ0hfUkVHRVgsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs0fX0sCi0gICAgICAgIHtMT0dNQVRDSF9HTE9CQUxDVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezV9fSwKLSAgICAgICAge0xPR01BVENIX0dMT0JBTENOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsCi0gICAgICAgICB7Nn19LAotICAgICAgICB7TE9HTUFUQ0hfQ1VSUkVOVENUUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsCi0gICAgICAgICB7N319LAotICAgICAgICB7TE9HTUFUQ0hfQ1VSUkVOVENOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsCi0gICAgICAgICB7OH19LAotICAgICAgICB7TE9HTUFUQ0hfQ09VTlRFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs5fX0sCi0gICAgICAgIHtMT0dNQVRDSF9DT1VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxMH19LAotICAgICAgICB7TE9HTUFUQ0hfRlJFUSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxMX19LAotICAgICAgICB7TE9HTUFUQ0hfRVJST1IsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAwfX0sCi0gICAgICAgIHtMT0dNQVRDSF9NU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxMDF9fQorICAgICAgICB7TE9HTUFUQ0hfSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezF9fSwKKyAgICAgICAge0xPR01BVENIX05BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7Mn19LAorICAgICAgICB7TE9HTUFUQ0hfRklMRU5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7M319LAorICAgICAgICB7TE9HTUFUQ0hfUkVHRVgsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7NH19LAorICAgICAgICB7TE9HTUFUQ0hfR0xPQkFMQ1RSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs1fX0sCisgICAgICAgIHtMT0dNQVRDSF9HTE9CQUxDTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezZ9fSwKKyAgICAgICAge0xPR01BVENIX0NVUlJFTlRDVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezd9fSwKKyAgICAgICAge0xPR01BVENIX0NVUlJFTlRDTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezh9fSwKKyAgICAgICAge0xPR01BVENIX0NPVU5URVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezl9fSwKKyAgICAgICAge0xPR01BVENIX0NPVU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxMH19LAorICAgICAgICB7TE9HTUFUQ0hfRlJFUSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTF9fSwKKyAgICAgICAge0xPR01BVENIX0VSUk9SLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxMDB9fSwKKyAgICAgICAge0xPR01BVENIX01TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxMDF9fQogICAgIH07CiAKICAgICAvKgpAQCAtMTcwLDExICsxNzksMTUgQEAKICAgICAgICAgc3NjYW5mKGNwdHIsICIlMjU1cyVjJTI1NXMlYyAlZCAlMjU1Y1xuIiwKICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbbG9nbWF0Y2hDb3VudF0ubmFtZSwKIAkgICAgICAgJnNwYWNlX25hbWUsCi0gICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLmZpbGVuYW1lLAorICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZVBhdHRlcm4sCiAJICAgICAgICZzcGFjZV9wYXRoLAogICAgICAgICAgICAgICAgJihsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLmZyZXF1ZW5jeSksCiAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLnJlZ0V4KTsKIAorICAgICAgICAvKiBmaWxsIGluIGZpbGVuYW1lIHdpdGggaW5pdGlhbCBkYXRhICovCisgICAgICAgIHN0cmNweShsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLmZpbGVuYW1lLCBsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLmZpbGVuYW1lUGF0dGVybik7CisgICAgICAgIGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLmZpbGVuYW1lUGF0dGVybiwgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZSk7CisKIAkvKgogCSAqIExvZyBhbiBlcnJvciB0aGVuIHJldHVybiBpZiBhbnkgb2YgdGhlIHN0cmluZ3Mgc2Nhbm5lZCBpbiB3ZXJlCiAJICogbGFyZ2VyIHRoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuLgpAQCAtMjUwLDYgKzI2Myw3IEBACiAgICAgaW50ICAgICAgICAgICAgIHRvb2JpZzsKICAgICBpbnQgICAgICAgICAgICAgYW55Q2hhbmdlcyA9IEZBTFNFOwogICAgIHN0cnVjdCBzdGF0ICAgICBzYjsKKyAgICBjaGFyICAgICAgICAgICAgbGFzdEZpbGVuYW1lWzI1Nl07CiAKICAgICAvKgogICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKQEAgLTI3Nyw3ICsyOTEsNiBAQAogCiAgICAgICAgIGlmICgocGVyZmlsZSA9IGZvcGVuKHBlcmZpbGVuYW1lLCAiciIpKSkgewogCi0KICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiAgICAgICAgICAgICAgKiB0aGUgcGVyc2lzdGVudCBkYXRhIGZpbGUgZXhpc3RzIHNvICAgCkBAIC0yODgsNyArMzAxLDcgQEAKIAogICAgICAgICAgICAgcG9zID0gY291bnRlciA9IGNjb3VudGVyID0gMDsKIAotICAgICAgICAgICAgaWYgKGZzY2FuZihwZXJmaWxlLCAiJWx1ICVsdSAlbHUiLCAmcG9zLCAmY2NvdW50ZXIsICZjb3VudGVyKSkgeworICAgICAgICAgICAgaWYgKGZzY2FuZihwZXJmaWxlLCAiJWx1ICVsdSAlbHUgJXMiLCAmcG9zLCAmY2NvdW50ZXIsICZjb3VudGVyLCBsYXN0RmlsZW5hbWUpKSB7CiAKIAogICAgICAgICAgICAgICAgIC8qCkBAIC0yOTksNDEgKzMxMiw1MiBAQAogICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKICAgICAgICAgICAgICAgICAgKi8KIAotICAgICAgICAgICAgICAgIGlmICgobG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmxvZ2ZpbGUgPQotICAgICAgICAgICAgICAgICAgICBmb3Blbihsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWUsICJyIikpKSB7Ci0KKyAgICAgICAgICAgICAgICBpZiAobG9nbWF0Y2hfdXBkYXRlX2ZpbGVuYW1lKGxvZ21hdGNoVGFibGVbaWluZGV4XS5maWxlbmFtZVBhdHRlcm4sIGxhc3RGaWxlbmFtZSkgPT0gMCkgewogCiAgICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLSAgICAgICAgICAgICAgICAgICAgICogdGhlIGxvZyBmaWxlIGNvdWxkIGJlIG9wZW5lZDsgbm93ICAgIAotICAgICAgICAgICAgICAgICAgICAgKiBsZXQncyB0cnkgdG8gc2V0IHRoZSBwb2ludGVyICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAqIHRoZSBmaWxlbmFtZSBpcyBzdGlsbCB0aGUgc2FtZSBhcyAKKyAgICAgICAgICAgICAgICAgICAgICogdGhlIG9uZSBzdG9yZWQgaW4gdGhlIHBlcnNpc3RlbnQKKyAgICAgICAgICAgICAgICAgICAgICogZGF0YSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICovCiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFmc2VlawotICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlLCBwb3MsIFNFRUtfU0VUKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcGVuKGxvZ21hdGNoVGFibGVbaWluZGV4XS5maWxlbmFtZSwgInIiKSkpIHsKIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAotICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIHBvaW50ZXIgY291bGQgYmUgc2V0IC0gdGhpcyBpcyAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIG1vc3QgdGhhdCB3ZSBjYW4gZG86IGlmIHRoZSAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICogcG9pbnRlciBpcyBzbWFsbGVyIHRoYW4gdGhlIGZpbGUgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICogc2l6ZSB3ZSBtdXN0IGFzc3VtZSB0aGF0IHRoZSBwb2ludGVyIAotICAgICAgICAgICAgICAgICAgICAgICAgICogc3RpbGwgcG9pbnRzIHRvIHdoZXJlIGl0IHJlYWQgdGhlICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICogZmlsZSBsYXN0IHRpbWU7IGxldCdzIHJlc3RvcmUgdGhlICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICogZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGxvZyBmaWxlIGNvdWxkIGJlIG9wZW5lZDsgbm93ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICogbGV0J3MgdHJ5IHRvIHNldCB0aGUgcG9pbnRlciAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAogICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5jdXJyZW50RmlsZVBvc2l0aW9uID0gcG9zOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRNYXRjaENvdW50ZXIgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjb3VudGVyOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmdsb2JhbE1hdGNoQ291bnRlciA9IGNvdW50ZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZnNlZWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmxvZ2ZpbGUsIHBvcywgU0VFS19TRVQpKSB7CiAKLSAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBwb2ludGVyIGNvdWxkIGJlIHNldCAtIHRoaXMgaXMgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbW9zdCB0aGF0IHdlIGNhbiBkbzogaWYgdGhlICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcG9pbnRlciBpcyBzbWFsbGVyIHRoYW4gdGhlIGZpbGUgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemUgd2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgcG9pbnRlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdGlsbCBwb2ludHMgdG8gd2hlcmUgaXQgcmVhZCB0aGUgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZmlsZSBsYXN0IHRpbWU7IGxldCdzIHJlc3RvcmUgdGhlICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudEZpbGVQb3NpdGlvbiA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudE1hdGNoQ291bnRlciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UobG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmxvZ2ZpbGUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5nbG9iYWxNYXRjaENvdW50ZXIgPSBjb3VudGVyOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmY2xvc2UocGVyZmlsZSk7CkBAIC0zNDIsNiArMzY2LDE4IEBACiAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS52aXJnaW4gPSBGQUxTRTsKICAgICB9CiAKKyAgICAvKgorICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKiBjaGVjayBpZiBhIG5ldyBpbnB1dCBmaWxlIG5lZWRzIHRvIGJlIG9wZW5lZAorICAgICAqIGlmIHllcywgcmVzZXQgY291bnRlciBhbmQgcG9zaXRpb24KKyAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICovCisKKyAgICBpZiAobG9nbWF0Y2hfdXBkYXRlX2ZpbGVuYW1lKGxvZ21hdGNoVGFibGVbaWluZGV4XS5maWxlbmFtZVBhdHRlcm4sIGxvZ21hdGNoVGFibGVbaWluZGV4XS5maWxlbmFtZSkgPT0gMSkgeworICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudEZpbGVQb3NpdGlvbiA9IDA7IAorICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudE1hdGNoQ291bnRlciA9IDA7CisgICAgfQorCiAKICAgICAvKgogICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKQEAgLTQyOSwxMCArNDY1LDExIEBACiAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKICAgICAgICAgICovCiAKLSAgICAgICAgZnByaW50ZihwZXJmaWxlLCAiJWx1ICVsdSAlbHVcbiIsCisgICAgICAgIGZwcmludGYocGVyZmlsZSwgIiVsdSAlbHUgJWx1ICVzXG4iLAogICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5jdXJyZW50RmlsZVBvc2l0aW9uLAogICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5jdXJyZW50TWF0Y2hDb3VudGVyLAotICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5nbG9iYWxNYXRjaENvdW50ZXIpOworICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5nbG9iYWxNYXRjaENvdW50ZXIsCisgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmZpbGVuYW1lKTsKIAogICAgICAgICBmY2xvc2UocGVyZmlsZSk7CiAgICAgfQpAQCAtNTQ5LDQgKzU4Niw1NCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGZpbGVuYW1lIHBhdHRlcm4gCisgKiAgY29udGFpbnMgdGhlICUgY2hhcmFjdGVyIGluZGljYXRpbmcgYSB2YXJpYWJsZQorICogIGZpbGVuYW1lIChpLmUuIGl0IHVzZXMgZGF0ZS90aW1lIGZvcm1hdCBjb250cm9sIAorICogIGNvZGVzLCBzZWUgJ21hbiBkYXRlJykgdGhlbiBleHBhbmRzIHRob3NlIGNvbnRyb2wKKyAqICBjb2RlcyBiYXNlZCBvbiBjdXJyZW50IHRpbWUgYW5kIHNldHMgdGhlIAorICogIGZpbGVuYW1lIGZpZWxkIGluIHRoZSBzdHJ1Y3QuCisgKiAgUmV0dXJucyAxIGlmIHRoZSBmaWxlbmFtZSBjaGFuZ2VkLCAwIG90aGVyd2lzZQorICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitpbnQgbG9nbWF0Y2hfdXBkYXRlX2ZpbGVuYW1lKGNoYXIgKiBwYXR0ZXJuLCBjaGFyICogY3VycmVudEZpbGVuYW1lKSB7CisgICAgdGltZV90IHQ7CisgICAgc3RydWN0IHRtICp0bXA7CisgICAgY2hhciBuZXdGaWxlbmFtZVsyNTZdOworCisgICAgLyogCisgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAqIGlmIHRoZSBmaWxlbmFtZSBwYXR0ZXJuIGRvZXNuJ3QgaGF2ZSB0aGUgIiUiIGNoYXJhY3RlciBqdXN0IHJldHVybiwgCisgICAgICogc2luY2UgdGhlcmUgaXMgbm8gbmVlZCBmb3IgZnVydGhlciBwcm9jZXNzaW5nCisgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAqLworICAgIGlmIChzdHJzdHIocGF0dGVybiwgIiUiKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHQgPSB0aW1lKE5VTEwpOworICAgIHRtcCA9IGxvY2FsdGltZSgmdCk7CisKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcGVycm9yKCJsb2NhbHRpbWUiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogcmVzdWx0IG9mIGV4cGFuc2lvbiBtdXN0IGZpdCBpbnRvIG5ld0ZpbGVuYW1lLCBvdGhlcndpc2UgcmV0dXJuaW5nICovIAorICAgIGlmIChzdHJmdGltZShuZXdGaWxlbmFtZSwgc2l6ZW9mKG5ld0ZpbGVuYW1lKSwgcGF0dGVybiwgdG1wKSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGlmIHNhbWUgYXMgY3VycmVudCBmaWxlbmFtZSwganVzdCByZXR1cm4gKi8KKyAgICBpZiAoc3RyY21wKGN1cnJlbnRGaWxlbmFtZSwgbmV3RmlsZW5hbWUpID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogb3RoZXJ3aXNlIHVwZGF0ZSBjdXJyZW50RmlsZW5hbWUgYW5kIHJldHVybiAxICovCisgICAgICAgIHN0cmNweShjdXJyZW50RmlsZW5hbWUsIG5ld0ZpbGVuYW1lKTsgCisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKwogI2VuZGlmIC8qIEhBVkVfUkVHRVggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oCmluZGV4IGViMmMwNzAuLjM1YWQyN2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaApAQCAtNSwxMCArNSwxNCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfTE9HTUFUQ0hfSAogI2RlZmluZSBfTUlCR1JPVVBfTE9HTUFUQ0hfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogI2luY2x1ZGUgPHJlZ2V4Lmg+CiAKIHN0cnVjdCBsb2dtYXRjaHN0YXQgeworICAgIGNoYXIgICAgICAgICAgICBmaWxlbmFtZVBhdHRlcm5bMjU2XTsKICAgICBjaGFyICAgICAgICAgICAgZmlsZW5hbWVbMjU2XTsKICAgICBjaGFyICAgICAgICAgICAgcmVnRXhbMjU2XTsKICAgICBjaGFyICAgICAgICAgICAgbmFtZVsyNTZdOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYwppbmRleCAxMDllOTZmLi5hMjc5Y2RkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYwpAQCAtMTAsMzIgKzEwLDMwIEBACiAjaW5jbHVkZSAibWVtb3J5LmgiCiAKICNkZWZpbmUgREVGQVVMVE1JTklNVU1TV0FQIDE2MDAwICAgICAgICAvKiBraWxvYnl0ZXMgKi8KLWludCBtZW1vcnlfb2JqZWN0X2luZGV4OwotaW50IG1pbmltdW1fc3dhcDsKK3N0YXRpYyBpbnQgbWluaW11bV9zd2FwOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG1lbW9yeSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfbWVtb3J5KHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAgICAgIG1lbW9yeV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCB9OwotICAgIHN0YXRpYyBvaWQgICAgICBtZW1Td2FwRXJyb3Jfb2lkW10gID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCA0LCAxMDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgbWVtU3dhcEVyck1zZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCwgMTAxIH07CisgICAgY29uc3Qgb2lkICAgICAgbWVtb3J5X29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCA0IH07CisgICAgY29uc3Qgb2lkICAgICAgbWVtU3dhcEVycm9yX29pZFtdICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCwgMTAwIH07CisgICAgY29uc3Qgb2lkICAgICAgbWVtU3dhcEVyck1zZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCwgMTAxIH07CiAKICAgICBERUJVR01TR1RMKCgibWVtb3J5IiwgIkluaXRpYWxpemluZ1xuIikpOwogCi0gICAgbWVtb3J5X29iamVjdF9pbmRleCA9IE9JRF9MRU5HVEgobWVtb3J5X29pZCk7CiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtZW1vcnkiLCBoYW5kbGVfbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X29pZCwgbWVtb3J5X29iamVjdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9vaWQsIE9JRF9MRU5HVEgobWVtb3J5X29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxNyk7CiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIoCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtZW1Td2FwRXJyb3IiLCBoYW5kbGVfbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtU3dhcEVycm9yX29pZCwgbWVtb3J5X29iamVjdF9pbmRleCsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtU3dhcEVycm9yX29pZCwgT0lEX0xFTkdUSChtZW1Td2FwRXJyb3Jfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSk7CiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIoCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtZW1Td2FwRXJyTXNnIiwgaGFuZGxlX21lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtU3dhcEVyck1zZ19vaWQsIG1lbW9yeV9vYmplY3RfaW5kZXgrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtU3dhcEVyck1zZ19vaWQsIE9JRF9MRU5HVEgobWVtU3dhcEVyck1zZ19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpKTsKIAogICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzd2FwIiwgbWVtb3J5X3BhcnNlX2NvbmZpZywKQEAgLTc0LDcgKzcyLDcgQEAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICBjYXNlIE1PREVfR0VUOgogICAgICAgICBuZXRzbm1wX21lbW9yeV9sb2FkKCk7Ci0gICAgICAgIHN3aXRjaCAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVsgbWVtb3J5X29iamVjdF9pbmRleCBdKSB7CisgICAgICAgIHN3aXRjaCAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVsgcmVnaW5mby0+cm9vdG9pZF9sZW4gLSAyIF0pIHsKICAgICAgICAgY2FzZSBNRU1PUllfSU5ERVg6CiAgICAgICAgICAgICB2YWwgPSAwOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDUsNyArMjAzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gb2JqZWN0ICglbHUpIGluIGhhbmRsZV9tZW1vcnlcbiIsCi0gICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lWyBtZW1vcnlfb2JqZWN0X2luZGV4IF0pOworICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVsgcmVnaW5mby0+cm9vdG9pZF9sZW4gLSAyIF0pOwogTk9TVUNIOgogICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUICk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jCmluZGV4IDMxOGVlZTAuLjgyMGY2MjggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuYwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIiAgICAgICAgIC8qIHV0aWxpdHkgZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIiAvKiB1dGlsaXR5IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAqLwogI2luY2x1ZGUgIm1lbW9yeS5oIiAgICAgICAgICAgICAvKiB0aGUgbW9kdWxlLXNwZWNpZmljIGhlYWRlciAqLwogI2luY2x1ZGUgIm1lbW9yeV9haXg0LmgiICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAKQEAgLTU1LDM4ICs1NSw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5oCmluZGV4IDlmNTgwNDEuLmMzOTU5NmMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9BSVg0X0gKICNkZWZpbmUgX01JQkdST1VQX01FTU9SWV9BSVg0X0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogdm9pZCAgICAgICAgICAgIGluaXRfbWVtb3J5X2FpeDQodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYwppbmRleCA3OWNjNGM5Li43NGQ1MzY1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAibWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtb3J5X2RhcndpbjcuaCIKIApAQCAtNzMsMjMgKzczLDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STkFNRX19LAotICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTH19LAotICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFNXQVBUWFR9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxGUkVFfX0sCi0gICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUJVRkZFUn19LAotICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmgKaW5kZXggZWZhOTljOC4uYWI1ZDI2NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfTUVNT1JZX0RBUldJTjdfSAogI2RlZmluZSBfTUlCR1JPVVBfTUVNT1JZX0RBUldJTjdfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiBleHRlcm4gdm9pZCAgICAgaW5pdF9tZW1vcnlfZGFyd2luNyh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMKaW5kZXggYjFkNmNiMy4uMjYxYzRjZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIgICAgICAgICAvKiB1dGlsaXR5IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAqLworI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KICNpbmNsdWRlICJtZW1vcnkuaCIgICAgICAgICAgICAgLyogdGhlIG1vZHVsZS1zcGVjaWZpYyBoZWFkZXIgKi8KICNpbmNsdWRlICJtZW1vcnlfZHluaXguaCIgICAgICAgLyogdGhlIG1vZHVsZS1zcGVjaWZpYyBoZWFkZXIgKi8KIApAQCAtMzQsMzggKzM0LDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQfX0sCi0gICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxSRUFMfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTFRYVH19LAotICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNXQVBNSU5JTVVNfX0sCi0gICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQ0FDSEVEfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZHluaXguaAppbmRleCAwYTY5OThkLi40ZmI1Mjk0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZHluaXguaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZHluaXguaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9EWU5JWF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9NRU1PUllfRFlOSVhfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYwppbmRleCAyYmVlNTE3Li4yMmRkZTRjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYwpAQCAtODcsMzggKzg3LDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQfX0sCi0gICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxSRUFMfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTFRYVH19LAotICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNXQVBNSU5JTVVNfX0sCi0gICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQ0FDSEVEfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMKaW5kZXggNWJmOTlhZC4uYzJiMjQ3OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfaHB1eC5jCkBAIC00OSwzOCArNDksNDAgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9tZW1fdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVB9fSwKLSAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxTV0FQfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTH19LAotICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFJFQUx9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVVNFRFNXQVBUWFR9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVVNFRFJFQUxUWFR9fSwKLSAgICAgICAge01FTVRPVEFMRlJFRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxGUkVFfX0sCi0gICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNU1dBUE1JTklNVU19fSwKLSAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNU0hBUkVEfX0sCi0gICAgICAgIHtNRU1CVUZGRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUJVRkZFUn19LAotICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1DQUNIRUR9fSwKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVB9fSwKKyAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxTV0FQfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTH19LAorICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFJFQUx9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQVFhUfX0sCisgICAgICAgIHtNRU1VU0VEU1dBUFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFNXQVBUWFR9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMVFhUfX0sCisgICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFJFQUxUWFR9fSwKKyAgICAgICAge01FTVRPVEFMRlJFRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxGUkVFfX0sCisgICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU1dBUE1JTklNVU19fSwKKyAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU0hBUkVEfX0sCisgICAgICAgIHtNRU1CVUZGRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUJVRkZFUn19LAorICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1DQUNIRUR9fSwKKyAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CiAgICAgfTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYwppbmRleCA2NjMyOTIxLi4zZDI2YTQ0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAibWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtb3J5X25ldGJzZDEuaCIKIApAQCAtNzUsMzggKzc1LDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQfX0sCi0gICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxSRUFMfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTFRYVH19LAotICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNXQVBNSU5JTVVNfX0sCi0gICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQ0FDSEVEfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmgKaW5kZXggYTkzNzU0YS4uYTE5NWY4NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfTUVNT1JZX05FVEJTRDFfSAogI2RlZmluZSBfTUlCR1JPVVBfTUVNT1JZX05FVEJTRDFfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiBleHRlcm4gdm9pZCAgICAgaW5pdF9tZW1vcnlfbmV0YnNkMSh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMKaW5kZXggMzNmNDFiMi4uMmQzNjI3OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIgICAgICAgICAvKiB1dGlsaXR5IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAqLworI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KICNpbmNsdWRlICJtZW1vcnkuaCIgICAgICAgICAgICAgLyogdGhlIG1vZHVsZS1zcGVjaWZpYyBoZWFkZXIgKi8KICNpbmNsdWRlICJtZW1vcnlfc29sYXJpczIuaCIgICAgLyogdGhlIG1vZHVsZS1zcGVjaWZpYyBoZWFkZXIgKi8KIApAQCAtNDIsMzggKzQyLDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQfX0sCi0gICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxSRUFMfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTFRYVH19LAotICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNXQVBNSU5JTVVNfX0sCi0gICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQ0FDSEVEfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuaAppbmRleCAzMzZiM2RkLi5mZmY1Zjc5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9TT0xBUklTMl9ICiAjZGVmaW5lIF9NSUJHUk9VUF9NRU1PUllfU09MQVJJUzJfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiB2b2lkICAgICAgICAgICAgaW5pdF9tZW1vcnlfc29sYXJpczIodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKaW5kZXggYTQyYTkxYi4uZmE5MzNiNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYwpAQCAtNDksNyArNDksOCBAQAogICAgIC8qCiAgICAgICogYm9ndXMgZW50cnkuICBPbmx5IHNvbWUgb2YgaXQgaXMgYWN0dWFsbHkgdXNlZC4gCiAgICAgICovCi0gICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV9wYXNzLCAwLCB7TUlCSU5ERVh9fSwKKyAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHRlbnNpYmxlX3Bhc3MsIDAsIHtNSUJJTkRFWH19LAogfTsKIAogCkBAIC0xNDgsNyArMTQ5LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmb3IgKGkgPSAwLCBwdG1wID0gKHN0cnVjdCBleHRlbnNpYmxlICopIHBhc3N0aHJ1czsKLSAgICAgICAgICAgICBpIDwgbnVtcGFzc3RocnVzICYmIHB0bXAgIT0gMDsgaSsrLCBwdG1wID0gcHRtcC0+bmV4dCkKKyAgICAgICAgICAgICBpIDwgbnVtcGFzc3RocnVzICYmIHB0bXAgIT0gTlVMTDsgaSsrLCBwdG1wID0gcHRtcC0+bmV4dCkKICAgICAgICAgICAgIGV0bXBbaV0gPSBwdG1wOwogICAgICAgICBxc29ydChldG1wLCBudW1wYXNzdGhydXMsIHNpemVvZihzdHJ1Y3QgZXh0ZW5zaWJsZSAqKSwKICAgICAgICAgICAgICAgcGFzc19jb21wYXJlKTsKQEAgLTMwMCwxMiArMzAxLDcgQEAKICAgICAgICAgICAgIGV4ZWNfY29tbWFuZChwYXNzdGhydSk7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidWNkLXNubXAvcGFzcyIsICJwYXNzLXJ1bm5pbmcgcmV0dXJuZWQ6ICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N0aHJ1LT5vdXRwdXQpKTsKLSAgICAgICAgICAgIGlmICghc3RybmNhc2VjbXAocGFzc3RocnUtPm91dHB1dCwgIm5vdC13cml0YWJsZSIsIDEyKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKHBhc3N0aHJ1LT5vdXRwdXQsICJ3cm9uZy10eXBlIiwgMTApKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIG5ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8ocGFzc3RocnUtPm91dHB1dCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uYwppbmRleCBhY2UwZjA3Li5lM2Q5YTAxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmMKQEAgLTYxLDYgKzYxLDUxIEBACiAgICAgcmV0dXJuIDMgKiBuIC0gMTsKIH0KIAoraW50CituZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vKGNvbnN0IGNoYXIgKmJ1ZikKK3sKKyAgICBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgInRvby1iaWciLCA3KSkgeworICAgICAgICAvKiBTaG91bGRuJ3QgaGFwcGVuICovCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9UT09CSUc7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAibm8tc3VjaC1uYW1lIiwgMTIpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImJhZC12YWx1ZSIsIDkpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9CQURWQUxVRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJyZWFkLW9ubHkiLCA5KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVBRE9OTFk7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiZ2VuLWVycm9yIiwgOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJuby1hY2Nlc3MiLCA5KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9BQ0NFU1M7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAid3JvbmctdHlwZSIsIDEwKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLWxlbmd0aCIsIDEyKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAid3JvbmctZW5jb2RpbmciLCAxNCkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HRU5DT0RJTkc7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAid3JvbmctdmFsdWUiLCAxMSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAibm8tY3JlYXRpb24iLCAxMSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQ1JFQVRJT047CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiaW5jb25zaXN0ZW50LXZhbHVlIiwgMTgpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlRWQUxVRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJyZXNvdXJjZS11bmF2YWlsYWJsZSIsIDIwKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJjb21taXQtZmFpbGVkIiwgMTMpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9DT01NSVRGQUlMRUQ7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAidW5kby1mYWlsZWQiLCAxMSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1VORE9GQUlMRUQ7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiYXV0aG9yaXphdGlvbi1lcnJvciIsIDE5KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfQVVUSE9SSVpBVElPTkVSUk9SOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIm5vdC13cml0YWJsZSIsIDEyKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiaW5jb25zaXN0ZW50LW5hbWUiLCAxNykpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0lOQ09OU0lTVEVOVE5BTUU7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKIHVuc2lnbmVkIGNoYXIgKgogbmV0c25tcF9pbnRlcm5hbF9wYXNzX3BhcnNlKGNoYXIgKiBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqIGJ1ZjIsCkBAIC04Miw3ICsxMjcsMTkgQEAKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oYnVmMik7CiAgICAgICAgIHZwLT50eXBlID0gQVNOX09DVEVUX1NUUjsKICAgICAgICAgcmV0dXJuICgodW5zaWduZWQgY2hhciAqKSBidWYyKTsKLSAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJpbnRlZ2VyIiwgNykpIHsKKyAgICB9CisjaWZkZWYgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCisgICAgZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImludGVnZXI2NCIsIDkpKSB7CisgICAgICAgIHN0YXRpYyBzdHJ1Y3QgY291bnRlcjY0IGM2NDsKKyAgICAgICAgdWludDY0X3QgdjY0ID0gc3RydG91bGwoYnVmMiwgTlVMTCwgMTApOworICAgICAgICBjNjQuaGlnaCA9ICh1bnNpZ25lZCBsb25nKSh2NjQgPj4gMzIpOworICAgICAgICBjNjQubG93ICA9ICh1bnNpZ25lZCBsb25nKSh2NjQgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoYzY0KTsKKyAgICAgICAgdnAtPnR5cGUgPSBBU05fSU5URUdFUjY0OworICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBjaGFyICopICZjNjQpOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJpbnRlZ2VyIiwgNykpIHsKICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOwogICAgICAgICBsb25nX3JldCA9IHN0cnRvbChidWYyLCBOVUxMLCAxMCk7CiAgICAgICAgIHZwLT50eXBlID0gQVNOX0lOVEVHRVI7CkBAIC05Miw3ICsxNDksMTcgQEAKICAgICAgICAgbG9uZ19yZXQgPSBzdHJ0b3VsKGJ1ZjIsIE5VTEwsIDEwKTsKICAgICAgICAgdnAtPnR5cGUgPSBBU05fVU5TSUdORUQ7CiAgICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0KTsKLSAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJjb3VudGVyIiwgNykpIHsKKyAgICB9CisgICAgZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImNvdW50ZXI2NCIsIDkpKSB7CisgICAgICAgIHN0YXRpYyBzdHJ1Y3QgY291bnRlcjY0IGM2NDsKKyAgICAgICAgdWludDY0X3QgdjY0ID0gc3RydG91bGwoYnVmMiwgTlVMTCwgMTApOworICAgICAgICBjNjQuaGlnaCA9ICh1bnNpZ25lZCBsb25nKSh2NjQgPj4gMzIpOworICAgICAgICBjNjQubG93ICA9ICh1bnNpZ25lZCBsb25nKSh2NjQgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoYzY0KTsKKyAgICAgICAgdnAtPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBjaGFyICopICZjNjQpOworICAgIH0KKyAgICBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiY291bnRlciIsIDcpKSB7CiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKICAgICAgICAgbG9uZ19yZXQgPSBzdHJ0b3VsKGJ1ZjIsIE5VTEwsIDEwKTsKICAgICAgICAgdnAtPnR5cGUgPSBBU05fQ09VTlRFUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oCmluZGV4IDJjZTZhZmQuLmIxZDdlNGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uaApAQCAtNiw2ICs2LDkgQEAKICAqIG9yIGRpc2FwcGVhciBhdCBhbnkgdGltZQogICovCiAKK2ludAorbmV0c25tcF9pbnRlcm5hbF9wYXNzX3N0cl90b19lcnJubyhjb25zdCBjaGFyICpidWYpOworCiB1bnNpZ25lZCBjaGFyICoKIG5ldHNubXBfaW50ZXJuYWxfcGFzc19wYXJzZShjaGFyICpidWYsIGNoYXIgKmJ1ZjIsIHNpemVfdCAqdmFyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZwKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMKaW5kZXggYzNmMzg5OS4uZjY4NTQxMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMKQEAgLTY2LDggKzY2LDggQEAKICAgICAvKgogICAgICAqIGJvZ3VzIGVudHJ5LiAgT25seSBzb21lIG9mIGl0IGlzIGFjdHVhbGx5IHVzZWQuIAogICAgICAqLwotICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfcGFzc19wZXJzaXN0LCAwLAotICAgICB7TUlCSU5ERVh9fSwKKyAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHRlbnNpYmxlX3Bhc3NfcGVyc2lzdCwgMCwge01JQklOREVYfX0sCiB9OwogCiB2b2lkCkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAgICAgaWYgKGV0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZm9yIChpID0gMCwgcHRtcCA9IChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKSBwZXJzaXN0cGFzc3RocnVzOwotICAgICAgICAgICAgIGkgPCBudW1wZXJzaXN0cGFzc3RocnVzICYmIHB0bXAgIT0gMDsgaSsrLCBwdG1wID0gcHRtcC0+bmV4dCkKKyAgICAgICAgICAgICBpIDwgbnVtcGVyc2lzdHBhc3N0aHJ1cyAmJiBwdG1wICE9IE5VTEw7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCiAgICAgICAgICAgICBldG1wW2ldID0gcHRtcDsKICAgICAgICAgcXNvcnQoZXRtcCwgbnVtcGVyc2lzdHBhc3N0aHJ1cywgc2l6ZW9mKHN0cnVjdCBleHRlbnNpYmxlICopLAogICAgICAgICAgICAgICBwYXNzX3BlcnNpc3RfY29tcGFyZSk7CkBAIC0zODEsMTggKzM4MSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIm5vdC13cml0YWJsZSIsIDEyKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXR5cGUiLCAxMCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwotICAgICAgICAgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAid3JvbmctbGVuZ3RoIiwgMTIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgICAgICAgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAid3JvbmctdmFsdWUiLCAxMSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImluY29uc2lzdGVudC12YWx1ZSIsIDE4KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlRWQUxVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIG5ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8oYnVmKTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKQEAgLTcyNSw3ICs3MTQsNyBAQAogCiAgICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgIT0gLTEpIHsKICNpZiBIQVZFX1NZU19XQUlUX0gKLSAgICAgICAgd2FpdHBpZChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkLCAwLCAwKTsKKyAgICAgICAgd2FpdHBpZChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkLCBOVUxMLCAwKTsKICNlbmRpZgogI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkIChtaW5ndzMyKSAmJiAhZGVmaW5lZCAoSEFWRV9TSUdOQUwpCiAgICAgICAgIGlmICghQ2xvc2VIYW5kbGUoKEhBTkRMRSlwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkKSkgewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCmluZGV4IDcyNTIxYTAuLjQyODRkMDggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKQEAgLTU0LDYgKzU0LDkgQEAKIAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgInByb2MuaCIKKyNpZmRlZiBVU0lOR19IT1NUX0RBVEFfQUNDRVNTX1NXUlVOX01PRFVMRQorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisjZW5kaWYKICNpZmRlZiBVU0lOR19VQ0RfU05NUF9FUlJPUk1JQl9NT0RVTEUKICNpbmNsdWRlICJlcnJvcm1pYi5oIgogI2Vsc2UKQEAgLTc2LDIxICs3OSwyNCBAQAogICAgICAqIGluZm9ybWF0aW9uIGF0IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9wcm9jX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7UFJPQ01JTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7UFJPQ01JTn19LAotICAgICAgICB7UFJPQ01BWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7UFJPQ01BWH19LAotICAgICAgICB7UFJPQ0NPVU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7UFJPQ0NPVU5UfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwKLSAgICAgICAgIHtFUlJPUk1TR319LAotICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JGSVh9fSwKLSAgICAgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwKLSAgICAgICAgIHtFUlJPUkZJWENNRH19CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7UFJPQ01JTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge1BST0NNSU59fSwKKyAgICAgICAge1BST0NNQVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtQUk9DTUFYfX0sCisgICAgICAgIHtQUk9DQ09VTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtQUk9DQ09VTlR9fSwKKyAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge0VSUk9STVNHfX0sCisgICAgICAgIHtFUlJPUkZJWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUkZJWH19LAorICAgICAgICB7RVJST1JGSVhDTUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge0VSUk9SRklYQ01EfX0KICAgICB9OwogCiAgICAgLyoKQEAgLTM0OCw2ICszNTQsMTQgQEAKICAgICByZXR1cm4gKHByb2MpOwogfQogCisjaWZkZWYgVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUKK2ludAorc2hfY291bnRfcHJvY3MoY2hhciAqcHJvY25hbWUpCit7CisgICAgcmV0dXJuIHN3cnVuX2NvdW50X3Byb2Nlc3Nlc19ieV9uYW1lKCBwcm9jbmFtZSApOworfQorI2Vsc2UKKwogI2lmZGVmIGJzZGkyCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgpAQCAtODUyLDMgKzg2Niw0IEBACiAgICAgcmV0dXJuIChyZXQpOwogfQogI2VuZGlmCisjZW5kaWYgICAvKiAhVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jCmluZGV4IDU2OTIxMGQuLjFmOGY0NzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYwpAQCAtNDE5LDcgKzQxOSw3IEBACiAgICAgICAgICAgICAgKiBzdWZmaXggYXBwZW5kZWQ/IAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBERUJVR01TR1RMKCgicHJveHkiLCAibGVuZ3RoPSVkLCBiYXNlX2xlbj0lZCwgbmFtZV9sZW49JWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXJsZW5ndGgsIHNwLT5iYXNlX2xlbiwgc3AtPm5hbWVfbGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW91cmxlbmd0aCwgKGludClzcC0+YmFzZV9sZW4sIChpbnQpc3AtPm5hbWVfbGVuKSk7CiAgICAgICAgICAgICBpZiAob3VybGVuZ3RoID4gKGludCkgc3AtPm5hbWVfbGVuKQogICAgICAgICAgICAgICAgIG1lbWNweSgmKHNwLT5iYXNlW3NwLT5iYXNlX2xlbl0pLCAmKG91cm5hbWVbc3AtPm5hbWVfbGVuXSksCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvaWQpICogKG91cmxlbmd0aCAtIHNwLT5uYW1lX2xlbikpOwpAQCAtNDk1LDcgKzQ5NSw3IEBACiAgICAgICAgICAqIFdXV1hYWDogZG9uJ3QgbGVhdmUgcmVxdWVzdHMgZGVsYXllZCBpZiBvcGVyYXRpb24gaXMKICAgICAgICAgICogc29tZXRoaW5nIGxpa2UgVElNRU9VVCAKICAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJwcm94eSIsICJnb3QgdGltZWQgb3V0Li4uIHJlcXVlc3RzID0gJTA4cFxuIiwgcmVxdWVzdHMpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInByb3h5IiwgImdvdCB0aW1lZCBvdXQuLi4gcmVxdWVzdHMgPSAlOHBcbiIsIHJlcXVlc3RzKSk7CiAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKHJlcXVlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVF9JU19OT1RfREVMRUdBVEVEKTsKQEAgLTUyMyw3ICs1MjMsNyBAQAogICAgICAgICAgICAgICogTm90IHN1cmUgaWYgYW55IG90aGVyIGVycm9yIGNvZGVzIG5lZWQgdGhlIHNhbWUgdHJlYXRtZW50LiBMZWZ0CiAgICAgICAgICAgICAgKiBhcyBhbiBleGVyY2lzZSB0byB0aGUgcmVhZGVyLi4uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwcm94eSIsICJnb3QgZXJyb3IgcmVzcG9uc2UgKCVkKVxuIiwgcGR1LT5lcnJzdGF0KSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicHJveHkiLCAiZ290IGVycm9yIHJlc3BvbnNlICglbGQpXG4iLCBwZHUtPmVycnN0YXQpKTsKICAgICAgICAgICAgIGlmKChjYWNoZS0+cmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQpICYmCiAgICAgICAgICAgICAgICAoU05NUF9FUlJfTk9TVUNITkFNRSA9PSBwZHUtPmVycnN0YXQpKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInByb3h5IiwgIiAgaWdub3JpbmcgZXJyb3IgcmVzcG9uc2VcbiIpKTsKQEAgLTUzOSw3ICs1MzksNyBAQAogCQkgKgk/ZnVuYz1kZXRhaWwmYXRpZD0xMTI2OTQmYWlkPTE1NTQyNjEmZ3JvdXBfaWQ9MTI2OTQKIAkJICovCiAJCURFQlVHTVNHVEwoKCJwcm94eSIsCi0JCSAgICAiZ290IFNFVCBlcnJvciAlcywgaW5kZXggJWRcbiIsCisJCSAgICAiZ290IFNFVCBlcnJvciAlcywgaW5kZXggJWxkXG4iLAogCQkgICAgc25tcF9lcnJzdHJpbmcocGR1LT5lcnJzdGF0KSwgcGR1LT5lcnJpbmRleCkpOwogCQluZXRzbm1wX2hhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQoCiAJCSAgICByZXF1ZXN0cywgUkVRVUVTVF9JU19OT1RfREVMRUdBVEVEKTsKQEAgLTU4Myw3ICs1ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwLT5iYXNlX2xlbikgIT0gMCkpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInByb3h5IiwgIm91dCBvZiByZWdpc3RlcmVkIHJhbmdlLi4uICIpKTsKICAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoInByb3h5IiwgdmFyLT5uYW1lLCBzcC0+YmFzZV9sZW4pKTsKLSAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIiAoJWQpICE9ICIsIHNwLT5iYXNlX2xlbikpOworICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiICglZCkgIT0gIiwgKGludClzcC0+YmFzZV9sZW4pKTsKICAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoInByb3h5Iiwgc3AtPmJhc2UsIHNwLT5iYXNlX2xlbikpOwogICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX05VTEwsIE5VTEwsIDApOwpAQCAtNTk1LDcgKzU5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwLT5uYW1lX2xlbikgIT0gMCkpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInByb3h5IiwgIm91dCBvZiByZWdpc3RlcmVkIGJhc2UgcmFuZ2UuLi4gIikpOwogICAgICAgICAgICAgICAgIERFQlVHTVNHT0lEKCgicHJveHkiLCB2YXItPm5hbWUsIHNwLT5uYW1lX2xlbikpOwotICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiICglZCkgIT0gIiwgc3AtPm5hbWVfbGVuKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0coKCAgICJwcm94eSIsICIgKCVkKSAhPSAiLCAoaW50KXNwLT5uYW1lX2xlbikpOwogICAgICAgICAgICAgICAgIERFQlVHTVNHT0lEKCgicHJveHkiLCBzcC0+bmFtZSwgc3AtPm5hbWVfbGVuKSk7CiAgICAgICAgICAgICAgICAgREVCVUdNU0coKCAgICJwcm94eSIsICJcbiIpKTsKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYwppbmRleCBhOTRhZjVjLi40YTEwOWVkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMKQEAgLTQxLDI4ICs0MSwyOCBAQAogICAgICAqIGluZm9ybWF0aW9uIGF0IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92ZXJzaW9uX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7VkVSVEFHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJUQUd9fSwKLSAgICAgICAge1ZFUkRBVEUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUkRBVEV9fSwKLSAgICAgICAge1ZFUkNEQVRFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJDREFURX19LAotICAgICAgICB7VkVSSURFTlQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUklERU5UfX0sCi0gICAgICAgIHtWRVJDT05GSUcsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUkNPTkZJR319LAotICAgICAgICB7VkVSQ0xFQVJDQUNIRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJDTEVBUkNBQ0hFfX0sCi0gICAgICAgIHtWRVJVUERBVEVDT05GSUcsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSVVBEQVRFQ09ORklHfX0sCi0gICAgICAgIHtWRVJSRVNUQVJUQUdFTlQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSUkVTVEFSVEFHRU5UfX0sCi0gICAgICAgIHtWRVJTQVZFUEVSU0lTVEVOVCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJTQVZFUEVSU0lTVEVOVH19LAotICAgICAgICB7VkVSREVCVUdHSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUkRFQlVHR0lOR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtWRVJUQUcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUlRBR319LAorICAgICAgICB7VkVSREFURSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSREFURX19LAorICAgICAgICB7VkVSQ0RBVEUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkNEQVRFfX0sCisgICAgICAgIHtWRVJJREVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSSURFTlR9fSwKKyAgICAgICAge1ZFUkNPTkZJRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSQ09ORklHfX0sCisgICAgICAgIHtWRVJDTEVBUkNBQ0hFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkNMRUFSQ0FDSEV9fSwKKyAgICAgICAge1ZFUlVQREFURUNPTkZJRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJVUERBVEVDT05GSUd9fSwKKyAgICAgICAge1ZFUlJFU1RBUlRBR0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJSRVNUQVJUQUdFTlR9fSwKKyAgICAgICAge1ZFUlNBVkVQRVJTSVNURU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUlNBVkVQRVJTSVNURU5UfX0sCisgICAgICAgIHtWRVJERUJVR0dJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSREVCVUdHSU5HfX0KICAgICB9OwogCiAgICAgLyoKQEAgLTEwOSwyMiArMTA5LDIxIEBACiAgICAgICAgIGxvbmdfcmV0ID0gbmFtZVs4XTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKICAgICBjYXNlIFZFUlRBRzoKLSAgICAgICAgc3ByaW50ZihlcnJtc2csIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7CisgICAgICAgIHN0cmxjcHkoZXJybXNnLCBuZXRzbm1wX2dldF92ZXJzaW9uKCksIHNpemVvZihlcnJtc2cpKTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIGVycm1zZyk7CiAgICAgY2FzZSBWRVJEQVRFOgotICAgICAgICBzcHJpbnRmKGVycm1zZywgIiREYXRlJCIpOworICAgICAgICBzdHJsY3B5KGVycm1zZywgIiREYXRlJCIsIHNpemVvZihlcnJtc2cpKTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIGVycm1zZyk7CiAgICAgY2FzZSBWRVJDREFURToKICAgICAgICAgY3VydGltZSA9IHRpbWUoTlVMTCk7CiAgICAgICAgIGNwdHIgPSBjdGltZSgmY3VydGltZSk7Ci0gICAgICAgIHNwcmludGYoZXJybXNnLCBjcHRyKTsKKyAgICAgICAgc3RybGNweShlcnJtc2csIGNwdHIsIHNpemVvZihlcnJtc2cpKTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKSAtIDE7IC8qIC0gMSB0byBzdHJpcCB0cmFpbGluZyBuZXdsaW5lICovCiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSSURFTlQ6Ci0gICAgICAgIHNwcmludGYoZXJybXNnLAotICAgICAgICAgICAgICAgICIkSWQkIik7CisgICAgICAgIHN0cmxjcHkoZXJybXNnLCAiJElkJCIsIHNpemVvZihlcnJtc2cpKTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIGVycm1zZyk7CiAgICAgY2FzZSBWRVJDT05GSUc6CkBAIC0xMzQsNyArMTMzLDcgQEAKICAgICAgICAgICAgICp2YXJfbGVuID0gMTAyNDsgICAgLyogbWliIGltcG9zZWQgcmVzdHJpY3Rpb24gKi8KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgY29uZmlnX29wdHM7CiAjZWxzZQotICAgICAgICBzcHJpbnRmKGVycm1zZywgIiIpOworICAgICAgICBzdHJsY3B5KGVycm1zZywgIiIsIHNpemVvZihlcnJtc2cpKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jCmluZGV4IDc5ZjEwMDQuLmVhZGJmNWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jCkBAIC0xMyw3ICsxMyw3IEBACiB2b2lkCiBpbml0X3Ztc3RhdCh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgIHZtc3RhdF9vaWRbXSA9IHsgTkVUU05NUF9VQ0RBVklTX01JQiwgMTEgfTsKKyAgICBjb25zdCBvaWQgIHZtc3RhdF9vaWRbXSA9IHsgTkVUU05NUF9VQ0RBVklTX01JQiwgMTEgfTsKIAogICAgIERFQlVHTVNHVEwoKCJ2bXN0YXQiLCAiSW5pdGlhbGl6aW5nXG4iKSk7CiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuYwppbmRleCBkNDkwNGY5Li42OWZjMzcyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAibWliZGVmcy5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIC8qCiAgKiBIZWFkZXIgZmlsZSBmb3IgdGhpcyBtb2R1bGUgCkBAIC0xNTMsNDUgKzE1Myw1MiBAQAogCSAqIFdoaWNoIHZhcmlhYmxlcyBkbyB3ZSBzZXJ2aWNlID8gCiAJICovCiAJc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLQkJe01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtNSUJJTkRFWH19LAotCQl7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0VSUk9STkFNRX19LAotCQl7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotCQl7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0JCXtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0JCXtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0lPUkVDRUlWRX19LAotCQl7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7U1lTSU5URVJSVVBUU319LAotCQl7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7U1lTQ09OVEVYVH19LAotCQl7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0JCXtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0NQVVNZU1RFTX19LAotCQl7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0JCXtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtDUFVSQVdVU0VSfX0sCi0JCXtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0NQVVJBV1NZU1RFTX19LAotCQl7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7Q1BVUkFXSURMRX19LAotCQl7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7Q1BVUkFXV0FJVH19LAotCQl7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtDUFVSQVdLRVJORUx9fSwKLQkJe0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7SU9SQVdTRU5UfX0sCi0JCXtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0lPUkFXUkVDRUlWRX19LAotCQl7U1lTUkFXSU5URVJSVVBUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7U1lTUkFXSU5URVJSVVBUU319LAotCQl7U1lTUkFXQ09OVEVYVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7U1lTUkFXQ09OVEVYVH19LAorCQl7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKwkJe0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorCQl7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorCQl7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisJCXtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisJCXtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisJCXtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKwkJe1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorCQl7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisJCXtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisJCXtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKwkJe0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorCQl7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorCQl7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisJCXtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKwkJe0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKwkJe0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1NFTlR9fSwKKwkJe0lPUkFXUkVDRUlWRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKKwkJe1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXSU5URVJSVVBUU319LAorCQl7U1lTUkFXQ09OVEVYVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNSQVdDT05URVhUfX0sCiAJCS8qCiAJCSAqIEZ1dHVyZSB1c2U6IAotCQkgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLQkJICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKwkJICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisJCSAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CiAJCSAqLwogCX07CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5oCmluZGV4IDUwODY5YWIuLmExM2ZjY2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuaApAQCAtMTUsNyArMTUsNyBAQAogICAgIC8qCiAgICAgICogRGlyZWN0aXZlIHRvIGluY2x1ZGUgdXRpbGl0eSBtb2R1bGUgCiAgICAgICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogd2UgaGF2ZSB0byBkZWZpbmUgdGhlIGluZGV4IG91cnNlbHZlcywgYmVjYXVzZSBwZXJmc3RhdCBzdHJ1Y3R1cmVzCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jCmluZGV4IDk0ZDMyYjMuLmUzNWI2Y2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogCiAvKgpAQCAtNTcsNDEgKzU3LDQ4IEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfdm1zdGF0X3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCi0gICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKLSAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKLSAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SRUNFSVZFfX0sCi0gICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNDT05URVhUfX0sCi0gICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKLSAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVU1lTVEVNfX0sCi0gICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKLSAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1VTRVJ9fSwKLSAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV05JQ0V9fSwKLSAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXU1lTVEVNfX0sCi0gICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJRExFfX0sCi0gICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0tFUk5FTH19LAotICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSU5UUn19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXTklDRX19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJTlRSfX0sCiAgICAgICAgIC8qCiAgICAgICAgICAqIEZ1dHVyZSB1c2U6IAogICAgICAgICAgKi8KICAgICAgICAgLyoKLSAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCi0gICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CisgICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKKyAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CiAgICAgICAgICAqLwogICAgIH07CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgKaW5kZXggMGI2N2ExMi4uNzRiZjMxYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9WTVNUQVRfQlNESTRfSAogI2RlZmluZSBfTUlCR1JPVVBfVk1TVEFUX0JTREk0X0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogdm9pZCAgICAgICAgICAgIGluaXRfdm1zdGF0X2JzZGk0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmMKaW5kZXggNzA0MTVlNS4uZDk2YzU1YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogI2luY2x1ZGUgInZtc3RhdF9kYXJ3aW43LmgiCiAKQEAgLTc0LDQ1ICs3NCw1MiBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdOSUNFfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lOVFJ9fSwKLSAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU1JBV0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU1JBV0NPTlRFWFR9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSU5UUn19LAorICAgICAgICB7U1lTUkFXSU5URVJSVVBUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXSU5URVJSVVBUU319LAorICAgICAgICB7U1lTUkFXQ09OVEVYVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXQ09OVEVYVH19LAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaAppbmRleCBmOTJlNTA5Li5iMWEzMDFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9WTVNUQVRfREFSV0lON19ICiAjZGVmaW5lIF9NSUJHUk9VUF9WTVNUQVRfREFSV0lON19ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCisKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKIHZvaWQgICAgICAgICAgICBpbml0X3Ztc3RhdF9kYXJ3aW43KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguYwppbmRleCA5MTcwYjI2Li4zM2Y1NDEyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguYwpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJtaWJkZWZzLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogLyoKICAqIEhlYWRlciBmaWxlIGZvciB0aGlzIG1vZHVsZSAKQEAgLTE2NSw0MyArMTY1LDUwIEBACiAgICAgICogV2hpY2ggdmFyaWFibGVzIGRvIHdlIHNlcnZpY2UgPyAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfdm1zdGF0X3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCi0gICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKLSAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKLSAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SRUNFSVZFfX0sCi0gICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNDT05URVhUfX0sCi0gICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKLSAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVU1lTVEVNfX0sCi0gICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKLSAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1VTRVJ9fSwKLSAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXU1lTVEVNfX0sCi0gICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJRExFfX0sCi0gICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdXQUlUfX0sCi0gICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0tFUk5FTH19LAotICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1NFTlR9fSwKLSAgICAgICAge0lPUkFXUkVDRUlWRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SQVdSRUNFSVZFfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXV0FJVH19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdTRU5UfX0sCisgICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXUkVDRUlWRX19LAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oCmluZGV4IGFhZTE3OTAuLjg5NTRlMzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oCkBAIC0xNCw3ICsxNCw3IEBACiAvKgogICogRGlyZWN0aXZlIHRvIGluY2x1ZGUgdXRpbGl0eSBtb2R1bGUgCiAgKi8KLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogCiAgICAgLyoKICAgICAgKiBNSUIgd2FudHMgVl9DUFVfU1lTVEVNIHdoaWNoIGlzIHN5c2luZm8gVl9DUFVfS0VSTkVMICsgVl9DUFVfV0FJVCAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMKaW5kZXggOTE4NWJjNi4uM2RlODliMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMKQEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidm1zdGF0LmgiCiAjaW5jbHVkZSAidm1zdGF0X2ZyZWVic2QyLmgiCiAKQEAgLTg4LDQ1ICs4OCw1MiBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdOSUNFfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lOVFJ9fSwKLSAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU1JBV0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU1JBV0NPTlRFWFR9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSU5UUn19LAorICAgICAgICB7U1lTUkFXSU5URVJSVVBUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXSU5URVJSVVBUU319LAorICAgICAgICB7U1lTUkFXQ09OVEVYVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXQ09OVEVYVH19LAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oCmluZGV4IGYwZTYwYjguLjI2YjQ0YjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX0ZSRUVCU0QyX0gKICNkZWZpbmUgX01JQkdST1VQX1ZNU1RBVF9GUkVFQlNEMl9ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCisKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKIHZvaWQgICAgICAgICAgICBpbml0X3Ztc3RhdF9mcmVlYnNkMih2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5jCmluZGV4IDg5MmZiN2UuLmE3ODQ1MDIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguYwpAQCAtNDUsNyArNDUsNyBAQAogLyoKICAqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBVQ0QtU05NUCAKICAqLwotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIC8qCiAgKiBIZWFkZXIgZmlsZSBmb3IgdGhpcyBtb2R1bGUgCkBAIC0xNzEsNDUgKzE3MSw1MiBAQAogICAgICAqIFdoaWNoIHZhcmlhYmxlcyBkbyB3ZSBzZXJ2aWNlID8gCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdOSUNFfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXV0FJVH19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SQVdTRU5UfX0sCi0gICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXUkVDRUlWRX19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXTklDRX19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAorICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgKaW5kZXggZTEwMDk1ZS4uOGYyNjU5NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5oCkBAIC0xNCw3ICsxNCw3IEBACiAvKgogICogRGlyZWN0aXZlIHRvIGluY2x1ZGUgdXRpbGl0eSBtb2R1bGUgCiAgKi8KLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogCiAgICAgLyoKICAgICAgKiBNYWtlIDY0LWJpdCBwc3RhdCBjYWxscyAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMKaW5kZXggZjA5ZWQzNC4uNzUzOGExNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMKQEAgLTEwOCw3ICsxMDgsNyBAQAogCiAjaW5jbHVkZSAibWliZGVmcy5oIgogI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidm1zdGF0LmgiCiAKIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfdm1zdGF0OwpAQCAtMTI4LDU0ICsxMjgsNjQgQEAKIGluaXRfdm1zdGF0KHZvaWQpCiB7CiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtSQVdTV0FQSU4sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7UkFXU1dBUElOfX0sCi0gICAgICAgIHtSQVdTV0FQT1VULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1JBV1NXQVBPVVR9fSwKLSAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKLSAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SRUNFSVZFfX0sCi0gICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdTRU5UfX0sCi0gICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdOSUNFfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU1JBV0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU1JBV0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1dBSVR9fSwKLSAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lOVFJ9fSwKLSAgICAgICAge0NQVVJBV1NPRlRJUlEsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NPRlRJUlF9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge1JBV1NXQVBJTiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7UkFXU1dBUElOfX0sCisgICAgICAgIHtSQVdTV0FQT1VULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtSQVdTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdTRU5UfX0sCisgICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7U1lTUkFXSU5URVJSVVBUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXSU5URVJSVVBUU319LAorICAgICAgICB7U1lTUkFXQ09OVEVYVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXQ09OVEVYVH19LAorICAgICAgICB7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXV0FJVH19LAorICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSU5UUn19LAorICAgICAgICB7Q1BVUkFXU09GVElSUSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU09GVElSUX19LAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5oCmluZGV4IDczOGUyZjEuLjZmN2M1MGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5oCkBAIC01LDYgKzUsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX0gKICNkZWZpbmUgX01JQkdST1VQX1ZNU1RBVF9ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9jcHUpCiAKICNpbmNsdWRlICJtaWJkZWZzLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYwppbmRleCAxMmM3M2RiLi45NzA2YzQyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidm1zdGF0LmgiCiAKIC8qCkBAIC02Niw0MiArNjYsNDkgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKIAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCkBAIC0xOTIsNyArMTk5LDcgQEAKICAgICAgICAgICAgIG1lbXNldChjcHVfbmV3LCAwLCBzaXplb2YoY3B1X25ldykpOwogI2VsaWYgZGVmaW5lZChLRVJOX0NQVElNRSkKICAgICAgICAgaW50ICAgICAgICAgICAgIG1pYlsyXSA9IHsgQ1RMX0tFUk4sIEtFUk5fQ1BUSU1FIH07Ci0gICAgICAgIGludCAgICAgICAgICAgICBzc2l6ZSA9IHNpemVvZihjcHVfbmV3KTsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgIHNzaXplID0gc2l6ZW9mKGNwdV9uZXcpOwogCiAgICAgICAgIGlmIChzeXNjdGwobWliLCAyLCBjcHVfbmV3LCAmc3NpemUsIE5VTEwsIDApIDwgMCkKICAgICAgICAgICAgIG1lbXNldChjcHVfbmV3LCAwLCBzaXplb2YoY3B1X25ldykpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgKaW5kZXggZWI2YjE3Mi4uYWRmNWQ0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX05FVEJTRDFfSAogI2RlZmluZSBfTUlCR1JPVVBfVk1TVEFUX05FVEJTRDFfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiB2b2lkICAgICAgICAgICAgaW5pdF92bXN0YXRfbmV0YnNkMSh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMKaW5kZXggY2E4YTg3Zi4uMzcxNTA0NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAibWliZGVmcy5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIC8qCiAgKiBIZWFkZXIgZmlsZSBmb3IgdGhpcyBtb2R1bGUgCkBAIC0xNjksNDEgKzE2OSw0OCBAQAogICAgICAqIFdoaWNoIHZhcmlhYmxlcyBkbyB3ZSBzZXJ2aWNlID8gCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXV0FJVH19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SQVdTRU5UfX0sCi0gICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXUkVDRUlWRX19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAorICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oCmluZGV4IDgyODIyODguLjc3ZmJiM2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgLyoKICAgICAgKiBEaXJlY3RpdmUgdG8gaW5jbHVkZSB1dGlsaXR5IG1vZHVsZSAKICAgICAgKi8KLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogCiAgICAgLyoKICAgICAgKiBNSUIgd2FudHMgQ1BVX1NZU1RFTSB3aGljaCBpcyBzeXNpbmZvIENQVV9LRVJORUwgKyBDUFVfV0FJVCAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZF9zbm1wLmggYi9hZ2VudC9taWJncm91cC91Y2Rfc25tcC5oCmluZGV4IDM0YzJmYmIuLmY5MmMyYzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZF9zbm1wLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkX3NubXAuaApAQCAtOCw3ICs4LDkgQEAKIGNvbmZpZ19yZXF1aXJlKGFnZW50L2V4dGVuZCkKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL2Vycm9ybWliKQogY29uZmlnX3JlcXVpcmUodWNkLXNubXAvZmlsZSkKKyNpZiBkZWZpbmVkKEhBVkVfRExGQ05fSCkgJiYgZGVmaW5lZChIQVZFX0RMT1BFTikKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL2RsbW9kKQorI2VuZGlmCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9wcm94eSkKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL2xvZ21hdGNoKQogY29uZmlnX3JlcXVpcmUodWNkLXNubXAvbWVtb3J5KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKaW5kZXggZmQwNzM5NC4uNzBlMjlkMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaAorKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCkBAIC0yMCw2ICsyMCw3IEBACiBjb25maWdfcmVxdWlyZSh1ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24pCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUodWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXgpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZSkKICNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKIGNvbmZpZ19yZXF1aXJlKHVkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyKQogI2Vsc2UKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMKaW5kZXggNTFlMzM3NS4uYmNiMDAyZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMKQEAgLTEwNSw3ICsxMDUsOCBAQAogICAgICAgICAgKiBmcmVlIGFsbCBpdGVtcy4KICAgICAgICAgICovCiAgICAgICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKWZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfdWRwX2VuZHBvaW50X2VudHJ5X2ZyZWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICB9CiAKQEAgLTE1MywyMyArMTU0LDMgQEAKIAogICAgIGZyZWUoZW50cnkpOwogfQotCi0KLS8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKgotICogVXRpbGl0eSByb3V0aW5lcwotICovCi0KLS8qKgotICogXGludGVybmFsCi0gKi8KLXN0YXRpYyB2b2lkCi1fZW50cnlfcmVsZWFzZShuZXRzbm1wX3VkcF9lbmRwb2ludF9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQotewotICAgIG5ldHNubXBfYWNjZXNzX3VkcF9lbmRwb2ludF9lbnRyeV9mcmVlKGVudHJ5KTsKLX0KLQotLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qCi0gKgotICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYwppbmRleCBiYThmN2EyLi5jODdkYzI0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaD4KIAogI2luY2x1ZGUgInVkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oIgotCisjaW5jbHVkZSAibWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCIKICNpbmNsdWRlICJ1ZHBfZW5kcG9pbnRfcHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTE1MCwxNCArMTUwLDE0IEBACiAgICAgbGVuID0gKHNlcCAtIHB0cik7CiAgICAgaWYgKC0xID09IG5ldHNubXBfYWRkcnN0cl9odG9uKHB0ciwgbGVuKSkgewogICAgICAgICBERUJVR01TR1RMKCgidGV4dDp1dGlsOnR2aSIsICJiYWQgbGVuZ3RoICVkIGZvciBsb2MgYWRkciAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICB1X3B0cl9sZW4sIGxpbmVfaW5mby0+c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgKGludCl1X3B0cl9sZW4sIGxpbmVfaW5mby0+c3RhcnQpKTsKICAgICAgICAgcmV0dXJuIFBNTFBfUkNfTUVNT1JZX1VOVVNFRDsKICAgICB9CiAgICAgb2Zmc2V0ID0gMDsKICAgICBuZXRzbm1wX2hleF90b19iaW5hcnkoJnVfcHRyLCAmdV9wdHJfbGVuLCAmb2Zmc2V0LCAwLCBwdHIsIE5VTEwpOwogICAgIGlmICgoNCAhPSBvZmZzZXQpICYmICgxNiAhPSBvZmZzZXQpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ0ZXh0OnV0aWw6dHZpIiwgImJhZCBvZmZzZXQgJWQgZm9yIGxvYyBhZGRyICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldCwgbGluZV9pbmZvLT5zdGFydCkpOworICAgICAgICAgICAgICAgICAgICAoaW50KW9mZnNldCwgbGluZV9pbmZvLT5zdGFydCkpOwogICAgICAgICByZXR1cm4gUE1MUF9SQ19NRU1PUllfVU5VU0VEOwogICAgIH0KICAgICBlcC0+bG9jX2FkZHJfbGVuID0gb2Zmc2V0OwpAQCAtMTg2LDE0ICsxODYsMTQgQEAKICAgICBsZW4gPSAoc2VwIC0gcHRyKTsKICAgICBpZiAoLTEgPT0gbmV0c25tcF9hZGRyc3RyX2h0b24ocHRyLCBsZW4pKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ0ZXh0OnV0aWw6dHZpIiwgImJhZCBsZW5ndGggJWQgZm9yIHJtdCBhZGRyICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgIHVfcHRyX2xlbiwgbGluZV9pbmZvLT5zdGFydCkpOworICAgICAgICAgICAgICAgICAgICAoaW50KXVfcHRyX2xlbiwgbGluZV9pbmZvLT5zdGFydCkpOwogICAgICAgICByZXR1cm4gUE1MUF9SQ19NRU1PUllfVU5VU0VEOwogICAgIH0KICAgICBvZmZzZXQgPSAwOwogICAgIG5ldHNubXBfaGV4X3RvX2JpbmFyeSgmdV9wdHIsICZ1X3B0cl9sZW4sICZvZmZzZXQsIDAsIHB0ciwgTlVMTCk7CiAgICAgaWYgKCg0ICE9IG9mZnNldCkgJiYgKDE2ICE9IG9mZnNldCkpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInRleHQ6dXRpbDp0dmkiLCAiYmFkIG9mZnNldCAlZCBmb3Igcm10IGFkZHIgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBsaW5lX2luZm8tPnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpb2Zmc2V0LCBsaW5lX2luZm8tPnN0YXJ0KSk7CiAgICAgICAgIHJldHVybiBQTUxQX1JDX01FTU9SWV9VTlVTRUQ7CiAgICAgfQogICAgIGVwLT5ybXRfYWRkcl9sZW4gPSBvZmZzZXQ7CkBAIC0yMjIsNiArMjIyLDExIEBACiAgICAgaW5vZGUgPSBzdHJ0b3VsbChwdHIsICZwdHIsIDApOwogICAgIGVwLT5pbnN0YW5jZSA9ICh1X2ludClpbm9kZTsKIAorICAgIC8qCisgICAgICogZ2V0IHRoZSBwaWQgYWxzbworICAgICAqLworICAgIGVwLT5waWQgPSBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm9kZSk7CisKICAgICBlcC0+aW5kZXggPSAodV9pbnQpKGxwaS0+dXNlcl9jb250ZXh0KTsKICAgICBscGktPnVzZXJfY29udGV4dCA9ICh2b2lkKikoKHVfaW50KShscGktPnVzZXJfY29udGV4dCkgKyAxKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmMKaW5kZXggODAzZjUwNC4uMTQ1ZjRjZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJ1ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRbXSA9IHsgVURQRU5EUE9JTlRUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICB1ZHBFbmRwb2ludFRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICB1ZHBFbmRwb2ludFRhYmxlX29pZFtdID0geyBVRFBFTkRQT0lOVFRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSCh1ZHBFbmRwb2ludFRhYmxlX29pZCk7CiAKIHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uIHVkcEVuZHBvaW50VGFibGVfdXNlcl9jb250ZXh0OwpAQCAtMjI2LDcgKzIyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzX3ZhbF9wdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFJlbW90ZVBvcnRfdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50UHJvY2Vzc192YWwpCiB7CiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6dWRwRW5kcG9pbnRUYWJsZTp1ZHBFbmRwb2ludFRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgiLCAiY2FsbGVkXG4iKSk7CiAKQEAgLTI5NSw2ICsyOTYsMTAgQEAKICAgICAgKiB1ZHBFbmRwb2ludEluc3RhbmNlKDcpL1VOU0lHTkVEMzIvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL2Evdy9lL1IvZC9oIAogICAgICAqLwogICAgIHRibF9pZHgtPnVkcEVuZHBvaW50SW5zdGFuY2UgPSB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbDsKKyAgICAvKgorICAgICAqIHVkcEVuZHBvaW50UHJvY2Vzcyg4KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9hL3cvZS9SL2QvaCAKKyAgICAgKi8KKyAgICB0YmxfaWR4LT51ZHBFbmRwb2ludFByb2Nlc3MgPSB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsOwogCiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CkBAIC0zMjMsNyArMzI4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzX3ZhbF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3NfdmFsX3B0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFJlbW90ZVBvcnRfdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50UHJvY2Vzc192YWwpCiB7CiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6dWRwRW5kcG9pbnRUYWJsZTp1ZHBFbmRwb2ludFRhYmxlX2luZGV4ZXNfc2V0IiwKICAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CkBAIC0zMzgsNyArMzQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzX3ZhbF9wdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbCkpCiAgICAgICAgIHJldHVybiBNRkRfRVJST1I7CiAKICAgICAvKgpAQCAtNDA1LDkgKzQxMiw5IEBACiAKICAgICAvKgogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSB1ZHBFbmRwb2ludFByb2Nlc3MgZGF0YS4KLSAgICAgKiBjb3B5ICgqIHVkcEVuZHBvaW50UHJvY2Vzc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICogY29weSAoKiB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+dGJsX2lkeC51ZHBFbmRwb2ludFByb2Nlc3MKICAgICAgKi8KLSAgICAoKnVkcEVuZHBvaW50UHJvY2Vzc192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEudWRwRW5kcG9pbnRQcm9jZXNzOworICAgICgqdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+dGJsX2lkeC51ZHBFbmRwb2ludFByb2Nlc3M7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVkcEVuZHBvaW50UHJvY2Vzc19nZXQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmggYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oCmluZGV4IDM2NzUyYmYuLjBkZWRhMDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaApAQCAtMTMyLDYgKzEzMiwxMSBAQAogICAgICAgICAgKi8KICAgICAgICAgdV9sb25nICAgICAgICAgIHVkcEVuZHBvaW50SW5zdGFuY2U7CiAKKyAgICAgICAgLyoKKyAgICAgICAgICogdWRwRW5kcG9pbnRQcm9jZXNzKDgpL1VOU0lHTkVEMzIvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL2Evdy9lL1IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgdWRwRW5kcG9pbnRQcm9jZXNzOworCiAKICAgICB9IHVkcEVuZHBvaW50VGFibGVfbWliX2luZGV4OwogCkBAIC0yMDAsOCArMjA1LDggQEAKICAgICAgICAgKiB1ZHBFbmRwb2ludFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleCh1ZHBFbmRwb2ludFRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAidWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaCIKQEAgLTI1Nyw3ICsyNjIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludFJlbW90ZVBvcnRfdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbCk7CiAgICAgaW50CiAgICAgICAgIHVkcEVuZHBvaW50VGFibGVfaW5kZXhlc19zZXQodWRwRW5kcG9pbnRUYWJsZV9yb3dyZXFfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LApAQCAtMjczLDcgKzI4MCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzX3ZhbF9wdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFJlbW90ZVBvcnRfdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsKTsKIAogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGQyMjNiOTYuLmVmODNiOWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjY1LDcgKzI2NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIGVwLT5ybXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXAtPnJtdF9hZGRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXAtPnJtdF9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcC0+aW5zdGFuY2UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5pbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXAtPnBpZCkpIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICAgICAiZXJyb3Igc2V0dGluZyBpbmRleCB3aGlsZSBsb2FkaW5nICIKICAgICAgICAgICAgICAgICAgICAgICJ1ZHBFbmRwb2ludFRhYmxlIGRhdGEuXG4iKTsKQEAgLTI5Myw3ICsyOTQsNyBAQAogCiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnVkcEVuZHBvaW50VGFibGU6dWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfbG9hZCIsCi0gICAgICAgICAgICAgICAiaW5zZXJ0ZWQgJWQgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIChpbnQpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9sb2FkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKaW5kZXggYTAxNzY1OC4uNzQ5ZWZiMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYwpAQCAtODYsMjEgKzg2LDYgQEAKICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2VuZGlmCi0jaWYgSEFWRV9ESVJFTlRfSAotI2luY2x1ZGUgPGRpcmVudC5oPgotI2Vsc2UKLSMgZGVmaW5lIGRpcmVudCBkaXJlY3QKLSMgaWYgSEFWRV9TWVNfTkRJUl9ICi0jICBpbmNsdWRlIDxzeXMvbmRpci5oPgotIyBlbmRpZgotIyBpZiBIQVZFX1NZU19ESVJfSAotIyAgaW5jbHVkZSA8c3lzL2Rpci5oPgotIyBlbmRpZgotIyBpZiBIQVZFX05ESVJfSAotIyAgaW5jbHVkZSA8bmRpci5oPgotIyBlbmRpZgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTI3MCw3ICsyNTUsNyBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFhYWCAgVXNlIFNOTVBfRklMRU1PREVfQ0xPU0VEIGluc3RlYWQgb2YgNjQ0PyAKICAgICAgICAgICAgICAqLwotICAgICAgICBpZiAoKGNmZCA9IG9wZW4oY2FjaGVmaWxlLCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0NSRUFULCAwNjQ0KSkgPCAwKSB7CisgICAgICAgIGlmICgoY2ZkID0gb3BlbihjYWNoZWZpbGUsIE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fQ1JFQVQsIDA2MDApKSA8IDApIHsKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjYW4gbm90IGNyZWF0ZSBjYWNoZSBmaWxlXG4iKTsKICAgICAgICAgICAgICAgICBzZXRQZXJyb3JzdGF0dXMoY2FjaGVmaWxlKTsKICNpZmRlZiBORVRTTk1QX0VYQ0FDSEVUSU1FCkBAIC03NjYsMTY4ICs3NTEsNiBAQAogICAgICAgICBidWYgKz0gc3ByaW50ZihidWYsICIuJXUiLCAodW5zaWduZWQpIG5hbWVbaV0pOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgotICogaGVhZGVyX3NpbXBsZV90YWJsZQotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgkgICp2cAkJIFZhcmlhYmxlIGRhdGEuCi0gKgkgICpuYW1lCQkgRnVsbHkgaW5zdGFudGlhdGVkIE9JRCBuYW1lLgotICoJICAqbGVuZ3RoCSBMZW5ndGggb2YgbmFtZS4KLSAqCSAgIGV4YWN0CSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIGlzIGRlc2lyZWQuCi0gKgkgICp2YXJfbGVuCSBIb29rIGZvciBzaXplIG9mIHJldHVybmVkIGRhdGEgdHlwZS4KLSAqCSgqKndyaXRlX21ldGhvZCkgSG9vayBmb3Igd3JpdGUgbWV0aG9kIChVTlVTRUQpLgotICoJICAgbWF4Ci0gKiAgICAgIAotICogUmV0dXJuczoKLSAqCTAJSWYgbmFtZSBtYXRjaGVzIHZwLT5uYW1lIChhY2NvdW50aW5nIGZvciAnZXhhY3QnKSBhbmQgaXMKLSAqCQkJbm90IGdyZWF0ZXIgaW4gbGVuZ3RoIHRoYW4gJ21heCcuCi0gKgkxCU90aGVyd2lzZS4KLSAqCi0gKgotICogQ29tcGFyZSAnbmFtZScgdG8gdnAtPm5hbWUgZm9yIHRoZSBiZXN0IG1hdGNoIG9yIGFuIGV4YWN0IG1hdGNoIChpZgotICoJcmVxdWVzdGVkKS4gIEFsc28gY2hlY2sgdGhhdCAnbmFtZScgaXMgbm90IGxvbmdlciB0aGFuICdtYXgnIGlmCi0gKgltYXggaXMgZ3JlYXRlci10aGFuL2VxdWFsIDAuCi0gKiBTdG9yZSBhIHN1Y2Nlc3NmdWwgbWF0Y2ggaW4gJ25hbWUnLCBhbmQgaW5jcmVtZW50IHRoZSBPSUQgaW5zdGFuY2UgaWYKLSAqCXRoZSBtYXRjaCB3YXMgbm90IGV4YWN0LiAgCi0gKgotICogJ25hbWUnIGFuZCAnbGVuZ3RoJyBhcmUgdW5kZWZpbmVkIHVwb24gZmFpbHVyZS4KLSAqCi0gKi8KLWludAotaGVhZGVyX3NpbXBsZV90YWJsZShzdHJ1Y3QgdmFyaWFibGUgKnZwLCBvaWQgKiBuYW1lLCBzaXplX3QgKiBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kLCBpbnQgbWF4KQotewotICAgIGludCAgICAgICAgICAgICBpLCBydGVzdDsgICAvKiBTZXQgdG86ICAgICAgLTEgICAgICBJZiBuYW1lIDwgdnAtPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAxICAgICAgIElmIG5hbWUgPiB2cC0+bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgIDAgICAgICAgT3RoZXJ3aXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBvaWQgICAgICAgICAgICAgbmV3bmFtZVtNQVhfT0lEX0xFTl07Ci0KLSAgICBmb3IgKGkgPSAwLCBydGVzdCA9IDA7Ci0gICAgICAgICBpIDwgKGludCkgdnAtPm5hbWVsZW4gJiYgaSA8IChpbnQpICgqbGVuZ3RoKSAmJiAhcnRlc3Q7IGkrKykgewotICAgICAgICBpZiAobmFtZVtpXSAhPSB2cC0+bmFtZVtpXSkgewotICAgICAgICAgICAgaWYgKG5hbWVbaV0gPCB2cC0+bmFtZVtpXSkKLSAgICAgICAgICAgICAgICBydGVzdCA9IC0xOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJ0ZXN0ID0gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAocnRlc3QgPiAwIHx8Ci0gICAgICAgIChleGFjdCA9PSAxCi0gICAgICAgICAmJiAocnRlc3QgfHwgKGludCkgKmxlbmd0aCAhPSAoaW50KSAodnAtPm5hbWVsZW4gKyAxKSkpKSB7Ci0gICAgICAgIGlmICh2YXJfbGVuKQotICAgICAgICAgICAgKnZhcl9sZW4gPSAwOwotICAgICAgICByZXR1cm4gTUFUQ0hfRkFJTEVEOwotICAgIH0KLQotICAgIG1lbXNldChuZXduYW1lLCAwLCBzaXplb2YobmV3bmFtZSkpOwotCi0gICAgaWYgKCgoaW50KSAqbGVuZ3RoKSA8PSAoaW50KSB2cC0+bmFtZWxlbiB8fCBydGVzdCA9PSAtMSkgewotICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIHZwLT5uYW1lLCAoaW50KSB2cC0+bmFtZWxlbiAqIHNpemVvZihvaWQpKTsKLSAgICAgICAgbmV3bmFtZVt2cC0+bmFtZWxlbl0gPSAxOwotICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgIH0gZWxzZSBpZiAoKChpbnQpICpsZW5ndGgpID4gKGludCkgdnAtPm5hbWVsZW4gKyAxKSB7ICAgICAgIC8qIGV4YWN0IGNhc2UgY2hlY2tlZCBlYXJsaWVyICovCi0gICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0gICAgICAgIG1lbW1vdmUobmV3bmFtZSwgbmFtZSwgKCpsZW5ndGgpICogc2l6ZW9mKG9pZCkpOwotICAgICAgICBpZiAobmFtZVsqbGVuZ3RoIC0gMV0gPCBVTE9OR19NQVgpIHsKLSAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV0gKyAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIENhcmVmdWwgbm90IHRvIG92ZXJmbG93Li4uICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0gICAgICAgIG1lbW1vdmUobmV3bmFtZSwgbmFtZSwgKCpsZW5ndGgpICogc2l6ZW9mKG9pZCkpOwotICAgICAgICBpZiAoIWV4YWN0KSB7Ci0gICAgICAgICAgICBpZiAobmFtZVsqbGVuZ3RoIC0gMV0gPCBVTE9OR19NQVgpIHsKLSAgICAgICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBDYXJlZnVsIG5vdCB0byBvdmVyZmxvdy4uLiAgCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKChtYXggPj0gMCAmJiAoKGludCluZXduYW1lWypsZW5ndGggLSAxXSA+IG1heCkpIHx8Ci0gICAgICAgICAgICAgICAoIDAgPT0gbmV3bmFtZVsqbGVuZ3RoIC0gMV0gKSkgewotICAgICAgICBpZiAodmFyX2xlbikKLSAgICAgICAgICAgICp2YXJfbGVuID0gMDsKLSAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKLSAgICB9Ci0KLSAgICBtZW1tb3ZlKG5hbWUsIG5ld25hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKLSAgICBpZiAod3JpdGVfbWV0aG9kKQotICAgICAgICAqd3JpdGVfbWV0aG9kID0gMDsKLSAgICBpZiAodmFyX2xlbikKLSAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgICAgICAvKiBkZWZhdWx0ICovCi0gICAgcmV0dXJuIChNQVRDSF9TVUNDRUVERUQpOwotfQotCi0vKgotICogaGVhZGVyX2dlbmVyaWMoLi4uCi0gKiBBcmd1bWVudHM6Ci0gKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQotICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAotICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCi0gKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAotICogd3JpdGVfbWV0aG9kCi0gKiAKLSAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgotICogZ2VuZXJpY19oZWFkZXIKLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoJICAqdnAJICAgKEkpICAgICBQb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUuCi0gKgkgICpuYW1lCSAgIChJL08pICAgSW5wdXQgbmFtZSByZXF1ZXN0ZWQsIG91dHB1dCBuYW1lIGZvdW5kLgotICoJICAqbGVuZ3RoICAoSS9PKSAgIExlbmd0aCBvZiBpbnB1dCBhbmQgb3V0cHV0IG9pZCdzLgotICoJICAgZXhhY3QgICAoSSkgICAgIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZC4KLSAqCSAgKnZhcl9sZW4gKE8pICAgICBMZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZC4KLSAqCSgqKndyaXRlX21ldGhvZCkgICBIb29rIHRvIG5hbWUgYSB3cml0ZSBtZXRob2QgKFVOVVNFRCkuCi0gKiAgICAgIAotICogUmV0dXJuczoKLSAqCU1BVENIX1NVQ0NFRURFRAlJZiB2cC0+bmFtZSBtYXRjaGVzIG5hbWUgKGFjY291bnRpbmcgZm9yIGV4YWN0IGJpdCkuCi0gKglNQVRDSF9GQUlMRUQJT3RoZXJ3aXNlLAotICoKLSAqCi0gKiBDaGVjayB3aGV0aGVyIHZhcmlhYmxlICh2cCkgbWF0Y2hlcyBuYW1lLgotICovCi1pbnQKLWhlYWRlcl9nZW5lcmljKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0gICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOwotICAgIGludCAgICAgICAgICAgICByZXN1bHQ7Ci0KLSAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsICJoZWFkZXJfZ2VuZXJpYzogIikpOwotICAgIERFQlVHTVNHT0lEKCgidXRpbF9mdW5jcyIsIG5hbWUsICpsZW5ndGgpKTsKLSAgICBERUJVR01TRygoInV0aWxfZnVuY3MiLCAiIGV4YWN0PSVkXG4iLCBleGFjdCkpOwotCi0gICAgbWVtY3B5KChjaGFyICopIG5ld25hbWUsIChjaGFyICopIHZwLT5uYW1lLAotICAgICAgICAgICAoaW50KSB2cC0+bmFtZWxlbiAqIHNpemVvZihvaWQpKTsKLSAgICBuZXduYW1lW3ZwLT5uYW1lbGVuXSA9IDA7Ci0gICAgcmVzdWx0ID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXduYW1lLCB2cC0+bmFtZWxlbiArIDEpOwotICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzIiwgIiAgcmVzdWx0OiAlZFxuIiwgcmVzdWx0KSk7Ci0gICAgaWYgKChleGFjdCAmJiAocmVzdWx0ICE9IDApKSB8fCAoIWV4YWN0ICYmIChyZXN1bHQgPj0gMCkpKQotICAgICAgICByZXR1cm4gKE1BVENIX0ZBSUxFRCk7Ci0gICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCi0gICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwotICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0KLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKLSAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwotICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKLX0KLQogLyoKICAqIGNoZWNrbWliKCk6IHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgZG8gbm90IHVzZTogCiAgKi8KQEAgLTEyMDIsODggKzEwMjUsMTM1IEBACiAgICAgcmV0dXJuIHRhYmxlLT5kYXRhOwogfQogCi0jaWZkZWYgbGludXgKLSMgZGVmaW5lIFBST0NfUEFUSCAgICAgICAgICAiL3Byb2MiCi0jIGRlZmluZSBGSUxFX0RJU1AgICAgICAgICAgImZkLyIKLSMgZGVmaW5lIFNPQ0tFVF9UWVBFXzEgICAgICAic29ja2V0OlsiCi0jIGRlZmluZSBTT0NLRVRfVFlQRV8yICAgICAgIlswMDAwXToiCi0KLXVuc2lnbmVkIGxvbmcgbG9uZwotZXh0cmFjdF9pbm9kZShjaGFyICpmb3JtYXQpCisjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorcHJlZml4X2NieCAqbmV0X3NubXBfY3JlYXRlX3ByZWZpeF9pbmZvKHVuc2lnbmVkIGxvbmcgT25MaW5rRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIEF1dG9ub21vdXNGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmluNnB0cikKIHsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmV0ID0gMDsKKyAgIHByZWZpeF9jYnggKm5vZGUgPSBTTk1QX01BTExPQ19UWVBFREVGKHByZWZpeF9jYngpOworICAgaWYoIWluNnB0cikgeworICAgICAgZnJlZShub2RlKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgfQorICAgaWYoIW5vZGUpIHsKKyAgICAgIGZyZWUobm9kZSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKyAgIG5vZGUtPm5leHRfaW5mbyA9IE5VTEw7CisgICBub2RlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnID0gT25MaW5rRmxhZzsKKyAgIG5vZGUtPmlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnID0gQXV0b25vbW91c0ZsYWc7CisgICBtZW1jcHkobm9kZS0+aW42cCwgaW42cHRyLCBzaXplb2Yobm9kZS0+aW42cCkpOwogCi0gICAgaWYgKCFzdHJuY21wKGZvcm1hdCwgU09DS0VUX1RZUEVfMSwgOCkpIHsKLSAgICAgICAgcmV0ID0gc3RydG91bGwoZm9ybWF0ICsgOCwgTlVMTCwgMCk7Ci0gICAgfSBlbHNlIGlmICghc3RybmNtcChmb3JtYXQsIFNPQ0tFVF9UWVBFXzIsIDcpKSB7Ci0gICAgICAgIHJldCA9IHN0cnRvdWxsKGZvcm1hdCArIDcsIE5VTEwsIDApOwotICAgIH0KLQotICAgIHJldHVybiByZXQ7CisgICByZXR1cm4gbm9kZTsKIH0KIAotdW5zaWduZWQgaW50Ci1nZXRfcGlkX2Zyb21faW5vZGUodW5zaWduZWQgbG9uZyBsb25nIGlub2RlKQoraW50IG5ldF9zbm1wX2ZpbmRfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b19maW5kKQogewotICAgIERJUiAgICAgICAgICAgICpwcm9jZGlycyA9IE5VTEwsICpwaWRkaXJzID0gTlVMTDsKLSAgICBjaGFyICAgICAgICAgICAqbmFtZSA9IE5VTEw7Ci0gICAgY2hhciAgICAgICAgICAgIHBhdGhfbmFtZVtQQVRIX01BWCArIDFdOwotICAgIGNoYXIgICAgICAgICAgICBzb2NrZXRfbG5rW05BTUVfTUFYICsgMV07Ci0gICAgaW50ICAgICAgICAgICAgIGZpbGVsZW4gPSAwLCByZWFkbGVuID0gMCwgaWZsYWcgPSAwOwotICAgIHN0cnVjdCBkaXJlbnQgICpwcm9jaW5mbywgKnBpZGluZm87Ci0gICAgdW5zaWduZWQgaW50ICAgIHBpZDsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGVtcF9pbm9kZTsKKyAgICBpbnQgaXJldDsKKyAgICBtZW1zZXQobm9kZV90b19maW5kLCAwLCBzaXplb2YocHJlZml4X2NieCkpOworICAgIGlmKCEqaGVhZCkKKyAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KG5vZGVfdG9fZmluZC0+aW42cCwgYWRkcmVzcywgc2l6ZW9mKG5vZGVfdG9fZmluZC0+aW42cCkpOwogCi0gICAgaWYgKCEocHJvY2RpcnMgPSBvcGVuZGlyKFBST0NfUEFUSCkpKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJzbm1wZDogY2Fubm90IG9wZW4gL3Byb2NcbiIpOyAgICAgICAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlyZXQgPSBuZXRfc25tcF9zZWFyY2hfdXBkYXRlX3ByZWZpeF9pbmZvKGhlYWQsIG5vZGVfdG9fZmluZCwgMSk7CisgICAgaWYoaXJldCA8IDApIHsKKyAgICAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jczpwcmVmaXgiLCAiVW5hYmxlIHRvIHNlYXJjaCB0aGUgbGlzdFxuIikpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKCFpcmV0KSB7CisgICAgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3M6cHJlZml4IiwgIkNvdWxkIG5vdCBmaW5kIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZQorICAgICAgIHJldHVybiAwOworfQogCi0gICAgd2hpbGUgKChwcm9jaW5mbyA9IHJlYWRkaXIocHJvY2RpcnMpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5hbWUgPSBwcm9jaW5mby0+ZF9uYW1lOwotICAgICAgICBmb3IgKDsgKm5hbWU7IG5hbWUrKykgewotICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpuYW1lKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZigqbmFtZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworaW50IG5ldF9zbm1wX3VwZGF0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b191cGRhdGUpCit7CisgICAgaW50IGlyZXQ7CisgICAgaXJldCA9IG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8oaGVhZCwgbm9kZV90b191cGRhdGUsIDApOworICAgIGlmKGlyZXQgPCAwKSB7CisgICAgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3M6cHJlZml4IiwgIlVuYWJsZSB0byB1cGRhdGUgcHJlZml4IGluZm9cbiIpKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmICghaXJldCkgeworICAgICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzOnByZWZpeCIsICJVbmFibGUgdG8gZmluZCB0aGUgbm9kZSB0byB1cGRhdGVcbiIpKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlCisgICAgICAgcmV0dXJuIDA7Cit9CiAKLSAgICAgICAgbWVtc2V0KHBhdGhfbmFtZSwgJ1wwJywgUEFUSF9NQVggKyAxKTsKLSAgICAgICAgZmlsZWxlbiA9IHNucHJpbnRmKHBhdGhfbmFtZSwgUEFUSF9NQVgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9DX1BBVEggIi8lcy8iIEZJTEVfRElTUCwgcHJvY2luZm8tPmRfbmFtZSk7Ci0gICAgICAgIGlmIChmaWxlbGVuIDw9IDAgfHwgUEFUSF9NQVggPCBmaWxlbGVuKQotICAgICAgICAgICAgY29udGludWU7CitpbnQgbmV0X3NubXBfc2VhcmNoX3VwZGF0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZ1bmN0aW9uYWxpdHkpCit7CiAKLSAgICAgICAgcGlkID0gc3RydG91bChwcm9jaW5mby0+ZF9uYW1lLCBOVUxMLCAwKTsKKyAgIC8qIFdlIGRlZmluZSBmdW5jdGlvbmFsaXR5IGJhc2VkIG9uIG5lZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgKiAwIC0gTmVlZCB0byBkbyBhIHNlYXJjaCBhbmQgdXBkYXRlLiBXZSBoYXZlIHRvIHByb3ZpZGUgdGhlIG5vZGVfdG9fdXNlIHN0cnVjdHVyZSBmaWxsZWQgZnVsbHkgKgorICAgICogMSAtIE5lZWQgdG8gZG8gb25seSBzZWFyY2guIFByb3ZpZGUgdGhlIG5vZGVfdG9fdXNlIHdpdGggaW42cCB2YWx1ZSBmaWxsZWQgICAgICAgICAgICAgICAgICAgICovCiAKLSAgICAgICAgaWYgKCEocGlkZGlycyA9IG9wZW5kaXIocGF0aF9uYW1lKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBwcmVmaXhfY2J4ICp0ZW1wX25vZGU7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBoZWFkKTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IG5vZGVfdG9fdXNlKTsKIAotICAgICAgICB3aGlsZSAoKHBpZGluZm8gPSByZWFkZGlyKHBpZGRpcnMpKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZmlsZWxlbiArIHN0cmxlbihwaWRpbmZvLT5kX25hbWUpID4gUEFUSF9NQVgpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgaWYoZnVuY3Rpb25hbGl0eSA+IDEpCisgICAgICAgcmV0dXJuIC0xOworICAgIGlmKCFub2RlX3RvX3VzZSkKKyAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAgIHN0cmNweShwYXRoX25hbWUgKyBmaWxlbGVuLCBwaWRpbmZvLT5kX25hbWUpOwogCi0gICAgICAgICAgICBtZW1zZXQoc29ja2V0X2xuaywgJ1wwJywgTkFNRV9NQVggKyAxKTsKLSAgICAgICAgICAgIHJlYWRsZW4gPSByZWFkbGluayhwYXRoX25hbWUsIHNvY2tldF9sbmssIE5BTUVfTUFYKTsKLSAgICAgICAgICAgIGlmIChyZWFkbGVuIDwgMCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHNvY2tldF9sbmtbcmVhZGxlbl0gPSAnXDAnOworICAgIGlmICghZnVuY3Rpb25hbGl0eSkgeworICAgICAgIGlmICghKmhlYWQpIHsKKyAgICAgICAgICAgKmhlYWQgPSBub2RlX3RvX3VzZTsKKyAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgfQogCi0gICAgICAgICAgICB0ZW1wX2lub2RlID0gZXh0cmFjdF9pbm9kZShzb2NrZXRfbG5rKTsKLSAgICAgICAgICAgIGlmIChpbm9kZSA9PSB0ZW1wX2lub2RlKSB7Ci0gICAgICAgICAgICAgICAgaWZsYWcgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgIGZvciAodGVtcF9ub2RlID0gKmhlYWQ7IHRlbXBfbm9kZS0+bmV4dF9pbmZvICE9IE5VTEwgOyB0ZW1wX25vZGUgPSB0ZW1wX25vZGUtPm5leHRfaW5mbykgeworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKHRlbXBfbm9kZS0+aW42cCwgbm9kZV90b191c2UtPmluNnApKSB7CisgICAgICAgICAgICAgICAgdGVtcF9ub2RlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnID0gbm9kZV90b191c2UtPmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWc7CisgICAgICAgICAgICAgICAgdGVtcF9ub2RlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9IG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZzsKKyAgICAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjbG9zZWRpcihwaWRkaXJzKTsKLSAgICAgICAgaWYgKGlmbGFnID09IDEpCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICB9CisgICAgICAgdGVtcF9ub2RlLT5uZXh0X2luZm8gPSBub2RlX3RvX3VzZTsKKyAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgeworICAgICAgICAgZm9yICh0ZW1wX25vZGUgPSAqaGVhZDsgdGVtcF9ub2RlICE9IE5VTEwgOyB0ZW1wX25vZGUgPSB0ZW1wX25vZGUtPm5leHRfaW5mbykgeworICAgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAodGVtcF9ub2RlLT5pbjZwLCBub2RlX3RvX3VzZS0+aW42cCkpIHsKKyAgICAgICAgICAgICAgICAvKm5lZWQgeW8gcHV0IHNlbSBoZXJlIGFzIGkgcmVhZCBoZXJlICovCisgICAgICAgICAgICAgICAgbm9kZV90b191c2UtPmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWcgPSB0ZW1wX25vZGUtPmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWc7CisgICAgICAgICAgICAgICAgbm9kZV90b191c2UtPmlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnID0gdGVtcF9ub2RlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZzsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChwcm9jZGlycykKLSAgICAgICAgY2xvc2VkaXIocHJvY2RpcnMpOwotICAgIHJldHVybiBwaWQ7CiB9CiAKLSNlbmRpZiAgLyogI2lmZGVmIGxpbnV4ICovCitpbnQgbmV0X3NubXBfZGVsZXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzKQoreworCisgICAgcHJlZml4X2NieCAqdGVtcF9ub2RlLCpwcmV2X25vZGU7CisgICAgaWYoIWFkZHJlc3MpCisgICAgICAgcmV0dXJuIC0xOworICAgIGlmKCFoZWFkKQorICAgICAgIHJldHVybiAtMTsKKworICAgIGZvciAodGVtcF9ub2RlID0gKmhlYWQsIHByZXZfbm9kZSA9IE5VTEw7IHRlbXBfbm9kZTsKKyAgICAgICAgIHByZXZfbm9kZSA9IHRlbXBfbm9kZSwgdGVtcF9ub2RlID0gdGVtcF9ub2RlLT5uZXh0X2luZm8pIHsKKworICAgICAgICAgaWYgKHRlbXBfbm9kZS0+aW42cCAmJiBzdHJjbXAodGVtcF9ub2RlLT5pbjZwLCBhZGRyZXNzKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAocHJldl9ub2RlKQorICAgICAgICAgICAgICAgIHByZXZfbm9kZS0+bmV4dF9pbmZvID0gdGVtcF9ub2RlLT5uZXh0X2luZm87CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKmhlYWQgPSB0ZW1wX25vZGUtPm5leHRfaW5mbzsKKyAgICAgICAgICAgIGZyZWUodGVtcF9ub2RlKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCmluZGV4IGZiYTFhOTguLmM1YjUyZWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKQEAgLTQsMTIgKzQsMzEgQEAKICNpZm5kZWYgX01JQkdST1VQX1VUSUxfRlVOQ1NfSAogI2RlZmluZSBfTUlCR1JPVVBfVVRJTF9GVU5DU19ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCisKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogI2luY2x1ZGUgInN0cnVjdC5oIgogCit0eXBlZGVmIHN0cnVjdCBwcmVmaXhfaW5mbworeworICAgc3RydWN0IHByZWZpeF9pbmZvICpuZXh0X2luZm87CisgICB1bnNpZ25lZCBsb25nIGlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWc7CisgICB1bnNpZ25lZCBsb25nIGlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnOworICAgY2hhciBpbjZwWzQwXTsKK31wcmVmaXhfY2J4OworI2lmbmRlZiBXSU4zMgordHlwZWRlZiBzdHJ1Y3QgCit7CisgcHJlZml4X2NieCAqKmxpc3RfaGVhZDsKK31uZXRzbm1wX3ByZWZpeF9saXN0ZW5faW5mbzsKKyNlbmRpZgogdm9pZCAgICAgICAgICAgIEV4aXQoaW50KTsKIGludCAgICAgICAgICAgICBzaGVsbF9jb21tYW5kKHN0cnVjdCBleHRlbnNpYmxlICopOwogaW50ICAgICAgICAgICAgIGV4ZWNfY29tbWFuZChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKQEAgLTIxLDExICs0MCw2IEBACiBXcml0ZU1ldGhvZCAgICAgcmVzdGFydF9ob29rOwogdm9pZCAgICAgICAgICAgIHByaW50X21pYl9vaWQob2lkICosIHNpemVfdCk7CiB2b2lkICAgICAgICAgICAgc3ByaW50X21pYl9vaWQoY2hhciAqLCBjb25zdCBvaWQgKiwgc2l6ZV90KTsKLWludCAgICAgICAgICAgICBoZWFkZXJfc2ltcGxlX3RhYmxlKHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIHNpemVfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kLCBpbnQpOwotaW50ICAgICAgICAgICAgIGhlYWRlcl9nZW5lcmljKHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiwgV3JpdGVNZXRob2QgKiopOwogaW50ICAgICAgICAgICAgIGNoZWNrbWliKHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosIGludCwgc2l6ZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kLCBpbnQpOwogY2hhciAgICAgICAgICAgKmZpbmRfZmllbGQoY2hhciAqLCBpbnQpOwpAQCAtMzQsMTUgKzQ4LDM1IEBACiB2b2lkICAgICAgICAgICAgd2FpdF9vbl9leGVjKHN0cnVjdCBleHRlbnNpYmxlICopOwogY29uc3QgY2hhciAgICAgKm1ha2VfdGVtcGZpbGUodm9pZCk7CiAKLSNpZmRlZiBsaW51eAotdW5zaWduZWQgaW50ICAgIGdldF9waWRfZnJvbV9pbm9kZSh1bnNpZ25lZCBsb25nIGxvbmcpOworcHJlZml4X2NieCAqbmV0X3NubXBfY3JlYXRlX3ByZWZpeF9pbmZvKHVuc2lnbmVkIGxvbmcgT25MaW5rRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIEF1dG9ub21vdXNGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmluNnB0cik7CisjaWZuZGVmIFdJTjMyCitpbnQgbmV0X3NubXBfZmluZF9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX2ZpbmQpOworaW50IG5ldF9zbm1wX3VwZGF0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b191cGRhdGUpOworaW50IG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX3VzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbmFsaXR5KTsKK2ludCBuZXRfc25tcF9kZWxldGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFkZHJlc3MpOwogI2VuZGlmCisjZGVmaW5lIE5JUDYoYWRkcikgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzBdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzFdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzJdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzNdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzRdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzVdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzZdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzddKQogCiAjZGVmaW5lICAgICBzYXRvc2luKHgpICAgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJih4KSkKICNkZWZpbmUgICAgIFNPQ0tBRERSKHgpICAgICAoc2F0b3Npbih4KS0+c2luX2FkZHIuc19hZGRyKQotI2lmbmRlZiBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVAotI2RlZmluZSBNSUJfU1RBVFNfQ0FDSEVfVElNRU9VVCA1Ci0jZW5kaWYKKworI2luY2x1ZGUgInV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCIKIAogdHlwZWRlZiB2b2lkICAgKm1pYl90YWJsZV90OwogdHlwZWRlZiBpbnQgICAgIChSRUxPQUQpIChtaWJfdGFibGVfdCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4YmFjZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaApAQCAtMCwwICsxLDEyIEBACisvKgorICogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oOiAgdXRpbGl0aXkgZnVuY3Rpb25zIGZvciBleHRlbnNpYmxlCisgKiBncm91cHMuCisgKi8KKyNpZm5kZWYgX01JQkdST1VQX1VUSUxfRlVOQ1NfTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVRfSAorI2RlZmluZSBfTUlCR1JPVVBfVVRJTF9GVU5DU19NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVF9ICisKKyNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKKyNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQgNQorI2VuZGlmCisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfVVRJTF9GVU5DU19NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzYyOGIyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYwpAQCAtMCwwICsxLDk1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlICJnZXRfcGlkX2Zyb21faW5vZGUuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KKworI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjIGRlZmluZSBQUk9DX1BBVEggICAgICAgICAgIi9wcm9jIgorIyBkZWZpbmUgU09DS0VUX1RZUEVfMSAgICAgICJzb2NrZXQ6WyIKKyMgZGVmaW5lIFNPQ0tFVF9UWVBFXzIgICAgICAiWzAwMDBdOiIKKworcGlkX3QKK25ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlubzY0X3QgaW5vZGUpCit7CisgICAgRElSICAgICAgICAgICAgKnByb2NkaXJzID0gTlVMTCwgKnBpZGRpcnMgPSBOVUxMOworICAgIGNoYXIgICAgICAgICAgICBwYXRoX25hbWVbUEFUSF9NQVggKyAxXTsKKyAgICBjaGFyICAgICAgICAgICAgc29ja2V0X2xua1tOQU1FX01BWCArIDFdOworICAgIGludCAgICAgICAgICAgICBmaWxlbGVuID0gMCwgcmVhZGxlbiA9IDAsIGlmbGFnID0gMDsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqcHJvY2luZm8sICpwaWRpbmZvOworICAgIHBpZF90ICAgICAgICAgICBwaWQgPSAwOworICAgIGlubzY0X3QgICAgICAgICB0ZW1wX2lub2RlOworCisgICAgaWYgKGlub2RlID09IDApIHsKKyAgICAgICAgLyogYW4gaW5vZGUgc2V0IHRvIHplcm8gbWVhbnMgaXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHByb2Nlc3MuICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghKHByb2NkaXJzID0gb3BlbmRpcihQUk9DX1BBVEgpKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic25tcGQ6IGNhbm5vdCBvcGVuIC9wcm9jXG4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgd2hpbGUgKChwcm9jaW5mbyA9IHJlYWRkaXIocHJvY2RpcnMpKSAhPSBOVUxMKSB7CisJY29uc3QgY2hhciogbmFtZSA9IHByb2NpbmZvLT5kX25hbWU7CisgICAgICAgIGZvciAoOyAqbmFtZTsgbmFtZSsrKSB7CisgICAgICAgICAgICBpZiAoIWlzZGlnaXQoKm5hbWUpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKCpuYW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbWVtc2V0KHBhdGhfbmFtZSwgJ1wwJywgUEFUSF9NQVggKyAxKTsKKyAgICAgICAgZmlsZWxlbiA9IHNucHJpbnRmKHBhdGhfbmFtZSwgUEFUSF9NQVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9DX1BBVEggIi8lcy9mZC8iLCBwcm9jaW5mby0+ZF9uYW1lKTsKKyAgICAgICAgaWYgKGZpbGVsZW4gPD0gMCB8fCBQQVRIX01BWCA8IGZpbGVsZW4pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIShwaWRkaXJzID0gb3BlbmRpcihwYXRoX25hbWUpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHdoaWxlICgocGlkaW5mbyA9IHJlYWRkaXIocGlkZGlycykpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChmaWxlbGVuICsgc3RybGVuKHBpZGluZm8tPmRfbmFtZSkgPiBQQVRIX01BWCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc3RyY3B5KHBhdGhfbmFtZSArIGZpbGVsZW4sIHBpZGluZm8tPmRfbmFtZSk7CisKKyAgICAgICAgICAgIG1lbXNldChzb2NrZXRfbG5rLCAnXDAnLCBOQU1FX01BWCArIDEpOworICAgICAgICAgICAgcmVhZGxlbiA9IHJlYWRsaW5rKHBhdGhfbmFtZSwgc29ja2V0X2xuaywgTkFNRV9NQVgpOworICAgICAgICAgICAgaWYgKHJlYWRsZW4gPCAwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgc29ja2V0X2xua1tyZWFkbGVuXSA9ICdcMCc7CisKKyAgICAgICAgICAgIGlmICghc3RybmNtcChzb2NrZXRfbG5rLCBTT0NLRVRfVFlQRV8xLCA4KSkgeworICAgICAgICAgICAgICAgIHRlbXBfaW5vZGUgPSBzdHJ0b3VsbChzb2NrZXRfbG5rICsgOCwgTlVMTCwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKHNvY2tldF9sbmssIFNPQ0tFVF9UWVBFXzIsIDcpKSB7CisgICAgICAgICAgICAgICAgdGVtcF9pbm9kZSA9IHN0cnRvdWxsKHNvY2tldF9sbmsgKyA3LCBOVUxMLCAwKTsKKyAgICAgICAgICAgIH0gZWxzZQorCQl0ZW1wX2lub2RlID0gMDsKKyAgICAgICAgICAgIGlmIChpbm9kZSA9PSB0ZW1wX2lub2RlKSB7CisgICAgICAgICAgICAgICAgcGlkID0gc3RydG91bChwcm9jaW5mby0+ZF9uYW1lLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBpZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2xvc2VkaXIocGlkZGlycyk7CisgICAgICAgIGlmIChpZmxhZyA9PSAxKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChwcm9jZGlycykKKyAgICAgICAgY2xvc2VkaXIocHJvY2RpcnMpOworICAgIHJldHVybiBwaWQ7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWQwNGUxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaDogIHV0aWxpdGl5IGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBwaWQKKyAqIHRoYXQgY29udHJvbHMgYSBnaXZlbiBpbm9kZSBvbiBsaW51eC4KKyAqLworI2lmbmRlZiBORVRTTk1QX01JQkdST1VQX1VUSUxfRlVOQ1NfR0VUX1BJRF9GUk9NX0lOT0RFX0gKKyNkZWZpbmUgTkVUU05NUF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9TSU1QTEVfVEFCTEVfSAorCisjaWZuZGVmIGxpbnV4Citjb25maWdfZXJyb3IoZ2V0X3BpZF9mcm9tX2lub2RlIGlzIG9ubHkgc3VwcG9yZWQgb24gbGludXgpCisjZW5kaWYKKworI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEKKworI2lmIEhBVkVfRElSRU5UX0gKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNlbHNlCisjIGRlZmluZSBkaXJlbnQgZGlyZWN0CisjIGlmIEhBVkVfU1lTX05ESVJfSAorIyAgaW5jbHVkZSA8c3lzL25kaXIuaD4KKyMgZW5kaWYKKyMgaWYgSEFWRV9TWVNfRElSX0gKKyMgIGluY2x1ZGUgPHN5cy9kaXIuaD4KKyMgZW5kaWYKKyMgaWYgSEFWRV9ORElSX0gKKyMgIGluY2x1ZGUgPG5kaXIuaD4KKyMgZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKK3BpZF90IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlubzY0X3QpOworCisjZW5kaWYgLyogTkVUU05NUF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9TSU1QTEVfVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNTRiZTkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmMKQEAgLTAsMCArMSw2NCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgImhlYWRlcl9nZW5lcmljLmgiCisKKy8qCisgKiBoZWFkZXJfZ2VuZXJpYyguLi4KKyAqIEFyZ3VtZW50czoKKyAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCisgKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MKKyAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAorICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKKyAqIHdyaXRlX21ldGhvZAorICoKKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgorICogZ2VuZXJpY19oZWFkZXIKKyAqCisgKiBQYXJhbWV0ZXJzOgorICoJICAqdnAJICAgKEkpICAgICBQb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUuCisgKgkgICpuYW1lCSAgIChJL08pICAgSW5wdXQgbmFtZSByZXF1ZXN0ZWQsIG91dHB1dCBuYW1lIGZvdW5kLgorICoJICAqbGVuZ3RoICAoSS9PKSAgIExlbmd0aCBvZiBpbnB1dCBhbmQgb3V0cHV0IG9pZCdzLgorICoJICAgZXhhY3QgICAoSSkgICAgIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZC4KKyAqCSAgKnZhcl9sZW4gKE8pICAgICBMZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZC4KKyAqCSgqKndyaXRlX21ldGhvZCkgICBIb29rIHRvIG5hbWUgYSB3cml0ZSBtZXRob2QgKFVOVVNFRCkuCisgKgorICogUmV0dXJuczoKKyAqCU1BVENIX1NVQ0NFRURFRAlJZiB2cC0+bmFtZSBtYXRjaGVzIG5hbWUgKGFjY291bnRpbmcgZm9yIGV4YWN0IGJpdCkuCisgKglNQVRDSF9GQUlMRUQJT3RoZXJ3aXNlLAorICoKKyAqCisgKiBDaGVjayB3aGV0aGVyIHZhcmlhYmxlICh2cCkgbWF0Y2hlcyBuYW1lLgorICovCitpbnQKK2hlYWRlcl9nZW5lcmljKHN0cnVjdCB2YXJpYWJsZSAqdnAsCisgICAgICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCit7CisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworICAgIGludCAgICAgICAgICAgICByZXN1bHQ7CisKKyAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsICJoZWFkZXJfZ2VuZXJpYzogIikpOworICAgIERFQlVHTVNHT0lEKCgidXRpbF9mdW5jcyIsIG5hbWUsICpsZW5ndGgpKTsKKyAgICBERUJVR01TRygoInV0aWxfZnVuY3MiLCAiIGV4YWN0PSVkXG4iLCBleGFjdCkpOworCisgICAgbWVtY3B5KChjaGFyICopIG5ld25hbWUsIChjaGFyICopIHZwLT5uYW1lLAorICAgICAgICAgICAoaW50KSB2cC0+bmFtZWxlbiAqIHNpemVvZihvaWQpKTsKKyAgICBuZXduYW1lW3ZwLT5uYW1lbGVuXSA9IDA7CisgICAgcmVzdWx0ID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXduYW1lLCB2cC0+bmFtZWxlbiArIDEpOworICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzIiwgIiAgcmVzdWx0OiAlZFxuIiwgcmVzdWx0KSk7CisgICAgaWYgKChleGFjdCAmJiAocmVzdWx0ICE9IDApKSB8fCAoIWV4YWN0ICYmIChyZXN1bHQgPj0gMCkpKQorICAgICAgICByZXR1cm4gKE1BVENIX0ZBSUxFRCk7CisgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCisgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOworICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7CisKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCisgICAgcmV0dXJuIChNQVRDSF9TVUNDRUVERUQpOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NjEwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKQEAgLTAsMCArMSwxOCBAQAorLyoKKyAqICB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmg6ICB1dGlsaXRpeSBmdW5jdGlvbnMgZm9yIGV4dGVuc2libGUgZ3JvdXBzLgorICovCisjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9HRU5FUklDX0gKKyNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfSEVBREVSX0dFTkVSSUNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2ludCBoZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsIHNpemVfdCAqLAorICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9HRU5FUklDX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ1OWE0YwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5jCkBAIC0wLDAgKzEsMTEwIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAiaGVhZGVyX3NpbXBsZV90YWJsZS5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCisgKiBoZWFkZXJfc2ltcGxlX3RhYmxlCisgKgorICogUGFyYW1ldGVyczoKKyAqCSAgKnZwCQkgVmFyaWFibGUgZGF0YS4KKyAqCSAgKm5hbWUJCSBGdWxseSBpbnN0YW50aWF0ZWQgT0lEIG5hbWUuCisgKgkgICpsZW5ndGgJIExlbmd0aCBvZiBuYW1lLgorICoJICAgZXhhY3QJIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggaXMgZGVzaXJlZC4KKyAqCSAgKnZhcl9sZW4JIEhvb2sgZm9yIHNpemUgb2YgcmV0dXJuZWQgZGF0YSB0eXBlLgorICoJKCoqd3JpdGVfbWV0aG9kKSBIb29rIGZvciB3cml0ZSBtZXRob2QgKFVOVVNFRCkuCisgKgkgICBtYXgKKyAqCisgKiBSZXR1cm5zOgorICoJMAlJZiBuYW1lIG1hdGNoZXMgdnAtPm5hbWUgKGFjY291bnRpbmcgZm9yICdleGFjdCcpIGFuZCBpcworICoJCQlub3QgZ3JlYXRlciBpbiBsZW5ndGggdGhhbiAnbWF4Jy4KKyAqCTEJT3RoZXJ3aXNlLgorICoKKyAqCisgKiBDb21wYXJlICduYW1lJyB0byB2cC0+bmFtZSBmb3IgdGhlIGJlc3QgbWF0Y2ggb3IgYW4gZXhhY3QgbWF0Y2ggKGlmCisgKglyZXF1ZXN0ZWQpLiAgQWxzbyBjaGVjayB0aGF0ICduYW1lJyBpcyBub3QgbG9uZ2VyIHRoYW4gJ21heCcgaWYKKyAqCW1heCBpcyBncmVhdGVyLXRoYW4vZXF1YWwgMC4KKyAqIFN0b3JlIGEgc3VjY2Vzc2Z1bCBtYXRjaCBpbiAnbmFtZScsIGFuZCBpbmNyZW1lbnQgdGhlIE9JRCBpbnN0YW5jZSBpZgorICoJdGhlIG1hdGNoIHdhcyBub3QgZXhhY3QuCisgKgorICogJ25hbWUnIGFuZCAnbGVuZ3RoJyBhcmUgdW5kZWZpbmVkIHVwb24gZmFpbHVyZS4KKyAqCisgKi8KK2ludAoraGVhZGVyX3NpbXBsZV90YWJsZShzdHJ1Y3QgdmFyaWFibGUgKnZwLCBvaWQgKiBuYW1lLCBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kLCBpbnQgbWF4KQoreworICAgIGludCAgICAgICAgICAgICBpLCBydGVzdDsgICAvKiBTZXQgdG86ICAgICAgLTEgICAgICBJZiBuYW1lIDwgdnAtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAxICAgICAgIElmIG5hbWUgPiB2cC0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgIDAgICAgICAgT3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBvaWQgICAgICAgICAgICAgbmV3bmFtZVtNQVhfT0lEX0xFTl07CisKKyAgICBmb3IgKGkgPSAwLCBydGVzdCA9IDA7CisgICAgICAgICBpIDwgKGludCkgdnAtPm5hbWVsZW4gJiYgaSA8IChpbnQpICgqbGVuZ3RoKSAmJiAhcnRlc3Q7IGkrKykgeworICAgICAgICBpZiAobmFtZVtpXSAhPSB2cC0+bmFtZVtpXSkgeworICAgICAgICAgICAgaWYgKG5hbWVbaV0gPCB2cC0+bmFtZVtpXSkKKyAgICAgICAgICAgICAgICBydGVzdCA9IC0xOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJ0ZXN0ID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocnRlc3QgPiAwIHx8CisgICAgICAgIChleGFjdCA9PSAxCisgICAgICAgICAmJiAocnRlc3QgfHwgKGludCkgKmxlbmd0aCAhPSAoaW50KSAodnAtPm5hbWVsZW4gKyAxKSkpKSB7CisgICAgICAgIGlmICh2YXJfbGVuKQorICAgICAgICAgICAgKnZhcl9sZW4gPSAwOworICAgICAgICByZXR1cm4gTUFUQ0hfRkFJTEVEOworICAgIH0KKworICAgIG1lbXNldChuZXduYW1lLCAwLCBzaXplb2YobmV3bmFtZSkpOworCisgICAgaWYgKCgoaW50KSAqbGVuZ3RoKSA8PSAoaW50KSB2cC0+bmFtZWxlbiB8fCBydGVzdCA9PSAtMSkgeworICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIHZwLT5uYW1lLCAoaW50KSB2cC0+bmFtZWxlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgbmV3bmFtZVt2cC0+bmFtZWxlbl0gPSAxOworICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworICAgIH0gZWxzZSBpZiAoKChpbnQpICpsZW5ndGgpID4gKGludCkgdnAtPm5hbWVsZW4gKyAxKSB7ICAgICAgIC8qIGV4YWN0IGNhc2UgY2hlY2tlZCBlYXJsaWVyICovCisgICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7CisgICAgICAgIG1lbW1vdmUobmV3bmFtZSwgbmFtZSwgKCpsZW5ndGgpICogc2l6ZW9mKG9pZCkpOworICAgICAgICBpZiAobmFtZVsqbGVuZ3RoIC0gMV0gPCBVTE9OR19NQVgpIHsKKyAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV0gKyAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIENhcmVmdWwgbm90IHRvIG92ZXJmbG93Li4uCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgaWYgKCFleGFjdCkgeworICAgICAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7CisgICAgICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXSArIDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ2FyZWZ1bCBub3QgdG8gb3ZlcmZsb3cuLi4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoKG1heCA+PSAwICYmICgoaW50KW5ld25hbWVbKmxlbmd0aCAtIDFdID4gbWF4KSkgfHwKKyAgICAgICAgICAgICAgICggMCA9PSBuZXduYW1lWypsZW5ndGggLSAxXSApKSB7CisgICAgICAgIGlmICh2YXJfbGVuKQorICAgICAgICAgICAgKnZhcl9sZW4gPSAwOworICAgICAgICByZXR1cm4gTUFUQ0hfRkFJTEVEOworICAgIH0KKworICAgIG1lbW1vdmUobmFtZSwgbmV3bmFtZSwgKCpsZW5ndGgpICogc2l6ZW9mKG9pZCkpOworICAgIGlmICh3cml0ZV9tZXRob2QpCisgICAgICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CisgICAgaWYgKHZhcl9sZW4pCisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAgICAgLyogZGVmYXVsdCAqLworICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE5NWQ2OQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaDogIHV0aWxpdGl5IGZ1bmN0aW9ucyBmb3IgZXh0ZW5zaWJsZQorICogZ3JvdXBzLgorICovCisjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9TSU1QTEVfVEFCTEVfSAorI2RlZmluZSBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitpbnQgaGVhZGVyX3NpbXBsZV90YWJsZShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsIHNpemVfdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVNZXRob2QgKiosIGludCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvZXhlY3V0ZS5jCmluZGV4IDIxYmY2ODIuLjQyMjFmOTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYwpAQCAtMTYwLDcgKzE2MCw3IEBACiAgICAgaWYgKGNwKSB7CiAgICAgICAgIGFyZ3ZbaSsrXSA9IHN0cmR1cCggY3AgKTsKICAgICB9Ci0gICAgYXJndltpXSA9IDA7CisgICAgYXJndltpXSA9IE5VTEw7CiAgICAgKmFyZ2MgPSBpOwogCiAgICAgcmV0dXJuIGFyZ3Y7CkBAIC0yMTUsNyArMjE1LDcgQEAKICAgICAgICAgYXJndltpXSA9IHN0cmR1cCggY3B0cjIgKTsKICAgICAgICAgY3B0cjIgICs9IHN0cmxlbiggY3B0cjIgKSsxOwogICAgIH0KLSAgICBhcmd2W2NvdW50XSA9IDA7CisgICAgYXJndltjb3VudF0gPSBOVUxMOwogICAgICphcmdjICAgICAgID0gY291bnQ7CiAgICAgICAgIAogICAgIHJldHVybiBhcmd2OwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNvdW50ID0gcmVhZChvcGlwZVswXSwgJmNhY2hlX3B0cltvZmZzZXRdLCBjYWNoZV9zaXplKTsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnJ1bjpleGVjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmVhZCAlZCBieXRlc1xuIiwgY291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmVhZCAlZCBieXRlc1xuIiwgKGludCljb3VudCkpOwogICAgICAgICAgICAgaWYgKDAgPT0gY291bnQpIHsKICAgICAgICAgICAgICAgICBpbnQgcmM7CiAgICAgICAgICAgICAgICAgLyoKQEAgLTM5MCw3ICszOTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6cnVuOmV4ZWMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICVkIGxlZnQgaW4gYnVmZmVyXG4iLCBjYWNoZV9zaXplKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJWQgbGVmdCBpbiBidWZmZXJcbiIsIChpbnQpY2FjaGVfc2l6ZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKChjb3VudCA9PSAtMSkgJiYgKEVBR0FJTiAhPSBlcnJubykpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYwppbmRleCA0ZjY2ZDdlLi5kZTkzZDYxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jCkBAIC03LDI0ICs3LDE5IEBACiB2b2lkCiBuZXRzbm1wX3BhcnNlX2lxdWVyeVNlY0xldmVsKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQogewotICAgIGNoYXIgYnVmWzEwMjRdOwogICAgIGludCBzZWNMZXZlbDsKIAogICAgIGlmICgoc2VjTGV2ZWwgPSBwYXJzZV9zZWNMZXZlbF9jb25mKCB0b2tlbiwgbGluZSApKSA+PSAwICkgewogICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTEVWRUwsIHNlY0xldmVsKTsKICAgICB9IGVsc2UgewotICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiVW5rbm93biBzZWN1cml0eSBsZXZlbDogJXMiLCBsaW5lKTsKLSAgICAgICAgYnVmWyBzaXplb2YoYnVmKS0xIF0gPSAwOwotICAgICAgICBjb25maWdfcGVycm9yKGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoIlVua25vd24gc2VjdXJpdHkgbGV2ZWw6ICVzIiwgbGluZSk7CiAgICAgfQogfQogCiB2b2lkCiBuZXRzbm1wX3BhcnNlX2lxdWVyeVZlcnNpb24oY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7Ci0gICAgY2hhciBidWZbMTAyNF07Ci0KICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQogICAgIGlmICghc3RyY21wKCBsaW5lLCAiMSIgKSkKICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCkBAIC00MSw5ICszNiw3IEBACiAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9WRVJTSU9OLCBTTk1QX1ZFUlNJT05fMyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJVbmtub3duIHZlcnNpb246ICVzIiwgbGluZSk7Ci0gICAgICAgIGJ1Zlsgc2l6ZW9mKGJ1ZiktMSBdID0gMDsKLSAgICAgICAgY29uZmlnX3BlcnJvcihidWYpOworCW5ldHNubXBfY29uZmlnX2Vycm9yKCJVbmtub3duIHZlcnNpb246ICVzIiwgbGluZSk7CiAgICAgfQogfQogCkBAIC02MSw5ICs1NCw2IEBACiAgICAgaWYgKHNlY05hbWUpCiAgICAgICAgIG5ldHNubXBfcXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbigKICAgICAgICAgICAgICBuZXRzbm1wX2lxdWVyeV91c2VyX3Nlc3Npb24oc2VjTmFtZSkpOwotICAgIGVsc2UKLSAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICJpcXVlcnlTZWNOYW1lIGhhcyBub3QgYmVlbiBjb25maWd1cmVkIC0gaW50ZXJuYWwgcXVlcmllcyB3aWxsIGZhaWxcbiIpOwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKQEAgLTgxLDkgKzcxLDkgQEAKIHsKICAgICB1X2NoYXIgZUlEW1NOTVBfTUFYQlVGX1NNQUxMXTsKICAgICBzaXplX3QgZWxlbjsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnMgPSBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnMgPSBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkKCk7CiAKLSAgICBpZiAocyAmJiBzLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDAgKSB7CisgICAgaWYgKCBzICYmIHMtPnNlY3VyaXR5RW5naW5lSURMZW4gPT0gMCApIHsKICAgICAgICAgZWxlbiA9IHNubXB2M19nZXRfZW5naW5lSUQoZUlELCBzaXplb2YoZUlEKSk7CiAgICAgICAgIHMtPnNlY3VyaXR5RW5naW5lSUQgPSBuZXRzbm1wX21lbWR1cChlSUQsIGVsZW4pOwogICAgICAgICBzLT5zZWN1cml0eUVuZ2luZUlETGVuID0gZWxlbjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMKaW5kZXggN2M3MGEwMi4uNTBjZGI1MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMKQEAgLTE1LDggKzE1LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KIHR5cGVkZWYgc3RydWN0IG92ZXJyaWRlX2RhdGFfcyB7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7CiAgICAgdm9pZCAgICAgICAgICAgKnZhbHVlOwpAQCAtMTgzLDcgKzE4MSw2IEBACiAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIHRoZWRhdGEtPnR5cGUgPSB0eXBlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0yNDksNyArMjQ2LDcgQEAKICAgICB0aGVfcmVnLT5tb2RlcyA9IChyZWFkd3JpdGUpID8gSEFORExFUl9DQU5fUldSSVRFIDogSEFORExFUl9DQU5fUk9OTFk7CiAgICAgdGhlX3JlZy0+aGFuZGxlciA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIoIm92ZXJyaWRlIiwgb3ZlcnJpZGVfaGFuZGxlcik7Ci0gICAgdGhlX3JlZy0+cm9vdG9pZCA9IG5ldHNubXBfbWVtZHVwKG9pZGJ1Ziwgb2lkYnVmX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICB0aGVfcmVnLT5yb290b2lkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQob2lkYnVmLCBvaWRidWZfbGVuKTsKICAgICB0aGVfcmVnLT5yb290b2lkX2xlbiA9IG9pZGJ1Zl9sZW47CiAgICAgaWYgKCF0aGVfcmVnLT5yb290b2lkIHx8ICF0aGVfcmVnLT5oYW5kbGVyIHx8ICF0aGVfcmVnLT5oYW5kbGVyTmFtZSkgewogICAgICAgICBpZiAodGhlX3JlZy0+aGFuZGxlcikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTA2Zjc5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5jCkBAIC0wLDAgKzEsNDQgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlICJzbm1wX2dldF9zdGF0aXN0aWMuaCIKKworc3RhdGljIGludAorbmV0c25tcF9nZXRfc3RhdGlzdGljX2hlbHBlcl9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVQpIHsKKyAgICAgICAgY29uc3Qgb2lkIGlkeCA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbcmVnaW5mby0+cm9vdG9pZF9sZW4gLSAyXSArCisgICAgICAgICAgICAoKChjaGFyKiloYW5kbGVyLT5teXZvaWQpIC0gKChjaGFyKikwKSk7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IHZhbHVlID0gc25tcF9nZXRfc3RhdGlzdGljKGlkeCk7CisgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworfQorCitzdGF0aWMgbmV0c25tcF9taWJfaGFuZGxlciAqCituZXRzbm1wX2dldF9zdGF0aXN0aWNfaGFuZGxlcihpbnQgb2Zmc2V0KQoreworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKnJldCA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIoImdldF9zdGF0aXN0aWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3N0YXRpc3RpY19oZWxwZXJfaGFuZGxlcik7CisgICAgaWYgKHJldCkgeworICAgICAgICByZXQtPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVDsKKyAgICAgICAgcmV0LT5teXZvaWQgPSAoKGNoYXIqKTApICsgb2Zmc2V0OworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCitpbnQKK25ldHNubXBfcmVnaXN0ZXJfc3RhdGlzdGljX2hhbmRsZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkIHN0YXJ0LCBpbnQgYmVnaW4sIGludCBlbmQpCit7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfc3RhdGlzdGljX2hhbmRsZXIoYmVnaW4gLSBzdGFydCkpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvLCBzdGFydCwgc3RhcnQgKyAoZW5kIC0gYmVnaW4pKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzVkNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oCkBAIC0wLDAgKzEsMjAgQEAKKyNpZm5kZWYgU05NUF9HRVRfU1RBVElTVElDX0gKKyNkZWZpbmUgU05NUF9HRVRfU1RBVElTVElDX0gKKworLyoqIFJlZ2lzdGVycyBhIHNjYWxhciBncm91cCB3aXRoIHN0YXRpc3RpY3MgZnJvbSBAcmVmIHNubXBfZ2V0X3N0YXRpc3RpYy4KKyAqICBhcyByZWdpbmZvLltzdGFydCwgc3RhcnQgKyBlbmQgLSBiZWdpbl0uCisgKiAgQHBhcmFtIHJlZ2luZm8gcmVnaXN0cmF0aW9uIHRvIHJlZ2lzdGVyIHRoZSBpdGVtcyB1bmRlcgorICogIEBwYXJhbSBzdGFydCBvZmZzZXQgdG8gdGhlIGJlZ2luIGl0ZW0KKyAqICBAcGFyYW0gYmVnaW4gZmlyc3Qgc25tcF9nZXRfc3RhdGlzdGljIGtleSB0byByZXR1cm4KKyAqICBAcGFyYW0gZW5kIGxhc3Qgc25tcF9nZXRfc3RhdGlzdGljIGtleSB0byByZXR1cm4KKyAqLworaW50CituZXRzbm1wX3JlZ2lzdGVyX3N0YXRpc3RpY19oYW5kbGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCBzdGFydCwgaW50IGJlZ2luLCBpbnQgZW5kKTsKKworI2RlZmluZSBORVRTTk1QX1JFR0lTVEVSX1NUQVRJU1RJQ19IQU5ETEVSKHJlZ2luZm8sIHN0YXJ0LCBzdGF0KSAgICAgICAgXAorICBuZXRzbm1wX3JlZ2lzdGVyX3N0YXRpc3RpY19oYW5kbGVyKHJlZ2luZm8sIHN0YXJ0LCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRfICMjIHN0YXQgIyMgX1NUQVRTX1NUQVJULCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRfICMjIHN0YXQgIyMgX1NUQVRTX0VORCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC92ZXJzaW9udGFnIGIvYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZwppbmRleCA5YWE3MWE2Li5jMjRjMjU5IDEwMDc1NQotLS0gYS9hZ2VudC9taWJncm91cC92ZXJzaW9udGFnCisrKyBiL2FnZW50L21pYmdyb3VwL3ZlcnNpb250YWcKQEAgLTEsNiArMSw2IEBACiAjIS9iaW4vc2gKIAotRE9JVD0KK0RPSVQ9ZWNobwogCiBpZiBbICQyID0gInRhZyIgLW8gJDIgPSAidGFyIiBdOwogdGhlbgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmggYi9hZ2VudC9taWJncm91cC93aW5FeHRETEwuaAppbmRleCBjOTBmNjY5Li5hMTBiMjFjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC93aW5FeHRETEwuaAorKysgYi9hZ2VudC9taWJncm91cC93aW5FeHRETEwuaApAQCAtMTcsOCArMTcsOSBAQAogICAgICAqICBhbmQgd3JpdGVhYmxlIG9iamVjdCBtZXRob2RzICgnV3JpdGVNZXRob2QnKS4KICAgICAgKi8KICAgICAgdm9pZCAgICAgaW5pdF93aW5FeHRETEwodm9pZCk7Ci0gICAgIHZvaWQgICAgIHNodXRkb3duX3dpbkV4dERMTCh2b2lkKTsKLSAgIAorCisgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyIHZhcl93aW5FeHRETEw7CisgICAgIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBfYWdlbnQuYyBiL2FnZW50L3NubXBfYWdlbnQuYwppbmRleCA1YWE1NTUyLi5iNzc2MWIwIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX2FnZW50LmMKKysrIGIvYWdlbnQvc25tcF9hZ2VudC5jCkBAIC05OSw4ICs5OSw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgInNubXBkLmgiCi0jaW5jbHVkZSAibWliZ3JvdXAvc3RydWN0LmgiCi0jaW5jbHVkZSAibWliZ3JvdXAvdXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KIApAQCAtMTE2LDYgKzExNCw2NiBAQAogI2luY2x1ZGUgInNtdXgvc211eC5oIgogI2VuZGlmCiAKK05FVFNOTVBfSU5MSU5FIHZvaWQKK25ldHNubXBfYWdlbnRfYWRkX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpub2RlKQoreworICAgIGlmIChhcmkpIHsKKwlpZiAoYXJpLT5hZ2VudF9kYXRhKSB7CisgICAgICAgICAgICBuZXRzbm1wX2FkZF9saXN0X2RhdGEoJmFyaS0+YWdlbnRfZGF0YSwgbm9kZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcmktPmFnZW50X2RhdGEgPSBub2RlOworCX0KKyAgICB9Cit9CisKK05FVFNOTVBfSU5MSU5FIGludAorbmV0c25tcF9hZ2VudF9yZW1vdmVfbGlzdF9kYXRhKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIG5hbWUpCit7CisgICAgaWYgKChOVUxMID09IGFyaSkgfHwgKE5VTEwgPT0gYXJpLT5hZ2VudF9kYXRhKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gbmV0c25tcF9yZW1vdmVfbGlzdF9ub2RlKCZhcmktPmFnZW50X2RhdGEsIG5hbWUpOworfQorCitORVRTTk1QX0lOTElORSB2b2lkICAgICoKK25ldHNubXBfYWdlbnRfZ2V0X2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaWYgKGFyaSkgeworICAgICAgICByZXR1cm4gbmV0c25tcF9nZXRfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSwgbmFtZSk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXQobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSkKK3sKKyAgICBpZiAoYXJpKSB7CisgICAgICAgIG5ldHNubXBfZnJlZV9saXN0X2RhdGEoYXJpLT5hZ2VudF9kYXRhKTsKKyAgICB9Cit9CisKK05FVFNOTVBfSU5MSU5FIHZvaWQKK25ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldHMobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSkKK3sKKyAgICBpZiAoYXJpKSB7CisgICAgICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSk7CisgICAgfQorfQorCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2ZyZWVfYWdlbnRfcmVxdWVzdF9pbmZvKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCit7CisgICAgaWYgKGFyaSkgeworICAgICAgICBpZiAoYXJpLT5hZ2VudF9kYXRhKSB7CisgICAgICAgICAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEpOworCX0KKyAgICAgICAgU05NUF9GUkVFKGFyaSk7CisgICAgfQorfQorCiBvaWQgICAgICB2ZXJzaW9uX3N5c29pZFtdID0geyBORVRTTk1QX1NZU1RFTV9NSUIgfTsKIGludCAgICAgIHZlcnNpb25fc3lzb2lkX2xlbiA9IE9JRF9MRU5HVEgodmVyc2lvbl9zeXNvaWQpOwogCkBAIC0yMDAsMTUgKzI1OCwxNyBAQAogICAgIG5ldHNubXBfY2FjaGVtYXAgKnRtcHA7CiAKICAgICB0bXBwID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2NhY2hlbWFwKTsKLSAgICBpZiAoKmNhY2hlX3N0b3JlKSB7Ci0gICAgICAgIHRtcHAtPm5leHQgPSAqY2FjaGVfc3RvcmU7Ci0gICAgICAgICpjYWNoZV9zdG9yZSA9IHRtcHA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKmNhY2hlX3N0b3JlID0gdG1wcDsKLSAgICB9CisgICAgaWYgKHRtcHAgIT0gTlVMTCkgeworICAgICAgICBpZiAoKmNhY2hlX3N0b3JlKSB7CisgICAgICAgICAgICB0bXBwLT5uZXh0ID0gKmNhY2hlX3N0b3JlOworICAgICAgICAgICAgKmNhY2hlX3N0b3JlID0gdG1wcDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpjYWNoZV9zdG9yZSA9IHRtcHA7CisgICAgICAgIH0KIAotICAgIHRtcHAtPmdsb2JhbGlkID0gZ2xvYmFsaWQ7Ci0gICAgdG1wcC0+Y2FjaGVpZCA9IGxvY2FsaWQ7CisgICAgICAgIHRtcHAtPmdsb2JhbGlkID0gZ2xvYmFsaWQ7CisgICAgICAgIHRtcHAtPmNhY2hlaWQgPSBsb2NhbGlkOworICAgIH0KICAgICByZXR1cm4gdG1wcDsKIH0KIApAQCAtNTQzLDcgKzYwMyw3IEBACiAKIAogaW50Ci1nZXROZXh0U2Vzc0lEKCkKK2dldE5leHRTZXNzSUQodm9pZCkKIHsKICAgICBzdGF0aWMgaW50ICAgICAgU2Vzc2lvbklEID0gMDsKIApAQCAtNTk2LDcgKzY1Niw3IEBACiAgICAgICAgIHRpbWVyY2xlYXIodHZwKTsKICAgICB9CiAKLSAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsICZmZHNldCwgMCwgMCwgdHZwKTsKKyAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsICZmZHNldCwgTlVMTCwgTlVMTCwgdHZwKTsKIAogICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgLyoKQEAgLTEyNTEsNiArMTMxMSw3IEBACiAJCQkiTlNBUFxuIiwgY3B0cikpOwogICAgICAgICB9CiAgICAgfSB3aGlsZShzdCAmJiAqc3QgIT0gJ1wwJyk7CisgICAgU05NUF9GUkVFKGJ1Zik7CiAKICNpZmRlZiBVU0lOR19BR0VOVFhfTUFTVEVSX01PRFVMRQogICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIApAQCAtMTI5MSw3ICsxMzUyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCJhZ2VudF9zZXNpb24gJTA4cCBjcmVhdGVkXG4iLCBhc3ApKTsKKyAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsImFnZW50X3Nlc2lvbiAlOHAgY3JlYXRlZFxuIiwgYXNwKSk7CiAgICAgYXNwLT5zZXNzaW9uID0gc2Vzc2lvbjsKICAgICBhc3AtPnBkdSA9IHNubXBfY2xvbmVfcGR1KHBkdSk7CiAgICAgYXNwLT5vcmlnX3BkdSA9IHNubXBfY2xvbmVfcGR1KHBkdSk7CkBAIC0xMzE3LDcgKzEzNzgsNyBAQAogICAgIGlmICghYXNwKQogICAgICAgICByZXR1cm47CiAKLSAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsImFnZW50X3Nlc3Npb24gJTA4cCByZWxlYXNlZFxuIiwgYXNwKSk7CisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCJhZ2VudF9zZXNzaW9uICU4cCByZWxlYXNlZFxuIiwgYXNwKSk7CiAKICAgICBuZXRzbm1wX3JlbW92ZV9mcm9tX2RlbGVnYXRlZChhc3ApOwogICAgIApAQCAtMTM4OSw3ICsxNDUwLDcgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgYXNwLT5uZXh0ID0gYWdlbnRfZGVsZWdhdGVkX2xpc3Q7CiAgICAgICAgICAgICBhZ2VudF9kZWxlZ2F0ZWRfbGlzdCA9IGFzcDsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgImRlbGVnYXRlIHNlc3Npb24gPT0gJTA4cFxuIiwgYXNwKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJkZWxlZ2F0ZSBzZXNzaW9uID09ICU4cFxuIiwgYXNwKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMTQxNiw3ICsxNDc3LDcgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWdlbnRfZGVsZWdhdGVkX2xpc3QgPSBhc3AtPm5leHQ7CiAKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAicmVtb3ZlIGRlbGVnYXRlZCBzZXNzaW9uID09ICUwOHBcbiIsIGFzcCkpOworICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJyZW1vdmUgZGVsZWdhdGVkIHNlc3Npb24gPT0gJThwXG4iLCBhc3ApKTsKIAogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xNDYzLDcgKzE1MjQsNyBAQAogICAgICAqLwogICAgIGlmKGNvdW50KSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInJlbW92ZWQgJWQgZGVsZWdhdGVkIHJlcXVlc3QocykgZm9yIHNlc3Npb24gIgotICAgICAgICAgICAgICAgICAgICAiJTA4cFxuIiwgY291bnQsIHNlc3MpKTsKKyAgICAgICAgICAgICAgICAgICAgIiU4cFxuIiwgY291bnQsIHNlc3MpKTsKICAgICAgICAgbmV0c25tcF9jaGVja19vdXRzdGFuZGluZ19hZ2VudF9yZXF1ZXN0cygpOwogICAgIH0KICAgICAKQEAgLTE1MjcsNyArMTU4OCw3IEBACiAgICAgICogZG9uZS4KICAgICAgKi8KICAgICBpZiAoYXNwID09IG5ldHNubXBfcHJvY2Vzc2luZ19zZXQpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiU0VUIHJlcXVlc3QgY29tcGxldGUsIGFzcCA9ICUwOHBcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlNFVCByZXF1ZXN0IGNvbXBsZXRlLCBhc3AgPSAlOHBcbiIsCiAgICAgICAgICAgICAgICAgICAgIGFzcCkpOwogICAgICAgICBuZXRzbm1wX3Byb2Nlc3Npbmdfc2V0ID0gTlVMTDsKICAgICB9CkBAIC0xNzE2LDcgKzE3NzcsNyBAQAogCiAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiRFVNUCBhZ2VudF9zZXNzX2xpc3QgLT4gIikpOwogICAgIGZvciAoYSA9IGFnZW50X3Nlc3Npb25fbGlzdDsgYSAhPSBOVUxMOyBhID0gYS0+bmV4dCkgewotICAgICAgICBERUJVR01TRygoInNubXBfYWdlbnQiLCAiJTA4cFtzZXNzaW9uICUwOHBdIC0+ICIsIGEsIGEtPnNlc3Npb24pKTsKKyAgICAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIiU4cFtzZXNzaW9uICU4cF0gLT4gIiwgYSwgYS0+c2Vzc2lvbikpOwogICAgIH0KICAgICBERUJVR01TRygoInNubXBfYWdlbnQiLCAiW05JTF1cbiIpKTsKIH0KQEAgLTE3MjYsNyArMTc4Nyw3IEBACiB7CiAgICAgbmV0c25tcF9hZ2VudF9zZXNzaW9uICphLCAqKnByZXZOZXh0ID0gJmFnZW50X3Nlc3Npb25fbGlzdDsKIAotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlJFTU9WRSBzZXNzaW9uID09ICUwOHBcbiIsIGFzcCkpOworICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlJFTU9WRSBzZXNzaW9uID09ICU4cFxuIiwgYXNwKSk7CiAKICAgICBmb3IgKGEgPSBhZ2VudF9zZXNzaW9uX2xpc3Q7IGEgIT0gTlVMTDsgYSA9ICpwcmV2TmV4dCkgewogICAgICAgICBpZiAoYSA9PSBhc3ApIHsKQEAgLTE3NTUsNyArMTgxNiw3IEBACiB7CiAgICAgbmV0c25tcF9hZ2VudF9zZXNzaW9uICphLCAqbmV4dCwgKipwcmV2TmV4dCA9ICZhZ2VudF9zZXNzaW9uX2xpc3Q7CiAKLSAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJSRU1PVkUgc2Vzc2lvbiA9PSAlMDhwXG4iLCBzZXNzKSk7CisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiUkVNT1ZFIHNlc3Npb24gPT0gJThwXG4iLCBzZXNzKSk7CiAKICAgICBmb3IgKGEgPSBhZ2VudF9zZXNzaW9uX2xpc3Q7IGEgIT0gTlVMTDsgYSA9IG5leHQpIHsKICAgICAgICAgaWYgKGEtPnNlc3Npb24gPT0gc2VzcykgewpAQCAtMTg3NCw3ICsxOTM1LDcgQEAKICAgICAvKgogICAgICAqIGRvbmUgCiAgICAgICovCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiZW5kIG9mIGhhbmRsZV9zbm1wX3BhY2tldCwgYXNwID0gJTA4cFxuIiwKKyAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJlbmQgb2YgaGFuZGxlX3NubXBfcGFja2V0LCBhc3AgPSAlOHBcbiIsCiAgICAgICAgICAgICAgICAgYXNwKSk7CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtMjM3NSw2ICsyNDM2LDEwIEBACiAgICAgYXNwLT50cmVlY2FjaGUgPQogICAgICAgICAobmV0c25tcF90cmVlX2NhY2hlICopIGNhbGxvYyhhc3AtPnRyZWVjYWNoZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihuZXRzbm1wX3RyZWVfY2FjaGUpKTsKKworICAgIGlmIChhc3AtPnRyZWVjYWNoZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworCiAgICAgYXNwLT50cmVlY2FjaGVfbnVtID0gLTE7CiAgICAgaWYgKGFzcC0+Y2FjaGVfc3RvcmUpIHsKICAgICAgICAgbmV0c25tcF9mcmVlX2NhY2hlbWFwKGFzcC0+Y2FjaGVfc3RvcmUpOwpAQCAtMjY5MCw3ICsyNzU1LDcgQEAKIAogICAgICAgICAgICAgbmV0c25tcF9wcm9jZXNzaW5nX3NldCA9IG5ldHNubXBfYWdlbnRfcXVldWVkX2xpc3Q7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJTRVQgcmVxdWVzdCByZW1haW5zIHF1ZXVlZCB3aGlsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZGVsZWdhdGVkIHJlcXVlc3RzIGZpbmlzaCwgYXNwID0gJTA4cFxuIiwgYXNwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZWdhdGVkIHJlcXVlc3RzIGZpbmlzaCwgYXNwID0gJThwXG4iLCBhc3ApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI3MDAsNyArMjc2NSw3IEBACiAgICAgICAgIGFzcCA9IG5ldHNubXBfYWdlbnRfcXVldWVkX2xpc3Q7CiAgICAgICAgIG5ldHNubXBfYWdlbnRfcXVldWVkX2xpc3QgPSBhc3AtPm5leHQ7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwKLSAgICAgICAgICAgICAgICAgICAgInByb2Nlc3NpbmcgcXVldWVkIHJlcXVlc3QsIGFzcCA9ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgICAgICAgICAicHJvY2Vzc2luZyBxdWV1ZWQgcmVxdWVzdCwgYXNwID0gJThwXG4iLCBhc3ApKTsKIAogICAgICAgICBuZXRzbm1wX2hhbmRsZV9yZXF1ZXN0KGFzcCwgYXNwLT5zdGF0dXMpOwogCkBAIC0yNzQzLDcgKzI4MDgsNyBAQAogewogICAgIGludCAgICAgICAgICAgICBzdGF0dXMgPSBTTk1QX0VSUl9OT0VSUk9SOwogCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAicHJvY2Vzc2luZyBkZWxlZ2F0ZWQgcmVxdWVzdCwgYXNwID0gJTA4cFxuIiwKKyAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJwcm9jZXNzaW5nIGRlbGVnYXRlZCByZXF1ZXN0LCBhc3AgPSAlOHBcbiIsCiAgICAgICAgICAgICAgICAgYXNwKSk7CiAKICAgICBzd2l0Y2ggKGFzcC0+bW9kZSkgewpAQCAtMjk5Miw2ICszMDU3LDkgQEAKICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7ICAgICAgLyogc2hvdWxkIG5ldmVyIHJlYWxseSBoYXBwZW4gKi8KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoIW5ldHNubXBfcnVubmluZykgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtMzExMiw3ICszMTgwLDcgQEAKICAgICAgICAgICAgIG5ldHNubXBfYWRkX3F1ZXVlZChhc3ApOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVlc3QgcXVldWVkIHdoaWxlIHByb2Nlc3Npbmcgc2V0LCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXNwID0gJTA4cFxuIiwgYXNwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAiYXNwID0gJThwXG4iLCBhc3ApKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAKQEAgLTMxMjgsNyArMzE5Niw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChhZ2VudF9kZWxlZ2F0ZWRfbGlzdCkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlNFVCByZXF1ZXN0IHF1ZXVlZCB3aGlsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICUwOHBcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICU4cFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3ApKTsKICAgICAgICAgICAgICAgICBuZXRzbm1wX2FkZF9xdWV1ZWQoYXNwKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTMzODUsNyArMzQ1Myw3IEBACiAgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgICAgICBjYXNlIE1PREVfR0VUQlVMSzoKICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dHlwZSA9IGVycm9yX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogVGhlc2UgYXJlIHRlY2huaWNhbGx5IGlsbGVnYWwgdG8gc2V0IGJ5IHRoZQpAQCAtMzQwMCw3ICszNDY4LDcgQEAKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gU05NUF9FUlJfTk9TVUNITkFNRTsgICAgICAvKiBXV1c6IGNvcnJlY3Q/ICovCi0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgLyogbmV2ZXIgZ2V0IGhlcmUgKi8KIApAQCAtMzQyMSw3ICszNDg5LDcgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gZXJyb3JfdmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CkBAIC0zNTM4LDY3ICszNjA2LDYgQEAKIH0KIAogCi0KLU5FVFNOTVBfSU5MSU5FIHZvaWQKLW5ldHNubXBfYWdlbnRfYWRkX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpub2RlKQotewotICAgIGlmIChhcmkpIHsKLQlpZiAoYXJpLT5hZ2VudF9kYXRhKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2FkZF9saXN0X2RhdGEoJmFyaS0+YWdlbnRfZGF0YSwgbm9kZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhcmktPmFnZW50X2RhdGEgPSBub2RlOwotCX0KLSAgICB9Ci19Ci0KLU5FVFNOTVBfSU5MSU5FIGludAotbmV0c25tcF9hZ2VudF9yZW1vdmVfbGlzdF9kYXRhKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIG5hbWUpCi17Ci0gICAgaWYgKChOVUxMID09IGFyaSkgfHwgKE5VTEwgPT0gYXJpLT5hZ2VudF9kYXRhKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICByZXR1cm4gbmV0c25tcF9yZW1vdmVfbGlzdF9ub2RlKCZhcmktPmFnZW50X2RhdGEsIG5hbWUpOwotfQotCi1ORVRTTk1QX0lOTElORSB2b2lkICAgICoKLW5ldHNubXBfYWdlbnRfZ2V0X2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gICAgaWYgKGFyaSkgewotICAgICAgICByZXR1cm4gbmV0c25tcF9nZXRfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSwgbmFtZSk7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi1ORVRTTk1QX0lOTElORSB2b2lkCi1uZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXQobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSkKLXsKLSAgICBpZiAoYXJpKSB7Ci0gICAgICAgIG5ldHNubXBfZnJlZV9saXN0X2RhdGEoYXJpLT5hZ2VudF9kYXRhKTsKLSAgICB9Ci19Ci0KLU5FVFNOTVBfSU5MSU5FIHZvaWQKLW5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldHMobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSkKLXsKLSAgICBpZiAoYXJpKSB7Ci0gICAgICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSk7Ci0gICAgfQotfQotCi1ORVRTTk1QX0lOTElORSB2b2lkCi1uZXRzbm1wX2ZyZWVfYWdlbnRfcmVxdWVzdF9pbmZvKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCi17Ci0gICAgaWYgKGFyaSkgewotICAgICAgICBpZiAoYXJpLT5hZ2VudF9kYXRhKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEpOwotCX0KLSAgICAgICAgU05NUF9GUkVFKGFyaSk7Ci0gICAgfQotfQotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIGRlcHJlY2F0ZWQgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wX3BlcmwuYyBiL2FnZW50L3NubXBfcGVybC5jCmluZGV4IDQ4MjFhZDMuLjdjYWEzMzUgMTAwNjQ0Ci0tLSBhL2FnZW50L3NubXBfcGVybC5jCisrKyBiL2FnZW50L3NubXBfcGVybC5jCkBAIC01Myw2ICs1MywxMSBAQAogICAgICAgICBnb3RvIGJhaWxfb3V0OwogCiAgICAgcGVybF9jb25zdHJ1Y3QobXlfcGVybCk7CisKKyNpZmRlZiBQRVJMX0VYSVRfREVTVFJVQ1RfRU5ECisgICAgUExfZXhpdF9mbGFncyB8PSBQRVJMX0VYSVRfREVTVFJVQ1RfRU5EOworI2VuZGlmCisKICAgICBpZiAocGVybF9wYXJzZShteV9wZXJsLCB4c19pbml0LCAyLCBORVRTTk1QX1JFTU9WRV9DT05TVChjaGFyICoqLCBlbWJlZGFyZ3MpLCBOVUxMKSkKICAgICAgICAgZ290byBiYWlsX291dDsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcF92YXJzLmMgYi9hZ2VudC9zbm1wX3ZhcnMuYwppbmRleCBhYWY5MTdmLi5kOGVjNTFkIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX3ZhcnMuYworKysgYi9hZ2VudC9zbm1wX3ZhcnMuYwpAQCAtMTQzLDYgKzE0Myw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgogI2luY2x1ZGUgImtlcm5lbC5oIgogCiAjaW5jbHVkZSAibWliZ3JvdXAvc3RydWN0LmgiCkBAIC0zMTIsNiArMzEzLDcgQEAKICAgICBuZXRzbm1wX2luaXRfaGVscGVycygpOwogICAgIGluaXRfdHJhcHMoKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9pbml0X2xpc3QoKTsKKyAgICBpbml0X2FnZW50X3N5c09SVGFibGUoKTsKIAogI2lmIGRlZmluZWQoVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRSkgfHwgZGVmaW5lZChVU0lOR19BR0VOVFhfTUFTVEVSX01PRFVMRSkKICAgICAvKgpAQCAtMzY2LDYgKzM2OCw3IEBACiAgICAgbmV0c25tcF9jbGVhcl9jYWxsYmFja19saXN0KCk7CiAgICAgbmV0c25tcF9jbGVhcl90ZG9tYWluX2xpc3QoKTsKICAgICBuZXRzbm1wX2NsZWFyX2hhbmRsZXJfbGlzdCgpOworICAgIHNodXRkb3duX2FnZW50X3N5c09SVGFibGUoKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9mcmVlX2xpc3QoKTsKICAgICBjbGVhcl9zZWNfbW9kKCk7CiAgICAgY2xlYXJfc25tcF9lbnVtKCk7CmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wZC5jIGIvYWdlbnQvc25tcGQuYwppbmRleCBmNDY3NTkyLi5mMGE2ZWZlIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wZC5jCisrKyBiL2FnZW50L3NubXBkLmMKQEAgLTEzOCw2ICsxMzgsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oPgogCiAjaW5jbHVkZSAibTJtLmgiCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaD4KQEAgLTE3Niw3ICsxNzcsNyBAQAogI2RlZmluZSBUSU1FVElDSyAgICAgICAgIDUwMDAwMEwKIAogaW50ICAgICAgICAgICAgIHNubXBfZHVtcF9wYWNrZXQ7Ci1pbnQgICAgICAgICAgICAgcmVjb25maWcgPSAwOworc3RhdGljIGludCAgICAgIHJlY29uZmlnID0gMDsKIGludCAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19EQUVNT047CiAKICNpZmRlZiBXSU4zMlNFUlZJQ0UKQEAgLTQzMCw2ICs0MzEsMTIgQEAKICAgICBpbnQgZmQ7CiAgICAgRklMRSAgICAgICAgICAgKlBJRDsKICNlbmRpZgorI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAorICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOworI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorICAgIGNvbnN0IGNoYXIgICAgICpwZXJzaXN0ZW50X2RpcjsKKyNlbmRpZgogCiAjaWZuZGVmIFdJTjMyCiAgICAgLyoKQEAgLTc1NCw3ICs3NjEsNiBAQAogICAgICAgICAgICAgICAgIHVpZCA9IHN0cnRvdWwob3B0YXJnLCAmZWNwLCAxMCk7CiAgICAgICAgICAgICAgICAgaWYgKCplY3ApIHsKICNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAgKmluZm87CiAgICAgICAgICAgICAgICAgICAgIGluZm8gPSBnZXRwd25hbShvcHRhcmcpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5mbykgewogICAgICAgICAgICAgICAgICAgICAgICAgdWlkID0gaW5mby0+cHdfdWlkOwpAQCAtODk4LDIzICs5MDQsNiBAQAogICAgICpjcHRyID0gMDsKICAgICAqYXJndnB0ciA9IE5VTEw7CiAKLSNpZmRlZiBCVUZTSVoKLSAgICBzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTEJGLCBCVUZTSVopOwotI2VuZGlmCi0gICAgLyoKLSAgICAgKiBJbml0aWFsaXplIHRoZSB3b3JsZC4gIERldGFjaCBmcm9tIHRoZSBzaGVsbC4gIENyZWF0ZSBpbml0aWFsIHVzZXIuICAKLSAgICAgKi8KLSAgICBpZighZG9udF9mb3JrKSB7Ci0gICAgICAgIGludCBxdWl0ID0gISBuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUVVJVF9JTU1FRElBVEVMWSk7Ci0gICAgICAgIHJldCA9IG5ldHNubXBfZGFlbW9uaXplKHF1aXQsIHNubXBfc3RkZXJybG9nX3N0YXR1cygpKTsKLSAgICAgICAgLyoKLSAgICAgICAgICogeHh4LXJrczogZG8gd2UgY2FyZSBpZiBmb3JrIGZhaWxzPyBJIHRoaW5rIHdlIHNob3VsZC4uLgotICAgICAgICAgKi8KLSAgICAgICAgaWYocmV0ICE9IDApCi0gICAgICAgICAgICBFeGl0KDEpOyAgICAgICAgICAgICAgICAvKiAgRXhpdCBsb2dzIGV4aXQgdmFsIGZvciB1cyAgKi8KLSAgICB9Ci0KICAgICBTT0NLX1NUQVJUVVA7CiAgICAgaWYgKGluaXRfYWdlbnQoYXBwX25hbWUpICE9IDApIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkFnZW50IGluaXRpYWxpemF0aW9uIGZhaWxlZFxuIik7CkBAIC05MzQsNiArOTIzLDIwIEBACiAgICAgICAgIEV4aXQoMSk7ICAgICAgICAgICAgICAgIC8qICBFeGl0IGxvZ3MgZXhpdCB2YWwgZm9yIHVzICAqLwogICAgIH0KIAorICAgIC8qCisgICAgICogSW5pdGlhbGl6ZSB0aGUgd29ybGQuICBEZXRhY2ggZnJvbSB0aGUgc2hlbGwuICBDcmVhdGUgaW5pdGlhbCB1c2VyLiAgCisgICAgICovCisgICAgaWYoIWRvbnRfZm9yaykgeworICAgICAgICBpbnQgcXVpdCA9ICEgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1FVSVRfSU1NRURJQVRFTFkpOworICAgICAgICByZXQgPSBuZXRzbm1wX2RhZW1vbml6ZShxdWl0LCBzbm1wX3N0ZGVycmxvZ19zdGF0dXMoKSk7CisgICAgICAgIC8qCisgICAgICAgICAqIHh4eC1ya3M6IGRvIHdlIGNhcmUgaWYgZm9yayBmYWlscz8gSSB0aGluayB3ZSBzaG91bGQuLi4KKyAgICAgICAgICovCisgICAgICAgIGlmKHJldCAhPSAwKQorICAgICAgICAgICAgRXhpdCgxKTsgICAgICAgICAgICAgICAgLyogIEV4aXQgbG9ncyBleGl0IHZhbCBmb3IgdXMgICovCisgICAgfQorCiAjaWYgSEFWRV9HRVRQSUQKICAgICBpZiAocGlkX2ZpbGUgIT0gTlVMTCkgewogICAgICAgICAvKgpAQCAtOTY3LDIwICs5NzAsMTYgQEAKICNlbmRpZgogCiAjaWYgSEFWRV9VTklTVERfSAotICAgIHsKLSAgICBjb25zdCBjaGFyICpjb25zdCBwZXJzaXN0ZW50X2RpciA9IGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpOworICAgIHBlcnNpc3RlbnRfZGlyID0gZ2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5KCk7CiAgICAgbWtkaXJoaWVyKCBwZXJzaXN0ZW50X2RpciwgTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERSwgMCApOwotCisgICAKICAgICB1aWQgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklEKTsKICAgICBnaWQgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCk7CiAgICAgCi0jaWZkZWYgSEFWRV9DSE9XTgogICAgIGlmICggdWlkICE9IDAgfHwgZ2lkICE9IDAgKQogICAgICAgICBjaG93biggcGVyc2lzdGVudF9kaXIsIHVpZCwgZ2lkICk7Ci0jZW5kaWYKLSAgICB9CiAKICNpZmRlZiBIQVZFX1NFVEdJRAogICAgIGlmICgoZ2lkID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIApAQCAtMTAwMiw2ICsxMDAxLDIzIEBACiAjaWZkZWYgSEFWRV9TRVRVSUQKICAgICBpZiAoKHVpZCA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCQkgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklEKSkgPiAwKSB7CisjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9IICYmIEhBVkVfSU5JVEdST1VQUworICAgICAgICAvKgorICAgICAgICAgKiBTZXQgc3VwcGxlbWVudGFyeSBncm91cHMgYmVmb3JlIGNoYW5naW5nIFVJRAorICAgICAgICAgKiAgICh3aGljaCBwcm9iYWJseSBpbnZvbHZlcyBnaXZpbmcgdXAgcHJpdmlsZWdlcykKKyAgICAgICAgICovCisgICAgICAgIGluZm8gPSBnZXRwd3VpZCh1aWQpOworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkL21haW4iLCAiU3VwcGxlbWVudGFyeSBncm91cHMgZm9yICVzLlxuIiwgaW5mby0+cHdfbmFtZSkpOworICAgICAgICAgICAgaWYgKGluaXRncm91cHMoaW5mby0+cHdfbmFtZSwgKGdpZCAhPSAwID8gZ2lkIDogaW5mby0+cHdfZ2lkKSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoImluaXRncm91cHMgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX05PX1JPT1RfQUNDRVNTKSkgeworICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9tYWluIiwgIkNoYW5naW5nIHVpZCB0byAlZC5cbiIsIHVpZCkpOwogICAgICAgICBpZiAoc2V0dWlkKHVpZCkgPT0gLTEpIHsKICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigic2V0dWlkIGZhaWxlZCIpOwpAQCAtMTExOSwxMyArMTEzNSwxNyBAQAogcmVjZWl2ZSh2b2lkKQogewogICAgIGludCAgICAgICAgICAgICBudW1mZHM7Ci0gICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsIHdyaXRlZmRzLCBleGNlcHRmZHM7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgcmVhZGZkcywgd3JpdGVmZHMsIGV4Y2VwdGZkczsKICAgICBzdHJ1Y3QgdGltZXZhbCAgdGltZW91dCwgKnR2cCA9ICZ0aW1lb3V0OwogICAgIGludCAgICAgICAgICAgICBjb3VudCwgYmxvY2ssIGk7CiAjaWZkZWYJVVNJTkdfU01VWF9NT0RVTEUKICAgICBpbnQgICAgICAgICAgICAgc2Q7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTSU5HX1NNVVhfTU9EVUxFICovCiAKKyAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZyZWFkZmRzLCBGRF9TRVRTSVpFKTsKKyAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZ3cml0ZWZkcywgRkRfU0VUU0laRSk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmZXhjZXB0ZmRzLCBGRF9TRVRTSVpFKTsKKwogICAgIC8qCiAgICAgICogaWdub3JlIGVhcmx5IHNpZ2h1cCBkdXJpbmcgc3RhcnR1cAogICAgICAqLwpAQCAtMTE2NywxOCArMTE4NywxOCBAQAogICAgICAgICB0dnAtPnR2X3VzZWMgPSAwOwogCiAgICAgICAgIG51bWZkcyA9IDA7Ci0gICAgICAgIEZEX1pFUk8oJnJlYWRmZHMpOwotICAgICAgICBGRF9aRVJPKCZ3cml0ZWZkcyk7Ci0gICAgICAgIEZEX1pFUk8oJmV4Y2VwdGZkcyk7CisgICAgICAgIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygmcmVhZGZkcyk7CisgICAgICAgIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygmd3JpdGVmZHMpOworICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oJmV4Y2VwdGZkcyk7CiAgICAgICAgIGJsb2NrID0gMDsKLSAgICAgICAgc25tcF9zZWxlY3RfaW5mbygmbnVtZmRzLCAmcmVhZGZkcywgdHZwLCAmYmxvY2spOworICAgICAgICBzbm1wX3NlbGVjdF9pbmZvMigmbnVtZmRzLCAmcmVhZGZkcywgdHZwLCAmYmxvY2spOwogICAgICAgICBpZiAoYmxvY2sgPT0gMSkgewogICAgICAgICAgICAgdHZwID0gTlVMTDsgICAgICAgICAvKiBibG9jayB3aXRob3V0IHRpbWVvdXQgKi8KIAl9CiAKICNpZmRlZglVU0lOR19TTVVYX01PRFVMRQogICAgICAgICBpZiAoc211eF9saXN0ZW5fc2QgPj0gMCkgewotICAgICAgICAgICAgRkRfU0VUKHNtdXhfbGlzdGVuX3NkLCAmcmVhZGZkcyk7CisgICAgICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChzbXV4X2xpc3Rlbl9zZCwgJnJlYWRmZHMpOwogICAgICAgICAgICAgbnVtZmRzID0KICAgICAgICAgICAgICAgICBzbXV4X2xpc3Rlbl9zZCA+PSBudW1mZHMgPyBzbXV4X2xpc3Rlbl9zZCArIDEgOiBudW1mZHM7CiAKQEAgLTExODYsMTQgKzEyMDYsMTQgQEAKICAgICAgICAgICAgICAgICBzZCA9IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfU0RfZnJvbV9MaXN0KGkpOwogICAgICAgICAgICAgICAgIGlmIChzZCAhPSAwKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICBGRF9TRVQoc2QsICZyZWFkZmRzKTsKKyAgICAgICAgICAgICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChzZCwgJnJlYWRmZHMpOwogICAgICAgICAgICAgICAgICAgIG51bWZkcyA9IHNkID49IG51bWZkcyA/IHNkICsgMSA6IG51bWZkczsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNJTkdfU01VWF9NT0RVTEUgKi8KIAotICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8oJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CisgICAgICAgIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbzIoJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CiAKICAgICByZXNlbGVjdDoKICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9FWFRFUk5BTF9TSUdTOyBpKyspIHsKQEAgLTEyMDcsNyArMTIyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIG51bWZkcywgdHZwKSk7CiAgICAgICAgIGlmKHR2cCkKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lciIsICJ0dnAgJWxkLiVsZFxuIiwgdHZwLT50dl9zZWMsIHR2cC0+dHZfdXNlYykpOwotICAgICAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMsIHR2cCk7CisgICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgcmVhZGZkcy5sZnNfc2V0cHRyLCB3cml0ZWZkcy5sZnNfc2V0cHRyLCBleGNlcHRmZHMubGZzX3NldHB0ciwgdHZwKTsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkL3NlbGVjdCIsICJyZXR1cm5lZCwgY291bnQgPSAlZFxuIiwgY291bnQpKTsKIAogICAgICAgICBpZiAoY291bnQgPiAwKSB7CkBAIC0xMjE5LDcgKzEyMzksNyBAQAogICAgICAgICAgICAgaWYgKHNtdXhfbGlzdGVuX3NkID49IDApIHsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc211eF9zbm1wX3NlbGVjdF9saXN0X2dldF9sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIHNkID0gc211eF9zbm1wX3NlbGVjdF9saXN0X2dldF9TRF9mcm9tX0xpc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChGRF9JU1NFVChzZCwgJnJlYWRmZHMpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKHNkLCAmcmVhZGZkcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbXV4X3Byb2Nlc3Moc2QpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdXhfc25tcF9zZWxlY3RfbGlzdF9kZWwoc2QpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTIyOCw3ICsxMjQ4LDcgQEAKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIG5ldyBjb25uZWN0aW9uIAogICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmIChGRF9JU1NFVChzbXV4X2xpc3Rlbl9zZCwgJnJlYWRmZHMpKSB7CisgICAgICAgICAgICAgICAgaWYgKE5FVFNOTVBfTEFSR0VfRkRfSVNTRVQoc211eF9saXN0ZW5fc2QsICZyZWFkZmRzKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoKHNkID0gc211eF9hY2NlcHQoc211eF9saXN0ZW5fc2QpKSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzbXV4X3NubXBfc2VsZWN0X2xpc3RfYWRkKHNkKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTIzNiwxMSArMTI1NiwxMSBAQAogICAgICAgICAgICAgfQogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTSU5HX1NNVVhfTU9EVUxFICovCi0gICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cygmY291bnQsICZyZWFkZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CisgICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoJmNvdW50LCAmcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVmZHMsICZleGNlcHRmZHMpOwogICAgICAgICAgICAgLyogSWYgdGhlcmUgYXJlIHN0aWxsIGV2ZW50cyBsZWZ0b3ZlciwgcHJvY2VzcyB0aGVtICovCiAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgIHNubXBfcmVhZCgmcmVhZGZkcyk7CisgICAgICAgICAgICAgIHNubXBfcmVhZDIoJnJlYWRmZHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN3aXRjaCAoY291bnQpIHsKQEAgLTEyNzYsNiArMTI5NiwxMCBAQAogCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZHdoaWxlICovCiAKKyAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZyZWFkZmRzKTsKKyAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZ3cml0ZWZkcyk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmZXhjZXB0ZmRzKTsKKwogI2lmIGRlZmluZWQoV0lOMzIpCiAgICAgam9pbl9zdGRpbl93YWl0ZXJfdGhyZWFkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBkLmggYi9hZ2VudC9zbm1wZC5oCmluZGV4IDkzNWMwZTcuLjg5YmNkMzEgMTAwNjQ0Ci0tLSBhL2FnZW50L3NubXBkLmgKKysrIGIvYWdlbnQvc25tcGQuaApAQCAtMiw2ICsyLDEwIEBACiAgKiBzbm1wZC5oCiAgKi8KIAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCiAjZGVmaW5lIE1BU1RFUl9BR0VOVCAwCiAjZGVmaW5lIFNVQl9BR0VOVCAgICAxCiBleHRlcm4gaW50ICAgICAgYWdlbnRfcm9sZTsKQEAgLTE3LDMgKzIxLDcgQEAKICAqIGNvbmZpZyBmaWxlIHBhcnNpbmcgcm91dGluZXMgCiAgKi8KIHZvaWQgICAgICAgICAgICBhZ2VudEJvb3RzX2NvbmYoY2hhciAqLCBjaGFyICopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXBwcy9NYWtlZmlsZS5kZXBlbmQgYi9hcHBzL01ha2VmaWxlLmRlcGVuZAppbmRleCBiOTI3NmU4Li42MWE3YTY5IDEwMDY0NAotLS0gYS9hcHBzL01ha2VmaWxlLmRlcGVuZAorKysgYi9hcHBzL01ha2VmaWxlLmRlcGVuZApAQCAtOCwzMiArOCwxNCBAQAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ0LDExICsyNiwzMSBAQAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03MSwyMiArNzMsNDAgQEAKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC05OCwyMSArMTE4LDcgQEAKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzOCwzMiArMTQ0LDE0IEBACiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNzQsMTEgKzE2MiwzMSBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIwMywzMiArMjExLDE0IEBACiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTIzOSwxMCArMjI5LDMxIEBACiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI2NywzMSArMjc4LDEzIEBACiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMwMiwxMSArMjk1LDMwIEBACiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC0zMjgsMjMgKzM0MCwzOCBAQAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0zNTYsMjEgKzM4Myw3IEBACiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTM5NiwzMiArNDA5LDE0IEBACiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQzMiwxMCArNDI3LDMxIEBACiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ2MCwzMSArNDc2LDE0IEBACiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDk1LDExICs0OTQsMzAgQEAKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC01MjEsMjMgKzUzOSwzOSBAQAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC01NDksMjEgKzU4Myw3IEBACiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTU4OCwzMiArNjA4LDE0IEBACiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTYyNCwxMCArNjI2LDMxIEBACiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTY1MiwzMiArNjc1LDE0IEBACiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjg4LDExICs2OTMsMzEgQEAKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC03MTYsMjEgKzc0MSwzOCBAQAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNzQ5LDEwICs3OTEsNiBAQAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzYwLDMyICs3OTgsMTQgQEAKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC03OTYsMTEgKzgxNiwzMSBAQAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTgxNyw2ICs4NTcsNzkgQEAKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiBzbm1wdHJhcGRfaGFuZGxlcnMuaCBzbm1wdHJhcGRfYXV0aC5oIHNubXB0cmFwZF9kcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtODI0LDMyICs5MzcsMTQgQEAKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtODYwLDEwICs5NTUsMzEgQEAKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTIwLDc3ICsxMDM2LDYgQEAKIC4vc25tcHRyYXBkLmxvOiBzbm1wdHJhcGRfbG9nLmggc25tcHRyYXBkX2RzLmggc25tcHRyYXBkX2F1dGguaAogLi9zbm1wdHJhcGQubG86IC4uL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAogLi9zbm1wdHJhcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oIC4uL2FnZW50L3NubXBfcGVybC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogc25tcHRyYXBkX2hhbmRsZXJzLmggc25tcHRyYXBkX2F1dGguaCBzbm1wdHJhcGRfZHMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTk5OCw5ICsxMDQzLDI5IEBACiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwMTAsMTUgKzEwNzUsOCBAQAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKQEAgLTEwMzYsMTggKzEwOTQsNyBAQAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaApAQCAtMTEwNSwzMiArMTE1MiwxNCBAQAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNDEsMTEgKzExNzAsMzEgQEAKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE2NCw2ICsxMjEzLDExIEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIHNubXB0cmFwZF9sb2cuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiBzbm1wdHJhcGRfZHMuaAorLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExNzEsMzEgKzEyMjUsMTQgQEAKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjA2LDExICsxMjQzLDMwIEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMTIzNCwzMiArMTI5MCwxNCBAQAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyNzAsMTEgKzEzMDgsMzEgQEAKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC0xMjk4LDMyICsxMzU2LDE0IEBACiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTMzNCwxMSArMTM3NCwzMSBAQAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTEzNTUsNiArMTQxNSwxMSBAQAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc3NodG9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NzaHRvc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3NzaHRvc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3NzaHRvc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMzYzLDMyICsxNDI4LDE0IEBACiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzOTksMTEgKzE0NDYsMzEgQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0MjMsNzMgKzE0OTAsNiBAQAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xNDk4LDMyICsxNDk4LDE0IEBACiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE1MzQsMTEgKzE1MTYsMzEgQEAKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE1NTcsNiArMTU1OSw3NSBAQAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTE1NjUsMzIgKzE2MzYsMTQgQEAKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNjAxLDExICsxNjU0LDMxIEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2MjMsOCArMTY5Niw3IEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTE2MzMsMzIgKzE3MDUsMTQgQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTY2OSwxMSArMTcyMywzMSBAQAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTY5MSw4ICsxNzY1LDcgQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTcwMSwzMiArMTc3NCwxNCBAQAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE3MzcsMTEgKzE3OTIsMzEgQEAKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApkaWZmIC0tZ2l0IGEvYXBwcy9NYWtlZmlsZS5pbiBiL2FwcHMvTWFrZWZpbGUuaW4KaW5kZXggMTgxZDNmZi4uYjg0NzA3MyAxMDA2NDQKLS0tIGEvYXBwcy9NYWtlZmlsZS5pbgorKysgYi9hcHBzL01ha2VmaWxlLmluCkBAIC0xNyw2ICsxNyw4IEBACiAjIFRoaW5ncyB0byBpbnN0YWxsCiAjCiAKK1NTSElOU1RBTExCSU5QUk9HUyA9IEBTU0hJTlNUQUxMQklOUFJPR1NACisKIElOU1RBTExCSU5QUk9HUwk9IHNubXBnZXQkKEVYRUVYVCkgCQkJXAogCQlzbm1wZ2V0bmV4dCQoRVhFRVhUKSAJCQlcCiAJCXNubXBzZXQkKEVYRUVYVCkgCQkJXApAQCAtMzIsNyArMzQsOCBAQAogCQlzbm1wdGVzdCQoRVhFRVhUKQkJCVwKIAkJZW5jb2RlX2tleWNoYW5nZSQoRVhFRVhUKSAJCVwKIAkJc25tcGRmJChFWEVFWFQpIAkJCVwKLQkJc25tcHZhY20kKEVYRUVYVCkKKwkJc25tcHZhY20kKEVYRUVYVCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAkKFNTSElOU1RBTExCSU5QUk9HUykKIAogSU5TVEFMTFNCSU5QUk9HUyA9IHNubXB0cmFwZCQoRVhFRVhUKQogCkBAIC01MCw2ICs1Myw4IEBACiBBR0VOVExJQiAgICAgICAgPSAuLi9hZ2VudC9saWJuZXRzbm1wYWdlbnQuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pCiBNSUJMSUIgICAgICAgICAgPSAuLi9hZ2VudC9saWJuZXRzbm1wbWlicy4kKExJQl9FWFRFTlNJT04pJChMSUJfVkVSU0lPTikKIFVTRUFHRU5UTElCUwk9ICQoTUlCTElCKSAkKEFHRU5UTElCKSAkKEhFTFBFUkxJQikgJChVU0VMSUJTKQorTVlTUUxfTElCUwk9IEBNWVNRTF9MSUJTQAorTVlTUUxfSU5DTFVERVMJPSBATVlTUUxfSU5DTFVERVNACiAKIExJQlMJCT0gJChVU0VMSUJTKSBATElCU0AKIFBFUkxMRE9QVFNfRk9SX0FQUFMgPSBAUEVSTExET1BUU19GT1JfQVBQU0AKQEAgLTU3LDIyICs2MiwyMyBAQAogCiAjCiAjIGhhY2sgZm9yIGNvbXBpbGluZyB0cmFwZCB3aGVuIGFnZW50IGlzIGRpc2FibGVkCi1UUkFQRFdJVEhBR0VOVCAgPSAkKFVTRVRSQVBMSUJTKSBAQUdFTlRMSUJTQAotVFJBUERXSVRIT1VUQUdFTlQgPSAkKExJQlMpCitUUkFQRFdJVEhBR0VOVCAgPSAkKFVTRVRSQVBMSUJTKSAkKE1ZU1FMX0xJQlMpIEBBR0VOVExJQlNACitUUkFQRFdJVEhPVVRBR0VOVCA9ICQoTElCUykgJChNWVNRTF9MSUJTKQogCiAjIHRoZXNlIHdpbGwgYmUgc2V0IGJ5IGNvbmZpZ3VyZSB0byBvbmUgb2YgdGhlIGFib3ZlIDIgbGluZXMKIFRSQVBMSUJTCT0gQFRSQVBMSUJTQCAkKFBFUkxMRE9QVFNfRk9SX0FQUFMpCiBVU0VUUkFQTElCUwk9IEBVU0VUUkFQTElCU0AKIAogQ1BQRkxBR1MJPSAkKFRPUF9JTkNMVURFUykgLUkuICQoQUdFTlRfSU5DTFVERVMpICQoSEVMUEVSX0lOQ0xVREVTKSBcCi0JCSAgJChNSUJHUk9VUF9JTkNMVURFUykgICQoU05NUExJQl9JTkNMVURFUykgQENQUEZMQUdTQAorCQkgICQoTUlCR1JPVVBfSU5DTFVERVMpICBcCisJCSAgJChTTk1QTElCX0lOQ0xVREVTKSAkKE1ZU1FMX0lOQ0xVREVTKSBAQ1BQRkxBR1NACiAKIE9TVUZGSVgJCT0gbG8KIFRSQVBEX09CSkVDVFMgICA9IHNubXB0cmFwZC4kKE9TVUZGSVgpIEBvdGhlcl90cmFwZF9vYmplY3RzQAogTElCVFJBUERfT0JKUyAgID0gc25tcHRyYXBkX2hhbmRsZXJzLm8gIHNubXB0cmFwZF9sb2cubyBcCi0JCSAgc25tcHRyYXBkX2F1dGgubworCQkgIHNubXB0cmFwZF9hdXRoLm8gc25tcHRyYXBkX3NxbC5vCiBMTElCVFJBUERfT0JKUyAgPSBzbm1wdHJhcGRfaGFuZGxlcnMubG8gc25tcHRyYXBkX2xvZy5sbyBcCi0JCSAgc25tcHRyYXBkX2F1dGgubG8KKwkJICBzbm1wdHJhcGRfYXV0aC5sbyBzbm1wdHJhcGRfc3FsLmxvCiBPQkpTICA9ICoubwogTE9CSlMgPSAqLmxvCiAKQEAgLTE1OCw1ICsxNjQsOSBAQAogCSAgQHJtIC1mICQoSU5TVEFMTF9QUkVGSVgpJChzbm1wbGliZGlyKS9zbm1wX3BlcmxfdHJhcGQucGwKIAkgIEBlY2hvICJyZW1vdmVkIHNubXBfcGVybF90cmFwZC5wbCBmcm9tICQoSU5TVEFMTF9QUkVGSVgpJChzbm1wbGliZGlyKSIKIAorc3NodG9zbm1wOiBzc2h0b3NubXAuJChPU1VGRklYKQorCSQoTElOSykgJHtDRkxBR1N9IC1vICRAIHNzaHRvc25tcC4kKE9TVUZGSVgpCisKKwogaW5zdGFsbGRpcnM6CiAJQCQoU0hFTEwpICQoc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzICQoSU5TVEFMTF9QUkVGSVgpJChzbm1wbGliZGlyKQpkaWZmIC0tZ2l0IGEvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMgYi9hcHBzL2VuY29kZV9rZXljaGFuZ2UuYwppbmRleCA1YjY4MzhlLi45NDQxNzIzIDEwMDY0NAotLS0gYS9hcHBzL2VuY29kZV9rZXljaGFuZ2UuYworKysgYi9hcHBzL2VuY29kZV9rZXljaGFuZ2UuYwpAQCAtMjMzLDggKzIzMyw4IEBACiAgICAgICAgIGVuZ2luZWlkX2xlbiA9IGhleF90b19iaW5hcnkyKGVuZ2luZWlkICsgMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKChjaGFyICopIGVuZ2luZWlkKSAtIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICoqKSAmZW5naW5laWQpOwotICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJlbmdpbmVJRExlbjogJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgIGVuZ2luZWlkX2xlbikpOworICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJlbmdpbmVJRExlbjogJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyllbmdpbmVpZF9sZW4pKTsKICAgICB9IGVsc2UgewogICAgICAgICBlbmdpbmVpZF9sZW4gPSBzZXR1cF9lbmdpbmVJRCgmZW5naW5laWQsIChjaGFyICopIGVuZ2luZWlkKTsKIApAQCAtMjk1LDEyICsyOTUsMTIgQEAKICAgICBRVUlURlVOKHJ2YWwsIG1haW5fcXVpdCk7CiAKIAotICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIkVJRCAoJWQpOiAiLCBlbmdpbmVpZF9sZW4pKTsKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJFSUQgKCVsdSk6ICIsICh1bnNpZ25lZCBsb25nKWVuZ2luZWlkX2xlbikpOwogICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBlbmdpbmVpZF9sZW47IGkrKykKICAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiJTAyeCIsIChpbnQpIChlbmdpbmVpZFtpXSkpKTsKICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJcbiIpKTsKIAotICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIm9sZCBLdSAoJWQpIChmcm9tICVzKTogIiwgb2xkS3VfbGVuLAorICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIm9sZCBLdSAoJWx1KSAoZnJvbSAlcyk6ICIsICh1bnNpZ25lZCBsb25nKW9sZEt1X2xlbiwKICAgICAgICAgICAgICAgICBvbGRwYXNzKSk7CiAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIG9sZEt1X2xlbjsgaSsrKQogICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICIlMDJ4IiwgKGludCkgKG9sZEt1W2ldKSkpOwpAQCAtMzEyLDggKzMxMiw4IEBACiAgICAgUVVJVEZVTihydmFsLCBtYWluX3F1aXQpOwogCiAKLSAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJnZW5lcmF0aW5nIG9sZCBLdWwgKCVkKSAoZnJvbSBLdSk6ICIsCi0gICAgICAgICAgICAgICAgb2xka3VsX2xlbikpOworICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgImdlbmVyYXRpbmcgb2xkIEt1bCAoJWx1KSAoZnJvbSBLdSk6ICIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpb2xka3VsX2xlbikpOwogICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBvbGRrdWxfbGVuOyBpKyspCiAgICAgICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIiUwMngiLCAoaW50KSAob2xka3VsW2ldKSkpOwogICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIlxuIikpOwpAQCAtMzIzLDggKzMyMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdLdSwgbmV3S3VfbGVuLCBuZXdrdWwsICZuZXdrdWxfbGVuKTsKICAgICBRVUlURlVOKHJ2YWwsIG1haW5fcXVpdCk7CiAKLSAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJnZW5lcmF0aW5nIG5ldyBLdWwgKCVkKSAoZnJvbSBLdSk6ICIsCi0gICAgICAgICAgICAgICAgb2xka3VsX2xlbikpOworICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgImdlbmVyYXRpbmcgbmV3IEt1bCAoJWx1KSAoZnJvbSBLdSk6ICIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpb2xka3VsX2xlbikpOwogICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBuZXdrdWxfbGVuOyBpKyspCiAgICAgICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIiUwMngiLCBuZXdrdWxbaV0pKTsKICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJcbiIpKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcGRlbHRhLmMgYi9hcHBzL3NubXBkZWx0YS5jCmluZGV4IDRmMjhmNDcuLjczODhlYzcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcGRlbHRhLmMKKysrIGIvYXBwcy9zbm1wZGVsdGEuYwpAQCAtMzU3LDcgKzM1Nyw3IEBACiAgICAgfQogICAgIGNvdW50ID0gMTsKICAgICB3aGlsZSAoY291bnQgIT0gMCkgewotICAgICAgICBjb3VudCA9IHNlbGVjdCgwLCAwLCAwLCAwLCB0dik7CisgICAgICAgIGNvdW50ID0gc2VsZWN0KDAsIE5VTEwsIE5VTEwsIE5VTEwsIHR2KTsKICAgICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQzOSw3ICs0MzksNyBAQAogCSAgICAJTUFYX0FSR1MpOwogCSAgICBleGl0KDEpOwogCX0KLSAgICAgICAgdmFyaW5mb1tjdXJyZW50X25hbWUrK10ubmFtZSA9IDA7CisgICAgICAgIHZhcmluZm9bY3VycmVudF9uYW1lKytdLm5hbWUgPSBOVUxMOwogICAgIH0KIAogICAgIFNPQ0tfU1RBUlRVUDsKQEAgLTczMSwxMiArNzMxLDEyIEBACiAKICAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gU1RBVF9USU1FT1VUKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlRpbWVvdXQ6IE5vIFJlc3BvbnNlIGZyb20gJXNcbiIsIGdhdGV3YXkpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSAwOworICAgICAgICAgICAgcmVzcG9uc2UgPSBOVUxMOwogICAgICAgICAgICAgZXhpdF9jb2RlID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAvKiBzdGF0dXMgPT0gU1RBVF9FUlJPUiAqLwogICAgICAgICAgICAgc25tcF9zZXNzX3BlcnJvcigic25tcGRlbHRhIiwgc3MpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSAwOworICAgICAgICAgICAgcmVzcG9uc2UgPSBOVUxMOwogICAgICAgICAgICAgZXhpdF9jb2RlID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9hcHBzL3NubXBnZXQuYyBiL2FwcHMvc25tcGdldC5jCmluZGV4IDEwYTY5NjguLjMzZDVkNzEgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcGdldC5jCisrKyBiL2FwcHMvc25tcGdldC5jCkBAIC0xMjYsNiArMTI2LDcgQEAKICAgICBpbnQgICAgICAgICAgICAgZmFpbHVyZXMgPSAwOwogICAgIGludCAgICAgICAgICAgICBleGl0dmFsID0gMDsKIAorCiAgICAgLyoKICAgICAgKiBnZXQgdGhlIGNvbW1vbiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQgYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZAppbmRleCBiMDUzNjFhLi5hMzI5NjM0IDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZAorKysgYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZApAQCAtNywzMiArNywxNCBAQAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQzLDExICsyNSwzMSBAQAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTY2LDcxICs2OCw2IEBACiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2lmLmxvOiBtYWluLmgKIC4vaWYubG86IG5ldHN0YXQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMzksMzIgKzc2LDE0IEBACiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE3NSwxMCArOTQsMzEgQEAKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTk2LDYgKzEzNiw3NCBAQAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBtYWluLmggbmV0c3RhdC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0yMDQsMzIgKzIxMiwxNCBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI0MCwxMCArMjMwLDMxIEBACiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI2MSw4ICsyNzIsNyBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9tYWluLmxvOiBtYWluLmgKLS4vbWFpbi5sbzogbmV0c3RhdC5oCisuL21haW4ubG86IG1haW4uaCBuZXRzdGF0LmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMjcxLDMyICsyODEsMTQgQEAKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzA3LDEwICsyOTksMzEgQEAKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzI4LDggKzM0MSw3IEBACiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL3JvdXRlLmxvOiBtYWluLmgKLS4vcm91dGUubG86IG5ldHN0YXQuaAorLi9yb3V0ZS5sbzogbWFpbi5oIG5ldHN0YXQuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0zMzgsMzIgKzM1MCwxNCBAQAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM3NCwxMSArMzY4LDMxIEBACiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvaWYuYyBiL2FwcHMvc25tcG5ldHN0YXQvaWYuYwppbmRleCA2YThhNTE1Li40M2U1MDJkIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L2lmLmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9pZi5jCkBAIC00OSw4ICs0OSwxMiBAQAogI2lmIEhBVkVfTkVUX0lGX0gKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgotI2RlZmluZSBfX1VTRV9YT1BFTgotI2RlZmluZSBfX1VTRV9YT1BFTl9FWFRFTkRFRAorI2lmbmRlZiBfWE9QRU5fU09VUkNFCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgMQorI2VuZGlmCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAxCisjZW5kaWYKICNpbmNsdWRlIDxzaWduYWwuaD4KIAogI2luY2x1ZGUgIm1haW4uaCIKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKaW5kZXggN2RjM2ZmMS4uYTY5ZmI1YiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKQEAgLTEwNiwyMCArMTA2LDY1IEBACiB9OwogI2RlZmluZSBUQ1BfTlNUQVRFUyAxMQogCi12b2lkCi10Y3Bwcm90b3ByKGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgdm9pZAordGNwcHJvdG9wcmludF9saW5lKGNvbnN0IGNoYXIgKm5hbWUsIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdnAsIGludCAqZmlyc3QpCiB7Ci0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsICp2cDsKLSAgICBvaWQgICAgdGNwQ29ublN0YXRlX29pZFtdID0geyAxLDMsNiwxLDIsMSw2LDEzLDEsMSB9OwotICAgIHNpemVfdCB0Y3BDb25uU3RhdGVfbGVuICAgPSBPSURfTEVOR1RIKCB0Y3BDb25uU3RhdGVfb2lkICk7CiAgICAgaW50ICAgIHN0YXRlLCB3aWR0aDsKKyAgICBjaGFyICAqY3A7CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgaW5fYWRkciBhZGRyOwogICAgICAgICBjaGFyICAgICAgZGF0YVs0XTsKICAgICB9IHRtcEFkZHI7CiAgICAgb2lkICAgIGxvY2FsUG9ydCwgcmVtb3RlUG9ydDsKICAgICBzdHJ1Y3QgaW5fYWRkciBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7Ci0gICAgY2hhciAgKmNwOworCisJc3RhdGUgPSAqdnAtPnZhbC5pbnRlZ2VyOworCWlmICghYWZsYWcgJiYgc3RhdGUgPT0gTUlCX1RDUENPTk5TVEFURV9MSVNURU4pIHsKKwkJcmV0dXJuOworCX0KKworCWlmICgqZmlyc3QpIHsKKwkJcHJpbnRmKCJBY3RpdmUgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9ucyIsIG5hbWUpOworCQlpZiAoYWZsYWcpCisJCQlwcmludGYoIiAoaW5jbHVkaW5nIHNlcnZlcnMpIik7CisJCXB1dGNoYXIoJ1xuJyk7CisJCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQlwcmludGYoIiUtNS41cyAlKi4qcyAlKi4qcyAlc1xuIiwKKwkJCSAgICJQcm90byIsIC13aWR0aCwgd2lkdGgsICJMb2NhbCBBZGRyZXNzIiwKKwkJCQkJCS13aWR0aCwgd2lkdGgsICJSZW1vdGUgQWRkcmVzcyIsICIoc3RhdGUpIik7CisJCSpmaXJzdCA9IDA7CisJfQorCQorCS8qIEV4dHJhY3QgdGhlIGxvY2FsL3JlbW90ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMgKi8KKwljcCA9IHRtcEFkZHIuZGF0YTsKKwljcFswXSA9IHZwLT5uYW1lWyAxMCBdICYgMHhmZjsKKwljcFsxXSA9IHZwLT5uYW1lWyAxMSBdICYgMHhmZjsKKwljcFsyXSA9IHZwLT5uYW1lWyAxMiBdICYgMHhmZjsKKwljcFszXSA9IHZwLT5uYW1lWyAxMyBdICYgMHhmZjsKKwlsb2NhbEFkZHIuc19hZGRyID0gdG1wQWRkci5hZGRyLnNfYWRkcjsKKwlsb2NhbFBvcnQgICAgICAgID0gbnRvaHModnAtPm5hbWVbIDE0IF0pOworCWNwID0gdG1wQWRkci5kYXRhOworCWNwWzBdID0gdnAtPm5hbWVbIDE1IF0gJiAweGZmOworCWNwWzFdID0gdnAtPm5hbWVbIDE2IF0gJiAweGZmOworCWNwWzJdID0gdnAtPm5hbWVbIDE3IF0gJiAweGZmOworCWNwWzNdID0gdnAtPm5hbWVbIDE4IF0gJiAweGZmOworCXJlbW90ZUFkZHIuc19hZGRyID0gdG1wQWRkci5hZGRyLnNfYWRkcjsKKwlyZW1vdGVQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxOSBdKTsKKworCXByaW50ZigiJS01LjVzIiwgbmFtZSk7CisJaW5ldHByaW50KCZsb2NhbEFkZHIsICBsb2NhbFBvcnQsICBuYW1lLCAxKTsKKwlpbmV0cHJpbnQoJnJlbW90ZUFkZHIsIHJlbW90ZVBvcnQsIG5hbWUsIDApOworCWlmIChzdGF0ZSA8IDEgfHwgc3RhdGUgPiBUQ1BfTlNUQVRFUykgeworCQlwcmludGYoIiVkXG4iLCBzdGF0ZSApOworCX0gZWxzZSB7CisJCXByaW50ZigiJXNcbiIsIHRjcHN0YXRlc1tzdGF0ZV0pOworCX0KK30KKworc3RhdGljIHZvaWQKK3RjcHByb3RvcHJfZ2V0KGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcm9vdCwgc2l6ZV90IHJvb3RfbGVuKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7CiAgICAgaW50ICAgIGZpcnN0ID0gMTsKIAogICAgIC8qCkBAIC0xMjcsNyArMTcyLDcgQEAKICAgICAgKiAgIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24uCiAgICAgICovCiAgICAgdmFyID0gTlVMTDsKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuLAorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHJvb3QsIHJvb3RfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOwogICAgIGlmICghdmFyKQogICAgICAgICByZXR1cm47CkBAIC0xMzUsNDUgKzE4MCw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKLSAgICAgICAgc3RhdGUgPSAqdnAtPnZhbC5pbnRlZ2VyOwotICAgICAgICBpZiAoIWFmbGFnICYmIHN0YXRlID09IE1JQl9UQ1BDT05OU1RBVEVfTElTVEVOKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGZpcnN0KSB7Ci0gICAgICAgICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCAoJXMpIENvbm5lY3Rpb25zIiwgbmFtZSk7Ci0gICAgICAgICAgICBpZiAoYWZsYWcpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgKGluY2x1ZGluZyBzZXJ2ZXJzKSIpOwotICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKLSAgICAgICAgICAgIHdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOwotICAgICAgICAgICAgcHJpbnRmKCIlLTUuNXMgJSouKnMgJSouKnMgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIlByb3RvIiwgLXdpZHRoLCB3aWR0aCwgIkxvY2FsIEFkZHJlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13aWR0aCwgd2lkdGgsICJSZW1vdGUgQWRkcmVzcyIsICIoc3RhdGUpIik7Ci0gICAgICAgICAgICBmaXJzdD0wOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvKiBFeHRyYWN0IHRoZSBsb2NhbC9yZW1vdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXggdmFsdWVzICovCi0gICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwLT5uYW1lWyAxMCBdICYgMHhmZjsKLSAgICAgICAgY3BbMV0gPSB2cC0+bmFtZVsgMTEgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzJdID0gdnAtPm5hbWVbIDEyIF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwLT5uYW1lWyAxMyBdICYgMHhmZjsKLSAgICAgICAgbG9jYWxBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7Ci0gICAgICAgIGxvY2FsUG9ydCAgICAgICAgPSBudG9ocygodV9zaG9ydCkodnAtPm5hbWVbIDE0IF0pKTsKLSAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7Ci0gICAgICAgIGNwWzBdID0gdnAtPm5hbWVbIDE1IF0gJiAweGZmOwotICAgICAgICBjcFsxXSA9IHZwLT5uYW1lWyAxNiBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cC0+bmFtZVsgMTcgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzNdID0gdnAtPm5hbWVbIDE4IF0gJiAweGZmOwotICAgICAgICByZW1vdGVBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7Ci0gICAgICAgIHJlbW90ZVBvcnQgICAgICAgID0gbnRvaHMoKHVfc2hvcnQpKHZwLT5uYW1lWyAxOSBdKSk7Ci0KLSAgICAgICAgcHJpbnRmKCIlLTUuNXMiLCBuYW1lKTsKLSAgICAgICAgaW5ldHByaW50KCZsb2NhbEFkZHIsICBsb2NhbFBvcnQsICBuYW1lLCAxKTsKLSAgICAgICAgaW5ldHByaW50KCZyZW1vdGVBZGRyLCByZW1vdGVQb3J0LCBuYW1lLCAwKTsKLSAgICAgICAgaWYgKCBzdGF0ZSA8IDEgfHwgc3RhdGUgPiBUQ1BfTlNUQVRFUyApCi0gICAgICAgICAgICBwcmludGYoIiVkXG4iLCBzdGF0ZSApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGYoIiVzXG4iLCB0Y3BzdGF0ZXNbIHN0YXRlIF0pOworICAgICAgICB0Y3Bwcm90b3ByaW50X2xpbmUobmFtZSwgdnAsICZmaXJzdCk7CiAgICAgfQogICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKIH0KQEAgLTIzMCw2ICsyMzcsMTEwIEBACiAgICAgc25tcF9mcmVlX3ZhcmJpbmQoIHZhciApOwogfQogCit2b2lkCit0Y3Bwcm90b3ByX2J1bGtnZXQoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyb290LCBzaXplX3Qgcm9vdF9sZW4pCit7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cDsKKwluZXRzbm1wX3BkdSAgICAqcGR1LCAqcmVzcG9uc2U7CisgICAgb2lkICAgICAgICAgICAgIHRjcENvbm5TdGF0ZV9vaWRbTUFYX09JRF9MRU5dOworCXNpemVfdCAgICAgICAgICB0Y3BDb25uU3RhdGVfbGVuOworICAgIGludCAgICBmaXJzdCA9IDE7CisgICAgaW50ICAgIHJ1bm5pbmcgPSAxOworICAgIGludCAgICBzdGF0dXM7CisKKwkvKgorICAgICAqIHNldHVwIGluaXRpYWwgb2JqZWN0IG5hbWUKKyAgICAgKi8KKwltZW1tb3ZlKHRjcENvbm5TdGF0ZV9vaWQsIHJvb3QsIHNpemVvZihvaWQpICogcm9vdF9sZW4pOworCXRjcENvbm5TdGF0ZV9sZW4gPSByb290X2xlbjsKKworICAgIC8qCisgICAgICogV2Fsa2luZyB0aGUgdGNwQ29ublN0YXRlIGNvbHVtbiB3aWxsIHByb3ZpZGUgYWxsCisgICAgICogICB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLgorICAgICAqLworCXdoaWxlIChydW5uaW5nKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNyZWF0ZSBQRFUgZm9yIEdFVEJVTEsgcmVxdWVzdCBhbmQgYWRkIG9iamVjdCBuYW1lIHRvIHJlcXVlc3QKKyAgICAgICAgICovCisgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShTTk1QX01TR19HRVRCVUxLKTsKKyAgICAgICAgcGR1LT5ub25fcmVwZWF0ZXJzID0gMDsKKyAgICAgICAgcGR1LT5tYXhfcmVwZXRpdGlvbnMgPSBtYXhfZ2V0YnVsazsgICAgLyogZmlsbCB0aGUgcGFja2V0ICovCisgICAgICAgIHNubXBfYWRkX251bGxfdmFyKHBkdSwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbik7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG8gdGhlIHJlcXVlc3QKKyAgICAgICAgICovCisgICAgICAgIHN0YXR1cyA9IHNubXBfc3luY2hfcmVzcG9uc2Uoc3MsIHBkdSwgJnJlc3BvbnNlKTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBTVEFUX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGlmIChyZXNwb25zZS0+ZXJyc3RhdCA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CisJCQkJZm9yICh2cCA9IHJlc3BvbnNlLT52YXJpYWJsZXM7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh2cC0+bmFtZV9sZW5ndGggPCByb290X2xlbikgfHwKKwkJCQkJCQkobWVtY21wKHJvb3QsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHJvb3RfbGVuKSAhPSAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIG5vdCBwYXJ0IG9mIHRoaXMgc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKwkJCQkJdGNwcHJvdG9wcmludF9saW5lKG5hbWUsIHZwLCAmZmlyc3QpOworCisgICAgICAgICAgICAgICAgICAgIGlmICgodnAtPnR5cGUgIT0gU05NUF9FTkRPRk1JQlZJRVcpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAodnAtPnR5cGUgIT0gU05NUF9OT1NVQ0hPQkpFQ1QpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAodnAtPnR5cGUgIT0gU05NUF9OT1NVQ0hJTlNUQU5DRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBDaGVjayBpZiBsYXN0IHZhcmlhYmxlLCBhbmQgaWYgc28sIHNhdmUgZm9yIG5leHQgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZwLT5uZXh0X3ZhcmlhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKHRjcENvbm5TdGF0ZV9vaWQsIHZwLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPm5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcENvbm5TdGF0ZV9sZW4gPSB2cC0+bmFtZV9sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIHZhbHVlLCBzbyBzdG9wCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisJCQkJfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIGVycm9yIGluIHJlc3BvbnNlLCBwcmludCBpdAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBTVEFUX1RJTUVPVVQpIHsKKyAgICAgICAgICAgIHJ1bm5pbmcgPSAwOworICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAvKiBzdGF0dXMgPT0gU1RBVF9FUlJPUiAqLworICAgICAgICAgICAgcnVubmluZyA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocmVzcG9uc2UpOworCQl9CisJfQorfQorCit2b2lkCit0Y3Bwcm90b3ByKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgb2lkICAgIHRjcENvbm5TdGF0ZV9vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNiwxMywxLDEgfTsKKyAgICBzaXplX3QgdGNwQ29ublN0YXRlX2xlbiAgID0gT0lEX0xFTkdUSCggdGNwQ29ublN0YXRlX29pZCApOworCWludCAgICB1c2VfZ2V0YnVsayA9IDE7CisKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQorICAgIGlmIChzcy0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMSkgeworICAgICAgICB1c2VfZ2V0YnVsayA9IDA7CisJfQorI2VuZGlmCisKKwlpZiAodXNlX2dldGJ1bGspIHsKKwkJdGNwcHJvdG9wcl9idWxrZ2V0KG5hbWUsIHRjcENvbm5TdGF0ZV9vaWQsIHRjcENvbm5TdGF0ZV9sZW4pOworCX0gZWxzZSB7CisJCXRjcHByb3RvcHJfZ2V0KG5hbWUsIHRjcENvbm5TdGF0ZV9vaWQsIHRjcENvbm5TdGF0ZV9sZW4pOworCX0KK30KKwogCiAJLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCkBAIC00NDksNyArNTYwLDcgQEAKIHZvaWQKIGluZXRwcmludChzdHJ1Y3QgaW5fYWRkciAqaW4sIGludCBwb3J0LCBjb25zdCBjaGFyICpwcm90bywgaW50IGxvY2FsKQogewotCXN0cnVjdCBzZXJ2ZW50ICpzcCA9IDA7CisJc3RydWN0IHNlcnZlbnQgKnNwID0gTlVMTDsKIAljaGFyIGxpbmVbODBdLCAqY3A7CiAJaW50IHdpZHRoOwogCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMgYi9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMKaW5kZXggNzk5Yzk2MS4uNDUzNWMwYSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldDYuYwpAQCAtNDEzLDcgKzQxMyw3IEBACiAJCShyZXQpID0gZ2V0c2VydmJ5cG9ydCgoaW50KShwb3J0KSwgKHByb3RvKSk7IFwKIAl9IHdoaWxlICgwKQogCi0Jc3RydWN0IHNlcnZlbnQgKnNwID0gMDsKKwlzdHJ1Y3Qgc2VydmVudCAqc3AgPSBOVUxMOwogCWNoYXIgbGluZVs4MF0sICpjcDsKIAlpbnQgd2lkdGg7CiAJaW50IGxlbiA9IHNpemVvZiBsaW5lOwpAQCAtNDcwLDcgKzQ3MCw3IEBACiAJCQlkb21haW5bMF0gPSAnXDAnOwogCX0KICNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0JY3AgPSAwOworCWNwID0gTlVMTDsKIAlpZiAoIW5mbGFnICYmICFJTjZfSVNfQUREUl9VTlNQRUNJRklFRChpbjZwKSkgewogCQlocCA9IGdldGhvc3RieWFkZHIoKGNvbnN0IGNoYXIgKilpbjZwLCBzaXplb2YoKmluNnApLCBBRl9JTkVUNik7CiAJCWlmIChocCkgewpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwppbmRleCA5NDdjMDJiLi5hYzJiMDRmIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L21haW4uYworKysgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwpAQCAtNzUsOSArNzUsMTEgQEAKIGludAl0ZmxhZzsJCS8qIHNob3cgaS9mIHdhdGNoZG9nIHRpbWVycyAqLwogaW50CXZmbGFnOwkJLyogYmUgdmVyYm9zZSAqLwogCisKIGludAlpbnRlcnZhbDsJLyogcmVwZWF0IGludGVydmFsIGZvciBpL2Ygc3RhdHMgKi8KIGNoYXIJKmludHJmYWNlOwkvKiBkZXNpcmVkIGkvZiBmb3Igc3RhdHMsIG9yIE5VTEwgZm9yIGFsbCBpL2ZzICovCiBpbnQJYWY7CQkvKiBhZGRyZXNzIGZhbWlseSAqLworaW50ICAgICBtYXhfZ2V0YnVsayA9IDMyOyAgLyogc3BlY2lmaWVzIHRoZSBtYXgtcmVwZWF0ZXJzIHZhbHVlIHRvIHVzZSB3aXRoIEdFVEJVTEsgcmVxdWVzdHMgKi8KIAogY2hhciAgICAqcHJvZ25hbWUgPSBOVUxMOwogCkBAIC04NSwzMCArODcsMzIgQEAKICAgICAgKiBzdHJ1Y3Qgbmxpc3QgbmxbXSAtIE9taXR0ZWQKICAgICAgKi8KIAordHlwZWRlZiB2b2lkIChzdHJpbmdmdW4pKGNvbnN0IGNoYXIqKTsKKwogc3RydWN0IHByb3RveCB7CiAgICAgICAgIC8qIHByX2luZGV4L3ByX3NpbmRleCAtIE9taXR0ZWQgKi8gCi0JaW50CXByX3dhbnRlZDsJCQkvKiAxIGlmIHdhbnRlZCwgMCBvdGhlcndpc2UgKi8KLQl2b2lkCSgqcHJfY2Jsb2NrcykoY29uc3QgY2hhciAqKTsJLyogY29udHJvbCBibG9ja3MgcHJpbnRpbmcgcm91dGluZSAqLwotCXZvaWQJKCpwcl9zdGF0cykoY29uc3QgY2hhciAqKTsJLyogc3RhdGlzdGljcyBwcmludGluZyByb3V0aW5lICovCi0gIGNvbnN0IGNoYXIJKnByX25hbWU7CQkJLyogd2VsbC1rbm93biBuYW1lICovCisJaW50CQlwcl93YW50ZWQ7CS8qIDEgaWYgd2FudGVkLCAwIG90aGVyd2lzZSAqLworCXN0cmluZ2Z1bgkqcHJfY2Jsb2NrczsJLyogY29udHJvbCBibG9ja3MgcHJpbnRpbmcgcm91dGluZSAqLworCXN0cmluZ2Z1bgkqcHJfc3RhdHM7CS8qIHN0YXRpc3RpY3MgcHJpbnRpbmcgcm91dGluZSAqLworCWNvbnN0IGNoYXIJKnByX25hbWU7CS8qIHdlbGwta25vd24gbmFtZSAqLwogfSBwcm90b3hbXSA9IHsKIAl7IDEsCXRjcHByb3RvcHIsCXRjcF9zdGF0cywJInRjcCIgfSwJCiAJeyAxLAl1ZHBwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQogCi0JeyAxLAkwLAlpcF9zdGF0cywJImlwIiB9LAkJLyogcHJvdG9wciBPbWl0dGVkICovCi0JeyAxLAkwLAlpY21wX3N0YXRzLAkiaWNtcCIgfSwJCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpcF9zdGF0cywJImlwIiB9LAkvKiBwcm90b3ByIE9taXR0ZWQgKi8KKwl7IDEsCShzdHJpbmdmdW4qKTAsCWljbXBfc3RhdHMsCSJpY21wIiB9LAogCS8qIGlnbXAvYWgvZXNwL2lwZW5jYXAvZXRoZXJpcC9pcGNvbXAvY2FycC9wZnN5bmMvcGltIC0gT21pdHRlZCAqLwotCXsgMCwJMCwJMCwJCTAgfQorCXsgMCwJKHN0cmluZ2Z1biopMCwJKHN0cmluZ2Z1biopMCwJTlVMTCB9CiB9OwogCiBzdHJ1Y3QgcHJvdG94IGlwNnByb3RveFtdID0gewotCXsgMSwJdGNwNnByb3RvcHIsCTAsCSJ0Y3A2IiB9LAotCXsgMSwJdWRwNnByb3RvcHIsCTAsCSJ1ZHA2IiB9LAkKKwl7IDEsCXRjcDZwcm90b3ByLAkoc3RyaW5nZnVuKikwLAkidGNwNiIgfSwKKwl7IDEsCXVkcDZwcm90b3ByLAkoc3RyaW5nZnVuKikwLAkidWRwNiIgfSwKIAotCXsgMSwJMCwJaXA2X3N0YXRzLAkiaXA2IiB9LAkvKiBpcDZwcm90b3ByIE9taXR0ZWQgKi8KLQl7IDEsCTAsCWljbXA2X3N0YXRzLAkiaWNtcDYiIH0sCQorCXsgMSwJKHN0cmluZ2Z1biopMCwJaXA2X3N0YXRzLAkiaXA2IiB9LC8qIGlwNnByb3RvcHIgT21pdHRlZCAqLworCXsgMSwJKHN0cmluZ2Z1biopMCwJaWNtcDZfc3RhdHMsCSJpY21wNiIgfSwKIAkvKiBwaW02L3JpcDYgLSBPbWl0dGVkICovCi0JeyAwLAkwLAkwLAkJMCB9CisJeyAwLAkoc3RyaW5nZnVuKikwLAkoc3RyaW5nZnVuKikwLAlOVUxMIH0KIH07CiAKIAkvKiB7aXB4LG5zLGF0YWxrfXByb3RveCBPbWl0dGVkICovCkBAIC0yMzEsNiArMjM1LDI0IEBACiAJCWNhc2UgJ3InOgogCQkJcmZsYWcgPSAxOwogCQkJYnJlYWs7CisJCWNhc2UgJ1InOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGluZCA8IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndltvcHRpbmRdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9nZXRidWxrID0gYXRvaShhcmd2W29wdGluZF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF4X2dldGJ1bGsgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIC1DUiBvcHRpb246ICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndltvcHRpbmRdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgLUNSIG9wdGlvbjogbm8gYXJndW1lbnQgZ2l2ZW5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbmQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCQljYXNlICdTJzoJICAgICAvKiBGcmVlQlNEOgogCQkJCQlOZXRCU0Q6ICBTZW1pLW51bWVyaWMgZGlzcGxheQogCQkJCQlPcGVuQlNEOiBTaG93IHJvdXRlIHNvdXJjZSBzZWxlY3RvciAqLwpAQCAtMzk2LDcgKzQxOCw3IEBACiAJCQlmb3IgKHRwID0gcHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKIAkJCQlpZiAoc3RyY21wKHRwLT5wcl9uYW1lLCBwLT5wX25hbWUpID09IDApCiAJCQkJCWJyZWFrOwotCQkJaWYgKHRwLT5wcl9uYW1lID09IDAgfHwgdHAtPnByX3dhbnRlZCA9PSAwKQorCQkJaWYgKHRwLT5wcl9uYW1lID09IE5VTEwgfHwgdHAtPnByX3dhbnRlZCA9PSAwKQogCQkJCWNvbnRpbnVlOwogCQkJcHJpbnRwcm90byh0cCwgcC0+cF9uYW1lKTsKIAkJfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmggYi9hcHBzL3NubXBuZXRzdGF0L25ldHN0YXQuaAppbmRleCAyNzYyNTY4Li4zNTVjOGIyIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L25ldHN0YXQuaAorKysgYi9hcHBzL3NubXBuZXRzdGF0L25ldHN0YXQuaApAQCAtNjIsNiArNjIsNyBAQAogZXh0ZXJuIGNoYXIJKmludHJmYWNlOwkvKiBkZXNpcmVkIGkvZiBmb3Igc3RhdHMsIG9yIE5VTEwgZm9yIGFsbCBpL2ZzICovCiAKIGV4dGVybiBpbnQJYWY7CQkvKiBhZGRyZXNzIGZhbWlseSAqLworZXh0ZXJuIGludCAgbWF4X2dldGJ1bGs7ICAvKiBzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlIHdpdGggR0VUQlVMSyByZXF1ZXN0cyAqLwogCiBleHRlcm4JY2hhciAqX19wcm9nbmFtZTsgLyogcHJvZ3JhbSBuYW1lLCBmcm9tIGNydDAubyAqLwogCmRpZmYgLS1naXQgYS9hcHBzL3NubXB0YWJsZS5jIGIvYXBwcy9zbm1wdGFibGUuYwppbmRleCAzOTcwZTk3Li4xNDIyZWNlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0YWJsZS5jCisrKyBiL2FwcHMvc25tcHRhYmxlLmMKQEAgLTI1Niw3ICsyNTYsOCBAQAogICAgIG5ldHNubXBfc2Vzc2lvbiBzZXNzaW9uLCAqc3M7CiAgICAgaW50ICAgICAgICAgICAgdG90YWxfZW50cmllcyA9IDA7CiAKLSAgICBzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTEJGLCAxMDI0KTsKKyAgICBuZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZyhzdGRvdXQpOworCiAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQsIDEpOwogCmRpZmYgLS1naXQgYS9hcHBzL3NubXB0ZXN0LmMgYi9hcHBzL3NubXB0ZXN0LmMKaW5kZXggNDk5YmFjZi4uMjhmOTI1NCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdGVzdC5jCisrKyBiL2FwcHMvc25tcHRlc3QuYwpAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgfQogCiAgICAgdmFyY291bnQgPSAwOwotICAgIHdoaWxlICgxKSB7CisgICAgZm9yKDs7KSB7CiAgICAgICAgIHZhcnMgPSBOVUxMOwogICAgICAgICBmb3IgKHJldCA9IDE7IHJldCAhPSAwOykgewogICAgICAgICAgICAgdnAgPSAobmV0c25tcF92YXJpYWJsZV9saXN0ICopCkBAIC0yNzcsOCArMjc3LDcgQEAKICAgICAgICAgdmFyY291bnQgPSAwOwogICAgICAgICBub25SZXBlYXRlcnMgPSAtMTsKICAgICB9Ci0gICAgU09DS19DTEVBTlVQOwotICAgIHJldHVybiAwOworICAgIC8qIE5PVFJFQUNIRUQgKi8KIH0KIAogaW50CkBAIC0yODYsOCArMjg1LDcgQEAKIHsKICAgICBjaGFyICAgICAgICAgICAgYnVmWzI1Nl07CiAgICAgc2l6ZV90ICAgICAgICAgIHZhbF9sZW47Ci0gICAgdV9jaGFyICAgICAgICAgIHZhbHVlWzI1Nl0sIGNoOwotICAgIG9pZCAgICAgICAgICAgICBuYW1lW01BWF9PSURfTEVOXTsKKyAgICB1X2NoYXIgICAgICAgICAgY2g7CiAKICAgICBwcmludGYoIlZhcmlhYmxlOiAiKTsKICAgICBmZmx1c2goc3Rkb3V0KTsKQEAgLTM2OCwxMyArMzY2LDE1IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB2cC0+bmFtZV9sZW5ndGggPSBNQVhfT0lEX0xFTjsKLSAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGJ1ZiwgbmFtZSwgJnZwLT5uYW1lX2xlbmd0aCkpIHsKLSAgICAgICAgc25tcF9wZXJyb3IoYnVmKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIHsKKwlvaWQgICAgIG5hbWVbTUFYX09JRF9MRU5dOworCXZwLT5uYW1lX2xlbmd0aCA9IE1BWF9PSURfTEVOOworCWlmICghc25tcF9wYXJzZV9vaWQoYnVmLCBuYW1lLCAmdnAtPm5hbWVfbGVuZ3RoKSkgeworCSAgICBzbm1wX3BlcnJvcihidWYpOworCSAgICByZXR1cm4gLTE7CisJfQorCXZwLT5uYW1lID0gc25tcF9kdXBsaWNhdGVfb2JqaWQobmFtZSwgdnAtPm5hbWVfbGVuZ3RoKTsKICAgICB9Ci0gICAgdnAtPm5hbWUgPSAob2lkICopIG1hbGxvYyh2cC0+bmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7Ci0gICAgbWVtbW92ZSh2cC0+bmFtZSwgbmFtZSwgdnAtPm5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwogCiAgICAgaWYgKGNvbW1hbmQgPT0gU05NUF9NU0dfU0VUIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfSU5GT1JNCiAgICAgICAgIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUDIpIHsKQEAgLTQ4MSwxNCArNDgxLDE2IEBACiAgICAgICAgIGNhc2UgQVNOX09CSkVDVF9JRDoKICAgICAgICAgICAgIGlmICgnXG4nID09IGJ1ZltzdHJsZW4oYnVmKSAtIDFdKQogICAgICAgICAgICAgICAgIGJ1ZltzdHJsZW4oYnVmKSAtIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIHZwLT52YWxfbGVuID0gTUFYX09JRF9MRU47OwotICAgICAgICAgICAgaWYgKDAgPT0gcmVhZF9vYmppZChidWYsIChvaWQgKikgdmFsdWUsICZ2cC0+dmFsX2xlbikpIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIlVucmVjb2duaXNlZCBPSUQgdmFsdWVcbiIpOwotICAgICAgICAgICAgICAgIGdvdG8gZ2V0VmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2cC0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKLSAgICAgICAgICAgIHZwLT52YWwub2JqaWQgPSAob2lkICopIG1hbGxvYyh2cC0+dmFsX2xlbik7Ci0gICAgICAgICAgICBtZW1tb3ZlKHZwLT52YWwub2JqaWQsIHZhbHVlLCB2cC0+dmFsX2xlbik7CisJICAgIGVsc2UgeworCQlvaWQgdmFsdWVbTUFYX09JRF9MRU5dOworCQl2cC0+dmFsX2xlbiA9IE1BWF9PSURfTEVOOworCQlpZiAoMCA9PSByZWFkX29iamlkKGJ1ZiwgdmFsdWUsICZ2cC0+dmFsX2xlbikpIHsKKwkJICAgIHByaW50ZigiVW5yZWNvZ25pc2VkIE9JRCB2YWx1ZVxuIik7CisJCSAgICBnb3RvIGdldFZhbHVlOworCQl9CisJCXZwLT52YWwub2JqaWQgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZCh2YWx1ZSwgdnAtPnZhbF9sZW4pOworCQl2cC0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKKwkgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVNOX1RJTUVUSUNLUzoKICAgICAgICAgICAgIHZwLT52YWwuaW50ZWdlciA9IChsb25nICopIG1hbGxvYyhzaXplb2YobG9uZykpOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhbnNsYXRlLmMgYi9hcHBzL3NubXB0cmFuc2xhdGUuYwppbmRleCAxZWY5MTkzLi43NTBkNjBmIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0cmFuc2xhdGUuYworKysgYi9hcHBzL3NubXB0cmFuc2xhdGUuYwpAQCAtMjQwLDYgKzI0MCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzbm1wX2VuYWJsZV9zdGRlcnJsb2coKTsKICAgICBpbml0X3NubXAoInNubXBhcHAiKTsKICAgICBpZiAob3B0aW5kIDwgYXJnYykKICAgICAgICAgY3VycmVudF9uYW1lID0gYXJndltvcHRpbmRdOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcC5jIGIvYXBwcy9zbm1wdHJhcC5jCmluZGV4IGQxNmQyZmEuLjU1MzIwZjggMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXAuYworKysgYi9hcHBzL3NubXB0cmFwLmMKQEAgLTEwNCwyNiArMTA0LDYgQEAKICAgICByZXR1cm4gMTsKIH0KIAotaW5fYWRkcl90Ci1wYXJzZV9hZGRyZXNzKGNoYXIgKmFkZHJlc3MpCi17Ci0gICAgaW5fYWRkcl90ICAgICAgIGFkZHI7Ci0gICAgc3RydWN0IHNvY2thZGRyX2luIHNhZGRyOwotICAgIHN0cnVjdCBob3N0ZW50ICpocDsKLQotICAgIGlmICgoYWRkciA9IGluZXRfYWRkcihhZGRyZXNzKSkgIT0gLTEpCi0gICAgICAgIHJldHVybiBhZGRyOwotICAgIGhwID0gZ2V0aG9zdGJ5bmFtZShhZGRyZXNzKTsKLSAgICBpZiAoaHAgPT0gTlVMTCkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVua25vd24gaG9zdDogJXNcbiIsIGFkZHJlc3MpOwotICAgICAgICBleGl0KDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1lbWNweSgmc2FkZHIuc2luX2FkZHIsIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBzYWRkci5zaW5fYWRkci5zX2FkZHI7Ci0gICAgfQotCi19Ci0KIHN0YXRpYyB2b2lkCiBvcHRQcm9jKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgaW50IG9wdCkKIHsKQEAgLTI5OCw3ICsyNzgsMTEgQEAKICAgICAgICAgfQogICAgICAgICBhZ2VudCA9IGFyZ3ZbYXJnXTsKICAgICAgICAgaWYgKGFnZW50ICE9IE5VTEwgJiYgc3RybGVuKGFnZW50KSAhPSAwKSB7Ci0gICAgICAgICAgICAqcGR1X2luX2FkZHJfdCA9IHBhcnNlX2FkZHJlc3MoYWdlbnQpOworICAgICAgICAgICAgaW50IHJldCA9IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NChhZ2VudCwgcGR1X2luX2FkZHJfdCk7CisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5rbm93biBob3N0OiAlc1xuIiwgYWdlbnQpOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAqcGR1X2luX2FkZHJfdCA9IGdldF9teWFkZHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGQuYyBiL2FwcHMvc25tcHRyYXBkLmMKaW5kZXggYjdjNGNlNC4uNGVlNjE1ZCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGQuYworKysgYi9hcHBzL3NubXB0cmFwZC5jCkBAIC0xMzksMjIgKzEzOSwyNyBAQAogI2RlZmluZSBGRF9aRVJPKHApICAgICAgbWVtc2V0KChwKSwgMCwgc2l6ZW9mKCoocCkpKQogI2VuZGlmCiAKLWNoYXIgICAgICAgICAgICpsb2dmaWxlID0gMDsKLWludCAgICAgICAgICAgICBTeXNsb2dUcmFwID0gMDsKLWludCAgICAgICAgICAgICBFdmVudCA9IDA7Ci1pbnQgICAgICAgICAgICAgZHJvcGF1dGggPSAwOwotaW50ICAgICAgICAgICAgIHJlY29uZmlnID0gMDsKK2NoYXIgICAgICAgICAgICpsb2dmaWxlID0gTlVMTDsKK2V4dGVybiBpbnQgICAgICBTeXNsb2dUcmFwOworZXh0ZXJuIGludCAgICAgIGRyb3BhdXRoOworc3RhdGljIGludCAgICAgIHJlY29uZmlnID0gMDsKIGNoYXIgICAgICAgICAgICBkZGVmYXVsdF9wb3J0W10gPSAidWRwOjE2MiI7CS8qIERlZmF1bHQgZGVmYXVsdCBwb3J0ICovCiBjaGFyICAgICAgICAgICAqZGVmYXVsdF9wb3J0ID0gZGRlZmF1bHRfcG9ydDsKICNpZiBIQVZFX0dFVFBJRAogICAgIEZJTEUgICAgICAgICAgICpQSUQ7CiAgICAgY2hhciAgICAgICAgICAgKnBpZF9maWxlID0gTlVMTDsKICNlbmRpZgorZXh0ZXJuIHZvaWQgcGFyc2VfZm9ybWF0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKTsKIGNoYXIgICAgICAgICAgICp0cmFwMV9mbXRfc3RyX3JlbWVtYmVyID0gTlVMTDsKIGludCAgICAgICAgICAgICBkb2ZvcmsgPSAxOwogCiBleHRlcm4gaW50ICAgICAgbmV0c25tcF9ydW5uaW5nOwogCisjaWZkZWYgTkVUU05NUF9VU0VfTVlTUUwKK2V4dGVybiBpbnQgICAgICBuZXRzbm1wX215c3FsX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCAgICAgc25tcHRyYXBkX3JlZ2lzdGVyX3NxbF9jb25maWdzKCB2b2lkICk7CisjZW5kaWYKKwogLyoKICAqIFRoZXNlIGRlZmluaXRpb25zIGhhbmRsZSA0LjIgc3lzdGVtcyB3aXRob3V0IGFkZGl0aW9uYWwgc3lzbG9nIGZhY2lsaXRpZXMuCiAgKi8KQEAgLTIwNSw3ICsyMTAsNyBAQAogI2RlZmluZSBTTk1QVFJBUERfUlVOTklORyAxCiAjZGVmaW5lIFNOTVBUUkFQRF9TVE9QUEVEIDAKIGludCAgICAgICAgICAgICB0cmFwZF9zdGF0dXMgPSBTTk1QVFJBUERfU1RPUFBFRDsKLS8qIGFwcF9uYW1lX2xvbmcgdXNlZCBmb3IgRXZlbnQgTG9nIChzeXNsb2cpLCBTQ00sIHJlZ2lzdHJ5IGV0YyAqLworLyogYXBwX25hbWVfbG9uZyB1c2VkIGZvciBTQ00sIHJlZ2lzdHJ5IGV0YyAqLwogTFBDVFNUUiAgICAgICAgIGFwcF9uYW1lX2xvbmcgPSBfVCgiTmV0LVNOTVAgVHJhcCBIYW5kbGVyIik7ICAgICAvKiBBcHBsaWNhdGlvbiBOYW1lICovCiAjZW5kaWYKIApAQCAtMjE1LDEwICsyMjAsNiBAQAogCiB2b2lkICAgICAgICAgICAgdHJhcGRfdXBkYXRlX2NvbmZpZyh2b2lkKTsKIAotc3RhdGljIG9pZCAgICAgIHJpc2luZ0FsYXJtW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDIsIDEsIDEsIDMsIDEgfTsKLXN0YXRpYyBvaWQgICAgICBmYWxsaW5nQWxhcm1bXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMiwgMSwgMSwgMywgMiB9Owotc3RhdGljIG9pZCAgICAgIHVuYXZhaWxhYmxlQWxhcm1bXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMiwgMSwgMSwgMywgMyB9OwotCiAjaWZkZWYgV0lOMzJTRVJWSUNFCiB2b2lkICAgICAgICAgICAgU3RvcFNubXBUcmFwZCh2b2lkKTsKIGludCAgICAgICAgICAgICBTbm1wVHJhcGRNYWluKGludCBhcmdjLCBUQ0hBUiAqIGFyZ3ZbXSk7CkBAIC0yMzEsNzAgKzIzMiw2IEBACiBleHRlcm4gdm9pZCAgICAgICAgICAgIHN1YmFnZW50X2luaXQodm9pZCk7CiAjZW5kaWYKIAotdm9pZAotZXZlbnRfaW5wdXQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdnApCi17Ci0gICAgaW50ICAgICAgICAgICAgIGV2ZW50aWQgPSAwOwotICAgIG9pZCAgICAgICAgICAgICB2YXJpYWJsZVtNQVhfT0lEX0xFTl07Ci0gICAgdV9sb25nICAgICAgICAgIGRlc3RpcCA9IDA7Ci0gICAgaW50ICAgICAgICAgICAgIHNhbXBsZXR5cGUgPSAwOwotICAgIGludCAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci0gICAgaW50ICAgICAgICAgICAgIHRocmVzaG9sZCA9IDA7Ci0gICAgaW50ICAgICAgICAgICAgIGk7Ci0gICAgaW50ICAgICAgICAgICAgIG52YXJzID0gMDsKLQotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdAkqdnAyID0gdnA7Ci0gICAgCi0gICAgb2lkICAgICAgICAgICAgKm9wID0gTlVMTDsKLQotICAgIC8qIE1ha2Ugc3VyZSB0aGVyZSBhcmUgNSB2YXJpYWJsZXMuICBPdGhlcndpc2UsIGRvbid0IGJvdGhlciAqLwotICAgIGZvciAoaT0xOyBpIDw9IDU7IGkrKykgewotICAgICAgdnAyID0gdnAyLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgaWYgKCF2cDIpIHsKLQludmFycyA9IC0xOwotCWJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAobnZhcnMgIT0gLTEpCi0gICAgewotICAgICAgdnAgPSB2cC0+bmV4dF92YXJpYWJsZTsgICAgIC8qIHNraXAgc3lzVXB0aW1lICovCi0gICAgICBpZiAodnAtPnZhbF9sZW4gIT0gc2l6ZW9mKHJpc2luZ0FsYXJtKSB8fAotCSAgIW1lbWNtcCh2cC0+dmFsLm9iamlkLCByaXNpbmdBbGFybSwgc2l6ZW9mKHJpc2luZ0FsYXJtKSkpCi0JZXZlbnRpZCA9IDE7Ci0gICAgICBlbHNlIGlmICh2cC0+dmFsX2xlbiAhPSBzaXplb2YocmlzaW5nQWxhcm0pIHx8Ci0JICAhbWVtY21wKHZwLT52YWwub2JqaWQsIGZhbGxpbmdBbGFybSwgc2l6ZW9mKGZhbGxpbmdBbGFybSkpKQotCWV2ZW50aWQgPSAyOwotICAgICAgZWxzZSBpZiAodnAtPnZhbF9sZW4gIT0gc2l6ZW9mKHJpc2luZ0FsYXJtKSB8fAotCSAgIW1lbWNtcCh2cC0+dmFsLm9iamlkLCB1bmF2YWlsYWJsZUFsYXJtLCBzaXplb2YodW5hdmFpbGFibGVBbGFybSkpKQotCWV2ZW50aWQgPSAzOwotICAgICAgZWxzZSB7Ci0JZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGV2ZW50XG4iKTsKLQlldmVudGlkID0gMDsKLSAgICAgIH0KLSAgICAgIAotICAgICAgdnAgPSB2cC0+bmV4dF92YXJpYWJsZTsKLSAgICAgIG1lbW1vdmUodmFyaWFibGUsIHZwLT52YWwub2JqaWQsIHZwLT52YWxfbGVuICogc2l6ZW9mKG9pZCkpOwotICAgICAgb3AgPSB2cC0+bmFtZSArIDIyOwotICAgICAgZGVzdGlwID0gMDsKLSAgICAgIGRlc3RpcCB8PSAoKm9wKyspIDw8IDI0OwotICAgICAgZGVzdGlwIHw9ICgqb3ArKykgPDwgMTY7Ci0gICAgICBkZXN0aXAgfD0gKCpvcCsrKSA8PCA4OwotICAgICAgZGVzdGlwIHw9ICpvcCsrOwotICAgICAgCi0gICAgICB2cCA9IHZwLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgc2FtcGxldHlwZSA9ICp2cC0+dmFsLmludGVnZXI7Ci0gICAgICAKLSAgICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7Ci0gICAgICB2YWx1ZSA9ICp2cC0+dmFsLmludGVnZXI7Ci0gICAgICAKLSAgICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7Ci0gICAgICB0aHJlc2hvbGQgPSAqdnAtPnZhbC5pbnRlZ2VyOwotICAgIH0KLSAgICBwcmludGYoIiVkOiAweCUwMmxYICVkICVkICVkXG4iLCBldmVudGlkLCBkZXN0aXAsIHNhbXBsZXR5cGUsIHZhbHVlLAotCXRocmVzaG9sZCk7Ci19Ci0KIAogdm9pZAogdXNhZ2Uodm9pZCkKQEAgLTMxNSw5ICsyNTIsNyBAQAogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIiAgLUNcdFx0XHRkbyBub3QgcmVhZCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWRcdFx0XHRkdW1wIHNlbnQgYW5kIHJlY2VpdmVkIFNOTVAgcGFja2V0c1xuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC1EW1RPS0VOWywuLi5dXVx0XHR0dXJuIG9uIGRlYnVnZ2luZyBvdXRwdXRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgIiAgLWVcdFx0XHRwcmludCBldmVudCAjIChyaXNpbmcvZmFsbGluZyBhbGFybSwgZXRjLilcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtRFtUT0tFTlssLi4uXV1cdFx0dHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0IGZvciB0aGUgc3BlY2lmaWVkIFRPS0VOc1xuXHRcdFx0ICAgKEFMTCBnaXZlcyBleHRyZW1lbHkgdmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0KVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1mXHRcdFx0ZG8gbm90IGZvcmsgZnJvbSB0aGUgc2hlbGxcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIiAgLUYgRk9STUFUXHRcdHVzZSBzcGVjaWZpZWQgZm9ybWF0IGZvciBsb2dnaW5nIHRvIHN0YW5kYXJkIGVycm9yXG4iKTsKQEAgLTM2MiwxMSArMjk3LDYgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICIgIC1MIDxMT0dPUFRTPlx0XHR0b2dnbGUgb3B0aW9ucyBjb250cm9sbGluZyB3aGVyZSB0byBsb2cgdG9cbiIpOwogICAgIHNubXBfbG9nX29wdGlvbnNfdXNhZ2UoIlx0XHRcdCIsIHN0ZGVycik7Ci0gICAgZnByaW50ZihzdGRlcnIsICJcbiAgRGVwcmVjYXRlZCBvcHRpb25zOlxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC1vIEZJTEVcdFx0dXNlIC1MZiA8RklMRT4gaW5zdGVhZFxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC1QXHRcdFx0dXNlIC1mIC1MZSAgaW5zdGVhZFxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC1zXHRcdFx0dXNlIC1Mc2QgaW5zdGVhZFxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC1TIGR8aXwwLTdcdFx0dXNlIC1McyA8ZmFjaWxpdHk+IGluc3RlYWRcbiIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzg1LDYgKzMxNSw3IEBACiAgICAgZXh0ZXJuIG5ldHNubXBfc2Vzc2lvbiAqbWFpbl9zZXNzaW9uOwogI2VuZGlmCiAgICAgbmV0c25tcF9ydW5uaW5nID0gMDsKKwogI2lmZGVmIFdJTjMyU0VSVklDRQogICAgIC8qCiAgICAgICogSW4gY2FzZSBvZiB3aW5kb3dzLCBzZWxlY3QoKSBpbiByZWNlaXZlKCkgZnVuY3Rpb24gd2lsbCBub3QgcmV0dXJuIApAQCAtNjE0LDEzICs1NDUsNiBAQAogfQogCiB2b2lkCi1wYXJzZV9jb25maWdfcHJpbnRFdmVudE51bWJlcnMoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCi17Ci0gIGlmIChuZXRzbm1wX2RzX3BhcnNlX2Jvb2xlYW4oY3B0cikgPT0gMSkKLSAgICBFdmVudCsrOwotfQotCi12b2lkCiBwYXJzZV9jb25maWdfaWdub3JlQXV0aEZhaWx1cmUoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7CiAgIGlmIChuZXRzbm1wX2RzX3BhcnNlX2Jvb2xlYW4oY3B0cikgPT0gMSkKQEAgLTY2Niw3ICs1OTAsNyBAQAogICAgIGNoYXIgICAgICAgICAgICBvcHRpb25zWzEyOF0gPSAiYUFjOkNkRDo6ZWZGOmc6aEhJOkw6bTpNOm5vOk86UHFzUzp0dTp2eDotOiI7CiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzX2xpc3QgPSBOVUxMLCAqc3MgPSBOVUxMOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBOVUxMOwotICAgIGludCAgICAgICAgICAgICBhcmcsIGkgPSAwLCBkZXBtc2cgPSAwOworICAgIGludCAgICAgICAgICAgICBhcmcsIGkgPSAwOwogICAgIGludCAgICAgICAgICAgICB1aWQgPSAwLCBnaWQgPSAwOwogICAgIGludCAgICAgICAgICAgICBjb3VudCwgbnVtZmRzLCBibG9jazsKICAgICBmZF9zZXQgICAgICAgICAgcmVhZGZkcyx3cml0ZWZkcyxleGNlcHRmZHM7CkBAIC02NzcsNiArNjAxLDcgQEAKICNlbmRpZgogICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CiAKKwogI2lmbmRlZiBXSU4zMgogICAgIC8qCiAgICAgICogY2xvc2UgYWxsIG5vbi1zdGFuZGFyZCBmaWxlIGRlc2NyaXB0b3JzIHdlIG1heSBoYXZlCkBAIC02OTMsNiArNjE4LDcgQEAKICNpZmRlZiBTSUdIVVAKICAgICBzaWduYWwoU0lHSFVQLCBTSUdfSUdOKTsgICAvKiBkbyBub3QgdGVybWluYXRlIG9uIGVhcmx5IFNJR0hVUCAqLwogI2VuZGlmCisKICNpZmRlZiBTSUdJTlQKICAgICBzaWduYWwoU0lHSU5ULCB0ZXJtX2hhbmRsZXIpOwogI2VuZGlmCkBAIC03MDAsMTQgKzYyNiwxMyBAQAogICAgIHNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsgICAvKiAnSW5saW5lJyBmYWlsdXJlIG9mIHdheXdhcmQgcmVhZGVycyAqLwogI2VuZGlmCiAKLSNpZmRlZiBTSUdIVVAKLSAgICBzaWduYWwoU0lHSFVQLCBTSUdfSUdOKTsgICAvKiBkbyBub3QgdGVybWluYXRlIG9uIGVhcmx5IFNJR0hVUCAqLwotI2VuZGlmCi0KICAgICAvKgogICAgICAqIHJlZ2lzdGVyIG91ciBjb25maWd1cmF0aW9uIGhhbmRsZXJzIG5vdyBzbyAtSCBwcm9wZXJseSBkaXNwbGF5cyB0aGVtIAogICAgICAqLwogICAgIHNubXB0cmFwZF9yZWdpc3Rlcl9jb25maWdzKCApOworI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCisgICAgc25tcHRyYXBkX3JlZ2lzdGVyX3NxbF9jb25maWdzKCApOworI2VuZGlmCiAgICAgaW5pdF91c21fY29uZiggInNubXB0cmFwZCIgKTsKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgInNubXBUcmFwZEFkZHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3RyYXBkX2FkZHJlc3MsIGZyZWVfdHJhcGRfYWRkcmVzcywgInN0cmluZyIpOwpAQCAtNzMxLDIxICs2NTYsMTIgQEAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgImRvTm90Rm9yayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfY29uZmlnX2RvTm90Rm9yaywgTlVMTCwgIigxfHllc3x0cnVlfDB8bm98ZmFsc2UpIik7CiAKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgInByaW50RXZlbnROdW1iZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9jb25maWdfcHJpbnRFdmVudE51bWJlcnMsIE5VTEwsICIoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIpOwotCiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJpZ25vcmVBdXRoRmFpbHVyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfY29uZmlnX2lnbm9yZUF1dGhGYWlsdXJlLCBOVUxMLCAiKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiKTsKIAogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAib3V0cHV0T3B0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9jb25maWdfb3V0cHV0T3B0aW9uLCBOVUxMLCAic3RyaW5nIik7CiAKLSNpZmRlZiBXSU4zMgotICAgIHNldHZidWYoc3Rkb3V0LCBOVUxMLCBfSU9OQkYsIEJVRlNJWik7Ci0jZWxzZQotICAgIHNldHZidWYoc3Rkb3V0LCBOVUxMLCBfSU9MQkYsIEJVRlNJWik7Ci0jZW5kaWYKLQogICAgIC8qCiAgICAgICogQWRkIHNvbWUgb3B0aW9ucyBpZiB0aGV5IGFyZSBhdmFpbGFibGUuICAKICAgICAgKi8KQEAgLTgxMSwxNyArNzI3LDI1IEBACiAgICAgICAgICAgICBzbm1wX3NldF9kb19kZWJ1Z2dpbmcoMSk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIEV2ZW50Kys7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgIGRvZm9yayA9IDA7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdGJzoKICAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIgPSBvcHRhcmc7CisgICAgICAgICAgICAgICAgaWYgKCggc3RybmNtcCggb3B0YXJnLCAicHJpbnQiLCAgIDUgKSA9PSAwICkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCBzdHJuY21wKCBvcHRhcmcsICJzeXNsb2ciLCAgNiApID09IDAgKSB8fAorICAgICAgICAgICAgICAgICAgICAoIHN0cm5jbXAoIG9wdGFyZywgImV4ZWN1dGUiLCA3ICkgPT0gMCApKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE5ldyBzdHlsZTogInR5cGU9Zm9ybWF0IiAqLworICAgICAgICAgICAgICAgICAgICB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyID0gc3RyZHVwKG9wdGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGNwID0gc3RyY2hyKCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyLCAnPScgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNwKQorICAgICAgICAgICAgICAgICAgICAgICAgKmNwID0gJyAnOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9sZCBzdHlsZTogaW1wbGljaXRseSAicHJpbnQ9Zm9ybWF0IiAqLworICAgICAgICAgICAgICAgICAgICB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyID0gbWFsbG9jKHN0cmxlbihvcHRhcmcpICsgNyk7CisgICAgICAgICAgICAgICAgICAgIHNwcmludGYoIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIsICJwcmludCAlcyIsIG9wdGFyZyApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKICAgICAgICAgICAgICAgICBleGl0KDEpOwpAQCAtODY3LDUyICs3OTEsOCBAQAogCiAJY2FzZSAnUyc6CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1TIG9wdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgLUxzIDxmYWNpbGl0eT4gaW5zdGVhZFxuIik7Ci0gICAgICAgICAgICBkZXBtc2cgPSAxOwotICAgICAgICAgICAgaWYgKG9wdGFyZyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoICgqb3B0YXJnKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgY2FzZSAnRCc6Ci0gICAgICAgICAgICAgICAgICAgIEZhY2lsaXR5ID0gTE9HX0RBRU1PTjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgY2FzZSAnSSc6Ci0gICAgICAgICAgICAgICAgICAgIEZhY2lsaXR5ID0gTE9HX0lORk87Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzAnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDA7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzEnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzInOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzMnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDM7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzQnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzUnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzYnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDY7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJzcnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19MT0NBTDc7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBzeXNsb2cgZmFjaWxpdHk6IC1TJWNcbiIsKm9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgIHVzYWdlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5vIHN5c2xvZyBmYWNpbGl0eSBzcGVjaWZpZWRcbiIpOwotICAgICAgICAgICAgICAgIHVzYWdlKCk7Ci0gICAgICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1TIG9wdGlvbiBoYXMgYmVlbiB3aXRoZHJhd247IHVzZSAtTHMgPGZhY2lsaXR5PiBpbnN0ZWFkXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdtJzoKQEAgLTk0MCwxNiArODIwLDggQEAKIAogICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLW8gb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IHVzZSAtTGYgPGZpbGU+IGluc3RlYWRcbiIpOwotICAgICAgICAgICAgaWYgKG9wdGFyZyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbG9nZmlsZSA9IG9wdGFyZzsKLSAgICAgICAgICAgICAgICBzbm1wX2VuYWJsZV9maWxlbG9nKG9wdGFyZywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVBQRU5EX0xPR0ZJTEVTKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVzYWdlKCk7Ci0gICAgICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1vIG9wdGlvbiBoYXMgYmVlbiB3aXRoZHJhd247IHVzZSAtTGYgPGZpbGU+IGluc3RlYWRcbiIpOworICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ08nOgpAQCAtOTgyLDIwICs4NTQsMTQgQEAKIAogICAgICAgICBjYXNlICdQJzoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLVAgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IHVzZSAtZiAtTGUgaW5zdGVhZFxuIik7Ci0gICAgICAgICAgICBkb2ZvcmsgPSAwOwotICAgICAgICAgICAgc25tcF9lbmFibGVfc3RkZXJybG9nKCk7CisgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtUCBvcHRpb24gaGFzIGJlZW4gd2l0aGRyYXduOyB1c2UgLWYgLUxlIGluc3RlYWRcbiIpOworICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtcyBvcHRpb24gaXMgZGVwcmVjYXRlZDsgdXNlIC1Mc2QgaW5zdGVhZFxuIik7Ci0gICAgICAgICAgICBkZXBtc2cgPSAxOwotI2lmZGVmIFdJTjMyCi0gICAgICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoYXBwX25hbWVfbG9uZywgRmFjaWxpdHkpOwotI2Vsc2UKLSAgICAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChhcHBfbmFtZSwgRmFjaWxpdHkpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtcyBvcHRpb24gaGFzIGJlZW4gd2l0aGRyYXduOyB1c2UgLUxzZCBpbnN0ZWFkXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICd0JzoKQEAgLTEwOTcsMjQgKzk2Myw2IEBACiAgICAgICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOwogICAgIH0KIAotICAgIGlmIChFdmVudCkgewotICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX3RyYXBoYW5kbGVyKGV2ZW50X2hhbmRsZXIsIHJpc2luZ0FsYXJtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgocmlzaW5nQWxhcm0pKTsKLSAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7Ci0KLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF90cmFwaGFuZGxlcihldmVudF9oYW5kbGVyLCBmYWxsaW5nQWxhcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChmYWxsaW5nQWxhcm0pKTsKLSAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7Ci0KLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF90cmFwaGFuZGxlcihldmVudF9oYW5kbGVyLCB1bmF2YWlsYWJsZUFsYXJtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgodW5hdmFpbGFibGVBbGFybSkpOwotICAgICAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0xPRzsKLQkvKiBYWFggLSBtaWdodCBiZSB3b3J0aCBzZXR0aW5nIHNvbWUgIm1hZ2ljIGRhdGEiCi0JICogaW4gdGhlIHRyYXBoYW5kbGVyIHN0cnVjdHVyZSB0aGF0ICdldmVudF9oYW5kbGVyJwotCSAqIGNhbiB1c2UgdG8gYXZvaWQgY2hlY2tpbmcgdGhlIHRyYXAgT0lEIHZhbHVlcy4KLQkgKi8KLSAgICB9Ci0KICNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpICYmICFkZWZpbmVkKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYKQogICAgIC8qCiAgICAgICogd2UncmUgYW4gYWdlbnR4IHN1YmFnZW50PyAKQEAgLTEyMTksMTAgKzEwNjcsNyBAQAogI2VuZGlmCiAKICAgICBpZiAodHJhcDFfZm10X3N0cl9yZW1lbWJlcikgewotICAgICAgICBmcmVlX3RyYXAxX2ZtdCgpOwotICAgICAgICBmcmVlX3RyYXAyX2ZtdCgpOwotICAgICAgICBwcmludF9mb3JtYXQxID0gc3RyZHVwKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpOwotICAgICAgICBwcmludF9mb3JtYXQyID0gc3RyZHVwKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpOworICAgICAgICBwYXJzZV9mb3JtYXQoIE5VTEwsIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIgKTsKICAgICB9CiAKICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTEyNDUsNiArMTA5MCw2MyBAQAogI2VuZGlmICAgICAgICAKICAgICB9CiAKKyAgICBpZiAobGlzdGVuX3BvcnRzKQorICAgICAgICBjcCA9IGxpc3Rlbl9wb3J0czsKKyAgICBlbHNlCisgICAgICAgIGNwID0gZGVmYXVsdF9wb3J0OworCisgICAgd2hpbGUgKGNwICE9IE5VTEwpIHsKKyAgICAgICAgY2hhciAqc2VwID0gc3RyY2hyKGNwLCAnLCcpOworCisgICAgICAgIGlmIChzZXAgIT0gTlVMTCkgeworICAgICAgICAgICAgKnNlcCA9IDA7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc3BvcnQgPSBuZXRzbm1wX3RyYW5zcG9ydF9vcGVuX3NlcnZlcigic25tcHRyYXAiLCBjcCk7CisgICAgICAgIGlmICh0cmFuc3BvcnQgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkbid0IG9wZW4gJXMgLS0gZXJybm8gJWQgKFwiJXNcIilcbiIsCisgICAgICAgICAgICAgICAgICAgICBjcCwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBzbm1wdHJhcGRfY2xvc2Vfc2Vzc2lvbnMoc2Vzc19saXN0KTsKKyAgICAgICAgICAgIFNPQ0tfQ0xFQU5VUDsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzcyA9IHNubXB0cmFwZF9hZGRfc2Vzc2lvbih0cmFuc3BvcnQpOworICAgICAgICAgICAgaWYgKHNzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFNob3VsZG4ndCBoYXBwZW4/ICBXZSBoYXZlIGFscmVhZHkgb3BlbmVkIHRoZSB0cmFuc3BvcnQKKyAgICAgICAgICAgICAgICAgKiBzdWNjZXNzZnVsbHkgc28gd2hhdCBjb3VsZCBoYXZlIGdvbmUgd3Jvbmc/ICAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzbm1wdHJhcGRfY2xvc2Vfc2Vzc2lvbnMoc2Vzc19saXN0KTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHRyYW5zcG9ydCk7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkbid0IG9wZW4gc25tcCAtICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICBTT0NLX0NMRUFOVVA7CisgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3MtPm5leHQgPSBzZXNzX2xpc3Q7CisgICAgICAgICAgICAgICAgc2Vzc19saXN0ID0gc3M7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBQcm9jZXNzIG5leHQgbGlzdGVuIGFkZHJlc3MsIGlmIHRoZXJlIGlzIG9uZS4gIAorICAgICAgICAgKi8KKworICAgICAgICBpZiAoc2VwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICpzZXAgPSAnLCc7CisgICAgICAgICAgICBjcCA9IHNlcCArIDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjcCA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgU05NUF9GUkVFKGxpc3Rlbl9wb3J0cyk7IC8qIGRvbmUgd2l0aCB0aGVtICovCisKKyNpZmRlZiBORVRTTk1QX1VTRV9NWVNRTAorICAgIGlmKCBuZXRzbm1wX215c3FsX2luaXQoKSApIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJNeVNRTCBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyNlbmRpZgorCiAjaWZuZGVmIFdJTjMyCiAgICAgLyoKICAgICAgKiBmb3JrIHRoZSBwcm9jZXNzIHRvIHRoZSBiYWNrZ3JvdW5kIGlmIHdlIGFyZSBub3QgcHJpbnRpbmcgdG8gc3RkZXJyIApAQCAtMTI5NCw1OCArMTE5Niw2IEBACiAjZW5kaWYKIAogICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlc1xuIiwgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKLSAgICBpZiAoZGVwbXNnKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiLXMgYW5kIC1TIG9wdGlvbnMgYXJlIGRlcHJlY2F0ZWQ7IHVzZSAtTHMgPGZhY2lsaXR5PiBpbnN0ZWFkXG4iKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGxpc3Rlbl9wb3J0cykKLSAgICAgICAgY3AgPSBsaXN0ZW5fcG9ydHM7Ci0gICAgZWxzZQotICAgICAgICBjcCA9IGRlZmF1bHRfcG9ydDsKLQotICAgIHdoaWxlIChjcCAhPSBOVUxMKSB7Ci0gICAgICAgIGNoYXIgKnNlcCA9IHN0cmNocihjcCwgJywnKTsKLQotICAgICAgICBpZiAoc2VwICE9IE5VTEwpIHsKLSAgICAgICAgICAgICpzZXAgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJhbnNwb3J0ID0gbmV0c25tcF90cmFuc3BvcnRfb3Blbl9zZXJ2ZXIoInNubXB0cmFwIiwgY3ApOwotICAgICAgICBpZiAodHJhbnNwb3J0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBvcGVuICVzIC0tIGVycm5vICVkIChcIiVzXCIpXG4iLAotICAgICAgICAgICAgICAgICAgICAgY3AsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgc25tcHRyYXBkX2Nsb3NlX3Nlc3Npb25zKHNlc3NfbGlzdCk7Ci0gICAgICAgICAgICBTT0NLX0NMRUFOVVA7Ci0gICAgICAgICAgICBleGl0KDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3MgPSBzbm1wdHJhcGRfYWRkX3Nlc3Npb24odHJhbnNwb3J0KTsKLSAgICAgICAgICAgIGlmIChzcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBTaG91bGRuJ3QgaGFwcGVuPyAgV2UgaGF2ZSBhbHJlYWR5IG9wZW5lZCB0aGUgdHJhbnNwb3J0Ci0gICAgICAgICAgICAgICAgICogc3VjY2Vzc2Z1bGx5IHNvIHdoYXQgY291bGQgaGF2ZSBnb25lIHdyb25nPyAgCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgc25tcHRyYXBkX2Nsb3NlX3Nlc3Npb25zKHNlc3NfbGlzdCk7Ci0gICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0cmFuc3BvcnQpOwotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBvcGVuIHNubXAgLSAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICAgICAgU09DS19DTEVBTlVQOwotICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNzLT5uZXh0ID0gc2Vzc19saXN0OwotICAgICAgICAgICAgICAgIHNlc3NfbGlzdCA9IHNzOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogUHJvY2VzcyBuZXh0IGxpc3RlbiBhZGRyZXNzLCBpZiB0aGVyZSBpcyBvbmUuICAKLSAgICAgICAgICovCi0KLSAgICAgICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAqc2VwID0gJywnOwotICAgICAgICAgICAgY3AgPSBzZXAgKyAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3AgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQogCiAgICAgLyoKICAgICAgKiBpZ25vcmUgZWFybHkgc2lnaHVwIGR1cmluZyBzdGFydHVwCkBAIC0xNDAxLDEwICsxMjUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF92ZXJzaW9uKCkpOwogICAgICAgICAgICAgdHJhcGRfdXBkYXRlX2NvbmZpZygpOwogICAgICAgICAgICAgaWYgKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpIHsKLSAgICAgICAgICAgICAgICBmcmVlX3RyYXAxX2ZtdCgpOwotICAgICAgICAgICAgICAgIGZyZWVfdHJhcDJfZm10KCk7Ci0gICAgICAgICAgICAgICAgcHJpbnRfZm9ybWF0MSA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKLSAgICAgICAgICAgICAgICBwcmludF9mb3JtYXQyID0gc3RyZHVwKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpOworICAgICAgICAgICAgICAgIHBhcnNlX2Zvcm1hdCggTlVMTCwgdHJhcDFfZm10X3N0cl9yZW1lbWJlciApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVjb25maWcgPSAwOwogICAgICAgICB9CkBAIC0xNDIxLDcgKzEyNjgsNyBAQAogICAgICAgICAgICAgdHZwID0gTlVMTDsgICAgICAgICAvKiBibG9jayB3aXRob3V0IHRpbWVvdXQgKi8KICAgICAgICAgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOwogICAgICAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMsIHR2cCk7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmTm93LCAwKTsKKyAgICAgICAgZ2V0dGltZW9mZGF5KCZOb3csIE5VTEwpOwogICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cygmY291bnQsICZyZWFkZmRzLCAmd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjZXB0ZmRzKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2F1dGguYyBiL2FwcHMvc25tcHRyYXBkX2F1dGguYwppbmRleCAxMTlkZTU4Li5iN2ZiNjA1IDEwMDY0NAotLS0gYS9hcHBzL3NubXB0cmFwZF9hdXRoLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfYXV0aC5jCkBAIC0xMjYsOCArMTI2LDEwIEBACiAgICAgICAgIC8qIHBhc3MgdGhlIFBEVSB0byB0aGUgVkFDTSByb3V0aW5lIGZvciBoYW5kbGluZyBhdXRob3JpemF0aW9uICovCiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQ6YXV0aCIsICJDYWxsaW5nIFZBQ00gZm9yIGNoZWNraW5nIHBoYXNlICVkOiVzXG4iLAogICAgICAgICAgICAgICAgICAgICBpLCBzZV9maW5kX2xhYmVsX2luX3NsaXN0KFZBQ01fVklFV19FTlVNX05BTUUsIGkpKSk7Ci0gICAgICAgIGlmICh2YWNtX2NoZWNrX3ZpZXcobmV3cGR1LCB2YXItPnZhbC5vYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4vc2l6ZW9mKG9pZCksIDAsIGkpID09IFZBQ01fU1VDQ0VTUykgeworICAgICAgICBpZiAodmFjbV9jaGVja192aWV3X2NvbnRlbnRzKG5ld3BkdSwgdmFyLT52YWwub2JqaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT52YWxfbGVuL3NpemVvZihvaWQpLCAwLCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBQ01fQ0hFQ0tfVklFV19DT05URU5UU19ETkVfQ09OVEVYVF9PSykKKyAgICAgICAgICAgID09IFZBQ01fU1VDQ0VTUykgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZDphdXRoIiwgIiAgcmVzdWx0OiBhdXRob3JpemVkXG4iKSk7CiAgICAgICAgICAgICByZXQgfD0gMSA8PCBpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYyBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMKaW5kZXggMzdjYTVhYi4uMDE3NmFhNyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYworKysgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCkBAIC00MSw2ICs0MSwxMSBAQAogY2hhciAqc3lzbG9nX2Zvcm1hdDIgPSBOVUxMOwogY2hhciAqcHJpbnRfZm9ybWF0MSAgPSBOVUxMOwogY2hhciAqcHJpbnRfZm9ybWF0MiAgPSBOVUxMOworY2hhciAqZXhlY19mb3JtYXQxICAgPSBOVUxMOworY2hhciAqZXhlY19mb3JtYXQyICAgPSBOVUxMOworCitpbnQgICBTeXNsb2dUcmFwID0gMDsKK2ludCAgIGRyb3BhdXRoID0gMDsKIAogY29uc3QgY2hhciAgICAgKnRyYXAxX3N0ZF9zdHIgPSAiJS40eS0lLjJtLSUuMmwgJS4yaDolLjJqOiUuMmsgJUIgWyViXSAodmlhICVBIFslYV0pOiAlTlxuXHQlVyBUcmFwICglcSkgVXB0aW1lOiAlI1RcbiV2XG4iOwogY29uc3QgY2hhciAgICAgKnRyYXAyX3N0ZF9zdHIgPSAiJS40eS0lLjJtLSUuMmwgJS4yaDolLjJqOiUuMmsgJUIgWyViXTpcbiV2XG4iOwpAQCAtODEsMTkgKzg2LDI3IEBACiAgICAgY2hhciAgICAgICAgICAgKmNwdHIsICpjcDsKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogICAgIGludCAgICAgICAgICAgICBmbGFncyA9IDA7CisgICAgY2hhciAgICAgICAgICAgKmZvcm1hdCA9IE5VTEw7CiAKICAgICBtZW1zZXQoIGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOwogICAgIG1lbXNldChvYnVmLCAwLCBzaXplb2Yob2J1ZikpOwogICAgIGNwdHIgPSBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCisgICAgaWYgKCBidWZbMF0gPT0gJy0nICYmIGJ1ZlsxXSA9PSAnRicgKSB7CisgICAgICAgIGNwdHIgPSBjb3B5X253b3JkKGNwdHIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBmb3JtYXQgPSBzdHJkdXAoIGJ1ZiApOworICAgICAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWYsIHNpemVvZihidWYpKTsKKyAgICB9CiAgICAgaWYgKCAhY3B0ciApIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigiTWlzc2luZyB0cmFwaGFuZGxlIGNvbW1hbmQiKTsKKyAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIk1pc3NpbmcgdHJhcGhhbmRsZSBjb21tYW5kICglcykiLCBidWYpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnOnRyYXBoYW5kbGUiLCAicmVnaXN0ZXJpbmcgaGFuZGxlciBmb3I6ICIpKTsKICAgICBpZiAoIXN0cmNtcChidWYsICJkZWZhdWx0IikpIHsKICAgICAgICAgREVCVUdNU0coKCJyZWFkX2NvbmZpZzp0cmFwaGFuZGxlIiwgImRlZmF1bHQiKSk7Ci0gICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZGVmYXVsdF90cmFwaGFuZGxlciggY29tbWFuZF9oYW5kbGVyICk7CisgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9ERUZBVUxUX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfaGFuZGxlciApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNwID0gYnVmK3N0cmxlbihidWYpLTE7CiAgICAgICAgIGlmICggKmNwID09ICcqJyApIHsKQEAgLTEwOCwxMSArMTIxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoIXJlYWRfb2JqaWQoYnVmLCBvYnVmLCAmb2xlbikpIHsKLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICBidWYxW1NUUklOR01BWF07Ci0gICAgICAgICAgICBzbnByaW50ZihidWYxLCAgc2l6ZW9mKGJ1ZjEpLAotICAgICAgICAgICAgICAgICAgICAiQmFkIHRyYXAgT0lEIGluIHRyYXBoYW5kbGUgZGlyZWN0aXZlOiAlcyIsIGJ1Zik7Ci0gICAgICAgICAgICBidWYxWyBzaXplb2YoYnVmMSktMSBdID0gMDsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmMSk7CisJICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJCYWQgdHJhcCBPSUQgaW4gdHJhcGhhbmRsZSBkaXJlY3RpdmU6ICVzIiwKKwkJCQkgYnVmKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR09JRCgoInJlYWRfY29uZmlnOnRyYXBoYW5kbGUiLCBvYnVmLCBvbGVuKSk7CkBAIC0xMjUsNiArMTM1LDggQEAKICAgICAgICAgdHJhcGgtPmZsYWdzID0gZmxhZ3M7CiAgICAgICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfRVhFOwogICAgICAgICB0cmFwaC0+dG9rZW4gPSBzdHJkdXAoY3B0cik7CisgICAgICAgIGlmIChmb3JtYXQpCisgICAgICAgICAgICB0cmFwaC0+Zm9ybWF0ID0gZm9ybWF0OwogICAgIH0KIH0KIApAQCAtMTM4LDE3ICsxNTAsMjYgQEAKICAgICBjaGFyICAgICAgICAgICAqY3B0ciwgKmNwOwogICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CiAgICAgaW50ICAgICAgICAgICAgIGZsYWdzID0gMDsKKyAgICBjaGFyICAgICAgICAgICAqZm9ybWF0ID0gTlVMTDsKIAogICAgIG1lbXNldCggYnVmLCAwLCBzaXplb2YoYnVmKSk7CiAgICAgbWVtc2V0KG9idWYsIDAsIHNpemVvZihvYnVmKSk7CiAgICAgY3B0ciA9IGNvcHlfbndvcmQobGluZSwgYnVmLCBzaXplb2YoYnVmKSk7CisKKyAgICBpZiAoIGJ1ZlswXSA9PSAnLScgJiYgYnVmWzFdID09ICdGJyApIHsKKyAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIGZvcm1hdCA9IHN0cmR1cCggYnVmICk7CisgICAgICAgIGNwdHIgPSBjb3B5X253b3JkKGNwdHIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgIH0KICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWc6Zm9yd2FyZCIsICJyZWdpc3RlcmluZyBmb3J3YXJkIGZvcjogIikpOwogICAgIGlmICghc3RyY21wKGJ1ZiwgImRlZmF1bHQiKSkgewogICAgICAgICBERUJVR01TRygoInJlYWRfY29uZmlnOmZvcndhcmQiLCAiZGVmYXVsdCIpKTsKICAgICAgICAgaWYgKCAhc3RyY21wKCBjcHRyLCAiYWdlbnR4IiApKQotICAgICAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9kZWZhdWx0X3RyYXBoYW5kbGVyKCBheGZvcndhcmRfaGFuZGxlciApOworICAgICAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhmb3J3YXJkX2hhbmRsZXIgKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9kZWZhdWx0X3RyYXBoYW5kbGVyKCBmb3J3YXJkX2hhbmRsZXIgKTsKKyAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9ERUZBVUxUX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaGFuZGxlciApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNwID0gYnVmK3N0cmxlbihidWYpLTE7CiAgICAgICAgIGlmICggKmNwID09ICcqJyApIHsKQEAgLTE2NCwxMSArMTg1LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVhZF9vYmppZChidWYsIG9idWYsICZvbGVuKSkgewotICAgICAgICAgICAgY2hhciAgICAgICAgICAgIGJ1ZjFbU1RSSU5HTUFYXTsKLSAgICAgICAgICAgIHNucHJpbnRmKGJ1ZjEsICBzaXplb2YoYnVmMSksCi0gICAgICAgICAgICAgICAgICAgICJCYWQgdHJhcCBPSUQgaW4gZm9yd2FyZCBkaXJlY3RpdmU6ICVzIiwgYnVmKTsKLSAgICAgICAgICAgIGJ1ZjFbIHNpemVvZihidWYxKS0xIF0gPSAwOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcihidWYxKTsKKwkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkJhZCB0cmFwIE9JRCBpbiBmb3J3YXJkIGRpcmVjdGl2ZTogJXMiLCBidWYpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIERFQlVHTVNHT0lEKCgicmVhZF9jb25maWc6Zm9yd2FyZCIsIG9idWYsIG9sZW4pKTsKQEAgLTE4NCwxNCArMjAxLDE2IEBACiAgICAgICAgIHRyYXBoLT5mbGFncyA9IGZsYWdzOwogICAgICAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX05FVDsKICAgICAgICAgdHJhcGgtPnRva2VuID0gc3RyZHVwKGNwdHIpOworICAgICAgICBpZiAoZm9ybWF0KQorICAgICAgICAgICAgdHJhcGgtPmZvcm1hdCA9IGZvcm1hdDsKICAgICB9CiB9CiAKIAotc3RhdGljIHZvaWQKK3ZvaWQKIHBhcnNlX2Zvcm1hdChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKIHsKLSAgICBjaGFyICpjcDsKKyAgICBjaGFyICpjcCwgKnNlcDsKIAogICAgIC8qCiAgICAgICogRXh0cmFjdCB0aGUgZmlyc3QgdG9rZW4gZnJvbSB0aGUgdmFsdWUKQEAgLTIwOSw4ICsyMjgsOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgc2VwID0gY3A7CiAgICAgKihjcCsrKSA9ICdcMCc7Ci0gICAgd2hpbGUgKCpjcCAmJiAhaXNzcGFjZSgqY3ApKQorICAgIHdoaWxlICgqY3AgJiYgaXNzcGFjZSgqY3ApKQogICAgICAgICBjcCsrOwogCiAgICAgLyoKQEAgLTI0MCw3ICsyNjAsMjAgQEAKICAgICAgICAgU05NUF9GUkVFKCBzeXNsb2dfZm9ybWF0MiApOwogICAgICAgICBzeXNsb2dfZm9ybWF0MSA9IHN0cmR1cChjcCk7CiAgICAgICAgIHN5c2xvZ19mb3JtYXQyID0gc3RyZHVwKGNwKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIGxpbmUsICJleGVjdXRlMSIpKSB7CisgICAgICAgIFNOTVBfRlJFRSggZXhlY19mb3JtYXQxICk7CisgICAgICAgIGV4ZWNfZm9ybWF0MSA9IHN0cmR1cChjcCk7CisgICAgfSBlbHNlIGlmICghc3RyY21wKCBsaW5lLCAiZXhlY3V0ZTIiKSkgeworICAgICAgICBTTk1QX0ZSRUUoIGV4ZWNfZm9ybWF0MiApOworICAgICAgICBleGVjX2Zvcm1hdDIgPSBzdHJkdXAoY3ApOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcCggbGluZSwgImV4ZWN1dGUiKSkgeworICAgICAgICBTTk1QX0ZSRUUoIGV4ZWNfZm9ybWF0MSApOworICAgICAgICBTTk1QX0ZSRUUoIGV4ZWNfZm9ybWF0MiApOworICAgICAgICBleGVjX2Zvcm1hdDEgPSBzdHJkdXAoY3ApOworICAgICAgICBleGVjX2Zvcm1hdDIgPSBzdHJkdXAoY3ApOwogICAgIH0KKworICAgICpzZXAgPSAnICc7CiB9CiAKIApAQCAtMjg5LDcgKzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfdHJhcDJfZm10LCBmcmVlX3RyYXAyX2ZtdCwgImZvcm1hdCIpOwogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAiZm9ybWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9mb3JtYXQsIE5VTEwsCi0JCQkgICAgIltwcmludHssMSwyfXxzeXNsb2d7LDEsMn1dIGZvcm1hdCIpOworCQkJICAgICJbcHJpbnR7LDEsMn18c3lzbG9neywxLDJ9fGV4ZWN1dGV7LDEsMn1dIGZvcm1hdCIpOwogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAiZm9yd2FyZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfZm9yd2FyZCwgTlVMTCwgIk9JRHxcImRlZmF1bHRcIiBkZXN0aW5hdGlvbiIpOwogfQpAQCAtMzA4LDEyICszNDEsMjYgQEAKIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9kZWZhdWx0X3RyYXBoYW5kbGVycyAgPSBOVUxMOwogbmV0c25tcF90cmFwZF9oYW5kbGVyICpuZXRzbm1wX3NwZWNpZmljX3RyYXBoYW5kbGVycyA9IE5VTEw7CiAKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfaGFuZGxlcl9tYXBfdCB7CisgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKipoYW5kbGVyOworICAgY29uc3QgY2hhciAgICAgICAgICAgICAqZGVzY3I7Cit9IG5ldHNubXBfaGFuZGxlcl9tYXA7CisKK3N0YXRpYyBuZXRzbm1wX2hhbmRsZXJfbWFwIGhhbmRsZXJzW10gPSB7CisgICAgeyAmbmV0c25tcF9hdXRoX2dsb2JhbF90cmFwaGFuZGxlcnMsICJhdXRoIHRyYXAiIH0sCisgICAgeyAmbmV0c25tcF9wcmVfZ2xvYmFsX3RyYXBoYW5kbGVycywgInByZS1nbG9iYWwgdHJhcCIgfSwKKyAgICB7IE5VTEwsICJ0cmFwIHNwZWNpZmljIiB9LAorICAgIHsgJm5ldHNubXBfcG9zdF9nbG9iYWxfdHJhcGhhbmRsZXJzLCAiZ2xvYmFsIiB9LAorICAgIHsgTlVMTCwgTlVMTCB9Cit9OworCiAvKgogICogUmVnaXN0ZXIgYSBuZXcgImdsb2JhbCIgdHJhcGhhbmRsZXIsCiAgKiB0byBiZSBhcHBsaWVkIHRvICphbGwqIGluY29taW5nIHRyYXBzCiAgKi8KIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqCi1uZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoaW50IGxpc3QsIE5ldHNubXBfVHJhcF9IYW5kbGVyKiBoYW5kbGVyKSB7CituZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoaW50IGxpc3QsIE5ldHNubXBfVHJhcF9IYW5kbGVyIGhhbmRsZXIpCit7CiAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKIAogICAgIGlmICggIWhhbmRsZXIgKQpAQCAtMzI0LDcgKzM3MSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKLSAgICAgKiBBZGQgdGhpcyBuZXcgaGFuZGxlciB0byB0aGUgZnJvbnQgb2YgdGhlIGFwcHJvcHJpYXRlIGdsb2JhbCBsaXN0CisgICAgICogQWRkIHRoaXMgbmV3IGhhbmRsZXIgdG8gdGhlIGZyb250IG9mIHRoZSBhcHByb3ByaWF0ZSBsaXN0CiAgICAgICogICAob3Igc2hvdWxkIGl0IGdvIG9uIHRoZSBlbmQ/KQogICAgICAqLwogICAgIHRyYXBoLT5oYW5kbGVyID0gaGFuZGxlcjsKQEAgLTM0Miw2ICszODksMTAgQEAKICAgICAgICAgdHJhcGgtPm5leHRoICAgPSBuZXRzbm1wX3Bvc3RfZ2xvYmFsX3RyYXBoYW5kbGVyczsKICAgICAgICAgbmV0c25tcF9wb3N0X2dsb2JhbF90cmFwaGFuZGxlcnMgPSB0cmFwaDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBORVRTTk1QVFJBUERfREVGQVVMVF9IQU5ETEVSOgorICAgICAgICB0cmFwaC0+bmV4dGggICA9IG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnM7CisgICAgICAgIG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnMgPSB0cmFwaDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZnJlZSggdHJhcGggKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNDksMzEgKzQwMCwxNCBAQAogICAgIHJldHVybiB0cmFwaDsKIH0KIAotCiAvKgogICogUmVnaXN0ZXIgYSBuZXcgImRlZmF1bHQiIHRyYXBoYW5kbGVyLCB0byBiZSBhcHBsaWVkIHRvIGFsbAogICogdHJhcHMgd2l0aCBubyBzcGVjaWZpYyB0cmFwIGhhbmRsZXJzIG9mIHRoZWlyIG93bi4KICAqLwogbmV0c25tcF90cmFwZF9oYW5kbGVyICoKLW5ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIoIE5ldHNubXBfVHJhcF9IYW5kbGVyKiBoYW5kbGVyKSB7Ci0gICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKLQotICAgIGlmICggIWhhbmRsZXIgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHRyYXBoID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYXBkX2hhbmRsZXIpOwotICAgIGlmICggIXRyYXBoICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKgotICAgICAqIEFkZCB0aGlzIG5ldyBoYW5kbGVyIHRvIHRoZSBmcm9udCBvZiB0aGUgZGVmYXVsdCBsaXN0Ci0gICAgICogICAob3Igc2hvdWxkIGl0IGdvIG9uIHRoZSBlbmQ/KQotICAgICAqLwotICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfQUxMOyAvKiBjYWxsZXJzIHdpbGwgbGlrZWx5IGNoYW5nZSB0aGlzICovCi0gICAgdHJhcGgtPmhhbmRsZXIgPSBoYW5kbGVyOwotICAgIHRyYXBoLT5uZXh0aCAgID0gbmV0c25tcF9kZWZhdWx0X3RyYXBoYW5kbGVyczsKLSAgICBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzID0gdHJhcGg7Ci0gICAgcmV0dXJuIHRyYXBoOworbmV0c25tcF9hZGRfZGVmYXVsdF90cmFwaGFuZGxlciggTmV0c25tcF9UcmFwX0hhbmRsZXIgaGFuZGxlcikgeworICAgIHJldHVybiBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIpOwogfQogCiAKQEAgLTM5OSw3ICs0MzMsNyBAQAogICAgIHRyYXBoLT5hdXRodHlwZXMgICA9IFRSQVBfQVVUSF9BTEw7IC8qIGNhbGxlcnMgd2lsbCBsaWtlbHkgY2hhbmdlIHRoaXMgKi8KICAgICB0cmFwaC0+aGFuZGxlciAgICAgPSBoYW5kbGVyOwogICAgIHRyYXBoLT50cmFwb2lkX2xlbiA9IHRyYXBPaWRMZW47Ci0gICAgdHJhcGgtPnRyYXBvaWQgPSBuZXRzbm1wX21lbWR1cCh0cmFwT2lkLCBzaXplb2Yob2lkKSAqIHRyYXBPaWRMZW4pOworICAgIHRyYXBoLT50cmFwb2lkICAgICA9IHNubXBfZHVwbGljYXRlX29iamlkKHRyYXBPaWQsIHRyYXBPaWRMZW4pOwogCiAgICAgLyoKICAgICAgKiBOb3cgdHJ5IHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZSB0cmFwLXNwZWNpZmljCkBAIC01MTQsOCArNTQ4LDEzIEBACiBuZXRzbm1wX2dldF90cmFwaGFuZGxlciggb2lkICp0cmFwT2lkLCBpbnQgdHJhcE9pZExlbiApIHsKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogICAgIAotICAgIGlmICghdHJhcE9pZCB8fCAhdHJhcE9pZExlbikKKyAgICBpZiAoIXRyYXBPaWQgfHwgIXRyYXBPaWRMZW4pIHsKKyAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQ6bG9va3VwIiwgImdldF90cmFwaGFuZGxlciBubyBPSUQhXG4iKSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBERUJVR01TR1RMKCggInNubXB0cmFwZDpsb29rdXAiLCAiTG9va2luZyB1cCBUcmFwIE9JRDogIikpOworICAgIERFQlVHTVNHT0lEKCgic25tcHRyYXBkOmxvb2t1cCIsIHRyYXBPaWQsIHRyYXBPaWRMZW4pKTsKKyAgICBERUJVR01TRygoICJzbm1wdHJhcGQ6bG9va3VwIiwgIlxuIikpOwogCiAgICAgLyoKICAgICAgKiBMb29rIGZvciBhIG1hdGNoaW5nIE9JRCwgYW5kIHJldHVybiB0aGF0IGxpc3QuLi4KQEAgLTUzMCw3ICs1NjksOCBAQAogICAgICAgICBpZiAoISh0cmFwaC0+ZmxhZ3MgJiBORVRTTk1QX1RSQVBIQU5ETEVSX0ZMQUdfTUFUQ0hfVFJFRSkpIHsKICAgICAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKHRyYXBoLT50cmFwb2lkLCB0cmFwaC0+dHJhcG9pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwT2lkLCB0cmFwT2lkTGVuKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZ2V0X3RyYXBoYW5kbGVyIGV4YWN0IG1hdGNoICgleClcbiIsIHRyYXBoKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQ6bG9va3VwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldF90cmFwaGFuZGxlciBleGFjdCBtYXRjaCAoJXApXG4iLCB0cmFwaCkpOwogCSAgICAgICAgcmV0dXJuIHRyYXBoOwogICAgICAgICAgICAgfQogCX0gZWxzZSB7CkBAIC01NDgsMTEgKzU4OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUodHJhcGgtPnRyYXBvaWQsIHRyYXBoLT50cmFwb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcE9pZCwgdHJhcE9pZExlbikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZ2V0X3RyYXBoYW5kbGVyIHN0cmljdCBzdWJ0cmVlIG1hdGNoICgleClcbiIsIHRyYXBoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZDpsb29rdXAiLCAiZ2V0X3RyYXBoYW5kbGVyIHN0cmljdCBzdWJ0cmVlIG1hdGNoICglcClcbiIsIHRyYXBoKSk7CiAJICAgICAgICAgICAgICAgIHJldHVybiB0cmFwaDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImdldF90cmFwaGFuZGxlciBzdWJ0cmVlIG1hdGNoICgleClcbiIsIHRyYXBoKSk7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkOmxvb2t1cCIsICJnZXRfdHJhcGhhbmRsZXIgc3VidHJlZSBtYXRjaCAoJXApXG4iLCB0cmFwaCkpOwogCSAgICAgICAgICAgIHJldHVybiB0cmFwaDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01NjIsNyArNjAyLDcgQEAKICAgICAvKgogICAgICAqIC4uLi4gb3IgZmFpbGluZyB0aGF0LCByZXR1cm4gdGhlICJkZWZhdWx0IiBsaXN0ICh3aGljaCBtYXkgYmUgTlVMTCkKICAgICAgKi8KLSAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJnZXRfdHJhcGhhbmRsZXIgZGVmYXVsdCAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkOmxvb2t1cCIsICJnZXRfdHJhcGhhbmRsZXIgZGVmYXVsdCAoJXApXG4iLAogCQkJICAgIG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnMpKTsKICAgICByZXR1cm4gbmV0c25tcF9kZWZhdWx0X3RyYXBoYW5kbGVyczsKIH0KQEAgLTU4Nyw3ICs2MjcsNiBAQAogICAgIHVfY2hhciAgICAgICAgICpyYnVmID0gTlVMTDsKICAgICBzaXplX3QgICAgICAgICAgcl9sZW4gPSA2NCwgb19sZW4gPSAwOwogICAgIGludCAgICAgICAgICAgICB0cnVuYyA9IDA7Ci0gICAgZXh0ZXJuIGludCAgICAgIFN5c2xvZ1RyYXA7CiAKICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJzeXNsb2dfaGFuZGxlclxuIikpOwogCkBAIC02NzAsNyArNzA5LDYgQEAKICAgICB1X2NoYXIgICAgICAgICAqcmJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90ICAgICAgICAgIHJfbGVuID0gNjQsIG9fbGVuID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdHJ1bmMgPSAwOwotICAgIGV4dGVybiBpbnQgICAgICBkcm9wYXV0aDsKIAogICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgInByaW50X2hhbmRsZXJcbiIpKTsKIApAQCAtNzM4LDE1OSArNzc2LDExIEBACiB9CiAKIAorI2RlZmluZSBFWEVDVVRFX0ZPUk1BVAkiJUJcbiViXG4lVlxuJXZcbiIKKwogLyoKICAqICBUcmFwIGhhbmRsZXIgZm9yIGludm9raW5nIGEgc3VpdGFibGUgc2NyaXB0CiAgKi8KLXZvaWQKLXNlbmRfaGFuZGxlcl9kYXRhKEZJTEUgKiBmaWxlLCBzdHJ1Y3QgaG9zdGVudCAqaG9zdCwKLSAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpwZHUsIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQpCi17Ci0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHRtcHZhciwgKnZhcnM7Ci0gICAgc3RhdGljIG9pZCAgICAgIHRyYXBvaWRzW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDUsIDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgc25tcHN5c3VwdGltZVtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCAzLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXB0cmFwb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDQsIDEsIDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgc25tcHRyYXBlbnRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNCwgMywgMCB9OwotICAgIHN0YXRpYyBvaWQgICAgICBzbm1wdHJhcGFkZHJbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTgsIDEsIDMsIDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgc25tcHRyYXBjb21bXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTgsIDEsIDQsIDAgfTsKLSAgICBvaWQgICAgICAgICAgICAgZW50dHJhcG9pZFtNQVhfT0lEX0xFTl07Ci0gICAgaW50ICAgICAgICAgICAgIGVudHRyYXBsZW4gPSBwZHUtPmVudGVycHJpc2VfbGVuZ3RoOwotCi0gICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmIHRyYW5zcG9ydC0+Zl9mbXRhZGRyICE9IE5VTEwpIHsKLSAgICAgICAgY2hhciAqdHN0ciA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKLSAgICAgICAgaWYgKHRzdHIgIT0gTlVMTCkgewotICAgICAgICAgICAgZnByaW50ZihmaWxlLCAiJXNcbiVzXG4iLCBob3N0ID8gaG9zdC0+aF9uYW1lIDogdHN0ciwgdHN0cik7Ci0gICAgICAgICAgICBmcmVlKHRzdHIpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnByaW50ZihmaWxlLCAiJXNcbjxVTktOT1dOPlxuIiwgaG9zdCA/IGhvc3QtPmhfbmFtZSA6ICI8VU5LTk9XTj4iKTsKLSAgICB9Ci0gICAgaWYgKHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19UUkFQKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGNvbnZlcnQgYSB2MSB0cmFwIHRvIGEgdjIgdmFyaWFibGUgYmluZGluZyBsaXN0OgotICAgICAgICAgKiBUaGUgdXB0aW1lIGFuZCB0cmFwT0lEIGdvIGZpcnN0IGluIHRoZSBsaXN0LiAKLSAgICAgICAgICovCi0gICAgICAgIHRtcHZhci52YWwuaW50ZWdlciA9IChsb25nICopICZwZHUtPnRpbWU7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gc2l6ZW9mKHBkdS0+dGltZSk7Ci0gICAgICAgIHRtcHZhci50eXBlID0gQVNOX1RJTUVUSUNLUzsKLSAgICAgICAgZnByaW50X3ZhcmlhYmxlKGZpbGUsIHNubXBzeXN1cHRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc25tcHN5c3VwdGltZSkgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgICAgIHRtcHZhci50eXBlID0gQVNOX09CSkVDVF9JRDsKLSAgICAgICAgaWYgKHBkdS0+dHJhcF90eXBlID09IFNOTVBfVFJBUF9FTlRFUlBSSVNFU1BFQ0lGSUMpIHsKLSAgICAgICAgICAgIG1lbWNweShlbnR0cmFwb2lkLCBwZHUtPmVudGVycHJpc2UsIHNpemVvZihvaWQpICogZW50dHJhcGxlbik7Ci0gICAgICAgICAgICBpZiAoZW50dHJhcG9pZFtlbnR0cmFwbGVuIC0gMV0gIT0gMCkKLSAgICAgICAgICAgICAgICBlbnR0cmFwb2lkW2VudHRyYXBsZW4rK10gPSAwOwotICAgICAgICAgICAgZW50dHJhcG9pZFtlbnR0cmFwbGVuKytdID0gcGR1LT5zcGVjaWZpY190eXBlOwotICAgICAgICAgICAgdG1wdmFyLnZhbC5vYmppZCA9IGVudHRyYXBvaWQ7Ci0gICAgICAgICAgICB0bXB2YXIudmFsX2xlbiA9IGVudHRyYXBsZW4gKiBzaXplb2Yob2lkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRyYXBvaWRzWzldID0gcGR1LT50cmFwX3R5cGUgKyAxOwotICAgICAgICAgICAgdG1wdmFyLnZhbC5vYmppZCA9IHRyYXBvaWRzOwotICAgICAgICAgICAgdG1wdmFyLnZhbF9sZW4gPSAxMCAqIHNpemVvZihvaWQpOwotICAgICAgICB9Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wdHJhcG9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzbm1wdHJhcG9pZCkgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgfQotICAgIC8qCi0gICAgICogZG8gdGhlIHZhcmlhYmxlcyBpbiB0aGUgcGR1IAotICAgICAqLwotICAgIGZvciAodmFycyA9IHBkdS0+dmFyaWFibGVzOyB2YXJzOyB2YXJzID0gdmFycy0+bmV4dF92YXJpYWJsZSkgewotICAgICAgICBmcHJpbnRfdmFyaWFibGUoZmlsZSwgdmFycy0+bmFtZSwgdmFycy0+bmFtZV9sZW5ndGgsIHZhcnMpOwotICAgIH0KLSAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1RSQVApIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogY29udmVydCBhIHYxIHRyYXAgdG8gYSB2MiB2YXJpYWJsZSBiaW5kaW5nIGxpc3Q6Ci0gICAgICAgICAqIFRoZSBlbnRlcnByaXNlIGdvZXMgbGFzdC4gCi0gICAgICAgICAqLwotICAgICAgICB0bXB2YXIudmFsLnN0cmluZyA9IHBkdS0+YWdlbnRfYWRkcjsKLSAgICAgICAgdG1wdmFyLnZhbF9sZW4gPSA0OwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9JUEFERFJFU1M7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wdHJhcGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc25tcHRyYXBhZGRyKSAvIHNpemVvZihvaWQpLCAmdG1wdmFyKTsKLSAgICAgICAgdG1wdmFyLnZhbC5zdHJpbmcgPSBwZHUtPmNvbW11bml0eTsKLSAgICAgICAgdG1wdmFyLnZhbF9sZW4gPSBwZHUtPmNvbW11bml0eV9sZW47Ci0gICAgICAgIHRtcHZhci50eXBlID0gQVNOX09DVEVUX1NUUjsKLSAgICAgICAgZnByaW50X3ZhcmlhYmxlKGZpbGUsIHNubXB0cmFwY29tLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNubXB0cmFwY29tKSAvIHNpemVvZihvaWQpLCAmdG1wdmFyKTsKLSAgICAgICAgdG1wdmFyLnZhbC5vYmppZCA9IHBkdS0+ZW50ZXJwcmlzZTsKLSAgICAgICAgdG1wdmFyLnZhbF9sZW4gPSBwZHUtPmVudGVycHJpc2VfbGVuZ3RoICogc2l6ZW9mKG9pZCk7Ci0gICAgICAgIHRtcHZhci50eXBlID0gQVNOX09CSkVDVF9JRDsKLSAgICAgICAgZnByaW50X3ZhcmlhYmxlKGZpbGUsIHNubXB0cmFwZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNubXB0cmFwZW50KSAvIHNpemVvZihvaWQpLCAmdG1wdmFyKTsKLSAgICB9Ci19Ci0KLXZvaWQKLWRvX2V4dGVybmFsKGNoYXIgKmNtZCwgc3RydWN0IGhvc3RlbnQgKmhvc3QsCi0gICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1LCBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0KQotewotICAgIEZJTEUgICAgICAgICAgICpmaWxlOwotICAgIGludCAgICAgICAgICAgICBvbGRxdWljaywgcmVzdWx0OwotCi0gICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nOiAlc1xuIiwgY21kKSk7Ci0gICAgb2xkcXVpY2sgPSBzbm1wX2dldF9xdWlja19wcmludCgpOwotICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KDEpOwotICAgIGlmIChjbWQpIHsKLSNpZm5kZWYgV0lOMzIKLSAgICAgICAgaW50ICAgICAgICAgICAgIGZkWzJdOwotICAgICAgICBpbnQgICAgICAgICAgICAgcGlkOwotCi0gICAgICAgIGlmIChwaXBlKGZkKSkgewotICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJwaXBlIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChwaWQgPSBmb3JrKCkpID09IDApIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBjaGlsZCAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgY2xvc2UoMCk7Ci0gICAgICAgICAgICBpZiAoZHVwKGZkWzBdKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJkdXAiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsb3NlKGZkWzFdKTsKLSAgICAgICAgICAgIGNsb3NlKGZkWzBdKTsKLSAgICAgICAgICAgIHN5c3RlbShjbWQpOwotICAgICAgICAgICAgZXhpdCgwKTsKLSAgICAgICAgfSBlbHNlIGlmIChwaWQgPiAwKSB7Ci0gICAgICAgICAgICBmaWxlID0gZmRvcGVuKGZkWzFdLCAidyIpOwotICAgICAgICAgICAgc2VuZF9oYW5kbGVyX2RhdGEoZmlsZSwgaG9zdCwgcGR1LCB0cmFuc3BvcnQpOwotICAgICAgICAgICAgZmNsb3NlKGZpbGUpOwotICAgICAgICAgICAgY2xvc2UoZmRbMF0pOwotICAgICAgICAgICAgY2xvc2UoZmRbMV0pOwotICAgICAgICAgICAgaWYgKHdhaXRwaWQocGlkLCAmcmVzdWx0LCAwKSA8IDApIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIndhaXRwaWQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigiZm9yayIpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBjaGFyICAgICAgICAgICAgY29tbWFuZF9idWZbMTI4XTsKLSAgICAgICAgY2hhciAgICAgICAgICAgIGZpbGVfYnVmW0xfdG1wbmFtXTsKLQotICAgICAgICB0bXBuYW0oZmlsZV9idWYpOwotICAgICAgICBmaWxlID0gZm9wZW4oZmlsZV9idWYsICJ3Iik7Ci0gICAgICAgIGlmICghZmlsZSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJmb3BlbjogJXM6ICVzXG4iLCBmaWxlX2J1Ziwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNlbmRfaGFuZGxlcl9kYXRhKGZpbGUsIGhvc3QsIHBkdSwgdHJhbnNwb3J0KTsKLSAgICAgICAgICAgIGZjbG9zZShmaWxlKTsKLSAgICAgICAgICAgIHNucHJpbnRmKGNvbW1hbmRfYnVmLCBzaXplb2YoY29tbWFuZF9idWYpLAotICAgICAgICAgICAgICAgICAgICAgIiVzIDwgJXMiLCBjbWQsIGZpbGVfYnVmKTsKLSAgICAgICAgICAgIGNvbW1hbmRfYnVmWyBzaXplb2YoY29tbWFuZF9idWYpLTEgXSA9IDA7Ci0gICAgICAgICAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZF9idWYpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInN5c3RlbTogJXM6ICVzXG4iLCBjb21tYW5kX2J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzeXN0ZW06ICVzOiAlZFxuIiwgY29tbWFuZF9idWYsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZW1vdmUoZmlsZV9idWYpOwotICAgICAgICB9Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdJTjMyICovCi0gICAgfQotICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KG9sZHF1aWNrKTsKLX0KLQotI2RlZmluZSBFWEVDVVRFX0ZPUk1BVAkiJUJcbiViXG4lVlxuJXZcbiIKLQogaW50ICAgY29tbWFuZF9oYW5kbGVyKCBuZXRzbm1wX3BkdSAgICAgICAgICAgKnBkdSwKICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnQgICAgICp0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqaGFuZGxlcikKQEAgLTkyOCwxNiArODE4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLT5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Ml9wZHUsIHRyYW5zcG9ydCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJleGVjdXRlIGZvcm1hdFxuIikpOwotICAgICAgICAgICAgcmVhbGxvY19mb3JtYXRfdHJhcCgmcmJ1ZiwgJnJfbGVuLCAmb19sZW4sIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDVVRFX0ZPUk1BVCwKKwkgICAgaWYgKCBwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCAmJiBleGVjX2Zvcm1hdDEgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZXhlYyB2MSA9ICclcydcbiIsIGV4ZWNfZm9ybWF0MSkpOworICAgICAgICAgICAgICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoJnJidWYsICZyX2xlbiwgJm9fbGVuLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY19mb3JtYXQxLCBwZHUsIHRyYW5zcG9ydCk7CisJICAgIH0gZWxzZSBpZiAoIHBkdS0+Y29tbWFuZCAhPSBTTk1QX01TR19UUkFQICYmIGV4ZWNfZm9ybWF0MiApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJleGVjIHYyLzMgPSAnJXMnXG4iLCBleGVjX2Zvcm1hdDIpKTsKKyAgICAgICAgICAgICAgICByZWFsbG9jX2Zvcm1hdF90cmFwKCZyYnVmLCAmcl9sZW4sICZvX2xlbiwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfZm9ybWF0MiwgcGR1LCB0cmFuc3BvcnQpOworCSAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImV4ZWN1dGUgZm9ybWF0XG4iKSk7CisgICAgICAgICAgICAgICAgcmVhbGxvY19mb3JtYXRfdHJhcCgmcmJ1ZiwgJnJfbGVuLCAmb19sZW4sIDEsIEVYRUNVVEVfRk9STUFULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjJfcGR1LCB0cmFuc3BvcnQpOworICAgICAgICAgICAgfQogCX0KIAogICAgICAgICAvKgogICAgICAgICAgKiAgYW5kIHBhc3MgdGhpcyBmb3JtYXR0ZWQgc3RyaW5nIHRvIHRoZSBjb21tYW5kIHNwZWNpZmllZAogICAgICAgICAgKi8KLSAgICAgICAgcnVuX3NoZWxsX2NvbW1hbmQoaGFuZGxlci0+dG9rZW4sIChjaGFyKilyYnVmLCBOVUxMLCAwKTsgICAvKiBOb3QgaW50ZXJlc3RlZCBpbiBvdXRwdXQgKi8KKyAgICAgICAgcnVuX3NoZWxsX2NvbW1hbmQoaGFuZGxlci0+dG9rZW4sIChjaGFyKilyYnVmLCBOVUxMLCBOVUxMKTsgICAvKiBOb3QgaW50ZXJlc3RlZCBpbiBvdXRwdXQgKi8KICAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQob2xkcXVpY2spOwogICAgICAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1RSQVApCiAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHYyX3BkdSk7CkBAIC05NTAsMjMgKzg0OSw2IEBACiAKIAogLyoKLSAqICBUcmFwIGhhbmRsZXIgZm9yIGRvaW5nIHNvbWV0aGluZyB3aXRoICJldmVudCIgdHJhcHMKLSAqICAgICAgKG5vdCBlbnRpcmVseSBjbGVhciB3aGF0IHRoaXMgaXMgYWJvdXQgPz8/KQotICovCi0JLyogWFhYIC0gaW4gc25tcHRyYXBkLmMgKi8KLXZvaWQgZXZlbnRfaW5wdXQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdnApOwotCi1pbnQgICBldmVudF9oYW5kbGVyKCBuZXRzbm1wX3BkdSAgICAgICAgICAgKnBkdSwKLSAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICAgICAqdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICpoYW5kbGVyKQotewotICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImV2ZW50X2hhbmRsZXJcbiIpKTsKLSAgICBldmVudF9pbnB1dChwZHUtPnZhcmlhYmxlcyk7Ci0gICAgcmV0dXJuIE5FVFNOTVBUUkFQRF9IQU5ETEVSX09LOwotfQotCi0KLS8qCiAgKiAgVHJhcCBoYW5kbGVyIGZvciBmb3J3YXJkaW5nIHRvIHRoZSBBZ2VudFggbWFzdGVyIGFnZW50CiAgKi8KIGludCBheGZvcndhcmRfaGFuZGxlciggbmV0c25tcF9wZHUgICAgICAgICAgICpwZHUsCkBAIC0xMDU1LDcgKzkzNyw3IEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzOwogICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydCA9IChuZXRzbm1wX3RyYW5zcG9ydCAqKSBtYWdpYzsKLSAgICBpbnQgcmV0OworICAgIGludCByZXQsIGlkeDsKICAgICBleHRlcm4gbmV0c25tcF90cmFwZF9oYW5kbGVyICpuZXRzbm1wX2F1dGhfZ2xvYmFsX3RyYXBoYW5kbGVyczsKICAgICBleHRlcm4gbmV0c25tcF90cmFwZF9oYW5kbGVyICpuZXRzbm1wX3ByZV9nbG9iYWxfdHJhcGhhbmRsZXJzOwogICAgIGV4dGVybiBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKm5ldHNubXBfcG9zdF9nbG9iYWxfdHJhcGhhbmRsZXJzOwpAQCAtMTE1Niw3NyArMTAzOCwyNiBAQAogICAgICAgICAgKiAgT0sgLSBFbm91Z2ggd2FmZmxpbmcsIGxldCdzIGdldCB0byB3b3JrLi4uLi4KIAkgKi8KIAotICAgICAgICAvKgotCSAqICBhKSBhdXRoZW50aWNhdGlvbiBoYW5kbGVycwotCSAqLwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfYXV0aF9nbG9iYWxfdHJhcGhhbmRsZXJzOwotICAgICAgICBERUJVR01TR1RMKCgic25tcHRyYXBkIiwgIlJ1bm5pbmcgYXV0aCB0cmFwIGhhbmRsZXJzXG4iKSk7Ci0Jd2hpbGUgKHRyYXBoKSB7Ci0gICAgICAgICAgICBpZiAoIW5ldHNubXBfdHJhcGRfY2hlY2tfYXV0aCh0cmFwaC0+YXV0aHR5cGVzKSkgewotICAgICAgICAgICAgICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB3ZSBjb250aW51ZSBvbiBhbmQgc2tpcCB0aGlzIG9uZSAqLwotICAgICAgICAgICAgfQotCSAgICByZXQgPSAoKih0cmFwaC0+aGFuZGxlcikpKHBkdSwgdHJhbnNwb3J0LCB0cmFwaCk7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0ZJTklTSCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfQlJFQUspCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0JICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotCX0KKyAgICAgICAgZm9yKCBpZHggPSAwOyBoYW5kbGVyc1tpZHhdLmRlc2NyOyArK2lkeCApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZyAlcyBoYW5kbGVyc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzW2lkeF0uZGVzY3IpKTsKKyAgICAgICAgICAgIGlmIChOVUxMID09IGhhbmRsZXJzW2lkeF0uaGFuZGxlcikgLyogc3BlY2lmaWMgKi8KKyAgICAgICAgICAgICAgICB0cmFwaCA9IG5ldHNubXBfZ2V0X3RyYXBoYW5kbGVyKHRyYXBPaWQsIHRyYXBPaWRMZW4pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRyYXBoID0gKmhhbmRsZXJzW2lkeF0uaGFuZGxlcjsKIAotICAgICAgICAvKgotCSAqICBiKSBwcmUtc3BlY2lmaWMgZ2xvYmFsIGhhbmRsZXJzCi0JICovCi0gICAgICAgIHRyYXBoID0gbmV0c25tcF9wcmVfZ2xvYmFsX3RyYXBoYW5kbGVyczsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nIHByZS1nbG9iYWwgdHJhcCBoYW5kbGVyc1xuIikpOwotCXdoaWxlICh0cmFwaCkgewotICAgICAgICAgICAgaWYgKCFuZXRzbm1wX3RyYXBkX2NoZWNrX2F1dGgodHJhcGgtPmF1dGh0eXBlcykpIHsKLSAgICAgICAgICAgICAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KLSAgICAgICAgICAgIH0KLQkgICAgcmV0ID0gKCoodHJhcGgtPmhhbmRsZXIpKShwZHUsIHRyYW5zcG9ydCwgdHJhcGgpOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9GSU5JU0gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0JSRUFLKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCSAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLQl9CisgICAgICAgICAgICBmb3IoIDsgdHJhcGg7IHRyYXBoID0gdHJhcGgtPm5leHRoKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuZXRzbm1wX3RyYXBkX2NoZWNrX2F1dGgodHJhcGgtPmF1dGh0eXBlcykpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB3ZSBjb250aW51ZSBvbiBhbmQgc2tpcCB0aGlzIG9uZSAqLwogCi0gICAgICAgIC8qCi0JICogIGMpIHRyYXAtc3BlY2lmaWMgaGFuZGxlcnMKLQkgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nIHRyYXAgc3BlY2lmaWMgaGFuZGxlcnNcbiIpKTsKLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2dldF90cmFwaGFuZGxlcih0cmFwT2lkLCB0cmFwT2lkTGVuKTsKLQl3aGlsZSAodHJhcGgpIHsKLSAgICAgICAgICAgIGlmICghbmV0c25tcF90cmFwZF9jaGVja19hdXRoKHRyYXBoLT5hdXRodHlwZXMpKSB7Ci0gICAgICAgICAgICAgICAgdHJhcGggPSB0cmFwaC0+bmV4dGg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7IC8qIHdlIGNvbnRpbnVlIG9uIGFuZCBza2lwIHRoaXMgb25lICovCi0gICAgICAgICAgICB9Ci0JICAgIHJldCA9ICgqKHRyYXBoLT5oYW5kbGVyKSkocGR1LCB0cmFuc3BvcnQsIHRyYXBoKTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfRklOSVNIKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9CUkVBSykKLSAgICAgICAgICAgICAgICBicmVhazsKLQkgICAgdHJhcGggPSB0cmFwaC0+bmV4dGg7Ci0JfQorICAgICAgICAgICAgICAgIHJldCA9ICgqKHRyYXBoLT5oYW5kbGVyKSkocGR1LCB0cmFuc3BvcnQsIHRyYXBoKTsKKyAgICAgICAgICAgICAgICBpZihORVRTTk1QVFJBUERfSEFORExFUl9GSU5JU0ggPT0gcmV0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0JSRUFLKQorICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbW92ZSBvbiB0byBuZXh0IHR5cGUgKi8KKyAgICAgICAgICAgIH0gLyogdHJhcGggKi8KKyAgICAgICAgfSAvKiBoYW5kbGVycyAqLwogCi0gICAgICAgIC8qCi0JICogIGQpIG90aGVyIGdsb2JhbCBoYW5kbGVycwotCSAqLwotICAgICAgICBERUJVR01TR1RMKCgic25tcHRyYXBkIiwgIlJ1bm5pbmcgZ2xvYmFsIGhhbmRsZXJzXG4iKSk7Ci0gICAgICAgIHRyYXBoID0gbmV0c25tcF9wb3N0X2dsb2JhbF90cmFwaGFuZGxlcnM7Ci0Jd2hpbGUgKHRyYXBoKSB7Ci0gICAgICAgICAgICBpZiAoIW5ldHNubXBfdHJhcGRfY2hlY2tfYXV0aCh0cmFwaC0+YXV0aHR5cGVzKSkgewotICAgICAgICAgICAgICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB3ZSBjb250aW51ZSBvbiBhbmQgc2tpcCB0aGlzIG9uZSAqLwotICAgICAgICAgICAgfQotCSAgICByZXQgPSAoKih0cmFwaC0+aGFuZGxlcikpKHBkdSwgdHJhbnNwb3J0LCB0cmFwaCk7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0ZJTklTSCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfQlJFQUspCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0JICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotCX0KIAogCWlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfSU5GT1JNKSB7CiAJICAgIG5ldHNubXBfcGR1ICpyZXBseSA9IHNubXBfY2xvbmVfcGR1KHBkdSk7CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oIGIvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaAppbmRleCA5MjEyZDEyLi4wOTdjMDJkIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oCisrKyBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIE5ldHNubXBfVHJhcF9IYW5kbGVyICAgZm9yd2FyZF9oYW5kbGVyOwogTmV0c25tcF9UcmFwX0hhbmRsZXIgICBheGZvcndhcmRfaGFuZGxlcjsKIE5ldHNubXBfVHJhcF9IYW5kbGVyICAgbm90aWZpY2F0aW9uX2hhbmRsZXI7CitOZXRzbm1wX1RyYXBfSGFuZGxlciAgIG15c3FsX2hhbmRsZXI7CiAKIHZvaWQgZnJlZV90cmFwMV9mbXQodm9pZCk7CiB2b2lkIGZyZWVfdHJhcDJfZm10KHZvaWQpOwpAQCAtNDQsNiArNDUsNyBAQAogI2RlZmluZSBORVRTTk1QVFJBUERfQVVUSF9IQU5ETEVSICAgIDEKICNkZWZpbmUgTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSICAgICAyCiAjZGVmaW5lIE5FVFNOTVBUUkFQRF9QT1NUX0hBTkRMRVIgICAgMworI2RlZmluZSBORVRTTk1QVFJBUERfREVGQVVMVF9IQU5ETEVSIDQKIAogI2RlZmluZSBORVRTTk1QVFJBUERfSEFORExFUl9PSyAgICAgIDEJLyogU3VjY2VlZCwgJiBrZWVwIGdvaW5nICovCiAjZGVmaW5lIE5FVFNOTVBUUkFQRF9IQU5ETEVSX0ZBSUwgICAgMgkvKiBGYWlsZWQgYnV0IGtlZXAgZ29pbmcgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2xvZy5jIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKaW5kZXggYmMwYjFlMy4uZjQ4ODMwMiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfbG9nLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKQEAgLTYxOSw2ICs2MTksOCBAQAogICAgIGNoYXIgICAgICAgICAgICBmbXRfY21kID0gb3B0aW9ucy0+Y21kOyAgICAgLyogd2hhdCB3ZSdyZSBmb3JtYXR0aW5nICovCiAgICAgdV9jaGFyICAgICAgICAgKnRlbXBfYnVmID0gTlVMTDsKICAgICBzaXplX3QgICAgICAgICAgdGVtcF9idWZfbGVuID0gNjQsIHRlbXBfb3V0X2xlbiA9IDA7CisgICAgY2hhciAgICAgICAgICAgKnRzdHI7CisgICAgdW5zaWduZWQgaW50ICAgIG9mbGFnczsKIAogICAgIGlmICgodGVtcF9idWYgPSBjYWxsb2ModGVtcF9idWZfbGVuLCAxKSkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gMDsKQEAgLTY3NCwxMzAgKzY3Niw1OSBAQAogICAgICAgICAgKiBXcml0ZSB0aGUgbnVtZXJpY2FsIHRyYW5zcG9ydCBpbmZvcm1hdGlvbi4gIAogICAgICAgICAgKi8KICAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmIHRyYW5zcG9ydC0+Zl9mbXRhZGRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICp0c3RyID0KLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQtPmZfZm10YWRkcih0cmFuc3BvcnQsIHBkdS0+dHJhbnNwb3J0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsICh1X2NoYXIgKil0c3RyKSkgewotICAgICAgICAgICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnJlZSh0c3RyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXBfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnJlZSh0ZW1wX2J1Zik7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgb2ZsYWdzID0gdHJhbnNwb3J0LT5mbGFnczsKKyAgICAgICAgICAgIHRyYW5zcG9ydC0+ZmxhZ3MgJj0gfk5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfSE9TVE5BTUU7CisgICAgICAgICAgICB0c3RyID0gdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKKyAgICAgICAgICAgIHRyYW5zcG9ydC0+ZmxhZ3MgPSBvZmxhZ3M7CisgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRzdHIpIGdvdG8gbm9pcDsKKyAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAodV9jaGFyICopdHN0cikpIHsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9idWYpOworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0c3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmcmVlKHRzdHIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgU05NUF9GUkVFKHRzdHIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCi0gICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSI8VU5LTk9XTj4iKSkgewotICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgIH0KK25vaXA6CisgICAgICAgICAgICBpZiAoIXNubXBfc3RyY2F0KCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVfY2hhciopIjxVTktOT1dOPiIpKSB7CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfYnVmKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKIAotICAgICAgICAvKgotICAgICAgICAgKiBXcml0ZSBhIGhvc3QgbmFtZS4gIAotICAgICAgICAgKi8KICAgICBjYXNlIENIUl9QRFVfTkFNRToKICAgICAgICAgLyoKLSAgICAgICAgICogUmlnaHQsIGFwcGFyZW50bHkgYSBuYW1lIGxvb2t1cCBpcyB3YW50ZWQuICBUaGlzIGlzIG9ubHkgcmVhc29uYWJsZQotICAgICAgICAgKiBmb3IgdGhlIFVEUCBhbmQgVENQIHRyYW5zcG9ydCBkb21haW5zICh3ZSBkb24ndCB3YW50IHRvIHRyeSB0byBiZQotICAgICAgICAgKiB0b28gY2xldmVyIGhlcmUpLiAgCisgICAgICAgICAqIFRyeSB0byBjb252ZXJ0IHRoZSBudW1lcmljYWwgdHJhbnNwb3J0IGluZm9ybWF0aW9uCisgICAgICAgICAqICBpbnRvIGEgaG9zdG5hbWUuICBPciByYXRoZXIsIGhhdmUgdGhlIHRyYW5zcG9ydC1zcGVjaWZpYworICAgICAgICAgKiAgYWRkcmVzcyBmb3JtYXR0aW5nIHJvdXRpbmUgZG8gdGhpcy4KKyAgICAgICAgICogT3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gdGhlIG51bWVyaWMgYWRkcmVzcyBmb3JtYXQuCiAgICAgICAgICAqLwotI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RDUF9ET01BSU4KLSAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmICh0cmFuc3BvcnQtPmRvbWFpbiA9PSBuZXRzbm1wVURQRG9tYWluIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5kb21haW4gPT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NubXBUQ1BEb21haW4pKSB7Ci0jZWxzZQotICAgICAgICBpZiAodHJhbnNwb3J0ICE9IE5VTEwgJiYgdHJhbnNwb3J0LT5kb21haW4gPT0gbmV0c25tcFVEUERvbWFpbikgewotI2VuZGlmCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBraW5kIG9mIGJsZXRjaGVyb3VzIC0tIGl0IGJyZWFrcyB0aGUgb3BhY2l0eSBvZgotICAgICAgICAgICAgICogdHJhbnNwb3J0X2RhdGEgYnV0IG5ldmVyIG1pbmQgLS0gdGhlIGFsdGVybmF0aXZlIGlzIGEgbG90IG9mCi0gICAgICAgICAgICAgKiBtdW5naW5nIHN0cmluZ3MgZnJvbSBmX2ZtdGFkZHIuICAKLSAgICAgICAgICAgICAqLwotdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF91ZHBfYWRkcl9wYWlyX3MgeyAgIC8qIEZyb20gc25tcFVEUERvbWFpbi5jICovCi0gICAgc3RydWN0IHNvY2thZGRyX2luIHJlbW90ZV9hZGRyOwotICAgIHN0cnVjdCBpbl9hZGRyIGxvY2FsX2FkZHI7Ci19IG5ldHNubXBfdWRwX2FkZHJfcGFpcjsKLQotICAgICAgICAgICAgbmV0c25tcF91ZHBfYWRkcl9wYWlyICphZGRyID0KLSAgICAgICAgICAgICAgICAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopIHBkdS0+dHJhbnNwb3J0X2RhdGE7Ci0gICAgICAgICAgICBpZiAoYWRkciAhPSBOVUxMCi0gICAgICAgICAgICAgICAgJiYgcGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGggPT0KLSAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF91ZHBfYWRkcl9wYWlyKSkgewotICAgICAgICAgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaG9zdCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXRob3N0YnlhZGRyKChjaGFyICopICYoYWRkci0+cmVtb3RlX2FkZHIuc2luX2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluX2FkZHIpLCBBRl9JTkVUKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGhvc3QgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXNubXBfc3RyY2F0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKilob3N0LT5oX25hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcF9idWYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXNubXBfc3RyY2F0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKilpbmV0X250b2EoYWRkci0+cmVtb3RlX2FkZHIuc2luX2FkZHIpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoIXNubXBfc3RyY2F0Ci0gICAgICAgICAgICAgICAgICAgICgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCi0gICAgICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikiPFVOS05PV04+IikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiB0cmFuc3BvcnQtPmZfZm10YWRkciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU29tZSBvdGhlciBkb21haW4gZm9yIHdoaWNoIHdlIGRvIG5vdCBrbm93IGhvdyB0byBkbyBhIG5hbWUKLSAgICAgICAgICAgICAqIGxvb2t1cC4gIEZhbGwgYmFjayB0byB0aGUgZm9ybWF0dGVkIHRyYW5zcG9ydCBhZGRyZXNzLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICp0c3RyID0KLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQtPmZfZm10YWRkcih0cmFuc3BvcnQsIHBkdS0+dHJhbnNwb3J0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsICh1X2NoYXIgKil0c3RyKSkgewotICAgICAgICAgICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnJlZSh0c3RyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXBfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnJlZSh0ZW1wX2J1Zik7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAodHJhbnNwb3J0ICE9IE5VTEwgJiYgdHJhbnNwb3J0LT5mX2ZtdGFkZHIgIT0gTlVMTCkgeworICAgICAgICAgICAgb2ZsYWdzID0gdHJhbnNwb3J0LT5mbGFnczsKKyAgICAgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FQUF9OVU1FUklDX0lQKSkKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzIHw9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfSE9TVE5BTUU7CisgICAgICAgICAgICB0c3RyID0gdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKKyAgICAgICAgICAgIHRyYW5zcG9ydC0+ZmxhZ3MgPSBvZmxhZ3M7CisgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRzdHIpIGdvdG8gbm9ob3N0OworICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICh1X2NoYXIgKil0c3RyKSkgeworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0ZW1wX2J1Zik7CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRzdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRzdHIgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGZyZWUodHN0cik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBTTk1QX0ZSRUUodHN0cik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogV2UgYXJlIGtpbmQgb2Ygc3R1Y2shICAKLSAgICAgICAgICAgICAqLworbm9ob3N0OgogICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSI8VU5LTk9XTj4iKSkgewotICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9idWYpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC04NjQsNyArNzk1LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUgdGhlIGNvbnRleHQgb2lkLiAgCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIXNwcmludF9yZWFsbG9jX29iamlkCisgICAgICAgIGlmICghc3ByaW50X3JlYWxsb2NfaGV4c3RyaW5nCiAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLCBwZHUtPmNvbnRleHRFbmdpbmVJRCwKICAgICAgICAgICAgICBwZHUtPmNvbnRleHRFbmdpbmVJRExlbikpIHsKICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfc3FsLmMgYi9hcHBzL3NubXB0cmFwZF9zcWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGQzZmJlCi0tLSAvZGV2L251bGwKKysrIGIvYXBwcy9zbm1wdHJhcGRfc3FsLmMKQEAgLTAsMCArMSwxMTE1IEBACisvKgorICogRmlsZSAgICAgICA6IHNubXB0cmFwZF9zcWwKKyAqIEF1dGhvciAgICAgOiBSb2JlcnQgU3RvcnkKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAwOSBTY2llbmNlIExvZ2ljLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICoKKyAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgaGFuZGxlciBmb3Igc25tcHRyYXBkIHdoaWNoIHdpbGwgY2FjaGUgaW5jb21pbmcKKyAqIHRyYXBzIGFuZCB0aGVuIHdyaXRlIHRoZW0gdG8gYSBNeVNRTCBkYXRhYmFzZS4KKyAqCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCisKKyNpZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBIQVZFX1dJTlNPQ0tfSAorI2luY2x1ZGUgPHdpbnNvY2suaD4KKyNlbHNlCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGRiLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICJzbm1wdHJhcGRfaGFuZGxlcnMuaCIKKyNpbmNsdWRlICJzbm1wdHJhcGRfYXV0aC5oIgorI2luY2x1ZGUgInNubXB0cmFwZF9sb2cuaCIKKworLyoKKyAqIFNRTCBpbmNsdWRlcworICovCisjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKKyN1bmRlZiBQQUNLQUdFX05BTUUKKyN1bmRlZiBQQUNLQUdFX1NUUklORworI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorI2luY2x1ZGUgPG15X2dsb2JhbC5oPgorI2luY2x1ZGUgPG15X3N5cy5oPgorI2luY2x1ZGUgPG15c3FsLmg+CisjaW5jbHVkZSA8ZXJybXNnLmg+CisKKy8qCisgKiBkZWZpbmUgYSBzdHJ1Y3R1cmUgdG8gaG9sZCBhbGwgdGhlIGZpbGUgZ2xvYmFscworICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3NxbF9nbG9iYWxzX3QgeworICAgIGNoYXIgICAgICAgICpob3N0X25hbWU7ICAgICAgIC8qIHNlcnZlciBob3N0IChkZWY9bG9jYWxob3N0KSAqLworICAgIGNoYXIgICAgICAgICp1c2VyX25hbWU7ICAgICAgIC8qIHVzZXJuYW1lIChkZWY9bG9naW4gbmFtZSkgKi8KKyAgICBjaGFyICAgICAgICAqcGFzc3dvcmQ7ICAgICAgICAvKiBwYXNzd29yZCAoZGVmPW5vbmUpICovCisgICAgdV9pbnQgICAgICAgIHBvcnRfbnVtOyAgICAgICAgLyogcG9ydCBudW1iZXIgKGJ1aWx0LWluIHZhbHVlKSAqLworICAgIGNoYXIgICAgICAgICpzb2NrZXRfbmFtZTsgICAgIC8qIHNvY2tldCBuYW1lIChidWlsdC1pbiB2YWx1ZSkgKi8KKyAgICBjaGFyICAgICAgICAqZGJfbmFtZTsgICAgICAgICAvKiBkYXRhYmFzZSBuYW1lIChkZWY9bm9uZSkgKi8KKyAgICB1X2ludCAgICAgICAgZmxhZ3M7ICAgICAgICAgICAvKiBjb25uZWN0aW9uIGZsYWdzIChub25lKSAqLworICAgIE1ZU1FMICAgICAgICpjb25uOyAgICAgICAgICAgIC8qIGNvbm5lY3Rpb24gKi8KKyAgICB1X2NoYXIgICAgICAgY29ubmVjdGVkOyAgICAgICAvKiBjb25uZWN0ZWQgZmxhZyAqLworICAgIGNvbnN0IGNoYXIgICpncm91cHNbM107CisgICAgTVlTUUxfU1RNVCAgKnRyYXBfc3RtdCwgKnZiX3N0bXQ7IC8qIHByZXBhcmVkIHN0YXRlbWVudHMgKi8KKyAgICB1X2ludCAgICAgICAgYWxhcm1faWQ7ICAgICAgICAvKiBpZCBvZiBwZXJpb2RpYyBzYXZlIGFsYXJtICovCisgICAgbmV0c25tcF9jb250YWluZXIgKnF1ZXVlOyAgICAgLyogY29udGFpbmVyOyB0cmFwcyBwZW5kaW5nIGRhdGFiYXNlIHdyaXRlICovCisgICAgdV9pbnQgICAgICAgIHF1ZXVlX21heDsgICAgICAgLyogYXV0byBzYXZlIHF1ZXVlIHdoZW4gaXQgZ2V0cyB0aGlzIGJpZyAqLworICAgIGludCAgICAgICAgICBxdWV1ZV9pbnRlcnZhbDsgIC8qIGF1dG8gc2F2ZSBldmVyeSBOIHNlY29uZHMgKi8KK30gbmV0c25tcF9zcWxfZ2xvYmFsczsKKworc3RhdGljIG5ldHNubXBfc3FsX2dsb2JhbHMgX3NxbCA9IHsKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIGhvc3QgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHVzZXJuYW1lICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiBwYXNzd29yZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogcG9ydCAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogc29ja2V0ICovCisgICAgIm5ldF9zbm1wIiwgICAgICAgICAgICAvKiBkYXRhYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogY29ubiBmbGFncyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogY29ubmVjdGlvbiAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdGVkICovCisgICAgeyAiY2xpZW50IiwgInNubXB0cmFwZCIsIE5VTEwgfSwgIC8qIGdyb3VwcyB0byByZWFkIGZyb20gLm15LmNuZiAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogdHJhcF9zdG10ICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiB2Yl9zdG10ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBhbGFybV9pZCAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogcXVldWUgKi8KKyAgICAxLCAgICAgICAgICAgICAgICAgICAgIC8qIHF1ZXVlX21heCAqLworICAgIC0xICAgICAgICAgICAgICAgICAgICAgLyogcXVldWVfaW50ZXJ2YWwgKi8KK307CisKKy8qCisgKiBsb2cgdHJhcHMgYXMgdGV4dCwgb3IgYmluYXJ5IGJsb2JzPworICovCisjZGVmaW5lIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUIDEKKworLyoKKyAqIFdlIHdpbGwgYmUgdXNpbmcgcHJlcGFyZWQgc3RhdGVtZW50cyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gVGhpcworICogcmVxdWlyZXMgYSBzcWwgYmluZCBzdHJ1Y3R1cmUgZm9yIGVhY2ggY2VsbCB0byBiZSBpbnNlcnRlZCBpbiB0aGUKKyAqIGRhdGFiYXNlLiBXZSB3aWxsIGJlIHVzaW5nIDIgZ2xvYmFsIHN0YXRpYyBzdHJ1Y3R1cmVzIHRvIGJpbmQgdG8sCisgKiBhbmQgYSBuZXRzbm1wIGNvbnRhaW5lciB0byBzdG9yZSB0aGUgbmVjZXNzYXJ5IGRhdGEgdW50aWwgaXQgaXMKKyAqIHdyaXR0ZW4gdG8gdGhlIGRhdGFiYXNlLiBGaXhlZCBzaXplIGJ1ZmZlcnMgYXJlIGFsc28gdXNlZCB0bworICogc2ltcGxpZnkgbWVtb3J5IG1hbmFnZW1lbnQuCisgKi8KKy8qKiBlbnVtcyBmb3IgdGhlIHRyYXAgZmllbGRzIHRvIGJlIGJvdW5kICovCitlbnVteworICAgIFRCSU5EX0RBVEUgPSAwLCAgICAgICAgICAgLyogdGltZSByZWNlaXZlZCAqLworICAgIFRCSU5EX0hPU1QsICAgICAgICAgICAgICAgLyogc3JjIGlwICovCisgICAgVEJJTkRfVVNFUiwgICAgICAgICAgICAgICAvKiBhdXRoL3VzZXIgaW5mb3JtYXRpb24gKi8KKyAgICBUQklORF9UWVBFLCAgICAgICAgICAgICAgIC8qIHBkdSB0eXBlICovCisgICAgVEJJTkRfVkVSLCAgICAgICAgICAgICAgICAvKiBzbm1wIHZlcnNpb24gKi8KKyAgICBUQklORF9SRVFJRCwgICAgICAgICAgICAgIC8qIHJlcXVlc3QgaWQgKi8KKyAgICBUQklORF9PSUQsICAgICAgICAgICAgICAgIC8qIHRyYXAgT0lEICovCisgICAgVEJJTkRfVFJBTlNQT1JULCAgICAgICAgICAvKiB0cmFuc3BvcnQgKi8KKyAgICBUQklORF9TRUNVUklUWV9NT0RFTCwgICAgIC8qIHNlY3VyaXR5IG1vZGVsICovCisgICAgVEJJTkRfdjNfTVNHSUQsICAgICAgICAgICAvKiB2MyBtc2cgaWQgKi8KKyAgICBUQklORF92M19TRUNVUklUWV9MRVZFTCwgIC8qIHNlY3VyaXR5IGxldmVsICovCisgICAgVEJJTkRfdjNfQ09OVEVYVF9OQU1FLCAgICAvKiBjb250ZXh0ICovCisgICAgVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkUsICAvKiBjb250ZXh0IGVuZ2luZSBpZCAqLworICAgIFRCSU5EX3YzX1NFQ1VSSVRZX05BTUUsICAgLyogc2VjdXJpdHkgbmFtZSAqLworICAgIFRCSU5EX3YzX1NFQ1VSSVRZX0VOR0lORSwgLyogc2VjdXJpdHkgZW5naW5lIGlkICovCisgICAgVEJJTkRfTUFYCit9OworCisvKiogZW51bXMgZm9yIHRoZSB2YXJiaW5kIGZpZWxkcyB0byBiZSBib3VuZCAqLworZW51bSB7CisgICAgVkJJTkRfSUQgPSAwLCAgICAgICAgICAgICAvKiB0cmFwX2lkICovCisgICAgVkJJTkRfT0lELCAgICAgICAgICAgICAgICAvKiB2YXJiaW5kIG9pZCAqLworICAgIFZCSU5EX1RZUEUsICAgICAgICAgICAgICAgLyogdmFyYmluZCB0eXBlICovCisgICAgVkJJTkRfVkFMLCAgICAgICAgICAgICAgICAvKiB2YXJiaW5kIHZhbHVlICovCisgICAgVkJJTkRfTUFYCit9OworCisvKiogYnVmZmVyIHN0cnVjdCBmb3IgdmFyYmluZCBkYXRhICovCit0eXBlZGVmIHN0cnVjdCBzcWxfdmJfYnVmX3QgeworCisgICAgY2hhciAgICAgICpvaWQ7CisgICAgdV9sb25nICAgICBvaWRfbGVuOworCisgICAgdV9jaGFyICAgICp2YWw7CisgICAgdV9sb25nICAgICB2YWxfbGVuOworCisgICAgdV9pbnQxNl90ICB0eXBlOworCit9IHNxbF92Yl9idWY7CisKKy8qKiBidWZmZXIgc3RydWN0IGZvciB0cmFwIGRhdGEgKi8KK3R5cGVkZWYgc3RydWN0IHNxbF9idWZfdCB7CisgICAgY2hhciAgICAgICpob3N0OworICAgIHVfbG9uZyAgICAgaG9zdF9sZW47CisKKyAgICBjaGFyICAgICAgKm9pZDsKKyAgICB1X2xvbmcgICAgIG9pZF9sZW47CisKKyAgICBjaGFyICAgICAgKnVzZXI7CisgICAgdV9sb25nICAgICB1c2VyX2xlbjsKKworICAgIE1ZU1FMX1RJTUUgdGltZTsKKyAgICB1X2ludDE2X3QgIHZlcnNpb24sIHR5cGU7CisgICAgdV9pbnQzMl90ICByZXFpZDsKKworICAgIGNoYXIgICAgICAqdHJhbnNwb3J0OworICAgIHVfbG9uZyAgICAgdHJhbnNwb3J0X2xlbjsKKworICAgIHVfaW50MTZfdCAgc2VjdXJpdHlfbGV2ZWwsIHNlY3VyaXR5X21vZGVsOworICAgIHVfaW50MzJfdCAgbXNnaWQ7CisKKyAgICBjaGFyICAgICAgKmNvbnRleHQ7CisgICAgdV9sb25nICAgICBjb250ZXh0X2xlbjsKKworICAgIGNoYXIgICAgICAqY29udGV4dF9lbmdpbmU7CisgICAgdV9sb25nICAgICBjb250ZXh0X2VuZ2luZV9sZW47CisKKyAgICBjaGFyICAgICAgKnNlY3VyaXR5X25hbWU7CisgICAgdV9sb25nICAgICBzZWN1cml0eV9uYW1lX2xlbjsKKworICAgIGNoYXIgICAgICAqc2VjdXJpdHlfZW5naW5lOworICAgIHVfbG9uZyAgICAgc2VjdXJpdHlfZW5naW5lX2xlbjsKKworICAgIG5ldHNubXBfY29udGFpbmVyICp2YXJiaW5kczsKKworICAgIGNoYXIgICAgICAgbG9nZ2VkOworfSBzcWxfYnVmOworCisvKgorICogc3RhdGljIGJpbmQgc3RydWN0dXJlcywgcGx1cyAyIHN0YXRpYyBidWZmZXJzIHRvIGJpbmQgdG8uCisgKi8KK3N0YXRpYyBNWVNRTF9CSU5EIF90YmluZFtUQklORF9NQVhdLCBfdmJpbmRbVkJJTkRfTUFYXTsKK3N0YXRpYyBteV9ib29sICAgIF9ub192MzsKKworc3RhdGljIHZvaWQgX3NxbF9wcm9jZXNzX3F1ZXVlKHVfaW50IGRvbnRjYXJlLCB2b2lkICptZWVpdGhlcik7CisKKy8qCisgKiBwYXJzZSB0aGUgc3FsTWF4UXVldWUgY29uZmlndXJhdGlvbiB0b2tlbgorICovCitzdGF0aWMgdm9pZAorX3BhcnNlX3F1ZXVlX2ZtdChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKK3sKKyAgICBfc3FsLnF1ZXVlX21heCA9IGF0b2koY3B0cik7CisgICAgREVCVUdNU0dUTCgoInNxbDpxdWV1ZSIsInF1ZXVlIG1heCBub3cgJWRcbiIsIF9zcWwucXVldWVfbWF4KSk7Cit9CisKKy8qCisgKiBwYXJzZSB0aGUgc3FsU2F2ZUludGVydmFsIGNvbmZpZ3VyYXRpb24gdG9rZW4KKyAqLworc3RhdGljIHZvaWQKK19wYXJzZV9pbnRlcnZhbF9mbXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCit7CisgICAgX3NxbC5xdWV1ZV9pbnRlcnZhbCA9IGF0b2koY3B0cik7CisgICAgREVCVUdNU0dUTCgoInNxbDpxdWV1ZSIsInF1ZXVlIGludGVydmFsIG5vdyAlZCBzZWNvbmRzXG4iLAorICAgICAgICAgICAgICAgIF9zcWwucXVldWVfaW50ZXJ2YWwpKTsKK30KKworLyoKKyAqIHJlZ2lzdGVyIHNxbCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gdG9rZW5zCisgKi8KK3ZvaWQKK3NubXB0cmFwZF9yZWdpc3Rlcl9zcWxfY29uZmlncyggdm9pZCApCit7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJzcWxNYXhRdWV1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnNlX3F1ZXVlX2ZtdCwgTlVMTCwgImludGVnZXIiKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgInNxbFNhdmVJbnRlcnZhbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnNlX2ludGVydmFsX2ZtdCwgTlVMTCwgInNlY29uZHMiKTsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfc3FsX2Rpc2Nvbm5lY3RlZCh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJzcWw6Y29ubmVjdGlvbiIsImRpc2Nvbm5lY3RlZFxuIikpOworCisgICAgX3NxbC5jb25uZWN0ZWQgPSAwOworCisgICAgLyoqIHJlbGVhc2UgcHJlcGFyZWQgc3RhdGVtZW50cyAqLworICAgIGlmIChfc3FsLnRyYXBfc3RtdCkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudHJhcF9zdG10KTsKKyAgICAgICAgX3NxbC50cmFwX3N0bXQgPSBOVUxMOworICAgIH0KKyAgICBpZiAoX3NxbC52Yl9zdG10KSB7CisgICAgICAgIG15c3FsX3N0bXRfY2xvc2UoX3NxbC52Yl9zdG10KTsKKyAgICAgICAgX3NxbC52Yl9zdG10ID0gTlVMTDsKKyAgICB9Cit9CisKKy8qCisgKiBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBsb2cgbXlzcWwgZXJyb3JzCisgKi8KK3N0YXRpYyB2b2lkCituZXRzbm1wX3NxbF9lcnJvcihjb25zdCBjaGFyICptZXNzYWdlKQoreworICAgIHVfaW50IGVyciA9IG15c3FsX2Vycm5vKF9zcWwuY29ubik7CisgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzXG4iLCBtZXNzYWdlKTsKKyAgICBpZiAoX3NxbC5jb25uICE9IE5VTEwpIHsKKyNpZiBNWVNRTF9WRVJTSU9OX0lEID49IDQwMTAxCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJFcnJvciAldSAoJXMpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgZXJyLCBteXNxbF9zcWxzdGF0ZShfc3FsLmNvbm4pLCBteXNxbF9lcnJvcihfc3FsLmNvbm4pKTsKKyNlbHNlCisgICAgICAgIHNubXAoTE9HX0VSUiwgIkVycm9yICV1OiAlc1xuIiwKKyAgICAgICAgICAgICBteXNxbF9lcnJubyhfc3FsLmNvbm4pLCBteXNxbF9lcnJvcihfc3FsLmNvbm4pKTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoQ1JfU0VSVkVSX0dPTkVfRVJST1IgPT0gZXJyKQorICAgICAgICBuZXRzbm1wX3NxbF9kaXNjb25uZWN0ZWQoKTsKK30KKworLyoKKyAqIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGxvZyBteXNxbCBzdGF0ZW1lbnQgZXJyb3JzCisgKi8KK3N0YXRpYyB2b2lkCituZXRzbm1wX3NxbF9zdG10X2Vycm9yIChNWVNRTF9TVE1UICpzdG10LCBjb25zdCBjaGFyICptZXNzYWdlKQoreworICAgIHVfaW50IGVyciA9IG15c3FsX2Vycm5vKF9zcWwuY29ubik7CisKKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXNcbiIsIG1lc3NhZ2UpOworICAgIGlmIChzdG10KSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJTUUwgRXJyb3IgJXUgKCVzKTogJXNcbiIsCisgICAgICAgICAgICAgICAgIG15c3FsX3N0bXRfZXJybm8oc3RtdCksIG15c3FsX3N0bXRfc3Fsc3RhdGUoc3RtdCksCisgICAgICAgICAgICAgICAgIG15c3FsX3N0bXRfZXJyb3Ioc3RtdCkpOworICAgIH0KKyAgICAKKyAgICBpZiAoQ1JfU0VSVkVSX0dPTkVfRVJST1IgPT0gZXJyKQorICAgICAgICBuZXRzbm1wX3NxbF9kaXNjb25uZWN0ZWQoKTsKK30KKworLyoKKyAqIHNxbCBjbGVhbnVwIGZ1bmN0aW9uLCBjYWxsZWQgYXQgZXhpdAorICovCitzdGF0aWMgdm9pZAorbmV0c25tcF9teXNxbF9jbGVhbnVwKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInNxbDpjbGVhbnVwIiwiIGNhbGxlZFxuIikpOworCisgICAgLyoqIHVucmVnaXN0ZXIgYWxhcm0gKi8KKyAgICBpZiAoX3NxbC5hbGFybV9pZCkKKyAgICAgICAgc25tcF9hbGFybV91bnJlZ2lzdGVyKF9zcWwuYWxhcm1faWQpOworCisgICAgLyoqIHNhdmUgYW55IHF1ZXVlZCB0cmFwcyAqLworICAgIGlmIChDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSkKKyAgICAgICAgX3NxbF9wcm9jZXNzX3F1ZXVlKDAsTlVMTCk7CisKKyAgICBDT05UQUlORVJfRlJFRShfc3FsLnF1ZXVlKTsKKyAgICBfc3FsLnF1ZXVlID0gTlVMTDsKKworICAgIGlmIChfc3FsLnRyYXBfc3RtdCkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudHJhcF9zdG10KTsKKyAgICAgICAgX3NxbC50cmFwX3N0bXQgPSBOVUxMOworICAgIH0KKyAgICBpZiAoX3NxbC52Yl9zdG10KSB7CisgICAgICAgIG15c3FsX3N0bXRfY2xvc2UoX3NxbC52Yl9zdG10KTsKKyAgICAgICAgX3NxbC52Yl9zdG10ID0gTlVMTDsKKyAgICB9CisgICAgCisgICAgLyoqIGRpc2Nvbm5lY3QgZnJvbSBzZXJ2ZXIgKi8KKyAgICBuZXRzbm1wX3NxbF9kaXNjb25uZWN0ZWQoKTsKKworICAgIGlmIChfc3FsLmNvbm4pIHsKKyAgICAgICAgbXlzcWxfY2xvc2UoX3NxbC5jb25uKTsKKyAgICAgICAgX3NxbC5jb25uID0gTlVMTDsKKyAgICB9CisKKyAgICBteXNxbF9saWJyYXJ5X2VuZCgpOworfQorCisvKgorICogc2V0dXAgKGluaXRpYWxpemUsIHByZXBhcmUgYW5kIGJpbmQpIGEgcHJlcGFyZWQgc3RhdGVtZW50CisgKi8KK3N0YXRpYyBpbnQKK25ldHNubXBfbXlzcWxfYmluZChjb25zdCBjaGFyICp0ZXh0LCBzaXplX3QgdGV4dF9zaXplLCBNWVNRTF9TVE1UICoqc3RtdCwKKyAgICAgICAgICAgICAgICAgICBNWVNRTF9CSU5EICpiaW5kKQoreworICAgIGlmICgoTlVMTCA9PSB0ZXh0KSB8fCAoTlVMTCA9PSBzdG10KSB8fCAoTlVMTCA9PSBiaW5kKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJpbnZhbGlkIHBhcmFtYXRlcnMgdG8gbmV0c25tcF9teXNxbF9iaW5kKClcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKnN0bXQgPSBteXNxbF9zdG10X2luaXQoX3NxbC5jb25uKTsKKyAgICBpZiAoTlVMTCA9PSAqc3RtdCkgeworICAgICAgICBuZXRzbm1wX3NxbF9lcnJvcigiY291bGQgbm90IGluaXRpYWxpemUgdHJhcCBzdGF0ZW1lbnQgaGFuZGxlciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKG15c3FsX3N0bXRfcHJlcGFyZSgqc3RtdCwgdGV4dCwgdGV4dF9zaXplKSAhPSAwKSB7CisgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoKnN0bXQsICJDb3VsZCBub3QgcHJlcGFyZSBJTlNFUlQiKTsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZSgqc3RtdCk7CisgICAgICAgICpzdG10ID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogY29ubmVjdCB0byB0aGUgZGF0YWJhc2UgYW5kIGRvIGluaXRpYWwgc2V0dXAKKyAqLworc3RhdGljIGludAorbmV0c25tcF9teXNxbF9jb25uZWN0KHZvaWQpCit7CisgICAgY2hhciB0cmFwX3N0bXRbXSA9ICJJTlNFUlQgSU5UTyBub3RpZmljYXRpb25zICIKKyAgICAgICAgIihkYXRlX3RpbWUsIGhvc3QsIGF1dGgsIHR5cGUsIHZlcnNpb24sIHJlcXVlc3RfaWQsIHNubXBUcmFwT0lELCB0cmFuc3BvcnQsIHNlY3VyaXR5X21vZGVsLCB2M21zZ2lkLCB2M3NlY3VyaXR5X2xldmVsLCB2M2NvbnRleHRfbmFtZSwgdjNjb250ZXh0X2VuZ2luZSwgdjNzZWN1cml0eV9uYW1lLCB2M3NlY3VyaXR5X2VuZ2luZSkgIgorICAgICAgICAiVkFMVUVTKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/KSI7CisgICAgY2hhciB2Yl9zdG10W10gPSAiSU5TRVJUIElOVE8gdmFyYmluZHMgIgorICAgICAgICAiKHRyYXBfaWQsIG9pZCwgdHlwZSwgdmFsdWUpIFZBTFVFUyAoPyw/LD8sPykiOworCisgICAgLyoqIGluaXRpYWxpemUgY29ubmVjdGlvbiBoYW5kbGVyICovCisgICAgaWYgKF9zcWwuY29ubmVjdGVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIERFQlVHTVNHVEwoKCJzcWw6Y29ubmVjdGlvbiIsImNvbm5lY3RpbmdcbiIpKTsKKworICAgIC8qKiBjb25uZWN0IHRvIHNlcnZlciAqLworICAgIGlmIChteXNxbF9yZWFsX2Nvbm5lY3QgKF9zcWwuY29ubiwgX3NxbC5ob3N0X25hbWUsIF9zcWwudXNlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zcWwucGFzc3dvcmQsIF9zcWwuZGJfbmFtZSwgX3NxbC5wb3J0X251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3FsLnNvY2tldF9uYW1lLCBfc3FsLmZsYWdzKSA9PSBOVUxMKSB7CisgICAgICAgIG5ldHNubXBfc3FsX2Vycm9yKCJteXNxbF9yZWFsX2Nvbm5lY3QoKSBmYWlsZWQiKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorICAgIF9zcWwuY29ubmVjdGVkID0gMTsKKworICAgIC8qKiBkaXNhYmxlIGF1dG9jb21taXQgKi8KKyAgICBpZigwICE9IG15c3FsX2F1dG9jb21taXQoX3NxbC5jb25uLCAwKSkgeworICAgICAgICBuZXRzbm1wX3NxbF9lcnJvcigibXlzcWxfYXV0b2NvbW1pdCgwKSBmYWlsZWQiKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgbmV0c25tcF9hc3NlcnQoKF9zcWwudHJhcF9zdG10ID09IE5VTEwpICYmIChfc3FsLnZiX3N0bXQgPT0gTlVMTCkpOworCisgICAgLyoqIHByZXBhcmVkIHN0YXRlbWVudCBmb3IgaW5zZXJ0cyAqLworICAgIGlmICgwICE9IG5ldHNubXBfbXlzcWxfYmluZCh0cmFwX3N0bXQsc2l6ZW9mKHRyYXBfc3RtdCksICZfc3FsLnRyYXBfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RiaW5kKSkKKyAgICAgICAgZ290byBlcnI7CisKKyAgICBpZiAoMCAhPSBuZXRzbm1wX215c3FsX2JpbmQodmJfc3RtdCxzaXplb2YodmJfc3RtdCksJl9zcWwudmJfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZiaW5kKSkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudHJhcF9zdG10KTsKKyAgICAgICAgX3NxbC50cmFwX3N0bXQgPSBOVUxMOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKworICBlcnI6CisgICAgaWYgKF9zcWwuY29ubmVjdGVkKQorICAgICAgICBfc3FsLmNvbm5lY3RlZCA9IDA7CisKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qKiBvbmUtdGltZSBpbml0aWFsaXphdGlvbiBmb3IgbXlzcWwgKi8KK2ludAorbmV0c25tcF9teXNxbF9pbml0KHZvaWQpCit7CisgICAgaW50IG5vdF9hcmdjID0gMCwgaTsKKyAgICBjaGFyICpub3RfYXJnc1tdID0geyBOVUxMIH07CisgICAgY2hhciAqKm5vdF9hcmd2ID0gbm90X2FyZ3M7CisgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKKworICAgIERFQlVHTVNHVEwoKCJzcWw6aW5pdCIsImNhbGxlZFxuIikpOworCisgICAgLyoqIG5lZ2F0aXZlIG9yIDAgaW50ZXJ2YWwgZGlzYWJsZXMgc3FsIGxvZ2dpbmcgKi8KKyAgICBpZiAoX3NxbC5xdWV1ZV9pbnRlcnZhbCA8PSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzcWw6aW5pdCIsCisgICAgICAgICAgICAgICAgICAgICJteXNxbCBub3QgZW5hYmxlZCAoc3FsU2F2ZUludGVydmFsIGlzIDw9IDApXG4iKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKiBjcmVhdGUgcXVldWUgZm9yIHN0b3JpbmcgdHJhcHMgdGlsIHRoZXkgYXJlIHdyaXR0ZW4gdG8gdGhlIGRiICovCisgICAgX3NxbC5xdWV1ZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImZpZm8iKTsKKyAgICBpZiAoTlVMTCA9PSBfc3FsLnF1ZXVlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgYWxsb2NhdGUgc3FsIGJ1ZiBjb250YWluZXJcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgSEFWRV9CUk9LRU5fTElCTVlTUUxDTElFTlQKKyAgICBteV9pbml0KCk7CisjZWxzZQorICAgIE1ZX0lOSVQoInNubXB0cmFwZCIpOworI2VuZGlmCisKKyAgICAvKiogbG9hZCAubXkuY25mIHZhbHVlcyAqLworICAgIGxvYWRfZGVmYXVsdHMgKCJteSIsIF9zcWwuZ3JvdXBzLCAmbm90X2FyZ2MsICZub3RfYXJndik7CisgICAgZm9yKGk9MDsgaSA8IG5vdF9hcmdjOyArK2kpIHsKKyAgICAgICAgaWYgKE5VTEwgPT0gbm90X2FyZ3ZbaV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHN0cm5jbXAobm90X2FyZ3ZbaV0sIi0tcGFzc3dvcmQ9IiwxMSkgPT0gMCkKKyAgICAgICAgICAgIF9zcWwucGFzc3dvcmQgPSAmbm90X2FyZ3ZbaV1bMTFdOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLWhvc3Q9Iiw3KSA9PSAwKQorICAgICAgICAgICAgX3NxbC5ob3N0X25hbWUgPSAmbm90X2FyZ3ZbaV1bN107CisgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAobm90X2FyZ3ZbaV0sIi0tdXNlcj0iLDcpID09IDApCisgICAgICAgICAgICBfc3FsLnVzZXJfbmFtZSA9ICZub3RfYXJndltpXVs3XTsKKyAgICAgICAgZWxzZSBpZiAoc3RybmNtcChub3RfYXJndltpXSwiLS1wb3J0PSIsNykgPT0gMCkKKyAgICAgICAgICAgIF9zcWwucG9ydF9udW0gPSBhdG9pKCZub3RfYXJndltpXVs3XSk7CisgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAobm90X2FyZ3ZbaV0sIi0tc29ja2V0PSIsOSkgPT0gMCkKKyAgICAgICAgICAgIF9zcWwuc29ja2V0X25hbWUgPSAmbm90X2FyZ3ZbaV1bOV07CisgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAobm90X2FyZ3ZbaV0sIi0tZGF0YWJhc2U9IiwxMSkgPT0gMCkKKyAgICAgICAgICAgIF9zcWwuZGJfbmFtZSA9ICZub3RfYXJndltpXVsxMV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAidW5rbm93biBhcmd1bWVudFslZF0gJXNcbiIsIGksIG5vdF9hcmd2W2ldKTsKKyAgICB9CisKKyAgICAvKiogaW5pdCBiaW5kIHN0cnVjdHVyZXMgKi8KKyAgICBtZW1zZXQoX3RiaW5kLCAweDAsIHNpemVvZihfdGJpbmQpKTsKKyAgICBtZW1zZXQoX3ZiaW5kLCAweDAsIHNpemVvZihfdmJpbmQpKTsKKworICAgIC8qKiB0cmFwIHN0YXRpYyBiaW5kaW5ncyAqLworICAgIF90YmluZFtUQklORF9IT1NUXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF9IT1NUXS5sZW5ndGggPSAmX3RiaW5kW1RCSU5EX0hPU1RdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdGJpbmRbVEJJTkRfT0lEXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF9PSURdLmxlbmd0aCA9ICZfdGJpbmRbVEJJTkRfT0lEXS5idWZmZXJfbGVuZ3RoOworCisgICAgX3RiaW5kW1RCSU5EX1JFUUlEXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfTE9ORzsKKyAgICBfdGJpbmRbVEJJTkRfUkVRSURdLmlzX3Vuc2lnbmVkID0gMTsKKworICAgIF90YmluZFtUQklORF9WRVJdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TSE9SVDsKKyAgICBfdGJpbmRbVEJJTkRfVkVSXS5pc191bnNpZ25lZCA9IDE7CisKKyAgICBfdGJpbmRbVEJJTkRfVFlQRV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NIT1JUOworICAgIF90YmluZFtUQklORF9UWVBFXS5pc191bnNpZ25lZCA9IDE7CisKKyAgICBfdGJpbmRbVEJJTkRfREFURV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX0RBVEVUSU1FOworCisgICAgX3RiaW5kW1RCSU5EX1VTRVJdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3RiaW5kW1RCSU5EX1VTRVJdLmxlbmd0aCA9ICZfdGJpbmRbVEJJTkRfVVNFUl0uYnVmZmVyX2xlbmd0aDsKKworICAgIF90YmluZFtUQklORF9UUkFOU1BPUlRdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3RiaW5kW1RCSU5EX1RSQU5TUE9SVF0ubGVuZ3RoID0gJl90YmluZFtUQklORF9UUkFOU1BPUlRdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdGJpbmRbVEJJTkRfU0VDVVJJVFlfTU9ERUxdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TSE9SVDsKKyAgICBfdGJpbmRbVEJJTkRfU0VDVVJJVFlfTU9ERUxdLmlzX3Vuc2lnbmVkID0gMTsKKworICAgIF90YmluZFtUQklORF92M19NU0dJRF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX0xPTkc7CisgICAgX3RiaW5kW1RCSU5EX3YzX01TR0lEXS5pc191bnNpZ25lZCA9IDE7CisgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0xFVkVMXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU0hPUlQ7CisgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0xFVkVMXS5pc191bnNpZ25lZCA9IDE7CisgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfTkFNRV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmxlbmd0aCA9CisgICAgICAgICZfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTkFNRV0uYnVmZmVyX2xlbmd0aDsKKyAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5sZW5ndGggPQorICAgICAgICAmX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfTkFNRV0uYnVmZmVyX2xlbmd0aDsKKyAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9FTkdJTkVdLmxlbmd0aCA9CisgICAgICAgICZfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5idWZmZXJfbGVuZ3RoOworICAgIF90YmluZFtUQklORF92M19DT05URVhUX0VOR0lORV0ubGVuZ3RoID0KKyAgICAgICAgJl90YmluZFtUQklORF92M19DT05URVhUX0VOR0lORV0uYnVmZmVyX2xlbmd0aDsKKworICAgIF90YmluZFtUQklORF92M19NU0dJRF0uaXNfbnVsbCA9CisgICAgICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9MRVZFTF0uaXNfbnVsbCA9CisgICAgICAgIF90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTkFNRV0uaXNfbnVsbCA9CisgICAgICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9FTkdJTkVdLmlzX251bGwgPSAmX25vX3YzOworICAgIAorICAgIC8qKiB2YXJpYWJsZSBzdGF0aWMgYmluZGluZ3MgKi8KKyAgICBfdmJpbmRbVkJJTkRfSURdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9MT05HOworICAgIF92YmluZFtWQklORF9JRF0uaXNfdW5zaWduZWQgPSAxOworCisgICAgX3ZiaW5kW1ZCSU5EX09JRF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdmJpbmRbVkJJTkRfT0lEXS5sZW5ndGggPSAmX3ZiaW5kW1ZCSU5EX09JRF0uYnVmZmVyX2xlbmd0aDsKKworICAgIF92YmluZFtWQklORF9UWVBFXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU0hPUlQ7CisgICAgX3ZiaW5kW1ZCSU5EX1RZUEVdLmlzX3Vuc2lnbmVkID0gMTsKKworI2lmZGVmIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUCisgICAgX3ZiaW5kW1ZCSU5EX1ZBTF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyNlbHNlCisgICAgX3ZiaW5kW1ZCSU5EX1ZBTF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX0JMT0I7CisjZW5kaWYKKyAgICBfdmJpbmRbVkJJTkRfVkFMXS5sZW5ndGggPSAmX3ZiaW5kW1ZCSU5EX1ZBTF0uYnVmZmVyX2xlbmd0aDsKKworICAgIF9zcWwuY29ubiA9IG15c3FsX2luaXQgKE5VTEwpOworICAgIGlmIChfc3FsLmNvbm4gPT0gTlVMTCkgeworICAgICAgICBuZXRzbm1wX3NxbF9lcnJvcigibXlzcWxfaW5pdCgpIGZhaWxlZCAob3V0IG9mIG1lbW9yeT8pIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogdHJ5IHRvIGNvbm5lY3Q7IHdlJ2xsIHRyeSBhZ2FpbiBsYXRlciBpZiB3ZSBmYWlsICovCisgICAgKHZvaWQpIG5ldHNubXBfbXlzcWxfY29ubmVjdCgpOworCisgICAgLyoqIHJlZ2lzdGVyIHBlcmlvZGljIHF1ZXVlIHNhdmUgKi8KKyAgICBfc3FsLmFsYXJtX2lkID0gc25tcF9hbGFybV9yZWdpc3Rlcihfc3FsLnF1ZXVlX2ludGVydmFsLCAvKiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgLyogcmVwZWF0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NxbF9wcm9jZXNzX3F1ZXVlLCAgLyogZnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsgICAgICAgICAgICAgICAvKiBjbGllbnQgYXJncyAqLworCisgICAgLyoqIGFkZCBoYW5kbGVyICovCisgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX2hhbmRsZXIpOworICAgIGlmIChOVUxMID09IHRyYXBoKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgYWxsb2NhdGUgc3FsIHRyYXAgaGFuZGxlclxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CisKKyAgICBhdGV4aXQobmV0c25tcF9teXNxbF9jbGVhbnVwKTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIGxvZyBDU1YgdmVyc2lvbiBvZiB0cmFwLgorICogZG9udGNhcmUgcGFyYW0gaXMgdGhlcmUgc28gdGhpcyBmdW5jdGlvbiBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5CisgKiB0byBDT05UQUlORVJfRk9SX0VBQ0guCisgKi8KK3N0YXRpYyB2b2lkCitfc3FsX2xvZyhzcWxfYnVmICpzcWxiLCB2b2lkKiBkb250Y2FyZSkKK3sKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICAgICAqaXQ7CisgICAgc3FsX3ZiX2J1ZiAgICAgICAgICAgKnNxbHZiOworCisgICAgaWYgKChOVUxMID09IHNxbGIpIHx8IHNxbGItPmxvZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBsb2cgdHJhcCBpbmZvCisgICAgICogbm90aGluZyBkb25lIHRvIHByb3RlY3QgYWdhaW5zdCBkYXRhIGluc2VydGlvbiBhdHRhY2tzIHdpdGgKKyAgICAgKiByZXNwZWN0IHRvIGJhZCBkYXRhIChjb21tYXMsIG5ld2xpbmVzLCBldGMpCisgICAgICovCisgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAidHJhcDolZC0lZC0lZCAlZDolZDolZCwlcywlZCwlZCwlZCwlcywlcywlZCwlZCwlZCwlcywlcywlcywlc1xuIiwKKyAgICAgICAgICAgICBzcWxiLT50aW1lLnllYXIsc3FsYi0+dGltZS5tb250aCxzcWxiLT50aW1lLmRheSwKKyAgICAgICAgICAgICBzcWxiLT50aW1lLmhvdXIsc3FsYi0+dGltZS5taW51dGUsc3FsYi0+dGltZS5zZWNvbmQsCisgICAgICAgICAgICAgc3FsYi0+dXNlciwKKyAgICAgICAgICAgICBzcWxiLT50eXBlLCBzcWxiLT52ZXJzaW9uLCBzcWxiLT5yZXFpZCwgc3FsYi0+b2lkLAorICAgICAgICAgICAgIHNxbGItPnRyYW5zcG9ydCwgc3FsYi0+c2VjdXJpdHlfbW9kZWwsIHNxbGItPm1zZ2lkLAorICAgICAgICAgICAgIHNxbGItPnNlY3VyaXR5X2xldmVsLCBzcWxiLT5jb250ZXh0LAorICAgICAgICAgICAgIHNxbGItPmNvbnRleHRfZW5naW5lLCBzcWxiLT5zZWN1cml0eV9uYW1lLAorICAgICAgICAgICAgIHNxbGItPnNlY3VyaXR5X2VuZ2luZSk7CisKKyAgICBzcWxiLT5sb2dnZWQgPSAxOyAvKiBwcmV2ZW50IG11bHRpcGxlIGxvZ2dpbmcgKi8KKworICAgIGl0ID0gQ09OVEFJTkVSX0lURVJBVE9SKHNxbGItPnZhcmJpbmRzKTsKKyAgICBpZiAoTlVMTCA9PSBpdCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZXJyb3IgY3JlYXRpbmcgaXRlcmF0b3I7IGluY29tcGxldGUgdHJhcCBsb2dnZWRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoqIGxvZyB2YXJiaW5kIGluZm8gKi8KKyAgICBmb3IoIHNxbHZiID0gSVRFUkFUT1JfRklSU1QoaXQpOyBzcWx2Yjsgc3FsdmIgPSBJVEVSQVRPUl9ORVhUKGl0KSkgeworI2lmZGVmIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsInZhcmJpbmQ6JXMsJXNcbiIsIHNxbHZiLT5vaWQsIHNxbHZiLT52YWwpOworI2Vsc2UKKyAgICAgICAgY2hhciAqaGV4OworICAgICAgICBpbnQgbGVuID0gYmluYXJ5X3RvX2hleChzcWx2Yi0+dmFsLCBzcWx2Yi0+dmFsX2xlbiwgJmhleCk7CisgICAgICAgIGlmIChoZXgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsInZhcmJpbmQ6JWQsJXMsJXNcbiIsIHNxbHZiLT5vaWQsIGhleCk7CisgICAgICAgICAgICBmcmVlKGhleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJtYWxsb2MgZmFpbGVkIGZvciB2YXJiaW5kIGhleCB2YWx1ZVxuIik7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ2YXJiaW5kOiVzLFxuIiwgc3FsdmItPm9pZCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0KTsKKyAgIAorfQorCisvKgorICogZnJlZSBhIGJ1ZmZlcgorICogZG9udGNhcmUgcGFyYW0gaXMgdGhlcmUgc28gdGhpcyBmdW5jdGlvbiBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5CisgKiB0byBDT05UQUlORVJfRk9SX0VBQ0guCisgKi8KK3N0YXRpYyB2b2lkCitfc3FsX3ZiX2J1Zl9mcmVlKHNxbF92Yl9idWYgKnNxbHZiLCB2b2lkKiBkb250Y2FyZSkKK3sKKyAgICBpZiAoTlVMTCA9PSBzcWx2YikKKyAgICAgICAgcmV0dXJuOworCisgICAgU05NUF9GUkVFKHNxbHZiLT5vaWQpOworICAgIFNOTVBfRlJFRShzcWx2Yi0+dmFsKTsKKworICAgIGZyZWUoc3FsdmIpOworfQorCisvKgorICogZnJlZSBhIGJ1ZmZlcgorICogZG9udGNhcmUgcGFyYW0gaXMgdGhlcmUgc28gdGhpcyBmdW5jdGlvbiBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5CisgKiB0byBDT05UQUlORVJfRk9SX0VBQ0guCisgKi8KK3N0YXRpYyB2b2lkCitfc3FsX2J1Zl9mcmVlKHNxbF9idWYgKnNxbGIsIHZvaWQqIGRvbnRjYXJlKQoreworICAgIGlmIChOVUxMID09IHNxbGIpCisgICAgICAgIHJldHVybjsKKworICAgIC8qKiBkbyB2YXJiaW5kcyBmaXJzdCAqLworICAgIGlmIChzcWxiLT52YXJiaW5kcykgeworICAgICAgICBDT05UQUlORVJfQ0xFQVIoc3FsYi0+dmFyYmluZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKV9zcWxfdmJfYnVmX2ZyZWUsIE5VTEwpOworICAgICAgICBDT05UQUlORVJfRlJFRShzcWxiLT52YXJiaW5kcyk7CisgICAgfQorCisgICAgU05NUF9GUkVFKHNxbGItPmhvc3QpOworICAgIFNOTVBfRlJFRShzcWxiLT5vaWQpOworICAgIFNOTVBfRlJFRShzcWxiLT51c2VyKTsKKworICAgIFNOTVBfRlJFRShzcWxiLT5jb250ZXh0KTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+c2VjdXJpdHlfbmFtZSk7CisgICAgU05NUF9GUkVFKHNxbGItPmNvbnRleHRfZW5naW5lKTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+c2VjdXJpdHlfZW5naW5lKTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+dHJhbnNwb3J0KTsKKworICAgIGZyZWUoc3FsYik7Cit9CisKKy8qCisgKiBhbGxvY2F0ZSBidWZmZXIgdG8gc3RvcmUgdHJhcCBhbmQgdmFyYmluZHMKKyAqLworc3RhdGljIHNxbF9idWYgKgorX3NxbF9idWZfZ2V0KHZvaWQpCit7CisgICAgc3FsX2J1ZiAqc3FsYjsKKworICAgIC8qKiBidWZmZXIgZm9yIHRyYXAgaW5mbyAqLworICAgIHNxbGIgPSBTTk1QX01BTExPQ19UWVBFREVGKHNxbF9idWYpOworICAgIGlmIChOVUxMID09IHNxbGIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIAorICAgIC8qKiBmaWZvIGZvciB2YXJiaW5kcyAqLworICAgIHNxbGItPnZhcmJpbmRzID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiZmlmbyIpOworICAgIGlmIChOVUxMID09IHNxbGItPnZhcmJpbmRzKSB7CisgICAgICAgIGZyZWUoc3FsYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBzcWxiOworfQorCisvKgorICogc2F2ZSBpbmZvIGZyb20gaW5jb21pbmcgdHJhcAorICoKKyAqIHJldHVybiAwIG9uIHN1Y2Nlc3MsIGFueXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IKKyAqLworc3RhdGljIGludAorX3NxbF9zYXZlX3RyYXBfaW5mbyhzcWxfYnVmICpzcWxiLCBuZXRzbm1wX3BkdSAgKnBkdSwKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnQgICAgICp0cmFuc3BvcnQpCit7CisgICAgc3RhdGljIG9pZCAgIHRyYXBvaWRzW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDUsIDAgfTsKKyAgICBvaWQgICAgICAgICAqdHJhcF9vaWQsIHRtcF9vaWRbTUFYX09JRF9MRU5dOworICAgIHRpbWVfdCAgICAgICBub3c7CisgICAgc3RydWN0IHRtICAgKmN1cl90aW1lOworICAgIHNpemVfdCAgICAgICB0bXBfc2l6ZTsKKyAgICBzaXplX3QgICAgICAgYnVmX2hvc3RfbGVuX3QsIGJ1Zl9vaWRfbGVuX3QsIGJ1Zl91c2VyX2xlbl90OworICAgIGludCAgICAgICAgICBvaWRfb3ZlcmZsb3csIHRyYXBfb2lkX2xlbjsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnM7CisKKyAgICBpZiAoKE5VTEwgPT0gc3FsYikgfHwgKE5VTEwgPT0gcGR1KSB8fCAoTlVMTCA9PSB0cmFuc3BvcnQpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBERUJVR01TR1RMKCgic3FsOnF1ZXVlIiwgInF1ZXVlaW5nIGluY29taW5nIHRyYXBcbiIpKTsKKworICAgIC8qKiB0aW1lICovCisgICAgKHZvaWQpIHRpbWUoJm5vdyk7CisgICAgY3VyX3RpbWUgPSBsb2NhbHRpbWUoJm5vdyk7CisgICAgc3FsYi0+dGltZS55ZWFyID0gY3VyX3RpbWUtPnRtX3llYXIgKyAxOTAwOworICAgIHNxbGItPnRpbWUubW9udGggPSBjdXJfdGltZS0+dG1fbW9uICsgMTsKKyAgICBzcWxiLT50aW1lLmRheSA9IGN1cl90aW1lLT50bV9tZGF5OworICAgIHNxbGItPnRpbWUuaG91ciA9IGN1cl90aW1lLT50bV9ob3VyOworICAgIHNxbGItPnRpbWUubWludXRlID0gY3VyX3RpbWUtPnRtX21pbjsKKyAgICBzcWxiLT50aW1lLnNlY29uZCA9IGN1cl90aW1lLT50bV9zZWM7CisgICAgc3FsYi0+dGltZS5zZWNvbmRfcGFydCA9IDA7CisgICAgc3FsYi0+dGltZS5uZWcgPSAwOworCisgICAgLyoqIGhvc3QgbmFtZSAqLworICAgIGJ1Zl9ob3N0X2xlbl90ID0gMDsKKyAgICB0bXBfc2l6ZSA9IDA7CisgICAgcmVhbGxvY19mb3JtYXRfdHJhcCgodV9jaGFyKiopJnNxbGItPmhvc3QsICZ0bXBfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZidWZfaG9zdF9sZW5fdCwgMSwgIiVCIiwgcGR1LCB0cmFuc3BvcnQpOworICAgIHNxbGItPmhvc3RfbGVuID0gYnVmX2hvc3RfbGVuX3Q7CisKKyAgICAvKiBzbm1wVHJhcE9JRCAqLworICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCkgeworICAgICAgICAvKgorICAgICAgICAgKiBjb252ZXJ0IGEgdjEgdHJhcCB0byBhIHYyIHZhcmJpbmQKKyAgICAgICAgICovCisgICAgICAgIGlmIChwZHUtPnRyYXBfdHlwZSA9PSBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDKSB7CisgICAgICAgICAgICB0cmFwX29pZF9sZW4gPSBwZHUtPmVudGVycHJpc2VfbGVuZ3RoOworICAgICAgICAgICAgbWVtY3B5KHRtcF9vaWQsIHBkdS0+ZW50ZXJwcmlzZSwgc2l6ZW9mKG9pZCkgKiB0cmFwX29pZF9sZW4pOworICAgICAgICAgICAgaWYgKHRtcF9vaWRbdHJhcF9vaWRfbGVuIC0gMV0gIT0gMCkKKyAgICAgICAgICAgICAgICB0bXBfb2lkW3RyYXBfb2lkX2xlbisrXSA9IDA7CisgICAgICAgICAgICB0bXBfb2lkW3RyYXBfb2lkX2xlbisrXSA9IHBkdS0+c3BlY2lmaWNfdHlwZTsKKyAgICAgICAgICAgIHRyYXBfb2lkID0gdG1wX29pZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRyYXBvaWRzWzldID0gcGR1LT50cmFwX3R5cGUgKyAxOworICAgICAgICAgICAgdHJhcF9vaWQgPSB0cmFwb2lkczsKKyAgICAgICAgICAgIHRyYXBfb2lkX2xlbiA9IE9JRF9MRU5HVEgodHJhcG9pZHMpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YXJzID0gcGR1LT52YXJpYWJsZXM7CisgICAgICAgIGlmICh2YXJzICYmIHZhcnMtPm5leHRfdmFyaWFibGUpIHsKKyAgICAgICAgICAgIHRyYXBfb2lkX2xlbiA9IHZhcnMtPm5leHRfdmFyaWFibGUtPnZhbF9sZW4gLyBzaXplb2Yob2lkKTsKKyAgICAgICAgICAgIHRyYXBfb2lkID0gdmFycy0+bmV4dF92YXJpYWJsZS0+dmFsLm9iamlkOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RhdGljIG9pZCBudWxsX29pZFtdID0geyAwLCAwIH07CisgICAgICAgICAgICB0cmFwX29pZF9sZW4gPSBPSURfTEVOR1RIKG51bGxfb2lkKTsKKyAgICAgICAgICAgIHRyYXBfb2lkID0gbnVsbF9vaWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgdG1wX3NpemUgPSAwOworICAgIGJ1Zl9vaWRfbGVuX3QgPSBvaWRfb3ZlcmZsb3cgPSAwOworICAgIG5ldHNubXBfc3ByaW50X3JlYWxsb2Nfb2JqaWRfdHJlZSgodV9jaGFyKiopJnNxbGItPm9pZCwmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZfb2lkX2xlbl90LCAxLCAmb2lkX292ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwX29pZCwgdHJhcF9vaWRfbGVuKTsKKyAgICBzcWxiLT5vaWRfbGVuID0gYnVmX29pZF9sZW5fdDsKKyAgICBpZiAob2lkX292ZXJmbG93KQorICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywiT0lEIHRydW5jYXRlZCBpbiBzcWwgYnVmZmVyXG4iKTsKKworICAgIC8qKiByZXF1ZXN0IGlkICovCisgICAgc3FsYi0+cmVxaWQgPSBwZHUtPnJlcWlkOworCisgICAgLyoqIHZlcnNpb24gKGNvbnZlcnQgdG8gMSBiYXNlZCwgZm9yIHNxbCBlbnVtKSAqLworICAgIHNxbGItPnZlcnNpb24gPSBwZHUtPnZlcnNpb24gKyAxOworCisgICAgLyoqIGNvbW1hbmQgdHlwZSAoY29udmVydCB0byAxIGJhc2VkLCBmb3Igc3FsIGVudW0pICovCisgICAgc3FsYi0+dHlwZSA9IHBkdS0+Y29tbWFuZCAtIDE1OTsKKworICAgIC8qKiBjb21tdW5pdHkgc3RyaW5nL3VzZXIgbmFtZSAqLworICAgIHRtcF9zaXplID0gMDsKKyAgICBidWZfdXNlcl9sZW5fdCA9IDA7CisgICAgcmVhbGxvY19mb3JtYXRfdHJhcCgodV9jaGFyKiopJnNxbGItPnVzZXIsICZ0bXBfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZidWZfdXNlcl9sZW5fdCwgMSwgIiV1IiwgcGR1LCB0cmFuc3BvcnQpOworICAgIHNxbGItPnVzZXJfbGVuID0gYnVmX3VzZXJfbGVuX3Q7CisKKyAgICAvKiogdHJhbnNwb3J0ICovCisgICAgc3FsYi0+dHJhbnNwb3J0ID0gdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKKworICAgIC8qKiBzZWN1cml0eSBtb2RlbCAqLworICAgIHNxbGItPnNlY3VyaXR5X21vZGVsID0gcGR1LT5zZWN1cml0eU1vZGVsOworCisgICAgaWYgKChTTk1QX01QX01PREVMX1NOTVB2MysxKSA9PSBzcWxiLT52ZXJzaW9uKSB7CisKKyAgICAgICAgc3FsYi0+bXNnaWQgPSBwZHUtPm1zZ2lkOworICAgICAgICBzcWxiLT5zZWN1cml0eV9sZXZlbCA9IHBkdS0+c2VjdXJpdHlMZXZlbDsKKworICAgICAgICBpZiAocGR1LT5jb250ZXh0TmFtZSkgeworICAgICAgICAgICAgc3FsYi0+Y29udGV4dCA9IG5ldHNubXBfc3RyZHVwX2FuZF9udWxsKCh1X2NoYXIqKXBkdS0+Y29udGV4dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT5jb250ZXh0TmFtZUxlbik7CisgICAgICAgICAgICBzcWxiLT5jb250ZXh0X2xlbiA9IHBkdS0+Y29udGV4dE5hbWVMZW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBkdS0+Y29udGV4dEVuZ2luZUlEKSB7CisgICAgICAgICAgICBzcWxiLT5jb250ZXh0X2VuZ2luZV9sZW4gPSAKKyAgICAgICAgICAgICAgICBiaW5hcnlfdG9faGV4KHBkdS0+Y29udGV4dEVuZ2luZUlELCBwZHUtPmNvbnRleHRFbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzcWxiLT5jb250ZXh0X2VuZ2luZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGR1LT5zZWN1cml0eU5hbWUpIHsKKyAgICAgICAgICAgIHNxbGItPnNlY3VyaXR5X25hbWUgPQorICAgICAgICAgICAgICAgIG5ldHNubXBfc3RyZHVwX2FuZF9udWxsKCh1X2NoYXIqKXBkdS0+c2VjdXJpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlOYW1lTGVuKTsKKyAgICAgICAgICAgIHNxbGItPnNlY3VyaXR5X25hbWVfbGVuID0gcGR1LT5zZWN1cml0eU5hbWVMZW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlFbmdpbmVJRCkgeworICAgICAgICAgICAgc3FsYi0+c2VjdXJpdHlfZW5naW5lX2xlbiA9IAorICAgICAgICAgICAgICAgIGJpbmFyeV90b19oZXgocGR1LT5zZWN1cml0eUVuZ2luZUlELCBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3FsYi0+c2VjdXJpdHlfZW5naW5lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogc2F2ZSB2YXJiaW5kIGluZm8gZnJvbSBpbmNvbWluZyB0cmFwCisgKgorICogcmV0dXJuIDAgb24gc3VjY2VzcywgYW55dGhpbmcgZWxzZSBpcyBhbiBlcnJvcgorICovCitzdGF0aWMgaW50Citfc3FsX3NhdmVfdmFyYmluZF9pbmZvKHNxbF9idWYgKnNxbGIsIG5ldHNubXBfcGR1ICAqcGR1KQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyOworICAgIHNxbF92Yl9idWYgICAgICAgKnNxbHZiOworICAgIHNpemVfdCAgICAgICAgICAgIHRtcF9zaXplLCBidWZfb2lkX2xlbl90OworICAgIGludCAgICAgICAgICAgICAgIG9pZF9vdmVyZmxvdywgcmM7CisjaWZkZWYgTkVUU05NUF9NWVNRTF9UUkFQX1ZBTFVFX1RFWFQKKyAgICBzaXplX3QgICAgICAgICAgICBidWZfdmFsX2xlbl90OworI2VuZGlmCisKKyAgICBpZiAoKE5VTEwgPT0gc3FsYikgfHwgKE5VTEwgPT0gcGR1KSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgdmFyID0gcGR1LT52YXJpYWJsZXM7CisgICAgd2hpbGUodmFyKSB7CisgICAgICAgIHNxbHZiID0gU05NUF9NQUxMT0NfVFlQRURFRihzcWxfdmJfYnVmKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gc3FsdmIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiogT0lEICovCisgICAgICAgIHRtcF9zaXplID0gMDsKKyAgICAgICAgYnVmX29pZF9sZW5fdCA9IG9pZF9vdmVyZmxvdyA9IDA7CisgICAgICAgIG5ldHNubXBfc3ByaW50X3JlYWxsb2Nfb2JqaWRfdHJlZSgodV9jaGFyKiopJnNxbHZiLT5vaWQsICZ0bXBfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZfb2lkX2xlbl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJm9pZF9vdmVyZmxvdywgdmFyLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lX2xlbmd0aCk7CisgICAgICAgIHNxbHZiLT5vaWRfbGVuID0gYnVmX29pZF9sZW5fdDsKKyAgICAgICAgaWYgKG9pZF9vdmVyZmxvdykKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCJPSUQgdHJ1bmNhdGVkIGluIHNxbCBpbnNlcnRcbiIpOworICAgICAgICAKKyAgICAgICAgLyoqIHR5cGUgKi8KKyAgICAgICAgaWYgKHZhci0+dHlwZSA+IEFTTl9PQkpFQ1RfSUQpCisgICAgICAgICAgICAvKiogY29udmVydCBhcHBsaWNhdGlvbiB0eXBlcyB0byBzcWwgZW51bSAqLworICAgICAgICAgICAgc3FsdmItPnR5cGUgPSBBU05fT0JKRUNUX0lEICsgMSArICh2YXItPnR5cGUgJiB+QVNOX0FQUExJQ0FUSU9OKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3FsdmItPnR5cGUgPSB2YXItPnR5cGU7CisKKyAgICAgICAgLyoqIHZhbHVlICovCisjaWZkZWYgTkVUU05NUF9NWVNRTF9UUkFQX1ZBTFVFX1RFWFQKKyAgICAgICAgdG1wX3NpemUgPSAwOworICAgICAgICBidWZfdmFsX2xlbl90ID0gMDsKKyAgICAgICAgc3ByaW50X3JlYWxsb2NfYnlfdHlwZSgodV9jaGFyKiopJnNxbHZiLT52YWwsICZ0bXBfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX3ZhbF9sZW5fdCwgMSwgdmFyLCAwLCAwLCAwKTsKKyAgICAgICAgc3FsdmItPnZhbF9sZW4gPSBidWZfdmFsX2xlbl90OworI2Vsc2UKKyAgICAgICAgc3FsdmItPnZhbCA9IG5ldHNubXBfbWVtZHVwKHZhci0+dmFsLnN0cmluZywgdmFyLT52YWxfbGVuKTsKKyAgICAgICAgc3FsdmItPnZhbF9sZW4gPSB2YXItPnZhbF9sZW47CisjZW5kaWYKKworICAgICAgICB2YXIgPSB2YXItPm5leHRfdmFyaWFibGU7CisKKyAgICAgICAgLyoqIGluc2VydCBpbnRvIGNvbnRhaW5lciAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoc3FsYi0+dmFyYmluZHMsc3FsdmIpOworICAgICAgICBpZihyYykKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBpbnNlcnQgdmFyYmluZCBpbnRvIHRyYXAgY29udGFpbmVyXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHNxbCB0cmFwIGhhbmRsZXIKKyAqLworaW50CitteXNxbF9oYW5kbGVyKG5ldHNubXBfcGR1ICAgICAgICAgICAqcGR1LAorICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydCAgICAgKnRyYW5zcG9ydCwKKyAgICAgICAgICAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICpoYW5kbGVyKQoreworICAgIHNxbF9idWYgICAgICpzcWxiOworICAgIGludCAgICAgICAgICBvbGRfZm9ybWF0LCByYzsKKworICAgIERFQlVHTVNHVEwoKCJzcWw6aGFuZGxlciIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBhbGxvY2F0ZSBhIGJ1ZmZlciB0byBzYXZlIGRhdGEgKi8KKyAgICBzcWxiID0gX3NxbF9idWZfZ2V0KCk7CisgICAgaWYgKE5VTEwgPT0gc3FsYikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGFsbG9jYXRlIHRyYXAgc3FsIGJ1ZmZlclxuIik7CisgICAgICAgIHJldHVybiBzeXNsb2dfaGFuZGxlciggcGR1LCB0cmFuc3BvcnQsIGhhbmRsZXIgKTsKKyAgICB9CisKKyAgICAvKiogc2F2ZSBPSUQgb3V0cHV0IGZvcm1hdCBhbmQgY2hhbmdlIHRvIG51bWVyaWMgKi8KKyAgICBvbGRfZm9ybWF0ID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUKTsKKyAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9PSURfT1VUUFVUX05VTUVSSUMpOworCisKKyAgICByYyA9IF9zcWxfc2F2ZV90cmFwX2luZm8oc3FsYiwgcGR1LCB0cmFuc3BvcnQpOworICAgIHJjID0gX3NxbF9zYXZlX3ZhcmJpbmRfaW5mbyhzcWxiLCBwZHUpOworCisgICAgLyoqIHJlc3RvcmUgcHJldmlvdXMgT0lEIG91dHB1dCBmb3JtYXQgKi8KKyAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkX2Zvcm1hdCk7CisKKyAgICAvKiogaW5zZXJ0IGludG8gcXVldWUgKi8KKyAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoX3NxbC5xdWV1ZSwgc3FsYik7CisgICAgaWYocmMpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBsb2cgcXVldWUgc3FsIHRyYXAgYnVmZmVyXG4iKTsKKyAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgIF9zcWxfYnVmX2ZyZWUoc3FsYiwgMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2F2ZSBxdWV1ZSBpZiBzaXplIGlzID4gbWF4ICovCisgICAgaWYgKENPTlRBSU5FUl9TSVpFKF9zcWwucXVldWUpID49IF9zcWwucXVldWVfbWF4KQorICAgICAgICBfc3FsX3Byb2Nlc3NfcXVldWUoMCxOVUxMKTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogc2F2ZSBhIGJ1ZmZlcmVkIHRyYXAgdG8gc3FsIGRhdGFiYXNlCisgKi8KK3N0YXRpYyB2b2lkCitfc3FsX3NhdmUoc3FsX2J1ZiAqc3FsYiwgdm9pZCAqZG9udGNhcmUpCit7CisgICAgbmV0c25tcF9pdGVyYXRvciAgICAgKml0OworICAgIHNxbF92Yl9idWYgICAgICAgICAgICpzcWx2YjsKKyAgICB1X2xvbmcgICAgICAgICAgICAgICAgdHJhcF9pZDsKKworICAgIC8qCisgICAgICogZG9uJ3QgZXZlbiB0cnkgaWYgd2UgZG9uJ3QgaGF2ZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24KKyAgICAgKi8KKyAgICBpZiAoMCA9PSBfc3FsLmNvbm5lY3RlZCkgeworICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogdGhlIHByZXBhcmVkIHN0YXRlbWVudHMgYXJlIGJvdW5kIHRvIHRoZSBzdGF0aWMgYnVmZmVyIG9iamVjdHMsCisgICAgICogc28gY29weSB0aGUgcXVldWVkIGRhdGEgdG8gdGhlIHN0YXRpYyB2ZXJzaW9uLgorICAgICAqLworICAgIF90YmluZFtUQklORF9IT1NUXS5idWZmZXIgPSBzcWxiLT5ob3N0OworICAgIF90YmluZFtUQklORF9IT1NUXS5idWZmZXJfbGVuZ3RoID0gc3FsYi0+aG9zdF9sZW47CisKKyAgICBfdGJpbmRbVEJJTkRfT0lEXS5idWZmZXIgPSBzcWxiLT5vaWQ7CisgICAgX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyX2xlbmd0aCA9IHNxbGItPm9pZF9sZW47CisKKyAgICBfdGJpbmRbVEJJTkRfUkVRSURdLmJ1ZmZlciA9ICh2b2lkICopJnNxbGItPnJlcWlkOworICAgIF90YmluZFtUQklORF9WRVJdLmJ1ZmZlciA9ICh2b2lkICopJnNxbGItPnZlcnNpb247CisgICAgX3RiaW5kW1RCSU5EX1RZUEVdLmJ1ZmZlciA9ICh2b2lkICopJnNxbGItPnR5cGU7CisgICAgX3RiaW5kW1RCSU5EX1NFQ1VSSVRZX01PREVMXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT5zZWN1cml0eV9tb2RlbDsKKworICAgIF90YmluZFtUQklORF9EQVRFXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT50aW1lOworCisgICAgX3RiaW5kW1RCSU5EX1VTRVJdLmJ1ZmZlciA9IHNxbGItPnVzZXI7CisgICAgX3RiaW5kW1RCSU5EX1VTRVJdLmJ1ZmZlcl9sZW5ndGggPSBzcWxiLT51c2VyX2xlbjsKKworICAgIF90YmluZFtUQklORF9UUkFOU1BPUlRdLmJ1ZmZlciA9IHNxbGItPnRyYW5zcG9ydDsKKyAgICBpZiAoc3FsYi0+dHJhbnNwb3J0KQorICAgICAgICBfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXJfbGVuZ3RoID0gc3RybGVuKHNxbGItPnRyYW5zcG9ydCk7CisgICAgZWxzZQorICAgICAgICBfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXJfbGVuZ3RoID0gMDsKKworCisgICAgaWYgKChTTk1QX01QX01PREVMX1NOTVB2MysxKSA9PSBzcWxiLT52ZXJzaW9uKSB7CisgICAgICAgIF9ub192MyA9IDA7CisKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX01TR0lEXS5idWZmZXIgPSAmc3FsYi0+bXNnaWQ7CisgICAgICAgIAorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTEVWRUxdLmJ1ZmZlciA9ICZzcWxiLT5zZWN1cml0eV9sZXZlbDsKKyAgICAgICAgCisgICAgICAgIF90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmJ1ZmZlciA9IHNxbGItPmNvbnRleHQ7CisgICAgICAgIF90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmJ1ZmZlcl9sZW5ndGggPSBzcWxiLT5jb250ZXh0X2xlbjsKKworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmJ1ZmZlciA9IHNxbGItPmNvbnRleHRfZW5naW5lOworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmJ1ZmZlcl9sZW5ndGggPQorICAgICAgICAgICAgc3FsYi0+Y29udGV4dF9lbmdpbmVfbGVuOworCisgICAgICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9OQU1FXS5idWZmZXIgPSBzcWxiLT5zZWN1cml0eV9uYW1lOworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTkFNRV0uYnVmZmVyX2xlbmd0aCA9IHNxbGItPnNlY3VyaXR5X25hbWVfbGVuOworCisgICAgICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9FTkdJTkVdLmJ1ZmZlciA9IHNxbGItPnNlY3VyaXR5X2VuZ2luZTsKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0VOR0lORV0uYnVmZmVyX2xlbmd0aCA9CisgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9lbmdpbmVfbGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX25vX3YzID0gMTsKKyAgICB9CisKKyAgICBpZiAobXlzcWxfc3RtdF9iaW5kX3BhcmFtKF9zcWwudHJhcF9zdG10LCBfdGJpbmQpICE9IDApIHsKKyAgICAgICAgbmV0c25tcF9zcWxfc3RtdF9lcnJvcihfc3FsLnRyYXBfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGJpbmQgcGFyYW1ldGVycyBmb3IgSU5TRVJUIik7CisgICAgICAgIF9zcWxfbG9nKHNxbGIsIE5VTEwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoqIGV4ZWN1dGUgdGhlIHByZXBhcmVkIHN0YXRlbWVudCAqLworICAgIGlmIChteXNxbF9zdG10X2V4ZWN1dGUoX3NxbC50cmFwX3N0bXQpICE9IDApIHsKKyAgICAgICAgbmV0c25tcF9zcWxfc3RtdF9lcnJvcihfc3FsLnRyYXBfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGV4ZWN1dGUgaW5zZXJ0IHN0YXRlbWVudCBmb3IgdHJhcCIpOworICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0cmFwX2lkID0gbXlzcWxfaW5zZXJ0X2lkKF9zcWwuY29ubik7CisKKyAgICAvKgorICAgICAqIGl0ZXJhdGUgb3ZlciB0aGUgdmFyYmluZHMsIGNvcHkgZGF0YSBhbmQgaW5zZXJ0CisgICAgICovCisgICAgaXQgPSBDT05UQUlORVJfSVRFUkFUT1Ioc3FsYi0+dmFyYmluZHMpOworICAgIGlmIChOVUxMID09IGl0KSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIkNvdWxkIG5vdCBhbGxvY2F0ZSBpdGVyYXRvclxuIik7CisgICAgICAgIF9zcWxfbG9nKHNxbGIsIE5VTEwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yKCBzcWx2YiA9IElURVJBVE9SX0ZJUlNUKGl0KTsgc3FsdmI7IHNxbHZiID0gSVRFUkFUT1JfTkVYVChpdCkpIHsKKworICAgICAgICBfdmJpbmRbVkJJTkRfSURdLmJ1ZmZlciA9ICh2b2lkICopJnRyYXBfaWQ7CisgICAgICAgIF92YmluZFtWQklORF9UWVBFXS5idWZmZXIgPSAodm9pZCAqKSZzcWx2Yi0+dHlwZTsKKworICAgICAgICBfdmJpbmRbVkJJTkRfT0lEXS5idWZmZXIgPSBzcWx2Yi0+b2lkOworICAgICAgICBfdmJpbmRbVkJJTkRfT0lEXS5idWZmZXJfbGVuZ3RoID0gc3FsdmItPm9pZF9sZW47CisKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX1ZBTF0uYnVmZmVyID0gc3FsdmItPnZhbDsKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX1ZBTF0uYnVmZmVyX2xlbmd0aCA9IHNxbHZiLT52YWxfbGVuOworCisgICAgICAgIGlmIChteXNxbF9zdG10X2JpbmRfcGFyYW0oX3NxbC52Yl9zdG10LCBfdmJpbmQpICE9IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoX3NxbC52Yl9zdG10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGJpbmQgcGFyYW1ldGVycyBmb3IgSU5TRVJUIik7CisgICAgICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG15c3FsX3N0bXRfZXhlY3V0ZShfc3FsLnZiX3N0bXQpICE9IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoX3NxbC52Yl9zdG10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGV4ZWN1dGUgaW5zZXJ0IHN0YXRlbWVudCBmb3IgdmFyYmluZCIpOworICAgICAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0KTsKK30KKworLyoKKyAqIHByb2Nlc3MgKHNhdmUpIHF1ZXVlZCBpdGVtcyB0byBzcWwgZGF0YWJhc2UuCisgKgorICogZG9udGNhcmUgJiBtZWVpdGhlciBhcmUgZHVtbXkgcGFyYW1zIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQKKyAqIGFzIGEgbmV0c25tcF9hbGFybSBjYWxsYmFjayBmdW5jdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK19zcWxfcHJvY2Vzc19xdWV1ZSh1X2ludCBkb250Y2FyZSwgdm9pZCAqbWVlaXRoZXIpCit7CisgICAgaW50ICAgICAgICByYzsKKworICAgIC8qKiBiYWlsIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSAqLworICAgIGlmKCAwID09IENPTlRBSU5FUl9TSVpFKF9zcWwucXVldWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBERUJVR01TR1QoKCJzcWw6cHJvY2VzcyIsICJwcm9jZXNzaW5nICVkIHF1ZXVlZCB0cmFwc1xuIiwKKyAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKF9zcWwucXVldWUpKSk7CisKKyAgICAvKgorICAgICAqIGlmIHdlIGRvbid0IGhhdmUgYSBkYXRhYmFzZSBjb25uZWN0aW9uLCB0cnkgdG8gcmVjb25uZWN0LiBXZQorICAgICAqIGRvbid0IGNhcmUgaWYgd2UgZmFpbCAtIHRyYXBzIHdpbGwgYmUgbG9nZ2VkIGluIHRoYXQgY2FzZS4KKyAgICAgKi8KKyAgICBpZiAoMCA9PSBfc3FsLmNvbm5lY3RlZCkgeworICAgICAgICBERUJVR01TR1QoKCJzcWw6cHJvY2VzcyIsICJubyBzcWwgY29ubmVjdGlvbjsgcmVjb25uZWN0aW5nXG4iKSk7CisgICAgICAgICh2b2lkKSBuZXRzbm1wX215c3FsX2Nvbm5lY3QoKTsKKyAgICB9CisKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goX3NxbC5xdWV1ZSwgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfc3FsX3NhdmUsCisgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgaWYgKF9zcWwuY29ubmVjdGVkKSB7CisgICAgICAgIHJjID0gbXlzcWxfY29tbWl0KF9zcWwuY29ubik7CisgICAgICAgIGlmIChyYykgeyAvKiBudXRzLi4uIG5vdyB3aGF0PyAqLworICAgICAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoImNvbW1pdCBmYWlsZWQiKTsKKyAgICAgICAgICAgIENPTlRBSU5FUl9GT1JfRUFDSChfc3FsLnF1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX3NxbF9sb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDT05UQUlORVJfQ0xFQVIoX3NxbC5xdWV1ZSwgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfc3FsX2J1Zl9mcmVlLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30KKworI2VuZGlmIC8qIE5FVFNOTVBfVVNFX01ZU1FMICovCmRpZmYgLS1naXQgYS9hcHBzL3NubXB1c20uYyBiL2FwcHMvc25tcHVzbS5jCmluZGV4IGQxY2JhODcuLmY4NjUxNWUgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHVzbS5jCisrKyBiL2FwcHMvc25tcHVzbS5jCkBAIC0zMDEsNyArMzAxLDcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKIAogCSAgICBjYXNlICdFJzogewotCSAgICAgICAgc2l6ZV90IGVidWZfbGVuID0gMzI7IC8qIFhYWDogTUFYX0VOR0lORUlEX0xFTkdUSCAqLworCSAgICAgICAgc2l6ZV90IGVidWZfbGVuID0gTUFYX0VOR0lORUlEX0xFTkdUSDsKICAgICAgICAgICAgICAgICB1X2NoYXIgKmVidWY7CiAgICAgICAgICAgICAgICAgaWYgKG9wdGluZCA8IGFyZ2MpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3Zbb3B0aW5kXSkgewpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdmFjbS5jIGIvYXBwcy9zbm1wdmFjbS5jCmluZGV4IGNmMDcxZjIuLmJkYmE4OTYgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHZhY20uYworKysgYi9hcHBzL3NubXB2YWNtLmMKQEAgLTkwLDE5ICs5MCwxNSBAQAogCiBzdGF0aWMgb2lkICAgICAgdmFjbUdyb3VwTmFtZVtNQVhfT0lEX0xFTl0gPQogICAgIHsgMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDIsIDEsIDMgfSwKLSAgICB2YWNtU2VjMkdyb3VwU3RvcmFnZVR5cGVbTUFYX09JRF9MRU5dID0gewotMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDIsIDEsIDR9LCB2YWNtU2VjMkdyb3VwU3RhdHVzW01BWF9PSURfTEVOXSA9IHsKKyAgICB2YWNtU2VjMkdyb3VwU3RhdHVzW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCAyLCAxLCA1fSwgdmFjbUFjY2Vzc0NvbnRleHRNYXRjaFtNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNCwgMSwgNH0sIHZhY21BY2Nlc3NSZWFkVmlld05hbWVbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDV9LCB2YWNtQWNjZXNzV3JpdGVWaWV3TmFtZVtNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNCwgMSwgNn0sIHZhY21BY2Nlc3NOb3RpZnlWaWV3TmFtZVtNQVhfT0lEX0xFTl0gPSB7Ci0xLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNCwgMSwgN30sIHZhY21BY2Nlc3NTdG9yYWdlVHlwZVtNQVhfT0lEX0xFTl0gPSB7Ci0xLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNCwgMSwgOH0sIHZhY21BY2Nlc3NTdGF0dXNbTUFYX09JRF9MRU5dID0geworMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDd9LCB2YWNtQWNjZXNzU3RhdHVzW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA0LCAxLCA5fSwgdmFjbVZpZXdUcmVlRmFtaWx5TWFza1tNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNSwgMiwgMSwgM30sIHZhY21WaWV3VHJlZUZhbWlseVR5cGVbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDUsIDIsIDEsIDR9LAotICAgIHZhY21WaWV3VHJlZUZhbWlseVN0b3JhZ2VUeXBlW01BWF9PSURfTEVOXSA9IHsKLTEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA1LCAyLCAxLCA1fSwKICAgICB2YWNtVmlld1RyZWVGYW1pbHlTdGF0dXNbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDUsIDIsIDEsIDZ9CiAKQEAgLTExMSw3ICsxMDcsNiBAQAogI2RlZmluZSBOU1ZBQ01BQ0NFU1NUQUJMRSAgICAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA5LCAxCiBzdGF0aWMgb2lkIG5zVmFjbUNvbnRleHRQZnhbTUFYX09JRF9MRU5dICA9IHsgTlNWQUNNQUNDRVNTVEFCTEUsIDEsIDIgfTsKIHN0YXRpYyBvaWQgbnNWYWNtVmlld05hbWVbTUFYX09JRF9MRU5dICAgID0geyBOU1ZBQ01BQ0NFU1NUQUJMRSwgMSwgMyB9Owotc3RhdGljIG9pZCBuc1ZhY21TdG9yYWdlVHlwZVtNQVhfT0lEX0xFTl0gPSB7IE5TVkFDTUFDQ0VTU1RBQkxFLCAxLCA0IH07CiBzdGF0aWMgb2lkIG5zVmFjbVJvd1N0YXR1c1tNQVhfT0lEX0xFTl0gICA9IHsgTlNWQUNNQUNDRVNTVEFCTEUsIDEsIDUgfTsKIAogaW50ICAgICAgICAgICAgIHZpZXdUcmVlRmFtaWx5VHlwZSA9IDE7CmRpZmYgLS1naXQgYS9hcHBzL3NubXB3YWxrLmMgYi9hcHBzL3NubXB3YWxrLmMKaW5kZXggMzYxMzQxYS4uYjBkYjNmNCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wd2Fsay5jCisrKyBiL2FwcHMvc25tcHdhbGsuYwpAQCAtODAsNiArODAsOCBAQAogb2lkICAgICAgICAgICAgIG9iamlkX21pYltdID0geyAxLCAzLCA2LCAxLCAyLCAxIH07CiBpbnQgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IDA7CiAKK2NoYXIgICAgICAgICAgICplbmRfbmFtZSA9IE5VTEw7CisKIHZvaWQKIHVzYWdlKHZvaWQpCiB7CkBAIC05Niw2ICs5OCw3IEBACiAgICAgICAgICAgICAiXHRcdFx0ICBjOiAgZG8gbm90IGNoZWNrIHJldHVybmVkIE9JRHMgYXJlIGluY3JlYXNpbmdcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIlx0XHRcdCAgdDogIERpc3BsYXkgd2FsbC1jbG9jayB0aW1lIHRvIGNvbXBsZXRlIHRoZSByZXF1ZXN0XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHRcdCAgRSB7T0lEfTogIEVuZCB0aGUgd2FsayBhdCB0aGUgc3BlY2lmaWVkIE9JRFxuIik7CiB9CiAKIHZvaWQKQEAgLTE1MSw2ICsxNTQsMTAgQEAKICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX3RvZ2dsZV9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKTsKICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAnRSc6CisgICAgICAgICAgICAgICAgZW5kX25hbWUgPSBhcmd2W29wdGluZCsrXTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmtub3duIGZsYWcgcGFzc2VkIHRvIC1DOiAlY1xuIiwKQEAgLTE3Myw2ICsxODAsOCBAQAogICAgIHNpemVfdCAgICAgICAgICBuYW1lX2xlbmd0aDsKICAgICBvaWQgICAgICAgICAgICAgcm9vdFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIHJvb3RsZW47CisgICAgb2lkICAgICAgICAgICAgIGVuZF9vaWRbTUFYX09JRF9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBlbmRfbGVuID0gMDsKICAgICBpbnQgICAgICAgICAgICAgY291bnQ7CiAgICAgaW50ICAgICAgICAgICAgIHJ1bm5pbmc7CiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1cyA9IFNUQVRfRVJST1I7CkBAIC0yMzMsNiArMjQyLDIzIEBACiAgICAgICAgIHJvb3RsZW4gPSBzaXplb2Yob2JqaWRfbWliKSAvIHNpemVvZihvaWQpOwogICAgIH0KIAorICAgIC8qCisgICAgICogSWYgd2UndmUgYmVlbiBnaXZlbiBhbiBleHBsaWNpdCBlbmQgcG9pbnQsCisgICAgICogIHRoZW4gY29udmVydCB0aGlzIHRvIGFuIE9JRCwgb3RoZXJ3aXNlCisgICAgICogIG1vdmUgdG8gdGhlIG5leHQgc2libGluZyBvZiB0aGUgc3RhcnQuCisgICAgICovCisgICAgaWYgKCBlbmRfbmFtZSApIHsKKyAgICAgICAgZW5kX2xlbiA9IE1BWF9PSURfTEVOOworICAgICAgICBpZiAoc25tcF9wYXJzZV9vaWQoZW5kX25hbWUsIGVuZF9vaWQsICZlbmRfbGVuKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBzbm1wX3BlcnJvcihlbmRfbmFtZSk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbWVtbW92ZShlbmRfb2lkLCByb290LCByb290bGVuKnNpemVvZihvaWQpKTsKKyAgICAgICAgZW5kX2xlbiA9IHJvb3RsZW47CisgICAgICAgIGVuZF9vaWRbZW5kX2xlbi0xXSsrOworICAgIH0KKwogICAgIFNPQ0tfU1RBUlRVUDsKIAogICAgIC8qCkBAIC0yODQsOSArMzEwLDggQEAKICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBmb3IgKHZhcnMgPSByZXNwb25zZS0+dmFyaWFibGVzOyB2YXJzOwogICAgICAgICAgICAgICAgICAgICAgdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh2YXJzLT5uYW1lX2xlbmd0aCA8IHJvb3RsZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAobWVtY21wKHJvb3QsIHZhcnMtPm5hbWUsIHJvb3RsZW4gKiBzaXplb2Yob2lkKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSAwKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc25tcF9vaWRfY29tcGFyZShlbmRfb2lkLCBlbmRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzLT5uYW1lLCB2YXJzLT5uYW1lX2xlbmd0aCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICAgICAqIG5vdCBwYXJ0IG9mIHRoaXMgc3VidHJlZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYXBwcy9zc2h0b3NubXAuYyBiL2FwcHMvc3NodG9zbm1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcwYTQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2FwcHMvc3NodG9zbm1wLmMKQEAgLTAsMCArMSwyMzQgQEAKKy8qIENvcHlyaWdodCAyMDA5IFNQQVJUQSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisKKy8qCisgKiBUaGlzIGlzIG1lcmVseSBhIHdyYXBwZXIgYXJvdW5kIHN0ZGluL291dCBmb3Igc3NoZCB0byBjYWxsLiAgSXQKKyAqIHNpbXBseSBwYXNzZXMgdHJhZmZpYyB0byB0aGUgcnVubmluZyBzbm1wZCB0aHJvdWdoIGEgdW5peCBkb21haW4KKyAqIHNvY2tldCBhZnRlciBmaXJzdCBwYXNzaW5nIGFueSBuZWVkZWQgU1NIIERvbWFpbiBpbmZvcm1hdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1VOX0gKKyNpbmNsdWRlIDxzeXMvdW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lmbmRlZiBNQVhQQVRITEVOCisjd2FybiBubyBzeXN0ZW0gbWF4IHBhdGggbGVuZ3RoIGRldGVjdGVkCisjZGVmaW5lIE1BWFBBVEhMRU4gMjA0OAorI2VuZGlmCisKKyNkZWZpbmUgREVGQVVMVF9TT0NLX1BBVEggIi92YXIvbmV0LXNubXAvc3NoZG9tYWluc29ja2V0IgorCisjZGVmaW5lIE5FVFNOTVBfU1NIVE9TTk1QX1ZFUlNJT05fTlVNQkVSIDEKKworCisKKy8qCisgKiBFeHRyYSBkZWJ1Z2dpbmcgb3V0cHV0IGZvciwgdW0sIGRlYnVnZ2luZy4KKyAqLworCisjdW5kZWYgREVCVUdHSU5HCisKKyNpZmRlZiBERUJVR0dJTkcKKyNkZWZpbmUgREVCVUcoeCkgZGViKHgpCitGSUxFICpkZWJmID0gTlVMTDsKK3ZvaWQKK2RlYihjb25zdCBjaGFyICpzdHJpbmcpIHsKKyAgICBpZiAoTlVMTCA9PSBkZWJmKSB7CisgICAgICAgIGRlYmYgPSBmb3BlbigiL3RtcC9zc2h0b3NubXAubG9nIiwgImEiKTsKKyAgICB9CisgICAgaWYgKE5VTEwgIT0gZGViZikgeworICAgICAgICBmcHJpbnRmKGRlYmYsICIlc1xuIiwgc3RyaW5nKTsKKyAgICAgICAgZmZsdXNoKGRlYmYpOworICAgIH0KK30KKyNlbHNlICAvKiAhREVCVUdHSU5HICovCisjZGVmaW5lIERFQlVHKHgpCisjZW5kaWYgLyogREVCVUdHSU5HIGNvZGUgKi8KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCisgICAgaW50IHNvY2s7CisgICAgc3RydWN0IHNvY2thZGRyX3VuIGFkZHI7CisgICAgdV9jaGFyIGJ1Zls0MDk2XTsKKyAgICBzaXplX3QgYnVmX2xlbiA9IHNpemVvZihidWYpOworICAgIHVfc2hvcnQgbmFtZV9sZW47CisgICAgaW50IHJjID0gMCwgcGt0c2l6ZSA9IDA7CisKKyAgICBmZF9zZXQgcmVhZF9zZXQ7CisKKyAgICBERUJVRygiLS0tLS0tLS0tLVxuc3RhcnRpbmcgdXAiKTsKKworICAgIC8qIE9wZW4gYSBjb25uZWN0aW9uIHRvIHRoZSBVTklYIGRvbWFpbiBzb2NrZXQgb3IgZmFpbCAqLworCisgICAgYWRkci5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKKyAgICBpZiAoYXJnYyA+IDEpIHsKKyAgICAgICAgc3RyY3B5KGFkZHIuc3VuX3BhdGgsIGFyZ3ZbMV0pOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmNweShhZGRyLnN1bl9wYXRoLCBERUZBVUxUX1NPQ0tfUEFUSCk7CisgICAgfQorCisgICAgc29jayA9IHNvY2tldChQRl9VTklYLCBTT0NLX1NUUkVBTSwgMCk7CisgICAgREVCVUcoImNyZWF0ZWQgc29ja2V0Iik7CisgICAgaWYgKHNvY2sgPD0gMCkgeworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIC8qIHNldCB0aGUgU09fUEFTU0NSRUQgb3B0aW9uIHNvIHdlIGNhbiBwYXNzIHVpZCAqLworICAgIC8qIFhYWDogYWNjb3JkaW5nIHRvIHRoZSB1bml4KDEpIG1hbnVhbCB0aGlzIHNob3VsZG4ndCBiZSBuZWVkZWQKKyAgICAgICBvbiB0aGUgc2VuZGluZyBzaWRlPyAqLworICAgIHsKKyAgICAgICAgaW50IG9uZSA9IDE7CisgICAgICAgIHNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fUEFTU0NSRUQsICh2b2lkICopICZvbmUsCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG9uZSkpOworICAgIH0KKworICAgIGlmIChjb25uZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIsCisgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bikpICE9IDApIHsKKyAgICAgICAgREVCVUcoIkZBSUwgQ09OTkVDVCIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIERFQlVHKCJvcGVuZWQgc29ja2V0Iik7CisKKyAgICAvKgorICAgICAqIHdlIGFyZSBydW5uaW5nIGFzIHRoZSB1c2VyIHRoYXQgc3NoIGF1dGhlbnRpY2F0ZWQgdXMgYXMsIGFuZCB0aGlzCisgICAgICogaXMgdGhlIG5hbWUvdWlkIHRoYXQgdGhlIGFnZW50IG5lZWRzIGZvciBwcm9jZXNzaW5nIGFzIGEgU05NUHYzCisgICAgICogc2VjdXJpdHkgbmFtZS4gIFNvIHRoaXMgaXMgdGhlIG9ubHkgdGhpbmcgbmVlZGVkIHRvIHBhc3MgdG8gdGhlCisgICAgICogYWdlbnQuCisgICAgICovCisKKyAgICAvKiB2ZXJzaW9uIDEgb2Ygb3VyIGludGVybmFsIHNzaCB0byBzbm1wIHdyYXBwZXIgaXMganVzdCBhIHNpbmdsZQorICAgICAgIGJ5dGUgdmVyc2lvbiBudW1iZXIgYW5kIGluZGljYXRlcyB3ZSdyZSBhbHNvIHBhc3NpbmcgdW5peAorICAgICAgIHNvY2tldCBjcmVkZW50aWFscyBjb250YWluaW5nIG91ciB1c2VyIGlkICovCisKKyAgICAvKiBJbiBjYXNlIG9mIGZ1dHVyZSBjaGFuZ2VzLCB3ZSdsbCBwYXNzIGEgdmVyc2lvbiBudW1iZXIgZmlyc3QgKi8KKworICAgIGJ1ZlswXSA9IE5FVFNOTVBfU1NIVE9TTk1QX1ZFUlNJT05fTlVNQkVSOworICAgIGJ1Zl9sZW4gPSAxOworICAgIAorICAgIC8qIHNlbmQgdGhlIHByZWxpbSBtZXNzYWdlIGFuZCB0aGUgY3JlZGVudGlhbHMgdG9nZXRoZXIgdXNpbmcgc2VuZG1zZygpICovCisgICAgeworICAgICAgICBzdHJ1Y3QgbXNnaGRyIG07CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgIHN0cnVjdCBjbXNnaGRyIGNtOworICAgICAgICAgICBzdHJ1Y3QgdWNyZWQgb3VydXNlcjsKKyAgICAgICAgfSBjbXNnOworICAgICAgICBzdHJ1Y3QgaW92ZWMgaW92ID0geyBidWYsIGJ1Zl9sZW4gfTsKKworICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCBldmVuIHBhZGRpbmcgZmllbGRzIGdldCBpbml0aWFsaXplZC4qLworICAgICAgICBtZW1zZXQoJmNtc2csIDAsIHNpemVvZihjbXNnKSk7CisgICAgICAgIG1lbXNldCgmbSwgMCwgc2l6ZW9mKG0pKTsKKworICAgICAgICAvKiBzZXQgdXAgdGhlIGJhc2ljIG1lc3NhZ2UgKi8KKyAgICAgICAgY21zZy5jbS5jbXNnX2xlbiA9IHNpemVvZihzdHJ1Y3QgY21zZ2hkcikgKyBzaXplb2Yoc3RydWN0IHVjcmVkKTsKKyAgICAgICAgY21zZy5jbS5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKKyAgICAgICAgY21zZy5jbS5jbXNnX3R5cGUgPSBTQ01fQ1JFREVOVElBTFM7CisKKyAgICAgICAgY21zZy5vdXJ1c2VyLnVpZCA9IGdldHVpZCgpOworICAgICAgICBjbXNnLm91cnVzZXIuZ2lkID0gZ2V0Z2lkKCk7CisgICAgICAgIGNtc2cub3VydXNlci5waWQgPSBnZXRwaWQoKTsKKworICAgICAgICBtLm1zZ19pb3YgICAgICAgICAgICAgICA9ICZpb3Y7CisgICAgICAgIG0ubXNnX2lvdmxlbiAgICAgICAgICAgID0gMTsKKyAgICAgICAgbS5tc2dfY29udHJvbCAgICAgICAgICAgPSAmY21zZzsKKyAgICAgICAgbS5tc2dfY29udHJvbGxlbiAgICAgICAgPSBzaXplb2YoY21zZyk7CisgICAgICAgIG0ubXNnX2ZsYWdzICAgICAgICAgICAgID0gMDsKKyAgICAgICAgCisgICAgICAgIERFQlVHKCJzZW5kaW5nIHRvIHNvY2siKTsKKyAgICAgICAgcmMgPSBzZW5kbXNnKHNvY2ssICZtLCBNU0dfTk9TSUdOQUx8TVNHX0RPTlRXQUlUKTsKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gc2VuZCBzdGFydHVwIG1lc3NhZ2VcbiIpOworICAgICAgICAgICAgREVCVUcoImZhaWxlZCB0byBzZW5kIHN0YXJ0dXAgbWVzc2FnZVxuIik7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgfQorCisgICAgREVCVUcoInNlbnQgbmFtZSIpOworICAgIAorICAgIC8qIG5vdyB3ZSBqdXN0IHNlbmQgYW5kIHJlY2VpdmUgZnJvbSBib3RoIHRoZSBzb2NrZXQgYW5kIHN0ZGluL3N0ZG91dCAqLworCisgICAgd2hpbGUoMSkgeworICAgICAgICAvKiByZWFkIGZyb20gc3RkaW4gYW5kIHRoZSBzb2NrZXQgKi8KKyAgICAgICAgRkRfU0VUKHNvY2ssICZyZWFkX3NldCk7CisgICAgICAgIEZEX1NFVChTVERJTl9GSUxFTk8sICZyZWFkX3NldCk7CisKKyAgICAgICAgLyogYmxvY2tpbmcgd2l0aG91dCBhIHRpbWVvdXQgYmUgZmluZSBmaW5lICovCisgICAgICAgIHNlbGVjdChzb2NrKzEsICZyZWFkX3NldCwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKyAgICAgICAgaWYgKEZEX0lTU0VUKFNURElOX0ZJTEVOTywgJnJlYWRfc2V0KSkgeworICAgICAgICAgICAgLyogcmVhZCBmcm9tIHN0ZGluIHRvIGdldCBzdHVmZiBmcm9tIHNzaGQgdG8gc2VuZCB0byB0aGUgYWdlbnQgKi8KKyAgICAgICAgICAgIERFQlVHKCJkYXRhIGZyb20gc3RkaW4iKTsKKyAgICAgICAgICAgIHJjID0gcmVhZChTVERJTl9GSUxFTk8sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCisgICAgICAgICAgICBpZiAocmMgPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIGVuZC1vZi1maWxlICovCisjaWZuZGVmIEhBVkVfQ0xPU0VTT0NLRVQKKyAgICAgICAgICAgICAgICByYyA9IGNsb3NlKHNvY2spOworI2Vsc2UKKyAgICAgICAgICAgICAgICByYyA9IGNsb3Nlc29ja2V0KHNvY2spOworI2VuZGlmCisgICAgICAgICAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERFQlVHKCJyZWFkIGZyb20gc3RkaW4iKTsKKworICAgICAgICAgICAgLyogc2VuZCBpdCB1cCB0aGUgcGlwZSAqLworICAgICAgICAgICAgcGt0c2l6ZSA9IHJjOworICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgICAgIHdoaWxlIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICBERUJVRygic2VuZGluZyB0byBzb2NrZXQiKTsKKyAgICAgICAgICAgICAgICByYyA9IHNlbmR0byhzb2NrLCBidWYsIHBrdHNpemUsIDAsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIERFQlVHKCJiYWNrIGZyb20gc2VuZHRvIik7CisgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgREVCVUcoInNlbnR0byBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICAgICAgREVCVUcoInNlbnQgdG8gc29ja2V0Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgREVCVUcoImZhaWxlZCB0byBzZW5kIHRvIHNvY2tldCEhIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRkRfSVNTRVQoc29jaywgJnJlYWRfc2V0KSkgeworICAgICAgICAgICAgLyogcmVhZCBmcm9tIHRoZSBzb2NrZXQgYW5kIHNlbmQgdG8gdG8gc3Rkb3V0IHdoaWNoIGdvZXMgdG8gc3NoZCAqLworICAgICAgICAgICAgREVCVUcoImRhdGEgb24gdW5peCBzb2NrZXQiKTsKKworICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgICAgIHdoaWxlIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICByYyA9IHJlY3Zmcm9tKHNvY2ssIGJ1Ziwgc2l6ZW9mKGJ1ZiksIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2Uoc29jayk7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUcoInJlYWQgZnJvbSBzb2NrZXQiKTsKKworICAgICAgICAgICAgcGt0c2l6ZSA9IHJjOworICAgICAgICAgICAgcmMgPSB3cml0ZShTVERPVVRfRklMRU5PLCBidWYsIHBrdHNpemUpOworICAgICAgICAgICAgLyogWFhYOiBjaGVjayB0aGF0IGNvdW50cyBtYXRjaCAqLworICAgICAgICAgICAgaWYgKHJjID4gMCkgeworICAgICAgICAgICAgICAgIERFQlVHKCJ3cm90ZSB0byBzdGRvdXQiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgREVCVUcoImZhaWxlZCB0byB3cml0ZSB0byBzdGRvdXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwppbmRleCBmMzIwNzlhLi5jYTJhMDNjIDEwMDc1NQotLS0gYS9jb25maWcuZ3Vlc3MKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC00LDcgKzQsNyBAQAogIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKICMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDA4LTAxLTIzJwordGltZXN0YW1wPScyMDA4LTAxLTA4JwogCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNDg0LDkgKzE0ODQsOSBAQAogdGhlIG9wZXJhdGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQogZG93bmxvYWQgdGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIHRoZSBjb25maWcgc2NyaXB0cyBmcm9tCiAKLSAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECisgIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLmd1ZXNzCiBhbmQKLSAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAorICBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9jZ2ktYmluL3ZpZXdjdnMvKmNoZWNrb3V0Ki9jb25maWcvY29uZmlnL2NvbmZpZy5zdWIKIAogSWYgdGhlIHZlcnNpb24geW91IHJ1biAoJDApIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSwgcGxlYXNlCiBzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGYwYWRlYWYuLjhhZTk1OGEgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYjRjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuYWMKQEAgLTAsMCArMSwxMjIgQEAKKyMgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisjIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisjIHRoYXQgbWF5IGFwcGx5OgorIworIyBQb3J0aW9ucyBDb3B5cmlnaHQgqSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorIworCisjCisjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCisjCitBQ19JTklUKFtOZXQtU05NUF0sIFs1LjUuMl0sIFtuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0XSkKK0FDX1BSRVJFUShbMi42M10pCitBQ19DT05GSUdfU1JDRElSKFthZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmNdKQorQUNfUkVWSVNJT04oWyRSZXZpc2lvbiRdKQorCitBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCitBQ19DT05GSUdfSEVBREVSKGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgpCisKK0FDX01TR19DQUNIRV9JTklUKCkKKworIworIyBzYXZlIHRoZSBjb25maWd1cmUgYXJndW1lbnRzCisjCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUywiJGFjX2NvbmZpZ3VyZV9hcmdzIiwKKyAgW2NvbmZpZ3VyZSBvcHRpb25zIHNwZWNpZmllZF0pCitDT05GSUdVUkVfT1BUSU9OUz0iXCIkYWNfY29uZmlndXJlX2FyZ3NcIiIKK0FDX1NVQlNUKENPTkZJR1VSRV9PUFRJT05TKQorCisjIworIyMgUmVjb21tZW5kZWQgc3RydWN0dXJlOgorIyMKKyMgICAgIGluZm9ybWF0aW9uIG9uIHRoZSBwYWNrYWdlCisjICAgICBjaGVja3MgZm9yIHByb2dyYW1zCisjICAgICBjaGVja3MgZm9yIGxpYnJhcmllcworIyAgICAgY2hlY2tzIGZvciBoZWFkZXIgZmlsZXMKKyMgICAgIGNoZWNrcyBmb3IgdHlwZXMKKyMgICAgIGNoZWNrcyBmb3Igc3RydWN0dXJlcworIyAgICAgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKKyMgICAgIGNoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMKKyMgICAgIGNoZWNrcyBmb3Igc3lzdGVtIHNlcnZpY2VzCisKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRoc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYl0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfbGliczFdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnRdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MxXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMl0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbl0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzJdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfdHlwZXNdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnNdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNF0pCisKKyMKKyMgZGVmaW5lIHRoZSBhZ2VudCBsaWJyYXJpZXMgdmFyaWFibGVzCisjCitBQ19TVUJTVChMTUlCTElCUykKK0FDX1NVQlNUKEFHRU5UTElCUykKK0FDX1NVQlNUKE9USEVSQUdFTlRMSUJPQkpTKQorQUNfU1VCU1QoT1RIRVJBR0VOVExJQkxPQkpTKQorCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWxdKQorCitBQ19TVUJTVChETExJQlMpCisKK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGU6TWFrZWZpbGUudG9wOk1ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzXSkKK0FDX0NPTkZJR19GSUxFUyhbc25tcGxpYi9NYWtlZmlsZTpNYWtlZmlsZS50b3A6c25tcGxpYi9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczpzbm1wbGliL01ha2VmaWxlLmRlcGVuZF0pCitBQ19DT05GSUdfRklMRVMoW2FwcHMvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFwcHMvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YXBwcy9NYWtlZmlsZS5kZXBlbmRdKQorQUNfQ09ORklHX0ZJTEVTKFthcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlOk1ha2VmaWxlLnRvcDphcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kXSkKK0FDX0NPTkZJR19GSUxFUyhbYWdlbnQvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFnZW50L01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L01ha2VmaWxlLmRlcGVuZF0pCitBQ19DT05GSUdfRklMRVMoW2FnZW50L2hlbHBlcnMvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmRdKQorQUNfQ09ORklHX0ZJTEVTKFthZ2VudC9taWJncm91cC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kXSkKK0FDX0NPTkZJR19GSUxFUyhbbG9jYWwvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmxvY2FsL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzXSkKK0FDX0NPTkZJR19GSUxFUyhbdGVzdGluZy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6dGVzdGluZy9NYWtlZmlsZS5pbl0pCitBQ19DT05GSUdfRklMRVMoW21hbi9NYWtlZmlsZTpNYWtlZmlsZS50b3A6bWFuL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzXSkKK0FDX0NPTkZJR19GSUxFUyhbbWlicy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6bWlicy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW25ldC1zbm1wLWNvbmZpZzpuZXQtc25tcC1jb25maWcuaW5dLAorCQlbY2htb2QgK3ggbmV0LXNubXAtY29uZmlnXSkKK0FDX0NPTkZJR19GSUxFUyhbbmV0LXNubXAtY3JlYXRlLXYzLXVzZXI6bmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW5dLAorCQlbY2htb2QgK3ggbmV0LXNubXAtY3JlYXRlLXYzLXVzZXJdKQorCitBQ19DT05GSUdfQ09NTUFORFMoW2RlZmF1bHRdLCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWgpCisKKyMKKyMgcHJvdGVjdCBQQUNLQUdFXyogdmFyaWFibGVzCisjCitBSF9WRVJCQVRJTShbUEFDS0FHRV9CVUdSRVBPUlRdLFsvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KKyNpZm5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKKyN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAorI2VuZGlmXSkKK0FIX1ZFUkJBVElNKFtQQUNLQUdFX05BTUVdLFsvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjaWZuZGVmIFBBQ0tBR0VfTkFNRQorI3VuZGVmIFBBQ0tBR0VfTkFNRQorI2VuZGlmXSkKK0FIX1ZFUkJBVElNKFtQQUNLQUdFX1NUUklOR10sWy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9TVFJJTkcKKyN1bmRlZiBQQUNLQUdFX1NUUklORworI2VuZGlmXSkKK0FIX1ZFUkJBVElNKFtQQUNLQUdFX1RBUk5BTUVdLFsvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjaWZuZGVmIFBBQ0tBR0VfVEFSTkFNRQorI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorI2VuZGlmXSkKK0FIX1ZFUkJBVElNKFtQQUNLQUdFX1ZFUlNJT05dLFsvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX1ZFUlNJT04KKyN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KKyNlbmRpZl0pCisKK0FDX09VVFBVVAorCitBQ19NU0dfQ0FDSEVfRElTUExBWSgpCisjIExvY2FsIFZhcmlhYmxlczoKKyMgbW9kZTogQXV0b2NvbmYKKyMgY29tbWVudC1zdGFydDogIiMiCisjIEVuZDoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50IGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxNTQ0OAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50CkBAIC0wLDAgKzEsNzgwIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMKKyMgZ2VuZXJhdGUgZW1wdHkgZmlsZXMKKyMKKyMgQ3JlYXRlIGluY2x1ZGUgZmlsZSBsaXN0IGZvciBzbm1wX3ZhcnMuaCB0byB1c2UuCittaWJkaXI9ImFnZW50L21pYmdyb3VwIgoraWYgdGVzdCAhIC1kIGFnZW50OyB0aGVuCisgIG1rZGlyIGFnZW50CitmaQoraWYgdGVzdCAhIC1kIGFnZW50L21pYmdyb3VwOyB0aGVuCisgIG1rZGlyIGFnZW50L21pYmdyb3VwCitmaQoraj0iJG1pYmRpci9taWJfbW9kdWxlX2luY2x1ZGVzLmggICRtaWJkaXIvYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmggXAorICAgJG1pYmRpci9taWJfbW9kdWxlX2luaXRzLmggICAgICRtaWJkaXIvYWdlbnRfbW9kdWxlX2luaXRzLmggICAgXAorICAgJG1pYmRpci9taWJfbW9kdWxlX3NodXRkb3duLmggICRtaWJkaXIvYWdlbnRfbW9kdWxlX3NodXRkb3duLmggXAorICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oICAgXAorICAgJG1pYmRpci9taWJfbW9kdWxlX2RvdF9jb25mLmggICRtaWJkaXIvYWdlbnRfbW9kdWxlX2RvdF9jb25mLmgiCisKK2ZvciBpIGluICRqOyBkbworICBybSAtZiAkaQorICBlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkaQorZG9uZQorCisjCisjIERvIGhhaXJ5IGFnZW50IG1vZHVsZSBwcm9jZXNzaW5nLgorIworQUNfTVNHX0NIRUNLSU5HKFtmb3IgYW5kIGNvbmZpZ3VyaW5nIG1pYiBtb2R1bGVzIHRvIHVzZV0pCisKKyMgc2V0IHVwIHRoZSBDUFAgY29tbWFuZAorTU9EVUxFQ1BQPSIkQ1BQICRQQVJUSUFMVEFSR0VURkxBR1MgLUkke3NyY2Rpcn0vaW5jbHVkZSAtSSR7c3JjZGlyfS9hZ2VudC9taWJncm91cCIKK2lmIHRlc3QgIngkZW5hYmxlX21mZF9yZXdyaXRlcyIgPSAieHllcyI7IHRoZW4KKyAgTU9EVUxFQ1BQPSIkTU9EVUxFQ1BQIC1ETkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTIgorZmkKKworbW9kdWxlX2xpc3Q9IiIKK21pYl9tb2R1bGVfbGlzdD0iIgorYWdlbnRfbW9kdWxlX2xpc3Q9IiIKK25ld193aXRoX21pYl9tb2R1bGVzPWBlY2hvICR3aXRoX21pYl9tb2R1bGVzIHwgJFNFRCAncy8sLyAvZzsnYAorbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzPWBlY2hvICR3aXRoX291dF9taWJfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKKworIyBzZXQgdXAgaW5pdGlhbCBtb2R1bGUgbGlzdAorbmV3X21vZHVsZV9saXN0PSIkbmV3X3dpdGhfbWliX21vZHVsZXMgZGVmYXVsdF9tb2R1bGVzIgorCisjIG1pbm9yIG1vZGlmaWNhdGlvbnMKK2lmIHRlc3QgIngkZW5hYmxlX2FnZW50IiA9ICJ4bm8iOyB0aGVuCisgICAjIG1pbmltdW0gbWliIG1vZHVsZSBsaXN0IGZvciBzbm1wdHJhcGQKKyAgIG5ld19tb2R1bGVfbGlzdD0ibWliSUkvdmFjbV92YXJzIG1pYklJL3ZhY21fY29uZiB1dGlsaXRpZXMvZXhlY3V0ZSAkbmV3X3dpdGhfbWliX21vZHVsZXMiCisgICBkZWZhdWx0X21pYnM9U05NUHYyLU1JQjpJRi1NSUI6SVAtTUlCOlRDUC1NSUI6VURQLU1JQgorICAgZGVmYXVsdF9taWJzX2luc3RhbGw9IiAiCitlbGlmIHRlc3QgIngkbWluaV9hZ2VudCIgPSAieHllcyI7IHRoZW4KKyAgICMgZGVmaW5lIHRoZSBtaW5pIGFnZW50IGZsYWcgdG8gcmVkdWNlIG91ciBsb2FkIGxpc3QgZnJvbSBkZWZhdWx0X21pYnMuaAorICAgTU9EVUxFQ1BQPSIkTU9EVUxFQ1BQIC1ETkVUU05NUF9NSU5JX0FHRU5UIgorZmkKKwordGVzdF9tb2R1bGVzPSIkbmV3X21vZHVsZV9saXN0IgorbmV3X21vZHVsZV9saXN0PSIiCisKKyMgcmVtb3ZlIG1vZHVsZXMgdGhhdCB3ZXJlIGV4cGxpY2l0bHkgZXhjbHVkZWQKK2ZvciBpIGluICR0ZXN0X21vZHVsZXMKKyBkbworICBpZiBlY2hvICIgJG5ld193aXRoX291dF9taWJfbW9kdWxlcyAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyBpcyBib3RoIGluY2x1ZGVkIGFuZCBleGNsdWRlZC4iCisgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgY29uZmxpY3RdKQorICAgIGlmIHRlc3QgIngkd2l0aF9taWJfY2ZnX2NoZWNrcyIgPSAieHllcyI7IHRoZW4KKyAgICAgIEFDX01TR19XQVJOKFt1c2VyIHdpdGggICAgOiAkd2l0aF9taWJfbW9kdWxlc10pCisgICAgICBBQ19NU0dfV0FSTihbZmluYWwgd2l0aCAgIDogJG5ld19tb2R1bGVfbGlzdF0pCisgICAgICBBQ19NU0dfV0FSTihbdXNlciB3aXRob3V0IDogJHdpdGhfb3V0X21pYl9tb2R1bGVzXSkKKyAgICAgIEFDX01TR19XQVJOKFtmaW5hbCB3aXRob3V0OiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzXSkKKyAgICAgIEFDX01TR19FUlJPUihbJG1pYl9jZmdfbXNnXSkKKyAgICBlbHNlCisgICAgICBBQ19NU0dfV0FSTihbJG1pYl9jZmdfbXNnIEl0IHdpbGwgYmUgZXhjbHVkZWRdKQorICAgICAgQUNfTVNHX0NBQ0hFX0FERChbKioqIE1JQiBNb2R1bGUgd2FybmluZyAqKiogJG1pYl9jZmdfbXNnIEl0IGhhcyBiZWVuIGV4Y2x1ZGVkLl0pCisgICAgZmkKKyAgZWxzZQorICAgIG5ld19tb2R1bGVfbGlzdD0iJG5ld19tb2R1bGVfbGlzdCAkaSIKKyAgZmkKK2RvbmUKKworQUNfTVNHX1JFU1VMVChbJG5ld19tb2R1bGVfbGlzdC5dKQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxvb3Agb3ZlciBtb2R1bGUgbGlzdAorIworYWxsX3dhcm5pbmdzPSIiCitpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19kZWJ1ZyIgPSAieHllcyI7IHRoZW4KKyAgIG1vZHVsZV9kZWJ1Zz0xCitlbHNlCisgICBtb2R1bGVfZGVidWc9MAorZmkKK2ZpcnN0X3Bhc3M9MQorb3V0cHV0X3RvPW5vcm1hbAorCitpZiB0ZXN0ICEgLWQgbWsgOyB0aGVuCisgIG1rZGlyIG1rCitmaQorCisKK21vZHVsZV9ydWxlcz1tay9tb2R1bGVfcnVsZXMubWsKK2VjaG8gIiMgY29udGVudHMgYmVsb3cgYnVpbHQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmU7IGRvIG5vdCBlZGl0IGJ5IGhhbmQiID4gJG1vZHVsZV9ydWxlcworCisjCisjIG1ha2UgZmlsZSBzdWItcGllY2VzCisjCitmb3IgaSBpbiBtb2R1bGVfbGlzdF9kZXBzIG1pYl9tb2R1bGVfbGlzdF9kZXBzIGFnZW50X21vZHVsZV9saXN0X2RlcHMgOyBkbworICBldmFsICIkaT1tay8ke2l9Lm1rIgorICBlY2hvICIjIGNvbnRlbnRzIGJlbG93IGJ1aWx0IGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlOyBkbyBub3QgZWRpdCBieSBoYW5kIiA+IG1rLyR7aX0ubWsKK2RvbmUKKworIworIyB2YXJpYWJsZSBzZXR0aW5ncyBzdWItcGllY2VzCisjCitmb3IgaSBpbiBtb2R1bGVfbGlzdF9jb2RlIG1pYl9tb2R1bGVfbGlzdF9jb2RlIGFnZW50X21vZHVsZV9saXN0X2NvZGUgbW9kdWxlX2xpc3QgbWliX21vZHVsZV9saXN0IGFnZW50X21vZHVsZV9saXN0IDsgZG8KKyAgZXZhbCAiJGk9bWsvJHtpfS5tayIKKyAgZWNobyAiIyBjb250ZW50cyBiZWxvdyBidWlsdCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZTsgZG8gbm90IGVkaXQgYnkgaGFuZCIgPiBtay8ke2l9Lm1rCisgIGVjaG8gIiRpPSBcXCIgPj4gbWsvJHtpfS5taworZG9uZQorCitlY2hvICRFQ0hPX04gImVjaG8gIiAkRUNIT19DID4gbWsvTU9EVUxFX0xJU1QubWsKK01PRFVMRV9MSVNUPW1rL01PRFVMRV9MSVNULm1rCisKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyB1bnRpbCB3ZSBoYXZlIGFuIGVtcHR5IG1vZHVsZSBsaXN0Li4uCisjICAgKG1vZHVsZXMgbWF5IGFkZCBuZXcgbW9kdWxlcywgYW5kIHVudGlsIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGRvbmUuLi4pCisjCit3aGlsZSB0ZXN0ICJ4JG5ld19tb2R1bGVfbGlzdCIgIT0gIngiOyBkbworICBBQ19NU0dfTU9EVUxFX0RCRygtZSwiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIikKKyAgQUNfTVNHX01PRFVMRV9EQkcoIm5tbDogJG5ld19tb2R1bGVfbGlzdCIpCisKKyAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAjIGxvb3Agb3ZlciBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIGN1cnJlbnQgbGlzdAorICAjCisgIGZvciBqIGluICRuZXdfbW9kdWxlX2xpc3QKKyAgICBkbworCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgZmlndXJlIG91dCB3aGljaCBzdWItYmxvY2tzIHRvIGJ1aWxkIGluIHBhcnRzCisgICAgaWYgZWNobyAiJGoiIHwgJEdSRVAgIj0iIDsgdGhlbgorICAgICAgICMgYnVpbGQgYSBzaGFyZWQgb2JqZWN0IGZpbGUKKyAgICAgICAjIGZvcm1hdDogc29maWxlbmFtZT1tb2R1bGUxOm1vZHVsZTIKKyAgICAgICAjIFhYWDogY3VycmVudGx5IGRvZXNuJ3QgZG8gdGhpcworICAgICAgIGRsX25hbWU9YGVjaG8gJGogfCAkU0VEICdzLz0uKi8vJ2AKKyAgICAgICBkbF9uYW1lcz0iJGRsX25hbWVzICRkbF9uYW1lIgorICAgICAgIGRsX29iamVjdHM9YGVjaG8gJGogfCAkU0VEICdzLy4qPS8vJ2AKKyAgICAgICBtb2R1bGVfc3VibGlzdD1gZWNobyAkZGxfb2JqZWN0cyB8ICRTRUQgJ3MvOi8gL2cnYAorICAgICAgIHNhdmVkX3N1Ymxpc3Q9IiIKKyAgICAgICBzYXZlZF9zdWJsaXN0X2NvZGU9IiIKKyAgICAgICBvdXRwdXRfdG89c2VwYXJhdGUKKworICAgICAgICMgY3JlYXRlIG91dHB1dCBmaWxlcworICAgICAgICMgdGhlc2UgYWN0dWFsbHkgZ2V0IG51a2VkIGxhdGVyCisgICAgICAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2RsX25hbWV9LWRsbC5jIgorICAgICAgIG91dHB1dF9oZHJzPSJhZ2VudC9taWJncm91cC8ke2RsX25hbWV9LWhkcnMuaCIKKyAgICBlbHNlCisgICAgICAgIyBub3QgYSBzcGVjaWFsIHRva2VuIGludm9jYXRpb24KKyAgICAgICBtb2R1bGVfc3VibGlzdD0kagorICAgICAgIG91dHB1dF90bz1ub3JtYWwKKyAgICAgICBvdXRwdXRfdD0KKyAgICBmaQorCisgICAgd2hpbGUgdGVzdCAieCRtb2R1bGVfc3VibGlzdCIgIT0gIngiIDsgZG8KKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIGxvb3Agb3ZlciBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIHN1YiBsaXN0CisgICAgZm9yIGkgaW4gJG1vZHVsZV9zdWJsaXN0CisgICAgZG8KKworICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQorICAgIEFDX01TR19NT0RVTEVfREJHKCJ0ZXN0aW5nICRpIikKKyAgICBuZWVkX2hlYWRlcj0wCisKKyAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIyBidWlsZCBhIHBzZXVkbyBpbmNsdWRlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGN1cnJlbnQgY29uZmlnIGFuZAorICAgICMgc3lzdGVtIHN5bWJvbHM6CisgICAgcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCisgICAgQUNfTEFOR19DT05GVEVTVChBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFCisjaW5jbHVkZSAiJHNyY2Rpci8kbWliZGlyLyRpLmgiXV0pKQorICAgIG12IGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAorCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgbWFjcm86IGNvbmZpZ19iZWxvbmdzX2luKEFSRykKKyAgICAjICAgQVJHOiBlaXRoZXIKKyAgICAjICAgICAtIG1pYl9tb2R1bGUgICA9PiBsaWJuZXRzbm1wbWlicyAgIChkZWZhdWx0KQorICAgICMgICAgIC0gYWdlbnRfbW9kdWxlID0+IGxpYm5ldHNubXBhZ2VudAorICAgICMKKyAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCldKQorICAgIG1vZHVsZV90eXBlPW1pYl9tb2R1bGUKKyAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCisgICAgICBjaGFuZ2VxdW90ZSgsICkKKyAgICAgIG1vZHVsZV90eXBlPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfYmVsb25nc19pbiB8ICRTRUQgJ3NALipjb25maWdfYmVsb25nc19pbihcKFteKV0qXCkpLipAXDFAJ2AKKyAgICAgIGNoYW5nZXF1b3RlKFssIF0pCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JG1vZHVsZV90eXBlIiA9ICJ4IiA7IHRoZW4KKyAgICAgIG1vZHVsZV90eXBlPW1pYl9tb2R1bGUKKyAgICBmaQorICAgIGlmIHRlc3QgIngkb3V0cHV0X3RvIiA9ICJ4bm9ybWFsIiA7IHRoZW4KKyAgICAgCW91dHB1dF9pbml0cz0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbml0cy5oIgorICAgICAJb3V0cHV0X2hkcnM9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5jbHVkZXMuaCIKKyAgICBmaQorCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlcyB3aXRoaW4gdGhlIGRsbCBzeXN0ZW0uIAorICAgICMgICAtIGlmIGZvdW5kIGluIGEgZGxsLCB0aGVuIHJlbW92ZSBmcm9tIHRoZSBkbGwgYW5kIGFkZCB0byBtYWluCisgICAgZGJsZml4PSIiCisgICAgZm9yIGRsdGVzdCBpbiAkZGxfbmFtZXMgOyBkbworICAgICAgZXZhbCBtb2RfZmlsZXM9IlwiXCRkbF8ke2RsdGVzdH1fZmlsZXNcIiIKKyAgICAgIGlmIGVjaG8gIiAkbW9kX2ZpbGVzICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIyBzb21lIGRsbCBtb2R1bGUgaGFzIGFscmVhZHkgc2VlbiB0aGlzLCB1bmxvYWQgaXQgZnJvbSB0aGF0IGxpc3QKKyAgICAgICAgIyBhbmQgaW5jbHVkZSBpdCBpbiB0aGUgY29yZSAoYWdhaW4pCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCJyZW1vdmluZyAkaSBmcm9tICRkbHRlc3QiKQorICAgICAgICBtb2RfZmlsZXM9YGVjaG8gIiAkbW9kX2ZpbGVzICIgfCAkU0VEICJzQCAkaSBAQCJgCisgICAgICAgIGRibGZpeD0iX19YWFhfXyIKKyAgICAgICAgZXZhbCAiZGxfJHtkbHRlc3R9X2ZpbGVzPVwiJG1vZF9maWxlc1wiIgorCisgICAgICAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCisJZWNobyAicmVhZF9jb25maWcubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtb2R1bGVfbGlzdF9kZXBzCisJaWYgdGVzdCAkbW9kdWxlX3R5cGUgPSAiYWdlbnRfbW9kdWxlIiA7IHRoZW4KKyAJICAgIGVjaG8gInNubXBfdmFycy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJGFnZW50X21vZHVsZV9saXN0X2RlcHMKKyAgICAgICAgZWxzZQorIAkgICAgZWNobyAibWliX21vZHVsZXMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtaWJfbW9kdWxlX2xpc3RfZGVwcworICAgICAgICBmaQorICAgICAgICBldmFsICR7bW9kdWxlX3R5cGV9X2xpc3Q9IlwiXCQke21vZHVsZV90eXBlfV9saXN0ICRpXCIiCisJZWNobyAiCSRpIFxcIiA+PiAkbW9kdWxlX2xpc3RfY29kZQorCWVjaG8gJEVDSE9fTiAiICRpIiAkRUNIT19DID4+ICRNT0RVTEVfTElTVAorICAgICAgICBldmFsIHRtcGZpbGV2YXI9XCRgZWNobyAke21vZHVsZV90eXBlfV9saXN0X2NvZGVgCisgICAgICAgIGVjaG8gIgkkaSBcXCIgPj4gJHRtcGZpbGV2YXIKKworCSMgWFhYOiBhZGQgdGhpcyB0byB0aGUgbWFpbiBpbml0IGxpc3Q7IHRoaXMgaXMgcG9zc2libGUgbm90CisJIyBxdWl0ZSBpbiB0aGUgcmlnaHQgc3BvdCBhbnkgbG9uZ2VyIGJ1dCB3ZSdyZSBzdHVjayB3aXRoIGl0LgorCSMgQWRkaW5nIGl0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIG9yZGVyZWQgc3BvdCB3b3VsZCBiZSBhCisJIyBuaWdodG1hcmUuICBPaywgd2UncmUgYWxyZWFkeSBpbiBuaWdodG1hcmUgY29kZSBzbyB0aGF0CisJIyB3b2x1ZCBoYXZlIHRvIGJlIGEgbmlnaHQtdGVycm9yLgorICAgICAgICBtbm09YGVjaG8gJGkgfCAkU0VEICdzLy4qXC8vLztzL1wuYyQvLzsnYAorCW91dHB1dF9pbml0c190bXA9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5pdHMuaCIKKwllY2hvICIgIGlmIChzaG91bGRfaW5pdChcIiRtbm1cIikpIGluaXRfJG1ubSgpOyIgPj4gJG91dHB1dF9pbml0c190bXAKKyAgICAgICAgIyBYWFg6IGV2ZW4gd29yc2UsIHdlIGxvb3NlIHdoZXRoZXIgdGhlIGhlYWRlciBpcyBuZWVkZWQgb3Igbm90LgorICAgICAJb3V0cHV0X2hkcnNfdG1wPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luY2x1ZGVzLmgiCisgICAgICAgIGVjaG8gJyNpbmNsdWRlICInIm1pYmdyb3VwLyRpLmgiJyInID4+ICRvdXRwdXRfaGRyc190bXAKKyAgICAgIGZpCisgICAgZG9uZQorCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgbWFrZSBzdXJlIG1vZHVsZSB3YXNuJ3QgZXhwbGljaXRseSBleGNsdWRlZCwgb3IgYWxyZWFkeSBhZGRlZAorICAgICMKKyAgICBpZiB0ZXN0ICJ4JGRibGZpeCIgIT0gIngiIDsgdGhlbgorICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIHdhcyBkdXBsaWNhdGVkIC0tIHB1dHRpbmcgaW50byBtYWluIikKKyAgICBlbGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaSB3YXMgZXhjbHVkZWQiKQorICAgIGVsaWYgZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgYWxyZWFkeSB0ZXN0ZWQiKQorICAgIGVsc2UKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIyBwcm9jZXNzIG1vZHVsZXMgaGVhZGVyLCBjaGVja2luZyBmb3IgY29uZmlnXyBwc2V1ZG8tbWFjcm9zCisgICAgICAjCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgZG9lcyB0aGUgaGVhZGVyIGZpbGUgZm9yIHRoZSBtb2R1bGUgZXhpc3Q/CisgICAgICAjICAgbWFjcm9zIGFyZSBvbmx5IHByb2Nlc3NlZCBpZiBpdCBkb2VzCisgICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCisgICAgICAgIG5ld19saXN0PSIiCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ19leGNsdWRlKG1vZHVsZXMpCisgICAgICAJIyAgLSBsaXN0cyBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzCisgICAgICAJIyAgICAtIEVHOiBuZXcgTUlCIGltcGxlbWVudGF0aW9ucyBleGNsdWRlIG9sZCBhbmQgdmljZS12ZXJzYQorICAgICAgCSMKKyAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGNvbmZsaWN0cworICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfZXhjbHVkZSh4KV0pCisJbmV3X2xpc3RfZXhjbD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2V4Y2x1ZGUgfCAkU0VEICdzLy4qY29uZmlnX2V4Y2x1ZGUoXCguKlwpKS4qL1wxLydgCisJaWYgdGVzdCAieCRuZXdfbGlzdF9leGNsIiAhPSAieCI7IHRoZW4KKyAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgZXhjbHVkZXMgJG5ld19saXN0X2V4Y2wiKQorCSAgZm9yIGogaW4gJG5ld19saXN0X2V4Y2wKKwkgICAgZG8KKwkgICAgaWYgZWNobyAiICRtb2R1bGVfbGlzdCAkbmV3X21pYl9tb2R1bGVfbGlzdCAkbmV3X2xpc3RfdHdvICIgfCAkR1JFUCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyBleGNsdWRlcyBtb2R1bGUgJyRqJyBidXQgYW5vdGhlciBtb2R1bGUgcmVxdWlyZXMgaXQiCisgICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKyAgICAgICAgICAgICAgaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgorCSAgICAgICAgQUNfTVNHX0VSUk9SKFskbWliX2NmZ19tc2ddKQorICAgICAgICAgICAgICBlbHNlCisJICAgICAgICBBQ19NU0dfV0FSTihbJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFsqKiogTUlCIE1vZHVsZSB3YXJuaW5nICoqKiAkbWliX2NmZ19tc2ddKQorICAgICAgICAgICAgICBmaQorCSAgICBlbHNlCisJICAgICAgbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzPSIkaiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzIgorICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGogYWRkZWQgdG8gZXhjbHVkZWQgbGlzdCIpCisJICAgIGZpCisJICBkb25lCisJZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAJIyBtYWNybzogY29uZmlnX2FyY2hfcmVxdWlyZShBUkNILG1vZHVsZXMpCisgICAgICAJIyAgLSBsaXN0cyBtb2R1bGVzIHJlcXVpcmVkIGZvciBhIGdpdmVuIEFSQ0gKKyAgICAgICAgIworICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHJlcXVpcmVtZW50cworICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSldKQorICAgICAgICBjaGFuZ2VxdW90ZSgsICkKKyAgICAgICAgbmV3X2xpc3RfYXJjaD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2FyY2hfcmVxdWlyZSB8ICRTRUQgJ3MvLipjb25maWdfYXJjaF9yZXF1aXJlKCAqXChbXiBdKlwpICosICpcKFteIF0qXCkgKikuKi9cMS14YXJjaHgtXDIvJ2AKKyAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKwlpZiB0ZXN0ICJ4JG5ld19saXN0X2FyY2giICE9ICJ4IjsgdGhlbgorICAgICAgICAgIGZvciBqIGluICRuZXdfbGlzdF9hcmNoCisJICAgIGRvCisJICAgIGFyY2h0ZXN0PWBlY2hvICRqIHwgJFNFRCAncy8teGFyY2h4LS4qLy8nYAorCSAgICAjIHRhcmdldF9vcyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gYSAjZGVmaW5lIG9mIDEuLi4KKwkgICAgaWYgdGVzdCAieCRhcmNodGVzdCIgPSAieDEiIC1vICJ4JHRhcmdldF9vcyIgPSAieCRhcmNodGVzdCIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4JGFyY2h0ZXN0IjsgdGhlbgorCSAgICAgIG5ld19saXN0PSIkbmV3X2xpc3QgYGVjaG8gJGogfCAkU0VEICdzLy4qLXhhcmNoeC0vLydgIgorICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHJlcXVpcmVkIGFkZGluZyBhcmNoIGZpbGVzOiBgZWNobyAkaiB8ICRTRUQgJ3MvLioteGFyY2h4LS8vJ2AiKQorCSAgICBmaQorCSAgZG9uZQorCWZpCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgcmVxdWlyZWQgYXJjaCBmaWxlczogJG5ld19saXN0IikKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAJIyBtYWNybzogY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoYmFzZSwgdmVyc2lvbiwgdmVyc2lvbi1tb2R1bGVzLCAuLi4pKQorICAgICAgCSMgIC0gbGlzdHMgYWx0ZXJuYXRpdmUgbW9kdWxlcyB1c2VkIGZyb20gZGlmZmVyZW50IHZlcnNpb25zLgorICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfdmVyc2lvbl9yZXF1aXJlKHgpXSkKKyAgICAgICAgW25ld19saXN0X2FsdDM9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICRHUkVQIGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUgfCBcCisgICAgICAgICAgICAkU0VEIC1lICdzLyAgKi8gL2cnIFwKKyAgICAgICAgICAgICAgICAgLWUgJ3MvLipjb25maWdfdmVyc2lvbl9yZXF1aXJlKCggKlwoW14pXSpcKSAqKSkuKi9cMS8nIFwKKyAgICAgICAgICAgICAgICAgLWUgJ3MvICosICovLC9nJyB8IFwKKyAgICAgICAgICAgIGF3ayAnCisgICAgICAgICAgICAgICAgQkVHSU4geworICAgICAgICAgICAgICAgICAgICBpZigiJyIkZW5hYmxlX25ld19mZWF0dXJlcyInIiA9PSAieWVzIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0ibWF4IjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZigiJyIkZW5hYmxlX29sZF9mZWF0dXJlcyInIiA9PSAieWVzIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0ibWF4LWxlc3MiOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heC1sZXNzLWVxdWFsIjsKKyAgICAgICAgICAgICAgICAgICAgRlMgPSAiLiI7CisgICAgICAgICAgICAgICAgICAgIHNwbGl0KCInIiR3aXRoX2ZlYXR1cmVzX29mIiciLCBhKTsKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1zcHJpbnRmKCIlMDNkJTAzZCUwM2QlMDNkIiwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgRlMgPSAiLCI7CisgICAgICAgICAgICAgICAgICAgIG4gPSBzcGxpdCgkMCwgYSk7CisgICAgICAgICAgICAgICAgICAgIEZTID0gIi4iOworICAgICAgICAgICAgICAgICAgICBhY3R2ZXIgPSAiMDAwMDAwMDAwMDAwIjsKKyAgICAgICAgICAgICAgICAgICAgYWN0c3RyID0gYVsxXTsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdChhW2ldLCBiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnZlcj1zcHJpbnRmKCIlMDNkJTAzZCUwM2QlMDNkIiwgYlsxXSwgYlsyXSwgYlszXSwgYls0XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VydmVyID4gYWN0dmVyICYmIChtZXRob2QgIT0gIm1heC1sZXNzIiB8fCBjdXJ2ZXIgPCB2ZXJzaW9uKSAmJiAobWV0aG9kICE9ICJtYXgtbGVzcy1lcXVhbCIgfHwgY3VydmVyIDw9IHZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dmVyID0gY3VydmVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHN0ciA9IGFbaSArIDFdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICVzIiwgYWN0c3RyKTsKKyAgICAgICAgICAgICAgICB9J2BdCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgcmVxdWlyZWQgdmVyc2lvbmVkIGZlYXR1cmVzOiAkbmV3X2xpc3RfYWx0MyIpCisgICAgICAgIG5ld19saXN0PSIke25ld19saXN0fSR7bmV3X2xpc3RfYWx0M30iCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ19yZXF1aXJlKG1vZHVsZXMpCisgICAgICAJIyAgLSBsaXN0cyBtb2R1bGVzIHJlcXVpcmVkIGZvciB0aGlzIG1vZHVsZQorICAgICAgICAjCisgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBvdGhlciByZXF1aXJlZCBtb2R1bGVzCisgICAgICAgICMKKyAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpXSkKKwluZXdfbGlzdD0iJG5ld19saXN0IGAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfcmVxdWlyZSB8ICRTRUQgJ3MvLipjb25maWdfcmVxdWlyZShcKC4qXCkpLiovXDEvJ2AiCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgd2lsbCB0ZXN0OiAkbmV3X2xpc3QiKQorCWlmIHRlc3QgIngkbmV3X2xpc3QiICE9ICJ4IjsgdGhlbgorCSAgZm9yIGogaW4gJG5ld19saXN0CisJICAgIGRvCisgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygtbiAiICRpIHdhbnRzIHRvIGFkZCAkajogIikKKwkgICAgaWYgdGVzdCAhIC1mICRzcmNkaXIvJG1pYmRpci8kai5oIC1hICEgLWYgJHNyY2Rpci8kbWliZGlyLyRqLmM7IHRoZW4KKyAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQorCSAgICAgIEFDX01TR19FUlJPUihbbWliIG1vZHVsZSAiJGkiIHJlcXVpcmVzIG1vZHVsZSAiJGoiIGJ1dCAkai5oIG9yICRqLmMgY291bGQgbm90IGJlIGZvdW5kIGluICRzcmNkaXIvJG1pYmRpcl0pCisJICAgIGVsaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8ICRHUkVQICIgJGogIiA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICAgIGlmIHRlc3QgIngkaSIgIT0gInhkZWZhdWx0X21vZHVsZXMiIDsgdGhlbgorICAgICAgICAgICAgICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgcmVxdWlyZXMgbW9kdWxlICckaicgYnV0IHNvbWVvbmUgdG9sZCBtZSB0byBjb21waWxlIHdpdGhvdXQgaXQiCisgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQorICAgICAgICAgICAgICAgIGlmIHRlc3QgIngkd2l0aF9taWJfY2ZnX2NoZWNrcyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihbJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgICAgIEFDX01TR19DQUNIRV9BREQoWyoqKiBNSUIgTW9kdWxlIHdhcm5pbmcgKioqICRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgZmkKKyMJICAgIGVsaWYgZWNobyAiICRtb2R1bGVfbGlzdCAkbmV3X2xpc3RfdHdvICRuZXdfbW9kdWxlX2xpc3QgIiB8ICRHUkVQICIgJGogIiA+IC9kZXYvbnVsbDsgdGhlbgorIyAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGogaW5jbHVkZWQgcHJldmlvdXNseSIpCisgICAgICAgICAgICAgIGZpCisJICAgIGVsc2UKKwkgICAgICBuZXdfbGlzdF90d289IiRuZXdfbGlzdF90d28gJGoiCisgICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRqIGluY2x1ZGVkIikKKwkgICAgZmkKKwkgIGRvbmUKKwlmaQorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfYWRkX21pYihTT01FLU1JQikKKyAgICAgIAkjICAtIGxpc3RzIE1JQnMgdG8gYmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgdG8tbG9hZCBsaXN0LgorICAgICAgICAjCisgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBtaWJzIHRvIGFkZAorICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfYWRkX21pYih4KV0pCisJbmV3X21pYnM9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19hZGRfbWliIHwgJFNFRCAncy8uKmNvbmZpZ19hZGRfbWliKFwoLipcKSkuKi9cMS8nYAorCWlmIHRlc3QgIngkbmV3X21pYnMiICE9ICJ4IjsgdGhlbgorCSAgICBmb3IgaiBpbiAkbmV3X21pYnMKKwkJZG8KKwkJaWYgdGVzdCAieGBlY2hvIDokZGVmYXVsdF9taWJzOiB8ICRHUkVQIDokajpgIiA9ICJ4IjsgdGhlbgorCQkgICAgZGVmYXVsdF9taWJzPSIkZGVmYXVsdF9taWJzOiRqIgorCQlmaQorCQlpZiB0ZXN0IC1mICRzcmNkaXIvbWlicy8kai50eHQ7IHRoZW4KKwkJICAgIGlmIGVjaG8gJGRlZmF1bHRfbWlic19pbnN0YWxsIHwgJEdSRVAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCisJCQkgICAgOgorCQkgICAgZWxzZQorCQkJICAgIGRlZmF1bHRfbWlic19pbnN0YWxsPSIkZGVmYXVsdF9taWJzX2luc3RhbGwgJGoudHh0IgorCQkgICAgZmkKKwkJZmkKKwkgICAgZG9uZQorCWZpICMgbmV3IG1pYnMKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIGFkZCB0aGUgY3VycmVudCBtb2R1bGUgdG8gdGhlIGxpc3Qgb2Ygc3R1ZmYgdG8gY29tcGlsZSwgZXRjLgorICAgICAgICAjCisgICAgICAgICMgYWRkICRpIHRvIG1vZHVsZSBsaXN0CisgICAgICAgICMKKyAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWRkZWQgKGJhc2VkIG9uICRpLmgpIikKKyAgICAgICAgbW9kdWxlX2xpc3Q9IiRtb2R1bGVfbGlzdCAkaSIKKyAgICAgICAgZXZhbCAke21vZHVsZV90eXBlfV9saXN0PSJcIlwkJHttb2R1bGVfdHlwZX1fbGlzdCAkaVwiIgorCisJZWNobyAicmVhZF9jb25maWcubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtb2R1bGVfbGlzdF9kZXBzCisJaWYgdGVzdCAkbW9kdWxlX3R5cGUgPSAiYWdlbnRfbW9kdWxlIiA7IHRoZW4KKyAJICAgIGVjaG8gInNubXBfdmFycy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJGFnZW50X21vZHVsZV9saXN0X2RlcHMKKyAgICAgICAgZWxzZQorIAkgICAgZWNobyAibWliX21vZHVsZXMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtaWJfbW9kdWxlX2xpc3RfZGVwcworICAgICAgICBmaQorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNvbmZpZ19sb2FkX21pYgorICAgICAgICAjCisgICAgICAgIGlmICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19sb2FkX21pYiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQorICAgICAgCSAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgIiRpIiB1c2VzIHRoZSAiY29uZmlnX2xvYWRfbWliIiBkaXJlY3RpdmUsIHdoaWNoIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuICBJdCBwcm9iYWJseSB3b24ndCB3b3JrLl0pCisgICAgICAgIGZpICMgZ3JlcCBjb25maWdfbG9hZF9taWIKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIGNoZWNrIGZvciBjb25maWdfcGFyc2VfZG90X2NvbmYKKyAgICAgICAgIyAgKGdlbmVyYWxseSBub3QgdXNlZCBhbnkgbG9uZ2VyOyBvbGQgYXV0by1sb2FkIGEgLmNvbmYgdG9rZW4pCisgICAgICAgICMKKyAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19wYXJzZV9kb3RfY29uZih3LHgseSx6KV0pCisgICAgICAgIGNoYW5nZXF1b3RlKCwgKQorICAgICAgICAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfcGFyc2VfZG90X2NvbmYgfCAkU0VEICdzQC4qY29uZmlnX3BhcnNlX2RvdF9jb25mKFwoW14pXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSkuKkByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcGQiLFwxLCBcMiwgXDMsIFw0KTtAJyA+PiAkbWliZGlyL21pYl9tb2R1bGVfZG90X2NvbmYuaAorCWNoYW5nZXF1b3RlKFssIF0pCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ19lcnJvcihlcnJvciB0ZXh0KQorICAgICAgCSMgIC0gdXNlZCB0byBzaWduYWwgYSBjb25maWd1cmF0aW9uIGVycm9yIGZyb20gYSBtb2R1bGUKKyAgICAgICAgIworICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgZXJyb3JzLCBvciB3YXJuaW5ncworICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfZXJyb3IoeCldKQorCWVycm9yPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfZXJyb3IgfCAkU0VEICdzLy4qY29uZmlnX2Vycm9yKFwoLipcKSkuKi9cMS8nYAorCWlmIHRlc3QgIngkZXJyb3IiICE9ICJ4IjsgdGhlbgorICAgICAgICAgIGVjaG8KKyAgICAgICAgICBlY2hvCisgICAgICAgICAgQUNfTVNHX0VSUk9SKFskaTogKioqICRlcnJvciAqKipdKQorICAgICAgICBmaQorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfd2FybmluZyh3YXJuaW5nIHRleHQpCisgICAgICAJIyAgLSB1c2VkIHRvIHNpZ25hbCBhIGNvbmZpZ3VyYXRpb24gIndhcm5pbmciIHRvIGJlIHByaW50ZWQgdG8gdGhlIHVzZXIKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3dhcm5pbmcoeCldKQorCXdhcm5pbmc9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ193YXJuaW5nIHwgJFNFRCAncy8uKmNvbmZpZ193YXJuaW5nKFwoLipcKSkuKi9cMS8nYAorCWlmIHRlc3QgIngkd2FybmluZyIgIT0gIngiOyB0aGVuCisgICAgICAgICAgYWxsX3dhcm5pbmdzPSIkYWxsX3dhcm5pbmdzICR3YXJuaW5nCisiCisgICAgICAgIGZpCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgQ2hlY2sgZm9yIGEgLmMgZmlsZSBpZiB0aGUgLmggZGlkbid0IGV4aXN0CisgICAgICAjCisgICAgICBlbGlmIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmM7IHRoZW4KKyAgICAgICAgaWYgZWNobyAiICRtb2R1bGVfbGlzdCAkbmV3X2xpc3RfdHdvICRuZXdfbW9kdWxlX2xpc3QgIiB8ICRHUkVQICIgJGkgICAgICAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRpIGFscmVhZHkgaW5jbHVkZWQiKQorICAgICAgICBlbHNlCisgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRpIGFkZGVkIChiYXNlZCBvbiAkaS5jKSIpCisJICAgbW9kdWxlX2xpc3Q9IiRtb2R1bGVfbGlzdCAkaSIKKwkgICBtaWJfbW9kdWxlX2xpc3Q9IiRtaWJfbW9kdWxlX2xpc3QgJGkiCisgICAgICAgIGZpCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgTm8gLmggb3IgLmMgPSBlcnJvciEgICh0eXBvPykKKyAgICAgICMKKyAgICAgIGVsc2UgIyBubyAkaS5oIG9yICRpLmMKKyAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQorCUFDX01TR19FUlJPUihbbW9kdWxlIGZpbGVzICRpLmggb3IgJGkuYyBjb3VsZCBub3QgYmUgZm91bmQgaW4gJHNyY2Rpci8kbWliZGlyXSkKKyAgICAgIGZpICMgbm8gJGkuaAorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIyBjaGVjayBmb3IgaW5pdC9zaHV0ZG93biByb3V0aW5lcyB0b28KKyAgICAgICMKKyAgICAgIGhhc19jX2NvZGU9bm8KKyAgICAgIGlmIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmM7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAieCRvdXRwdXRfdG8iID0gInhub3JtYWwiIDsgdGhlbgorCSAgZWNobyAiCSRpIFxcIiA+PiAkbW9kdWxlX2xpc3RfY29kZQorICAJICBlY2hvICRFQ0hPX04gIiAkaSIgJEVDSE9fQyA+PiAkTU9EVUxFX0xJU1QKKyAgICAgICAgICBldmFsIHRtcGZpbGV2YXI9XCRgZWNobyAke21vZHVsZV90eXBlfV9saXN0X2NvZGVgCisgICAgICAgICAgZWNobyAiCSRpIFxcIiA+PiAkdG1wZmlsZXZhcgorICAgICAgICBlbHNlCisgICAgICAgICAgZXZhbCAiZGxfJHtkbF9uYW1lfV9maWxlcz1cIlwkZGxfJHtkbF9uYW1lfV9maWxlcyAkaVwiIgorICAgICAgICAgIHNhdmVkX3N1Ymxpc3RfY29kZT0iJHNhdmVkX3N1Ymxpc3RfY29kZSAkaSIKKyAgICAgICAgZmkKKyAgICAgICAgbW5tPWBlY2hvICRpIHwgJFNFRCAncy8uKlwvLy87cy9cLmMkLy87J2AKKyAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoLWUgIlxuY2hlY2tpbmcgJyRzcmNkaXIvJG1pYmRpci8kaS5jJyAoJG1ubS9gYmFzZW5hbWUgJGlgKSBDIGZpbGUgZm9yIGluaXQvc2h1dGRvd24iKQorICAgICAgICBpZiB0ZXN0ICJ4JG1ubSIgIT0gInhgYmFzZW5hbWUgJGlgIjsgdGhlbgorICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCisJICAgQUNfTVNHX0VSUk9SKFtjb25mbGljdGluZyBuYW1lczogJG1ubSAhPSBgYmFzZW5hbWUgJGlgXSkKKyAgICAgICAgZmkKKyAgICAgICAgdGVtcF9pbml0PWAkR1JFUCBpbml0XyRtbm0gJHNyY2Rpci8kbWliZGlyLyRpLmMgfCAkR1JFUCAtdiBfaW5pdF8kbW5tYAorCWlmIHRlc3QgIngkdGVtcF9pbml0IiAhPSAieCI7IHRoZW4KKyAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJhZGRpbmcgaW5pdF8kbW5tKCkgdG8gbGlzdCIpCisgICAgICAgICAgICBuZWVkX2hlYWRlcj0xCisJICAgIGVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzCisJZmkKKwkkR1JFUCBzaHV0ZG93bl8kbW5tICRzcmNkaXIvJG1pYmRpci8kaS5jID4gL2Rldi9udWxsCisgICAgICAgIGlmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCisgICAgICAgICAgICBpZiB0ZXN0ICRtb2R1bGVfZGVidWcgLWVxIDE7IHRoZW4KKyAgICAgICAgICAgICAgZWNobyAtZSAiXG5hZGRpbmcgc2h1dGRvd25fJG1ubSgpIHRvIGxpc3QiCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgbmVlZF9oZWFkZXI9MQorCSAgICBlY2hvICIgIGlmIChzaG91bGRfaW5pdChcIiRtbm1cIikpIHNodXRkb3duXyRtbm0oKTsiID4+ICRtaWJkaXIvJHttb2R1bGVfdHlwZX1fc2h1dGRvd24uaAorCWZpCisgICAgICBmaSAjIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmMKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgaWYgdGhlcmUgaXMgYSBzaHV0ZG93bi9pbml0IGxpc3QsCisgICAgICAjCisgICAgICBpZiB0ZXN0ICRuZWVkX2hlYWRlciAtZXEgMSA7IHRoZW4KKyAgICAgICAgIGVjaG8gJyNpbmNsdWRlICInIm1pYmdyb3VwLyRpLmgiJyInID4+ICRvdXRwdXRfaGRycworICAgICAgZWxzZQorICAgICAgICAgZWNobyAnLyojaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciKi8nID4+ICRvdXRwdXRfaGRycworICAgICAgZmkKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgY2hlY2sgZm9yIG91dHB1dCBkaXJlY3RvcnkgKGZvciBidWlsZGluZyBvdXRzaWRlIG9mIHNvdXJjZSB0cmVlCisgICAgICAjCisgICAgICBjaGFuZ2VxdW90ZSgsICkKKyAgICAgIGlmIHRlc3QgInhgZWNobyAkaSB8ICRTRUQgJ3MvXC8vL2c7J2AiICE9ICJ4JGkiOyB0aGVuCisJbW5kPWBlY2hvICRpIHwgJFNFRCAncy9cL1teL10qJC8vOydgCisJaWYgdGVzdCAhIC1kIC4vJG1pYmRpci8kbW5kOyB0aGVuCisJICAgIG1vZHVsZV9kaXJlY3Rvcmllcz0iJG1vZHVsZV9kaXJlY3RvcmllcyAuLyRtaWJkaXIvJG1uZCIKKwlmaQorICAgICAgZmkgIyBtb2R1bGUgZGlyZWN0b3J5IHRlc3QKKyAgICAgIGNoYW5nZXF1b3RlKFssIF0pCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGRlZmluZSBVU0lOR18qX01PRFVMRQorICAgICAgIworICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICBzeW09ImBlY2hvICR7aX0gfCAkU0VEICdzL1teYS16QS1aMC05X10vXy9nJyB8IHRyICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJ2AiCisgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorICAgICAgZWNobyAiLyogRGVmaW5lIGlmIGNvbXBpbGluZyB3aXRoIHRoZSAke2l9IG1vZHVsZSBmaWxlcy4gICovIiA+PiBpbmNsdWRlL25ldC1zbm1wL2FnZW50LyR7bW9kdWxlX3R5cGV9X2NvbmZpZy5oCisgICAgICBlY2hvICIjZGVmaW5lIFVTSU5HXyR7c3ltfV9NT0RVTEUgMSIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAorICAgICAgZWNobyAiICIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgZWNobyAkRUNIT19OICIgJGkkRUNIT19DIgorICAgIGZpICMKKyAgICBkb25lICMgZm9yIGkgaW4gJG1vZHVsZV9zdWJsaXN0CisKKyAgICBpZiB0ZXN0ICIkb3V0cHV0X3RvIiA9ICJzZXBhcmF0ZSIgOyB0aGVuCisgICAgICBpZiB0ZXN0ICJ4JG5ld19saXN0X3R3byIgPSAieCIgOyB0aGVuCisgICAgICAgICMgbm8gbmV3IHN1Yi1tb2R1bGVzIHRvIGFkZCB0byB0aGUgY3VycmVudCB0YXJnZXQKKyAgICAgICAgb3V0cHV0X3RvPSJub3JtYWwiCisKKyAgICAgICAgZGxsY2xlYW5zPSIkc2F2ZWRfc3VibGlzdF9vICRkbGxjbGVhbnMiCisgICAgICAgIG91dHB1dF9pbml0cz0iIgorICAgICAgICBtb2R1bGVfc3VibGlzdD0iIgorICAgICAgZWxzZQorICAgICAgICAjIGEgbW9kdWxlIGhhZCBzdWItbW9kdWxlcyByZXF1aXJlZDsga2VlcCBnb2luJworICAgICAgICBzYXZlZF9zdWJsaXN0PSIkc2F2ZWRfc3VibGlzdCAkbW9kdWxlX3N1Ymxpc3QiCisgICAgICAgIG1vZHVsZV9zdWJsaXN0PSIkbmV3X2xpc3RfdHdvIgorICAgICAgICBuZXdfbGlzdF90d289IiIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgbW9kdWxlX3N1Ymxpc3Q9IiIKKyAgICBmaQorCisgICAgZG9uZSAjIHdoaWxlIG1vZHVsZV9zdWJsaXN0CisgIGRvbmUgIyBmb3IgaiBpbiAkbmV3X21vZHVsZV9saXN0CisKKyAgIyByZW1lbWJlciB0aGUgdG9wIGxldmVsIG1vZHVsZXMgZm9yIGxhdGVyIHJlcG9ydGluZworICBpZiB0ZXN0ICRmaXJzdF9wYXNzID0gMSA7IHRoZW4KKyAgICAjIHJlbWVtYmVyIHRoaXMgbGlzdCBmb3IgbGF0ZXIgcmVwb3J0aW5nCisgICAgdG9wX2xldmVsX21vZHVsZXM9IiRuZXdfbW9kdWxlX2xpc3QgPT4gJG5ld19saXN0X3R3byIKKyAgICBmaXJzdF9wYXNzPTAKKyAgZmkKKyAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIyBpZiAkaSBhZGRlZCBuZXcgbW9kdWxlcyB2aXMgY29uZmlnXyosCisgICMgY2hlY2sgdGhvc2UgbW9kdWxlcyBmb3IgcmVxdWlyZW1lbnRzIHRvbworICAjCisgICMgdHJhbnNmZXIgdGhlIG5ldyBtb2R1bGUgdG8gY2hlY2sgbGlzdCB0byB0aGUgbm9ybWFsIHZhcmlhYmxlCisgICMKKyAgaWYgdGVzdCAieCRuZXdfbGlzdF90d28iIDsgdGhlbgorICAgIG91dHB1dF90bz1ub3JtYWwKKyAgZmkKKyAgbmV3X21vZHVsZV9saXN0PSIkbmV3X2xpc3RfdHdvIgorICBuZXdfbGlzdF90d289IiIKK2RvbmUgIyB3aGlsZSB0ZXN0ICJ4JG5ld19tb2R1bGVfbGlzdCIgIT0gIngiOyBkbworZWNobyAiIgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uc3RydWN0IHRoZSBkbGwgY29kZSBmaWxlcyBhbmQgbWFrZSBydWxlcy4gIFRoaXMgY2FuJ3QgYmUgZG9uZQorIyB1bnRpbCBub3cgYmVjYXVzZSBkdXBsaWNhdGUgdXNlIG9mIGEgbW9kdWxlIG1lYW5zIGl0IGdldHMgcmVtb3ZlZAorIyBmcm9tIHRoZSBkbGwgYW5kIHB1dCBpbnRvIHRoZSBtYWluIGFnZW50LgorIworZm9yIGkgaW4gJGRsX25hbWVzIDsgZG8KKyAgZXZhbCBtb2RfZmlsZXM9IlwiXCRkbF8ke2l9X2ZpbGVzXCIiCisgIGVjaG8gImNvbXBvbmVudHMgaW4gdGhlICRpIGRsbDogJG1vZF9maWxlcyIKKworICBvdXRwdXRfaW5pdHM9ImFnZW50L21pYmdyb3VwLyR7aX0tZGxsLmMiCisgIG91dHB1dF9oZHJzPSJhZ2VudC9taWJncm91cC8ke2l9LWhkcnMuaCIKKworICBBQ19NU0dfTU9EVUxFX0RCRygiY3JlYXRpbmcgZGxsIGZpbGU6ICRvdXRwdXRfaW5pdHMiKQorICBmb3Igb2ZpbGUgaW4gJG91dHB1dF9pbml0cyAkb3V0cHV0X2hkcnMgOyBkbworICAgIGlmIHRlc3QgLWYgJG9maWxlIDsgdGhlbgorICAgICAgaWYgJEdSRVAgInRoaXMgZmlsZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlIiAkb2ZpbGUgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgCToKKyAgICAgIGVsc2UKKyAgCUFDX01TR19FUlJPUihbJG9maWxlIGFscmVhZHkgZXhpc3RlZCA7IGNhbid0IGJ1aWxkIGRsbCBvYmplY3QgJGldKQorICAgICAgZmkKKyAgICBmaQorICAgIGNhdCA+ICRvZmlsZSA8PCBFT0ZJRgorLyogeERvIG5vdCBlZGl0OyB0aGlzIGZpbGUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZSAqLworRU9GSUYKKyAgZG9uZQorCisgIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIiR7aX0taGRycy5oIgordm9pZAoraW5pdF8kaSh2b2lkKSB7CitFT0ZPQworCisgICMgY3JlYXRlIHRoZSAuc28gcnVsZQorICBzYXZlZF9zdWJsaXN0X289YGVjaG8gIiRtb2RfZmlsZXMgIiB8ICRTRUQgJ3MvXiAqLy9nO3MvICAqLy5vIC9nOydgCisKKyAgIyBjcmVhdGUgdGhlIHJ1bGVzIGZvciBlYWNoIG9iamVjdAorICBmb3IgaiBpbiAkbW9kX2ZpbGVzIDsgZG8KKyAgICBjYXQgPj4gJG1vZHVsZV9ydWxlcyA8PCBFT0ZSCiskai5vOiAkai5jCisJXCQoQ0MpIC1jIFwkKENQUEZMQUdTKSBcJChDRkxBR1MpIFwkKERMRkxBR1MpIC1vIFwkQCBcJDwKKworRU9GUgorICAgIG1ubT1gZWNobyAkaiB8ICRTRUQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCisgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHMKKyAgZG9uZQorCisgICMgY3JlYXRlIHRoZSBydWxlIGZvciB0aGUgLnNvIGFuZCB3cmFwcGVyIGNvZGUKKyAgY2F0ID4+ICRtb2R1bGVfcnVsZXMgPDwgRU9GTQorJHtpfS1kbGwubzogJHtpfS1kbGwuYworCVwkKENDKSAtYyBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgXCQ8CisKKyR7aX0uc286ICRzYXZlZF9zdWJsaXN0X28gJHtpfS1kbGwubworCVwkKENDKSBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgJHNhdmVkX3N1Ymxpc3RfbyAke2l9LWRsbC5vCisKK0VPRk0KKyAgICAgICAgY2F0ID4+ICRvdXRwdXRfaW5pdHMgPDwgRU9GT0NGSU4KK30KK0VPRk9DRklOCisKK2RvbmUKKworIyBjbGVhbnVwCitybSAtZiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYnVpbGQgbW9kdWxlIGxpc3RzIGZvciBNYWtlZmlsZXMKKyMKK2NoYW5nZXF1b3RlKCwgKQorCitmb3IgaSBpbiBtb2R1bGVfbGlzdF9vIG1vZHVsZV9saXN0X2MgbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X28gbWliX21vZHVsZV9saXN0X2MgbWliX21vZHVsZV9saXN0X2xvIG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X28gYWdlbnRfbW9kdWxlX2xpc3RfYyBhZ2VudF9tb2R1bGVfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfbyBhZ2VudGdyb3VwX2xpc3RfbG8gOyBkbworICBldmFsICIkaT1tay8ke2l9Lm1rIgorZG9uZQorCiskU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9vCiskU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9jCiskU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfbG8KKworJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRtaWJfbW9kdWxlX2xpc3RfY29kZSAgPiAkbWliX21vZHVsZV9saXN0X28KKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9jCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3RfY29kZS9taWJfbW9kdWxlX2xpc3RfbG8vO3MvXChbXj1dXCkgICpcXC9cMS5sbyBcXC9nJyA8ICRtaWJfbW9kdWxlX2xpc3RfY29kZSAgPiAkbWliX21vZHVsZV9saXN0X2xvCisKKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9vL21pYmdyb3VwX2xpc3Rfby87c0BcKFteIAldKlwpXC5vQG1pYmdyb3VwL1wxLm9AZycgPCAkbWliX21vZHVsZV9saXN0X28gPiAkbWliZ3JvdXBfbGlzdF9vCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3RfbG8vbWliZ3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRtaWJfbW9kdWxlX2xpc3RfbG8gPiAkbWliZ3JvdXBfbGlzdF9sbworCiskU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9vCiskU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9jCiskU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbG8KKworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3Rfby9hZ2VudGdyb3VwX2xpc3Rfby87c0BcKFteIAldKlwpXC5vQG1pYmdyb3VwL1wxLm9AZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfbyA+ICRhZ2VudGdyb3VwX2xpc3RfbworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfbG8vYWdlbnRncm91cF9saXN0X2xvLztzQFwoW14gCV0qXClcLmxvQG1pYmdyb3VwL1wxLmxvQGcnIDwgJGFnZW50X21vZHVsZV9saXN0X2xvID4gJGFnZW50Z3JvdXBfbGlzdF9sbworCitmb3IgaSBpbiBtb2R1bGVfbGlzdF9vIG1vZHVsZV9saXN0X2MgbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X28gbWliX21vZHVsZV9saXN0X2MgbWliX21vZHVsZV9saXN0X2xvIG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X28gYWdlbnRfbW9kdWxlX2xpc3RfYyBhZ2VudF9tb2R1bGVfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfbyBhZ2VudGdyb3VwX2xpc3RfbG8gOyBkbworCSMgaHB1eCBtYWtlIChhdCBsZWFzdCkgZG9lc24ndCBsaWtlIGEgdHJhaWxpbmcgXCBvbiB0aGUgbGFzdAorCSMgbGluZSBldmVuIHdoZW4gdGhlIG5leHQgbGluZSBjb250YWlucyBub3RoaW5nIGJ1dAorCSMgd2hpdGVzcGFjZS4KKwlsYXN0dG9rZW49YGF3ayAne2xhc3R0b2tlbj0kMX1FTkR7cHJpbnQgbGFzdHRva2VufScgbWsvJGkubWtgCisJJFNFRCAicyMkbGFzdHRva2VuIFxcXFwjJGxhc3R0b2tlbiMiIDwgbWsvJGkubWsgPiBtay8kaS5tay50bXAKKwltdiBtay8kaS5tay50bXAgbWsvJGkubWsKKworCSMgYWRkIGEgY2xvc2luZyBjb21tZW50CisJZWNobyAiIiA+PiBtay8kaS5taworCWVjaG8gIiMgZW5kIGNvbmZpZ3VyZSBnZW5lcmF0ZWQgY29kZSIgPj4gbWsvJGkubWsKK2RvbmUKKworY2hhbmdlcXVvdGUoWywgXSkKKworaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCisgICBlY2hvIC1lICJcbkZpbmFsIG1vZHVsZSBsaXN0OiAkbW9kdWxlX2xpc3RfY29kZSIKKyAgIGV4aXQKK2ZpCitpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCisgIEFDX01TR19DQUNIRV9BREQoW0FnZW50IE1vZHVsZSBsaXN0OiAkbW9kdWxlX2xpc3RfY29kZV0pCitmaQorQUNfU1VCU1RfRklMRShNT0RVTEVfTElTVCkKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfYykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9jKQorQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9jKQorQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9vKQorQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9vKQorQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X2xvKQorQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X2xvKQorCitBQ19TVUJTVChkZWZhdWx0X21pYnNfaW5zdGFsbCkKK0FDX1NVQlNUKGRsbGNsZWFucykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX3J1bGVzKQorQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9kZXBzKQorQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfZGVwcykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfZGVwcykKKworQUNfTVNHX1JFU1VMVCguKQorCitpZiB0ZXN0ICRtb2R1bGVfZGVidWcgLWVxIDE7IHRoZW4KK0FDX01TR19DQUNIRV9BREQoQWdlbnQgTUlCIGNvZGU6ICAgICAgICAgICAgJG1vZHVsZV9saXN0KQorZmkKK0FDX01TR19DQUNIRV9BREQoQWdlbnQgTUlCIGNvZGU6ICAgICAgICAgICAgJHRvcF9sZXZlbF9tb2R1bGVzKQorCisjIGVuZCBoYWlyeSBhZ2VudCBtb2R1bGUgcHJvY2Vzc2luZworCitBQ19NU0dfQ0hFQ0tJTkcoW2lmIGRpcmVjdG9yaWVzIG5lZWQgdG8gYmUgY3JlYXRlZF0pCitmb3IgaSBpbiAkbW9kdWxlX2RpcmVjdG9yaWVzOyBkbworICAkc3JjZGlyL21raW5zdGFsbGRpcnMgJGkKK2RvbmUKK0FDX01TR19SRVNVTFQoLikKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIGRlZmF1bHQgbWlicworIworQUNfTVNHX0NIRUNLSU5HKFtkZWZhdWx0IG1pYiBmaWxlcyB0byByZWFkXSkKK2lmIHRlc3QgIngkTkVUU05NUF9ERUZBVUxUX01JQlMiID0gIngiOyB0aGVuCisgIE5FVFNOTVBfREVGQVVMVF9NSUJTPSIkZGVmYXVsdF9taWJzIgorZmkKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieGN5Z3dpbiI7IHRoZW4KKyAgIyBtaW5ndzMyIGFuZCBjeWd3aW4gdXNlICc7JyBhcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgc2VwYXJhdG9yIGNoYXIKKyAgRU5WX1NFUEFSQVRPUj0iOyIKKyAgTkVUU05NUF9ERUZBVUxUX01JQlM9YGVjaG8gIiRORVRTTk1QX0RFRkFVTFRfTUlCUyIgfCAkU0VEICdzLzovOy9nJ2AKKyAgZGVmYXVsdF9taWJzPWBlY2hvICIkZGVmYXVsdF9taWJzIiB8ICRTRUQgJ3MvOi87L2cnYAorZWxzZQorICBFTlZfU0VQQVJBVE9SPSI6IgorZmkKK0FDX1NVQlNUKEVOVl9TRVBBUkFUT1IpCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQlMsIiRORVRTTk1QX0RFRkFVTFRfTUlCUyIpCitBQ19TVUJTVChORVRTTk1QX0RFRkFVTFRfTUlCUykKK0FDX01TR19SRVNVTFQoJE5FVFNOTVBfREVGQVVMVF9NSUJTKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMzRmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIKQEAgLTAsMCArMSwzNDUgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIworIyBNYXliZSBhZGQgbGlicmFyeSBleHRlbnNpb25zIGZvciB0aHJlYWQgbXV0ZXggbG9ja2luZy4KKyMKKworaWYgdGVzdCAieCR3aXRoX3Jlc19sb2NrcyIgPSAieHllcyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfUkVFTlRSQU5ULCAxLAorICAgIFtEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHJlZW50cmFudC90aHJlYWRlZAorICAgICBjb2RlIChpbmNvbXBsZXRlKS5dKQorCisgICAgY2FzZSAkdGFyZ2V0X29zIGluCisKKyAgICBhaXgqKQorCUNDX1JVTlRJTUVfQVJHPSIkQ0NfUlVOVElNRV9BUkcgLWxwdGhyZWFkcyIKKwk7OworCisgICAgKikKKwk7OworCisgICAgZXNhYworZmkKKworIworIyBBZGQgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlIGZpbGVzLgorIworQUNfTVNHX0NIRUNLSU5HKFtmb3IgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlXSkKK290aGVyX3NyY19saXN0PSIiCitvdGhlcl9vYmpzX2xpc3Q9IiIKK290aGVyX2xvYmpzX2xpc3Q9IiIKK290aGVyX2FnZW50b2Jqcz0iIgorb3RoZXJfbGFnZW50b2Jqcz0iIgorb3RoZXJfdHJhcGRfb2JqZWN0cz0iIgorCisjIFdpbjMyIHNlcnZpY2UgY29kZQoraWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4KKyAgb3RoZXJfc3JjX2xpc3Q9IiRvdGhlcl9zcmNfbGlzdCB3aW5zZXJ2aWNlLmMgd2luc2VydmljZXJjLnJjIgorICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2luc2VydmljZS5vIHdpbnNlcnZpY2VyYy5vIgorICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5zZXJ2aWNlLmxvIHdpbnNlcnZpY2VyYy5sbyIKKyAgb3RoZXJfYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5vIgorICBvdGhlcl9sYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5sbyIKKyAgb3RoZXJfdHJhcGRfb2JqZWN0cz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubyIgCitmaQorICAKKyMgV2luMzIgcGlwZXMKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisgIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2lucGlwZS5jIgorICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2lucGlwZS5vIgorICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5waXBlLmxvIgorZmkKKworQUNfU1VCU1Qob3RoZXJfc3JjX2xpc3QpCitBQ19TVUJTVChvdGhlcl9vYmpzX2xpc3QpCitBQ19TVUJTVChvdGhlcl9sb2Jqc19saXN0KQorQUNfU1VCU1Qob3RoZXJfYWdlbnRvYmpzKQorQUNfU1VCU1Qob3RoZXJfbGFnZW50b2JqcykKK0FDX1NVQlNUKG90aGVyX3RyYXBkX29iamVjdHMpCisKK0FDX01TR19SRVNVTFQoWyRvdGhlcl9zcmNfbGlzdCAkb3RoZXJfb2Jqc19saXN0ICRvdGhlcl9sb2Jqc19saXN0XSkKK0FDX01TR19SRVNVTFQoWyRvdGhlcl9hZ2VudG9ianMgJG90aGVyX2xhZ2VudG9ianMgJG90aGVyX3RyYXBkX29iamVjdHNdKQorICAKKyMKKyMgRG8gdHJhbnNwb3J0IG1vZHVsZSBwcm9jZXNzaW5nLgorIworQUNfTVNHX0NIRUNLSU5HKFtmb3IgYW5kIGNvbmZpZ3VyaW5nIHRyYW5zcG9ydCBtb2R1bGVzIHRvIHVzZV0pCit0cmFuc3BvcnRfc3JjX2xpc3Q9IiIKK3RyYW5zcG9ydF9oZHJfbGlzdD0iIgordHJhbnNwb3J0X2RlZl9saXN0PSIiCit0cmFuc3BvcnRfcmVzdWx0X2xpc3Q9IiIKK3RyYW5zcG9ydF9hZGRfbGlzdD0iIgorbmV3X3dpdGhfdHJhbnNwb3J0X2xpc3Q9YGVjaG8gJHdpdGhfdHJhbnNwb3J0cyB8ICRTRUQgJ3MvLC8gL2c7J2AKK25ld193aXRoX291dF90cmFuc3BvcnRfbGlzdD1gZWNobyAkd2l0aF9vdXRfdHJhbnNwb3J0cyB8ICRTRUQgJ3MvLC8gL2c7J2AKKworIworIyBBZGQgdGhlIGRlZmF1bHQgdHJhbnNwb3J0cyB0byB0aGUgbGlzdAorIworaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4gCisgIHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q9IlVEUCBUQ1AgQWxpYXMgQ2FsbGJhY2siCitlbHNlCisgIHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q9IlVEUCBUQ1AgQWxpYXMgVW5peCBDYWxsYmFjayIKK2ZpCitpZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgorICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFBJUHY2IFRDUElQdjYgJHRyYW5zcG9ydF9kZWZhdWx0X2xpc3QiCitmaQorZm9yIGkgaW4gJHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfdHJhbnNwb3J0X2xpc3QgIiB8ICRHUkVQICIgJGkgIiA+L2Rldi9udWxsOyB0aGVuCisgICAgOgorICBlbHNlCisgICAgdHJhbnNwb3J0X2FkZF9saXN0PSIkaSAkdHJhbnNwb3J0X2FkZF9saXN0IgorICBmaQorZG9uZQorbmV3X3RyYW5zcG9ydF9saXN0PSIkdHJhbnNwb3J0X2FkZF9saXN0ICRuZXdfd2l0aF90cmFuc3BvcnRfbGlzdCIKKworZm9yIGkgaW4gJG5ld190cmFuc3BvcnRfbGlzdDsgZG8KKyAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3QgIiB8ICRHUkVQICIgJGkgIiA+L2Rldi9udWxsOyB0aGVuCisgICAgaWYgdGVzdCAieCRpIiA9ICJ4VURQIjsgdGhlbgorICAgICAgZWNobworICAgICAgQUNfTVNHX0VSUk9SKEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGhvdXQgVURQL0lQIHN1cHBvcnQuKQorICAgIGZpCisgICAgY29udGludWUKKyAgZWxzZQorICAgIGlmIHRlc3QgIngkaSIgPSAieEFBTDVQVkMiOyB0aGVuCisgICAgICBpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgIT0gInhsaW51eCI7IHRoZW4KKyAgICAgICAgZWNobworICAgICAgICBBQ19NU0dfRVJST1IoQUFMNSBQVkMgc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSAoTGludXggb25seSkpCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAieCRpIiA9ICJ4SVBYIjsgdGhlbgorICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiICE9ICJ4bGludXgiOyB0aGVuCisgICAgICAgIGVjaG8KKyAgICAgICAgQUNfTVNHX0VSUk9SKElQWCBzdXBwb3J0IHVuYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtIChMaW51eCBvbmx5KSkKKyAgICAgIGZpCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JGkiID0gInhVbml4IjsgdGhlbgorICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4KKyAgICAgICAgZWNobworICAgICAgICBBQ19NU0dfRVJST1IoVW5peCBkb21haW4gcHJvdG9jb2wgc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSkKKyAgICAgIGZpCisgICAgZmkKKyAgICBpZiB0ZXN0ICEgIngkZW5hYmxlX2lwdjYiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkaSIgPSAieFVEUElQdjYiIC1vICJ4JGkiID0gInhUQ1BJUHY2IjsgdGhlbgorICAgICAgICAgICAgZWNobworICAgICAgICAgICAgQUNfTVNHX0VSUk9SKElQdjYgdHJhbnNwb3J0cyBub3QgYXZhaWxhYmxlIGlmIElQdjYgc3VwcG9ydCBpcyBub3QgZW5hYmxlZCkKKyAgICAgICAgZmkKKyAgICBmaQorICAgIHRyYW5zcG9ydF9zcmM9InNubXAiJGkiRG9tYWluLmMiCisgICAgdHJhbnNwb3J0X2hkcj0ic25tcCIkaSJEb21haW4uaCIKKyAgICByZWxfdHJhbnNwb3J0X3NyYz0ic25tcGxpYi8iJHRyYW5zcG9ydF9zcmMKKyAgICByZWxfdHJhbnNwb3J0X2hkcj0iaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5LyIkdHJhbnNwb3J0X2hkcgorICAgIGlmIHRlc3QgLWYgIiRzcmNkaXIvJHJlbF90cmFuc3BvcnRfc3JjIjsgdGhlbgorICAgICAgdHJhbnNwb3J0X3Jlc3VsdF9saXN0PSIkdHJhbnNwb3J0X3Jlc3VsdF9saXN0ICRpIgorICAgICAgdHJhbnNwb3J0X3NyY19saXN0PSIkdHJhbnNwb3J0X3NyYyAkdHJhbnNwb3J0X3NyY19saXN0IgorICAgICAgaWYgdGVzdCAtZiAiJHNyY2Rpci8kcmVsX3RyYW5zcG9ydF9oZHIiOyB0aGVuCisgICAgICAgIHRyYW5zcG9ydF9oZHJfbGlzdD0iJHRyYW5zcG9ydF9oZHIgJHRyYW5zcG9ydF9oZHJfbGlzdCIKKyAgICAgIGZpCisgICAgICB0cmFuc3BvcnRfZGVmPWBlY2hvICRpIHwgJFNFRCAneS9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi8nYAorICAgICAgdHJhbnNwb3J0X2RlZl9saXN0PSJORVRTTk1QX1RSQU5TUE9SVF8iJHRyYW5zcG9ydF9kZWYiX0RPTUFJTiAkdHJhbnNwb3J0X2RlZl9saXN0IgorICAgIGVsc2UKKyAgICAgIGVjaG8KKyAgICAgIEFDX01TR19FUlJPUihDYW5ub3QgZmluZCBmaWxlICRzcmNkaXIvJHJlbF90cmFuc3BvcnRfc3JjIHRvIHN1cHBvcnQgU05NUCB0cmFuc3BvcnQgZG9tYWluICRpLikKKyAgICBmaQorICBmaQorZG9uZQordHJhbnNwb3J0X29ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgJFNFRCAncy9cLmMvXC5vL2cnYCAJIAordHJhbnNwb3J0X2xvYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8ICRTRUQgJ3MvXC5jL1wubG8vZydgCisKKyMjIE1pbkdXIHJlcXVpcmVzIGluZXRfbnRvcCgpIGFuZCBpbmV0X3B0b24oKS4KK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisgIGlmIGVjaG8gIiR0cmFuc3BvcnRfZGVmX2xpc3QiIHwgJEdSRVAgIklQVjYiID4vZGV2L251bGw7IHRoZW4KKyAgICB0cmFuc3BvcnRfb2JqX2xpc3Q9IiR0cmFuc3BvcnRfb2JqX2xpc3QgaW5ldF9udG9wLm8gaW5ldF9wdG9uLm8iCisgICAgdHJhbnNwb3J0X2xvYmpfbGlzdD0iJHRyYW5zcG9ydF9sb2JqX2xpc3QgaW5ldF9udG9wLmxvIGluZXRfcHRvbi5sbyIKKyAgZmkKK2ZpCisKK0FDX1NVQlNUKHRyYW5zcG9ydF9oZHJfbGlzdCkKK0FDX1NVQlNUKHRyYW5zcG9ydF9zcmNfbGlzdCkKK0FDX1NVQlNUKHRyYW5zcG9ydF9vYmpfbGlzdCkKK0FDX1NVQlNUKHRyYW5zcG9ydF9sb2JqX2xpc3QpCitmb3IgaSBpbiAkdHJhbnNwb3J0X2RlZl9saXN0OyBkbworICBBQ19ERUZJTkVfVU5RVU9URUQoJGkpCitkb25lCitBQ19NU0dfUkVTVUxUKCR0cmFuc3BvcnRfcmVzdWx0X2xpc3QuKQorQUNfTVNHX0NBQ0hFX0FERChOZXR3b3JrIHRyYW5zcG9ydCBzdXBwb3J0OiAkdHJhbnNwb3J0X3Jlc3VsdF9saXN0KQorCisjCisjIFNlY3VyaXR5IG1vZHVsZXMgdG8gdXNlCisjIAorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzZWN1cml0eSBtb2R1bGVzIHRvIHVzZV0pCitzZWN1cml0eV9kZWZfbGlzdD0idXNtIgorc2VjdXJpdHlfc3JjX2xpc3Q9IiIKK3NlY3VyaXR5X29ial9saXN0PSIiIAkgCitzZWN1cml0eV9sb2JqX2xpc3Q9IiIKK3NlY3VyaXR5X2luaXRfZmlsZT0ic25tcGxpYi9zbm1wc21faW5pdC5oIgorc2VjdXJpdHlfaW5jbF9maWxlPSJpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgiCituZXdfd2l0aF9zZWN1cml0eT1gZWNobyAkd2l0aF9zZWN1cml0eV9tb2R1bGVzIHwgJFNFRCAncy8sLyAvZzsnYAorbmV3X3dpdGhfb3V0X3NlY3VyaXR5PWBlY2hvICR3aXRoX291dF9zZWN1cml0eV9tb2R1bGVzIHwgJFNFRCAncy8sLyAvZzsnYAorCitpZiB0ZXN0ICEgLWQgaW5jbHVkZTsgdGhlbgorICBta2RpciBpbmNsdWRlCitmaQoraWYgdGVzdCAhIC1kIGluY2x1ZGUvbmV0LXNubXA7IHRoZW4KKyAgbWtkaXIgaW5jbHVkZS9uZXQtc25tcAorZmkKK2lmIHRlc3QgISAtZCBpbmNsdWRlL25ldC1zbm1wL2FnZW50OyB0aGVuCisgIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQKK2ZpCitpZiB0ZXN0ICEgLWQgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5OyB0aGVuCisgIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeQorZmkKK2lmIHRlc3QgISAtZCBpbmNsdWRlL3VjZC1zbm1wOyB0aGVuCisgIG1rZGlyIGluY2x1ZGUvdWNkLXNubXAKK2ZpCisKK2lmIHRlc3QgISAtZCBzbm1wbGliOyB0aGVuCisgIG1rZGlyIHNubXBsaWIKK2ZpCitlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5pdF9maWxlCitlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5jbF9maWxlCisKK2ZvciBpIGluICRzZWN1cml0eV9kZWZfbGlzdDsgZG8KKyAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfc2VjdXJpdHkgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGlmIHRlc3QgIngkaSIgPSAieHVzbSI7IHRoZW4KKwllY2hvCisgICAgICAgIEFDX01TR19FUlJPUihUaGUgVVNNIHNlY3VyaXR5IG1vZHVsZSBpcyBtYW5kYXRvcnkpCisgICAgZmkKKyAgZWxzZQorICAgIG5ld193aXRoX3NlY3VyaXR5PSIkbmV3X3dpdGhfc2VjdXJpdHkgJGkiCisgIGZpCitkb25lCisKK2ZvciBpIGluICRuZXdfd2l0aF9zZWN1cml0eTsgZG8KKyAgY2ZpbGU9InNubXAiJGkiLmMiCisgIGhmaWxlPSJzbm1wIiRpIi5oIgorCisgICMgbWFrZSBzdXJlIHN1cHBvcnQgZXhpc3RzIGZvciBpdAorICBpZiB0ZXN0IC1mICRzcmNkaXIiL3NubXBsaWIvIiRjZmlsZSAtYSAtZiAkc3JjZGlyIi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvIiRoZmlsZTsgdGhlbgorICAgIDoKKyAgZWxzZQorICAgIGVjaG8KKyAgICBBQ19NU0dfRVJST1IoTm8gc3VjaCBzZWN1cml0eSBtb2R1bGU6ICRpIC8gJGNmaWxlIC8gJGhmaWxlKQorICBmaQorCisgICMgZGVmaW5lIGEgYnVuY2ggb2Ygc3R1ZmYgdG8gZW5hYmxlIGl0CisgIHNlY3VyaXR5X3NyY19saXN0PSIkc2VjdXJpdHlfc3JjX2xpc3QgJGNmaWxlIgorICBzZWN1cml0eV9oZHJfbGlzdD0iJHNlY3VyaXR5X2hkcl9saXN0ICRoZmlsZSIKKyAgc2VjdXJpdHlfb2JqX2xpc3Q9IiRzZWN1cml0eV9vYmpfbGlzdCBzbm1wIiRpIi5vIiAJIAorICBzZWN1cml0eV9sb2JqX2xpc3Q9IiRzZWN1cml0eV9sb2JqX2xpc3Qgc25tcCIkaSIubG8iCisgIGRlZl9uYW1lPSJORVRTTk1QX1NFQ01PRF8iYGVjaG8gJGkgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgCisgIGVjaG8gImluaXRfIiRpIigpOyIgPj4gJHNlY3VyaXR5X2luaXRfZmlsZQorICBlY2hvICIjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS8kaGZpbGU+IiA+PiAkc2VjdXJpdHlfaW5jbF9maWxlCisgIEFDX0RFRklORV9VTlFVT1RFRCgkZGVmX25hbWUpCitkb25lCisKK0FDX1NVQlNUKHNlY3VyaXR5X3NyY19saXN0KQorQUNfU1VCU1Qoc2VjdXJpdHlfaGRyX2xpc3QpCitBQ19TVUJTVChzZWN1cml0eV9vYmpfbGlzdCkgCSAKK0FDX1NVQlNUKHNlY3VyaXR5X2xvYmpfbGlzdCkKK0FDX01TR19SRVNVTFQoJG5ld193aXRoX3NlY3VyaXR5KQorQUNfTVNHX0NBQ0hFX0FERChTTk1QdjMgU2VjdXJpdHkgTW9kdWxlczogICAgJG5ld193aXRoX3NlY3VyaXR5KQorCisjCisjIEhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIEtTTSB0byBzZWUgd2hpY2ggY3J5cHRvIEFQSSB3ZSBzdXBwb3J0CisjCisKK3JlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHk9CithbHJlYWR5X2NoZWNrZWRfa3JiNT1ubworCitmb3Igc2VjIGluICRuZXdfd2l0aF9zZWN1cml0eQorZG8KKyAgaWYgdGVzdCAieCRzZWMiID0gInhrc20iOyB0aGVuCisgICAgaWYgdGVzdCAieHllcyIgPSAieCRhbHJlYWR5X2NoZWNrZWRfa3JiNSI7IHRoZW4KKyAgICAgIGNvbnRpbnVlCisgICAgZWxzZQorICAgICAgYWxyZWFkeV9jaGVja2VkX2tyYjU9eWVzCisgICAgZmkKKyAgZmkKKworICBpZiB0ZXN0IHgkc2VjICE9IHhrc207IHRoZW4KKyAgICByZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PSIkcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eSAkc2VjIgorICBlbHNlCisgICAgaWYgdGVzdCBubyA9ICR0cnlrcmI1OyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtjb25maWd1cmVkIG5vdCB0byB1c2Uga3JiNS4gZGlzYWJsaW5nIGtzbV0pCisgICAgICBjb250aW51ZQorICAgIGZpCisKKyAgICBBQ19QQVRIX1BST0coW2tyYjVfY29uZmlnXSxrcmI1LWNvbmZpZyxbbm9dLCRrcmI1cGF0aC9iaW46JFBBVEgpCisKKyAgICBpZiB0ZXN0IG5vICE9ICRrcmI1X2NvbmZpZzsgdGhlbgorICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJGtyYjVfY29uZmlnIC0tY2ZsYWdzYCIKKyAgICAgIExJQlM9IiRMSUJTIGAka3JiNV9jb25maWcgLS1saWJzYCIKKyAgICBlbGlmIHRlc3QgJGtyYjVwYXRoICE9IG5vOyB0aGVuCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJGtyYjVwYXRoKQorICAgIGVsc2UKKyAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgvdXNyL2tlcmJlcm9zKQorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrcmI1XSkKKyAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9rcmI1LAorICAgICAgQUNfQ0hFQ0tfTElCKGtyYjUsIGtyYjVfaW5pdF9jb250ZXh0LAorCWFjX2N2X2hhdmVfa3JiNT15ZXMsIGFjX2N2X2hhdmVfa3JiNT1ubworICAgICAgKQorICAgICkKKworICAgIGlmIHRlc3QgJGFjX2N2X2hhdmVfa3JiNSA9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0ICJ4JGFza2Vka3JiNSIgPSAieHllcyI7IHRoZW4KKwlBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIGtyYjUgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCisgICAgICBmaQorICAgICAgQUNfTVNHX1JFU1VMVChuby4gZGlzYWJsaW5nIGtzbSkKKyAgICAgIGNvbnRpbnVlCisgICAgZmkKKyAgICAgIAorICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgIHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHk9IiRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5IGtzbSIKKworICAgIEFDX01TR19DSEVDS0lORyhbW2ZvciBoZWltZGFsXV0pCisgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2hlaW1kYWwsCisgICAgW0FDX1RSWV9DT01QSUxFKAorICAgICAgWyNpbmNsdWRlIDxrcmI1Lmg+XSwKKyAgICAgIFtjb25zdCBjaGFyICp2ID0gaGVpbWRhbF92ZXJzaW9uO10sCisgICAgICBhY19jdl9oZWltZGFsPXllcywKKyAgICAgIGFjX2N2X2hlaW1kYWw9bm8KKyAgICApXSkKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oZWltZGFsKQorICAgIGlmIHRlc3QgJGFjX2N2X2hlaW1kYWwgPSB5ZXM7IHRoZW4KKyAgICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9LRVJCRVJPU19IRUlNREFMLCAxLAorICAgICAgICBbRGVmaW5lIHRoaXMgaWYgeW91J3JlIHVzaW5nIEhlaW1kYWwgS2VyYmVyb3NdKQorICAgICAgaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgorCUxJQlM9IiRMSUJTIC1sa3JiNSAtbGFzbjEgLWxjb21fZXJyIC1scm9rZW4iCisgICAgICBmaQorICAgIGVsaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgorCUxJQlM9IiRMSUJTIC1sa3JiNSAtbGNvbV9lcnIiCisgICAgZmkKKworICAgIEFDX01TR19DSEVDS0lORyhbdG8gc2VlIHdoaWNoIGNyeXB0byBBUEkgd2UgbmVlZCB0byB1c2VdKQorICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQsCisgICAgICBBQ19DSEVDS19MSUIoazVjcnlwdG8sIGtyYjVfaW5pdF9jb250ZXh0LAorCWFjX2N2X05FVFNOTVBfVVNFX0tFUkJFUk9TX01JVD15ZXMsIGFjX2N2X05FVFNOTVBfVVNFX0tFUkJFUk9TX01JVD1ubworICAgICAgKQorICAgICkKKworICAgIGlmIHRlc3QgeWVzID0gJGFjX2N2X05FVFNOTVBfVVNFX0tFUkJFUk9TX01JVDsgdGhlbgorICAgICAgQUNfTVNHX1JFU1VMVChuZXcgTUlUIGNyeXB0byBBUEkpCisgICAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfS0VSQkVST1NfTUlULCAxLAorICAgICAgICBbRGVmaW5lIHRoaXMgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBNSVQgY3J5cHRvIEFQSV0pCisgICAgICBpZiB0ZXN0IG5vID0gJGtyYjVfY29uZmlnOyB0aGVuCisJTElCUz0iJExJQlMgLWxrNWNyeXB0byIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgQUNfTVNHX1JFU1VMVChvbGQgTUlUIGNyeXB0byBBUEkpCisgICAgZmkKKyAgICBBQ19DSEVDS19GVU5DUyhba3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5XSkKKyAgZmkKK2RvbmUKKworbmV3X3dpdGhfc2VjdXJpdHk9JHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHkKKworIworIyBEZXRlY3QgbG1fc2Vuc29ycyB2ZXJzaW9uCisjCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZW5zb3JzX3NlbnNvcnNfaCIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19DSEVDS19ERUNMUyhbc2Vuc29yc19nZXRfYWxsX3N1YmZlYXR1cmVzXSwKKyAgICAgICAgW0FDX0RFRklORShORVRTTk1QX1VTRV9TRU5TT1JTX1YzLCAxLAorICAgICAgICAgICAgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIGxpbV9zZW5zb3JzIHYzIG9yIGxhdGVyXSldLCwKKyAgICAgICAgW1sjaW5jbHVkZSA8c2Vuc29ycy9zZW5zb3JzLmg+XV0pCitmaQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxNjJkNgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMKQEAgLTAsMCArMSwyMzAgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTdGFuZGFyZCBjaGVja3M6CisjIworQUNfRlVOQ19BTExPQ0EgICAgICAgICAgIyAgYWxsb2NhKCkKK0FDX1BST0dfR0NDX1RSQURJVElPTkFMCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIC1hICIke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmcrc2V0fSIgIT0gc2V0Cit0aGVuCisgICMgQ3Jvc3MtY29tcGlsaW5nIGFuZCBhY19jdl9mdW5jX21lbWNtcF93b3JraW5nIGhhcyBub3QgYmVlbiBzZXQgLSBhc3N1bWUKKyAgIyB0aGF0IG1lbWNtcCgpIGlzIGF2YWlsYWJsZS4KKyAgYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz15ZXMKK2Vsc2UKKyAgIyBOYXRpdmUgY29tcGlsYXRpb24gLSB0ZXN0IGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIG1lbWNtcCgpLgorICBBQ19GVU5DX01FTUNNUAorZmkKKworQUNfVFlQRV9TSUdOQUwKKworIyMKKyMgICBTdGFuZC1hbG9uZSBmdW5jdGlvbiBjaGVja3M6CisjIworIyAgQ29yZToKK0FDX0NIRUNLX0ZVTkNTKFtscmFuZDQ4ICAgICAgICAgcmFuZCAgICAgICAgICByYW5kb20gICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzaWduYWwgICAgICAgICAgc2lnc2V0ICAgICAgICAgICAgICAgICAgXSApCisKKyMgIExpYnJhcnk6CitBQ19DSEVDS19GVU5DUyhbZm9yayAgICAgICAgICAgIGdhaV9zdHJlcnJvciAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW2dldGFkZHJpbmZvICAgICBnZXRob3N0bmFtZSAgIGdldGhvc3RieW5hbWUgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtnZXRpcG5vZGVieW5hbWUgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbaWZfbmFtZXRvaW5kZXggIG1rc3RlbXAgICAgICAgcmVnY29tcCAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3JlYWRkaXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzZXRlbnYgICAgICAgICAgc2V0aXRpbWVyICAgICBzZXRsb2NhbGUgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0c2lkICAgICAgICAgIHNucHJpbnRmICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3N0cmNhc2VzdHIgICAgICBzdHJkdXAgICAgICAgIHN0cmVycm9yICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzdHJsY2F0ICAgICAgICAgc3RybGNweSAgICAgICBzdHJuY2FzZWNtcCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc3RydG9rX3IgICAgICAgIHN0cnRvbCAgICAgICAgc3RydG91bCAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3N0cnRvdWxsICAgICAgICBzeXNjb25mICAgICAgIHRpbWVzICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFt2c25wcmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKQorCisjICBBZ2VudDoKK0FDX0NIRUNLX0ZVTkNTKFtjZ2V0bmV4dCAgICAgICAgZXhlY3YgICAgICAgICBnYWlfc3RyZXJyb3IgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZ2V0ZnNzdGF0ICAgICAgIGdldGdybmFtICAgICAgZ2V0aG9zdG5hbWUgICAgICBdIGRubAorICAgICAgICAgICAgICAgWyAgICAgICAgICAgICAgICBnZXRsb2FkYXZnICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtnZXRwaWQgICAgICAgICAgZ2V0cHduYW0gICAgICBnZXR2ZnNzdGF0ICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbaGFzbW50b3B0ICAgICAgIGluaXRncm91cHMgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW2lmX25hbWVpbmRleCAgICBpZl9uYW1ldG9pbmRleCAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtraW5mb19nZXRfY3B1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbbWtzdGVtcCAgICAgICAgIG1rdGltZSAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3BvbGwgICAgICAgICAgICByZWdjb21wICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzZXRnaWQgICAgICAgICAgc2V0Z3JvdXBzICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0bW50ZW50ICAgICAgIHNldHVpZCAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3NpZ2FjdGlvbiAgICAgICBzaWdibG9jayAgICAgIHNpZ2hvbGQgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzdGF0ZnMgICAgICAgICAgc3RhdHZmcyAgICAgICBzdGltZSAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc3RybmNhc2VjbXAgICAgIHN5c3RlbSAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3VuYW1lICAgICAgICAgICB1c2xlZXAgICAgICAgICAgICAgICAgICAgICAgICAgXSApCisKKyMgIEFwcHM6CitBQ19DSEVDS19GVU5DUyhbZ2V0ZHRhYmxlc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW2dldGdybmFtICAgICAgICBnZXRwaWQgICAgICAgIGdldHB3bmFtICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzZXRnaWQgICAgICAgICAgc2V0Z3JvdXBzICAgICBzZXR1aWQgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbdGNnZXRhdHRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICkKKworIyAgTm90LVVzZWQ6CitBQ19DSEVDS19GVU5DUyhbaWZfZnJlZW5hbWVpbmRleCAgICAgICAgICAgICAgZ2V0cGFnZXNpemUgICAgICBdIGRubAorICAgICAgICAgICAgICAgW2xzZWVrNjQgICAgICAgICBwcmVhZDY0ICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzZWxlY3QgICAgICAgICAgc2lnYWxybSAgICAgICBzb2NrZXQgICAgICAgICAgIF0gKQorCisKKyMjCisjICAgTW9yZSBjb21wbGV4IGZ1bmN0aW9uIGNoZWNrczoKKyMgICAgICAgICAgIChBZ2VudCkKKyMjCisKKyMgICAgICAgcnBtR2V0UGF0aCBjaGVjayBuZWVkcyBjbGVhbiBMSUJTIGVudmlyb25tZW50ICAgKExpbnV4KQorIworaWYgdGVzdCAieCR3aXRoX3JwbSIgIT0gInhubyI7IHRoZW4KKyAgICBPTERMSUJTPSRMSUJTCisgICAgTElCUz0kTE1JQkxJQlMKKyAgICBBQ19DSEVDS19GVU5DUyhycG1HZXRQYXRoKQorICAgIExJQlM9JE9MRExJQlMKK2ZpCisKKyMgICAgICAgc3RhdGZzKCBjaGFyICosIHN0cnVjdCBmc19kYXRhKiApICAgICAgICAgICAgICAgKFVsdHJpeCkKKyMKK0FDX01TR19DSEVDS0lORyhbW2ZvciB0d28tYXJndW1lbnQgc3RhdGZzIHdpdGggc3RydWN0IGZzX2RhdGEgKFVsdHJpeCldXSkKK0FDX0NBQ0hFX1ZBTCgKKyAgICBmdV9jdl9zeXNfc3RhdF9mc19kYXRhLAorICAgIFtBQ19UUllfUlVOKFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19GU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL2ZzX3R5cGVzLmg+CisjZW5kaWYKK21haW4gKCkKK3sKK3N0cnVjdCBmc19kYXRhIGZzZDsKKy8qIFVsdHJpeCdzIHN0YXRmcyByZXR1cm5zIDEgZm9yIHN1Y2Nlc3MsCisgICAwIGZvciBub3QgbW91bnRlZCwgLTEgZm9yIGZhaWx1cmUuICAqLworZXhpdCAoc3RhdGZzICgiLiIsICZmc2QpICE9IDEpOworfV0sCisgICAgZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT15ZXMsCisgICAgZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT1ubywKKyAgICBmdV9jdl9zeXNfc3RhdF9mc19kYXRhPW5vKV0pCitBQ19NU0dfUkVTVUxUKCRmdV9jdl9zeXNfc3RhdF9mc19kYXRhKQoraWYgdGVzdCAkZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShTVEFUX1NUQVRGU19GU19EQVRBLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHN0YXRmcyB0YWtlcyAyIGFyZ3MgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzCisgICAgICAgICB0eXBlIHN0cnVjdCBmc19kYXRhLiBAPDpAVWx0cml4QDo+QF0pCitmaQorCisKKyMjCisjICAgT3RoZXIgZnVuY3Rpb24tcmVsYXRlZCBjaGVja3M6CisjICAgICAgICAgICAoZ2VuZXJhbCBidWlsZCkKKyMjCisKKyMgICAgICAgSG93IHRvIGdldCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmdW5jdGlvbgorIworQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb25dLAorICAgICAgICAgICAgICAgW25ldHNubXBfY3ZfX2Z1bmNfX25hbWVdLFsKKyAgICBuZXRzbm1wX2N2X19mdW5jX19uYW1lPW5vCisgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgIEFDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fZnVuY19fO11dKSwKKyAgICAgICAgW25ldHNubXBfY3ZfX2Z1bmNfX25hbWU9X19mdW5jX19dKQorICAgIGlmIHRlc3QgIiRuZXRzbm1wX2N2X19mdW5jX19uYW1lIiA9IG5vIDsgdGhlbgorICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgIEFDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fRlVOQ1RJT05fXztdXSksCisgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fRlVOQ1RJT05fX10pCisgICAgZmldKQoraWYgdGVzdCAiJG5ldHNubXBfY3ZfX2Z1bmNfX25hbWUiICE9IG5vOyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKFtORVRTTk1QX0ZVTkNUSU9OXSxbJG5ldHNubXBfY3ZfX2Z1bmNfX25hbWVdLAorICAgICAgICBbU2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlmIGRlZmluZWRdKQorZmkKKworCisjICAgICAgIFdoZXRoZXIgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiAgICAgIChTQ08gVW5peHdhcmUpCisjCitBQ19DQUNIRV9DSEVDSyhbW3doZXRoZXIgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiAoVW5peHdhcmUpXV0sCisgICAgICAgICAgICAgICAgW25ldHNubXBfY3ZfY19icm9rZW5faW5saW5lXSwKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbWworc3RhdGljIGlubGluZSBpbnQgbmVzdGVkX2lubGluZV9mdW5jdGlvbih2b2lkKSB7CisgIHJldHVybiAwOworfQoraW5saW5lIGludCBtYWluX2lubGluZV9mdW5jdGlvbiggdm9pZCApIHsKKyAgcmV0dXJuIG5lc3RlZF9pbmxpbmVfZnVuY3Rpb24oKTsKK30KKyAgICBdXSwKKyAgICBuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmU9bm8sCisgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcykpCisKKworIyAgICAgICBZZXMgLSAgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiAgICAgICAoU29sYXJpcyAyLngpCisjCitjYXNlICIkdGFyZ2V0X29zIiBpbgorICAgIHNvbGFyaXMqKQorICAgICAgICBuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmU9eWVzCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgOzsKK2VzYWMKKworaWYgdGVzdCAiJG5ldHNubXBfY3ZfYnJva2VuX2lubGluZSIgPSB5ZXMgOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX0JST0tFTl9JTkxJTkUsIDEsCisgICAgICAgIFtEZWZpbmUgaWYgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIHVuc3VwcG9ydGVkXSkKK2ZpCisKKworIyMKKyMgICBNaXMtcGxhY2VkIChub24tZnVuY3Rpb24pIGNoZWNrczoKKyMjCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgU0lPQ0dJRkFERFIgaW4gc3lzL2lvY3RsLmhdLAorICAgICAgICAgICAgICAgbmV0c25tcF9jdl9zeXNfaW9jdGxfaF9oYXNfU0lPQ0dJRkFERFIsCisgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKyNpZm5kZWYgU0lPQ0dJRkFERFIKK05vIFNJT0NHSUZBRERSIGZvdW5kIGhlcmUuCisjZW5kaWYKKyAgICAgICAgXV0pXSwKKyAgICBbbmV0c25tcF9jdl9zeXNfaW9jdGxfaF9oYXNfU0lPQ0dJRkFERFI9eWVzXSwKKyAgICBbbmV0c25tcF9jdl9zeXNfaW9jdGxfaF9oYXNfU0lPQ0dJRkFERFI9bm9dKSkKK2lmIHRlc3QgJG5ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSID0geWVzOyB0aGVuCisgIEFDX0RFRklORShTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIsIDEsCisgICBbZGVmaW5lIGlmIFNJT0NHSUZBRERSIGV4aXN0cyBpbiBzeXMvaW9jdGwuaF0pCitmaQorCisjIworIyAgIENoZWNrIGhvdyB0byBwcmludCBhIHNpemVfdCB2YXJpYWJsZQorIyMKKworQUNfQ0FDSEVfQ0hFQ0soCisgICAgW3RoZSB1bmRlcmx5aW5nIHR5cGUgb2YgYSBzaXplX3RdLAorICAgIG5ldHNubXBfY3Zfc2l6ZV90X3R5cGUsCisgICAgW200X2ZvcmVhY2goW1RZUEVdLCBbW2ludF0sW2xvbmddLFtsb25nIGxvbmddLFtzaG9ydF0sW2NoYXJdXSwKKyAgICAgW2lmIFtbIHgkbmV0c25tcF9jdl9zaXplX3RfdHlwZSA9IHggXV0gOyB0aGVuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKwkgICAgIFtBQ19MQU5HX1BST0dSQU0oCitbQUNfSU5DTFVERVNfREVGQVVMVCgpCitleHRlcm4gdW5zaWduZWQgVFlQRSB2YXJpYWJsZTsKK2V4dGVybiBzaXplX3QgdmFyaWFibGU7XSwKKyAgICAgICAgICAgICAgICAgW10pXSwKKyAgICAgICAgICAgICBbbmV0c25tcF9jdl9zaXplX3RfdHlwZT0iVFlQRSJdKQorICAgICBmaQorICAgIF0pXSkKKworQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnRmIGEgc2l6ZV90XSkKK2Nhc2UgIiRuZXRzbm1wX2N2X3NpemVfdF90eXBlIiBpbgorICAgIGNoYXJ8c2hvcnR8aW50KSBuZXRzbm1wX1BSSXo9IiIgOzsKKyAgICBsb25nKSBuZXRzbm1wX1BSSXo9ImwiIDs7CisgICAgImxvbmcgbG9uZyIpIG5ldHNubXBfUFJJej0ibGwiIDs7CisgICAgKikgQUNfTVNHX0VSUk9SKFt1bmRlcmx5aW5nIHR5cGUgb2Ygc2l6ZV90IG5vdCBrbm93bl0pIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKCRuZXRzbm1wX1BSSXopCitBQ19ERUZJTkVfVU5RVU9URUQoW05FVFNOTVBfUFJJel0sIFsiJG5ldHNubXBfUFJJeiJdLAorICAgICAgICAgICAgICAgICAgIFtTaXplIHByZWZpeCB0byB1c2UgdG8gcHJpbnRmIGEgc2l6ZV90IG9yIHNzaXplX3RdKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODAzNzM0Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKQEAgLTAsMCArMSw1MDggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFN0YW5kYXJkIGNoZWNrczoKKyMjCisjICBDb3JlOgorQUNfSEVBREVSX1NUREMgICAgICAgICAgIyAgPHN0ZGxpYi5oPiwgPHN0ZGFyZy5oPiwgICA8c3RyaW5nLmg+ICAmIDxmbG9hdC5oPgorQUNfSEVBREVSX0RJUkVOVCAgICAgICAgIyAgPGRpcmVudC5oPiwgPHN5cy9uZGlyLmg+LCA8c3lzL2Rpci5oPiAmIDxuZGlyLmg+CisjICBBcHBzOgorQUNfSEVBREVSX1NZU19XQUlUICAgICAgIyAgPHN5cy93YWl0Lmg+CisKKyMjCisjICAgU3RhbmQtYWxvbmUgaGVhZGVyczoKKyMjCisjICBDb3JlOgorQUNfQ0hFQ0tfSEVBREVSUyhbZ2V0b3B0LmggICBwdGhyZWFkLmggIHJlZ2V4LmggICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3RyaW5nLmggICBzeXNsb2cuaCAgIHVuaXN0ZC5oICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3RkaW50LmggICBpbnR0eXBlcy5oICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3BhcmFtLmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc2VsZWN0LmggICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9zb2NrZXQuaCAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3RpbWUuaCAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdW4uaCAgICAgICAgICAgXSkKKworIyAgTGlicmFyeSBhbmQgQWdlbnQ6CitBQ19DSEVDS19IRUFERVJTKFtubGlzdC5oXSwsLFsKK0FDX0lOQ0xVREVTX0RFRkFVTFQKK1sKKyNpZm5kZWYgTElCQlNEX0RJU0FCTEVfREVQUkVDQVRFRAorI2RlZmluZSBMSUJCU0RfRElTQUJMRV9ERVBSRUNBVEVEIDEKKyNlbmRpZgorXV0pCisKKyMgIExpYnJhcnk6CitBQ19DSEVDS19IRUFERVJTKFtmY250bC5oICAgIGlvLmggICAgICAga3N0YXQuaCAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW2xpbWl0cy5oICAgbG9jYWxlLmggICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL2ZpbGUuaCAgICAgICBzeXMvaW9jdGwuaCAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc29ja2lvLmggICAgIHN5cy9zdGF0LmggICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9zeXN0ZW1jZmcuaCAgc3lzL3N5c3RlbWluZm8uaCAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3RpbWVzLmggICAgICBzeXMvdWlvLmggICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdXRzbmFtZS5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGlweC9pcHguaCAgICAgICBdKQorCisjICBBZ2VudDoKK0FDX0NIRUNLX0hFQURFUlMoW2RsZmNuLmggICAgZXJyLmggICAgICBmY250bC5oICAgIGZzdGFiLmggICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbICAgICAgICAgICBncnAuaCAgICAgIGlvLmggICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtpb2N0bHMuaCAgIGtzdGF0LmggICAga3ZtLmggICAgICBsaW1pdHMuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgbW50ZW50LmggICBtdGFiLmggICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbICAgICAgICAgICBwa2dsb2NzLmggICAgICAgICAgICAgcHdkLmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFsgICAgICAgICAgIHV0bXB4LmggICAgdXRzbmFtZS5oICAgICAgICAgICAgICAgXSkKKworQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2Rpc2tpby5oICBzeXMvZGtpby5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9maWxlLmggICAgc3lzL2ZpbGlvLmggICBzeXMvZml4cG9pbnQuaCAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvZnMuaCAgICAgIHN5cy9pb2N0bC5oICAgc3lzL2xvYWRhdmcuaCAgc3lzL21udGVudC5oICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL21udHRhYi5oICBzeXMvcG9vbC5oICAgIHN5cy9wcm90b3N3LmggIHN5cy9wc3RhdC5oICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9zb2NraW8uaCAgc3lzL3N0YXQuaCAgICBzeXMvc3RhdGZzLmggICBzeXMvc3RhdHZmcy5oIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc3RyZWFtLmggIHN5cy9zeXNnZXQuaCAgc3lzL3N5c21wLmggICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3RjcGlwc3RhdHMuaCAgICAgICAgICAgIHN5cy91dHNuYW1lLmggIHN5cy92ZnMuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy92bS5oICAgICAgc3lzL3ZtbWFjLmggICBzeXMvdm1tZXRlci5oICBzeXMvdm1wYXJhbS5oIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdm1zeXN0bS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCitBQ19DSEVDS19IRUFERVJTKFthc20vcGFnZS5oIGFzbS90eXBlcy5oICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW2luZXQvbWliMi5oICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbGludXgvaGRyZWcuaCBsaW51eC90YXNrcy5oICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFttYWNoaW5lL3BhcmFtLmggICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvdGNwX2ZzbS5oICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbdWZzL2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFt1dm0vdXZtX2V4dGVybi5oIHV2bS91dm1fcGFyYW0uaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3ZtL3ZtLmggdm0vdm1fZXh0ZXJuLmggdm0vdm1fcGFyYW0uaCBdKQorCisjICBBcHBzOgorQUNfQ0hFQ0tfSEVBREVSUyhbZmNudGwuaCAgICBncnAuaCAgICAgIHB3ZC5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9jZGVmcy5oICAgc3lzL2lvY3RsLmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc29ja2V0LmggIHN5cy9zb2NraW8uaCAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3RpbWUuaCAgICAgICAgICAgICAgICAgICAgICAgXSkKKworIyAgTm90LVVzZWQ6CitBQ19DSEVDS19IRUFERVJTKFtzZWFyY2guaCAgIHNndHR5LmggICAgeHRpLmggICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL2RtYXAuaCBzeXMvcG9sbC5oICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lb3V0LmggICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFttYWNoaW5lL3B0ZS5oICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbcGNpL3BjaS5oICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworCisjIE9wZW5TU0wKK0FDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvYWVzLmggXSkgICAgICMgIChDb3JlKQorQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9kaC5oICBdKSAgICAgIyAgKEFwcHMpCisjICBOb3QtVXNlZDoKK0FDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvZGVzLmggIG9wZW5zc2wvaG1hYy5oIF0gZG5sCisgICAgICAgICAgICAgICAgIFtvcGVuc3NsL2V2cC5oICBzZWN1cml0eS9jcnlwdG9raS5oXSkKKworIyBSUE0gc3ViZGlyZWN0b3J5IHBhdGggICAgICAgICAgICAgICAgICAgKEFnZW50KQoraWYgdGVzdCAieCR3aXRoX3JwbSIgIT0gInhubyI7IHRoZW4KKyAgQUNfQ0hFQ0tfSEVBREVSUyhbcnBtL3JwbXRzLmggICBycG0vcnBtZmlsZXV0aWwuaF0sIFtdLCBbXSwKKwkJICAgW1sjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPl1dKQorZmkKKworCisjIworIyAgIFByZS1yZXF1aXNpdGUgb24gb3RoZXIgaGVhZGVyczoKKyMjCisKKyMgICAgICAgcmVxdWlyaW5nIDxzeXMvcGFyYW0uaD4gIChNQVhQQVRITEVOKSAgICAgICAgICAgKE9wZW5CU0QgMy40KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHN5cy9zd2FwLmgsLCwKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKFtdKQorICAgIFsKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyAgICBdKQorCisjICAgICAgIHJlcXVpcmluZyA8c3lzL3BhcmFtLmg+ICAgICAgICAgICAgICAgICAgICAgICAgIChGcmVlQlNEKQorIworIyAgQ29yZTogICAgICAoPyBUZXN0ZWQgYWJvdmU/ICkKK0FDX0NIRUNLX0hFQURFUlMoW3N0ZGxpYi5oICBdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyAgICBdXSkKKyMKKyMgIExpYnJhcnk6CitBQ19DSEVDS19IRUFERVJTKFttYWxsb2MuaCAgICAgICAgbmV0L2lmX2RsLmggICBzeXMvc3lzY3RsLmggICAgXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisgICAgXV0pCisjCisjICBBZ2VudDoKK0FDX0NIRUNLX0hFQURFUlMoW21hbGxvYy5oICAgICAgICBvc3JlbGRhdGUuaCAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbWFjaGluZS90eXBlcy5oIG5ldC9pZl9kbC5oICAgbmV0L2lmX3R5cGVzLmggIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvZGtzdGF0LmggICAgc3lzL2NvbmYuaCAgICBzeXMvbWJ1Zi5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9tb3VudC5oICAgICBzeXMvcHJvYy5oICAgIHN5cy9xdWV1ZS5oICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3N5c2N0bC5oICAgIHN5cy91c2VyLmggICAgICAgICAgICAgICAgICAgIF0sLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHJlcXVpcmluZyA8c3lzL3NlbWEuaD4gICAgICAgICAgICAgICAgICAgICAgICAgIChJUklYIDYuNSkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL3NlbWEuaF0pCitBQ19DSEVDS19IRUFERVJTKHN5cy9oYXNoaW5nLmgsLCwKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKFtdKQorICAgIFsKKyNpZiBIQVZFX1NZU19TRU1BX0gKKyNpbmNsdWRlIDxzeXMvc2VtYS5oPgorI2VuZGlmCisgICAgXSkKKworIyAgICAgICByZXF1aXJpbmcgPHN5cy9zb2NrZXQuaD4gICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcyA5KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHN5cy9zb2NrZXR2YXIuaCwsLAorICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoW10pCisgICAgWworI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisgICAgXSkKKworIyAgICAgICByZXF1aXJpbmcgX0tNRU1VU0VSIGFuZCA8c3lzL3R5cGVzLmg+ICAgICAgICAgICAoQlNEaTMvSVJJWCkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhzeXMvdm5vZGUuaCwsLAorICAgIFsKKyNkZWZpbmUgX0tNRU1VU0VSIDEKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyAgICBdKQorCisjICAgICAgIHJlcXVpcmluZyA8bWFjaGluZS90eXBlcy5oPiAgICAgICAgICAgICAgICAgICAgIChOZXRCU0QpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoc3lzL2Rpc2tsYWJlbC5oLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX01BQ0hJTkVfVFlQRVNfSAorI2luY2x1ZGUgPG1hY2hpbmUvdHlwZXMuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIFVGUyBoZWFkZXJzCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3Vmcy91ZnMvZGlub2RlLmggdWZzL3Vmcy9xdW90YS5oIHVmcy91ZnMvaW5vZGUuaCB1ZnMvZmZzL2ZzLmhdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VGU19VRlNfRElOT0RFX0gKKyNpbmNsdWRlIDx1ZnMvdWZzL2Rpbm9kZS5oPgorI2VuZGlmCisjaWYgSEFWRV9VRlNfVUZTX1FVT1RBX0gKKyNpbmNsdWRlIDx1ZnMvdWZzL3F1b3RhLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICByZXF1aXJpbmcgPHZtL3ZtLmg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQlNEaTIpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlModm0vc3dhcF9wYWdlci5oLCwsCisgICAgW1sKKyNpZiBIQVZFX1ZNX1ZNX0gKKyNpbmNsdWRlIDx2bS92bS5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgbmV0bGluay9ydG5ldGxpbmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbnV4KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKFtsaW51eC9uZXRsaW5rLmggIGxpbnV4L3J0bmV0bGluay5oXSwsLAorICAgIFtbCisjaWYgSEFWRV9BU01fVFlQRVNfSAorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX0xJTlVYX05FVExJTktfSAorI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNlbmRpZgorICAgIF1dKQorCisKKyMgICAgICAgTmV0d29yayBoZWFkZXJzCisjICBDb3JlIG9yIExpYnJhcnkvQWdlbnQvQXBwczoKKyMKK0FDX0NIRUNLX0hFQURFUlMoW2FycGEvaW5ldC5oICAgICAgICBuZXQvaWYuaCAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbmV0aW5ldC9pbi5oICAgICAgIG5ldGRiLmggICAgICAgICAgICAgIF0sLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RJTUVPVVRfSAorI2luY2x1ZGUgPHN5cy90aW1lb3V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVFZBUl9ICisjaW5jbHVkZSA8c3lzL3NvY2tldHZhci5oPgorI2VuZGlmCisjaWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX1NZU1RNX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9JQ01QX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9UQ1BfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVURQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1RDUF9USU1FUl9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KKyNlbmRpZgorICAgIF1dKQorIworIyAgQWdlbnQ6CitBQ19DSEVDS19IRUFERVJTKFtuZXQvaWZfYXJwLmggICAgICAgbmV0L2lmX21pYi5oICAgICAgICAgbmV0L2lmX3Zhci5oICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbmV0aW5ldC9pZl9ldGhlci5oIG5ldGluZXQvaW5fc3lzdG0uaCAgIG5ldGluZXQvaW5fdmFyLmggXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvaXAuaCAgICAgICBuZXRpbmV0L2lwX2ljbXAuaCAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L2ljbXBfdmFyLmggbmV0aW5ldC9pcF92YXIuaCAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbmV0aW5ldC90Y3AuaCAgICAgIG5ldGluZXQvdGNwX3RpbWVyLmggIG5ldGluZXQvdGNwX3Zhci5oXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvdGNwaXAuaCAgICBuZXRpbmV0L3VkcC5oICAgICAgICBuZXRpbmV0L3VkcF92YXIuaF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXQvcm91dGUuaCAgICAgICAgbmV0aW5ldC9pY21wNi5oICAgICAgICAgICAgICAgICAgICAgICBdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19USU1FT1VUX0gKKyNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVRWQVJfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXR2YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSAorI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9JQ01QX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9UQ1BfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVURQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1RDUF9USU1FUl9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JQ01QNl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgS0FNRSAoSVB2NikgaGVhZGVycworIyAgQWdlbnQ6CisjCisjIEtBTUUKK0FDX0NIRUNLX0hFQURFUlMoW25ldGluZXQvaXA2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQ2L2luNl92YXIuaCAgICBuZXRpbmV0Ni9pbjZfcGNiLmggICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQ2L2lwNl92YXIuaCAgICBuZXRpbmV0Ni9uZDYuaCAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQ2L3RjcDYuaCAgICAgICBuZXRpbmV0Ni90Y3A2X2ZzbS5oICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQ2L3RjcDZfdGltZXIuaCBuZXRpbmV0Ni90Y3A2X3Zhci5oXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUVVFVUVfSAorI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUDZfSAorI2luY2x1ZGUgPG5ldGluZXQvaXA2Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9ST1VURV9ICisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICByZXF1aXJpbmcgPG5ldGluZXQvaW4uaD4gICAgICAgICAgICAgICAgICAgICAgICAoT3BlbkJTRCAyLjYpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMobmV0aW5ldC9pbl9wY2IuaCwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVElNRU9VVF9ICisjaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUVkFSX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0dmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9ST1VURV9ICisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjZW5kaWYKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyAgICBdXSkKKworIyMKKyMgICBQcmUtcmVxdWlzaXRlIG9uIHNwZWNpZmljIHR5cGVzCisjIworCisjICAgICAgIFNwZWNpYWwgaGFjayB0byBnZXQgYXJvdW5kIHZhcmlvdXMgcHJvYmxlbXMgb24gb2xkZXIgTGludXgga2VybmVscworIyAgICAgICAobWFqb3IgdWdoISkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvZXRodG9vbC5oXSwsLAorW1sKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgordHlwZWRlZiBfX3U2NCB1NjQ7ICAgICAgICAgLyogaGFjaywgc28gd2UgbWF5IGluY2x1ZGUga2VybmVsJ3MgZXRodG9vbC5oICovCit0eXBlZGVmIF9fdTMyIHUzMjsgICAgICAgICAvKiBkaXR0byAqLwordHlwZWRlZiBfX3UxNiB1MTY7ICAgICAgICAgLyogZGl0dG8gKi8KK3R5cGVkZWYgX191OCB1ODsgICAgICAgICAgIC8qIGRpdHRvICovCitdXSkKKworIyMKKyMgICBIZWFkZXJzIHJlcXVpcmluZyBwYXJ0aWN1bGFyIGxpYnJhcmllcworIyMKKworIyAgICAgICBmb3IgSG9zdFJlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcyAyLngpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMocGtnaW5mby5oLAorICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMocGtnaW5mbywgYWRtLAorICAgICAgICBBQ19ERUZJTkUoSEFWRV9QS0dJTkZPLCAxLCBbZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm9dKSwsLExNSUJMSUJTKSkKKworY2FzZSAkdGFyZ2V0X29zIGluCisgICAgYWl4KikKKyAgICAgICAgIyAgICAgICBmb3IgQ1BVL21lbW9yeSBzdGF0aXN0aWNzICAgICAgICAgICAgICAgKEFJWCkKKyAgICAgICAgIyAgQWdlbnQ6CisgICAgICAgICMKKyAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhsaWJwZXJmc3RhdC5oLAorICAgICAgICAgICAgTkVUU05NUF9TRUFSQ0hfTElCUyhwZXJmc3RhdF9jcHVfdG90YWwsIHBlcmZzdGF0LAorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX1BFUkZTVEFULCAxLCBbb24gYWl4LCBpZiB5b3UgaGF2ZSBwZXJmc3RhdF0pLAorICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihbCisKKyoqKiBUbyBtb25pdG9yIENQVS9tZW1vcnkgdmFsdWVzIGluIEFJWCB5b3UgbmVlZCB0byBpbnN0YWxsCisqKiogbGlicGVyZnN0YXQgd2hpY2ggY2FuIGJlIGZvdW5kIGluIGJvcy5wZXJmCitdKSwsCisgICAgICAgICAgICAgICAgTE1JQkxJQlMpKQorICAgICAgICA7OworICAgIGhwdXgqKQorICAgICAgICAjICAgICAgIEhQLVVYIGFnZW50IG5lZWRzIG9wZW5fbWliICAgICAgIChYWFggLSBub3QgYSBoZWFkZXIgY2hlY2shKQorICAgICAgICAjCisgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMob3Blbl9taWIsIG5tLAorICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCTk0sIDEsIFtkZWZpbmUgaWYgeW91IGhhdmUgbGlibm1dKSwsLExNSUJMSUJTKQorICAgICAgICA7OworICAgICopCisgICAgICAgIDs7Citlc2FjCisKKyMgICAgICAgZm9yIE1JQi0yIGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEN5Z3dpbiBhbmQgTWluR1cpCisjICBDb3JlOgorIworQUNfQ0hFQ0tfSEVBREVSUyhbd2luZG93cy5oIGlwaGxwYXBpLmhdLCBbXSwgW10sIFsKKyNpZmRlZiBIQVZFX1dJTkRPV1NfSAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorXSkKKworIyAgICAgICBmb3IgTUlCLTIgaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisjICBDb3JlOgorIworaWYgdGVzdCB4JHdpdGhfc29ja2xpYiA9IHh3aW5zb2NrMjsgdGhlbgorICBBQ19DSEVDS19IRUFERVJTKFt3aW5zb2NrLmggd2luc29jazIuaCB3czJ0Y3BpcC5oXSkKK2ZpCisKKyMKKyMgZm9yIHVjZC1zbm1wL2xtc2Vuc29yc01pYgorIworQUNfQ0hFQ0tfSEVBREVSUyhbc2Vuc29ycy9zZW5zb3JzLmhdKQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczEgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmMDUyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMQpAQCAtMCwwICsxLDk1IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIGxpYnJhcmllcyB0aGF0IGFyZSBydW4KKyMgYmVmb3JlIHRoZSBhZ2VudCBtb2R1bGUgdGVzdHMuCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCisjIworIyAgIFJQTSBjaGVja3MKKyMKKyMjCitBQ19DSEVDS19IRUFERVJTKHJwbS9ycG1saWIuaCBycG0vaGVhZGVyLmgpCisKK0FDX0NIRUNLX0hFQURFUihycG0vcnBtbGliLmgscnBtbGliX2g9eWVzLHJwbWxpYl9oPW5vKQorQUNfQ0hFQ0tfSEVBREVSKHJwbS9oZWFkZXIuaCxycG1oZWFkZXJfaD15ZXMscnBtaGVhZGVyX2g9bm8pCisKK2lmIHRlc3QgIngkcnBtaGVhZGVyX2giID0gInhubyIgLW8gIngkcnBtbGliX2giID0gInhubyIgOyB0aGVuCisgIGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInh5ZXMiIDsgdGhlbgorICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgZWl0aGVyIHRoZSBSUE0gaGVhZGVyIGZpbGVzIG5lZWRlZCBhbmQgd2FzIHNwZWNpZmljYWxseSBhc2tlZCB0byB1c2UgUlBNIHN1cHBvcnRdKQorICBlbHNlCisgICAgd2l0aF9ycG09bm8KKyAgZmkKK2ZpCisKKyMKKyMgcnBtIGxpYnJhcmllcyBvbmx5IG5lZWRlZCBmb3IgdGhlIGhvc3QgcmVzb3VyY2VzIG1pYiBzb2Z0d2FyZQorIyBpbnN0YWxsZWQgdGFibGVzIChvbiBsaW51eCBpbiBwYXJ0aWN1bGFyKQorIworaWYgdGVzdCAieCR3aXRoX3JwbSIgIT0gInhubyI7IHRoZW4KKyAgIyBBUkcuICBSUE0gaXMgYSByZWFsIHBhaW4uCisgICMgRldJVyBsaWJycG0ubGEsIGxpYnJwbWlvLmxhLCBhbmQgbGlicG9wdC5sYSBoYXZlIGNvcnJlY3QgZGVwZW5kZW5jaWVzLgorICBfcnBtbGlicz0iIgorCisgICMgcnBtLTQuMC54IG5lZWRzIHJwbWlvLgorICBORVRTTk1QX1NFQVJDSF9MSUJTKHJwbUdldFBhdGgsIHJwbWlvLCwsICRMTUlCTElCUywgX3JwbWxpYnMpCisgIAorICAjIHJwbS00LjAuMyBsaWJycG1kYiBhY3R1YWxseSBjb250YWlucyB3aGF0IHdlIG5lZWQuCisgIE5FVFNOTVBfU0VBUkNIX0xJQlMocnBtZGJPcGVuLCBycG1kYiwsLCAkTE1JQkxJQlMsIF9ycG1saWJzKQorICAjIG5vdyBjaGVjayBmb3IgcnBtIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBsaWJyYXJpZXMuCisgIE5FVFNOTVBfU0VBUkNIX0xJQlMocnBtUmVhZENvbmZpZ0ZpbGVzLCBycG0sIFsKKyAgICBBQ19ERUZJTkUoSEFWRV9MSUJSUE0sIDEsCisgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBycG0nIGxpYnJhcnkgKC1scnBtKS5dKQorICAgIExNSUJMSUJTPSIkX3JwbWxpYnMgJExNSUJMSUJTIgorICBdLCwgJExNSUJMSUJTLCBfcnBtbGlicykKKworICAjIHJwbSA0LjYgaGFzIGluY29tcGF0aWJsZSBBUEksIHR1cm4gb24gdGhlIGxlZ2FjeSBvbmUKKyAgQUNfQ0hFQ0tfREVDTChbaGVhZGVyR2V0RW50cnldLAorICAgIDogLAorICAgIEFDX0RFRklORShbX1JQTV80XzRfQ09NUEFUXSwgW10sIFtEZWZpbmUgaWYgeW91IGhhdmUgUlBNIDQuNiBvciBuZXdlciB0byB0dXJuIG9uIGxlZ2FjeSBBUEldKSwKKyAgICBbWyNpbmNsdWRlIDxycG0vcnBtbGliLmg+XV0KKyAgKQorZmkKKworIworIyBnZXRmc3N0YXQvZ2V0dmZzc3RhdAorIworQUNfU0VBUkNIX0xJQlMoZ2V0ZnNzdGF0LCBbbmJ1dGlsXSkKK0FDX0NIRUNLX0ZVTkNTKGdldGZzc3RhdCkKK0FDX0NIRUNLX0ZVTkNTKGdldHZmc3N0YXQpCitBQ19GVU5DX0dFVE1OVEVOVAorCisjCisjIGtpbmZvX2dldF9jcHVzCisjCitBQ19TRUFSQ0hfTElCUyhraW5mb19nZXRfY3B1cywgW2tpbmZvXSkKK0FDX0NIRUNLX0ZVTkNTKGtpbmZvX2dldF9jcHVzKQorCisjCisjIGRpc2tJT0xBeCByZXF1aXJlcyBleHAgd2hpY2ggbWF5IHJlcXVpcmUgLWxtCisjCitBQ19TRUFSQ0hfTElCUyhleHAsIFttXSkKKworIworIyAgIGxpYmt2bQorIworTkVUU05NUF9TRUFSQ0hfTElCUyhrdm1fcmVhZCwga3ZtLCwsLCBMQUdFTlRMSUJTKQorTkVUU05NUF9TRUFSQ0hfTElCUyhrdm1fb3BlbmZpbGVzLCBrdm0sLCwsIExBR0VOVExJQlMpCitORVRTTk1QX1NFQVJDSF9MSUJTKGt2bV9nZXRwcm9jcywga3ZtLCwsLCBMTUlCTElCUykKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX2dldHByb2MyLCBrdm0sLCwsIExNSUJMSUJTKQorTkVUU05NUF9TRUFSQ0hfTElCUyhrdm1fZ2V0c3dhcGluZm8sIGt2bSwsLCwgTE1JQkxJQlMpCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTEFHRU5UTElCUyAkTE1JQkxJQlMgJExJQlMiCitBQ19DSEVDS19GVU5DUyhba3ZtX29wZW5maWxlcyBrdm1fZ2V0cHJvY3Mga3ZtX2dldHByb2MyIGt2bV9nZXRzd2FwaW5mb10pCitMSUJTPSIkbmV0c25tcF9zYXZlX0xJQlMiCisKKyMKKyMgICBkeW5hbWljIG1vZHVsZSBzdXBwb3J0CisjCitORVRTTk1QX1NFQVJDSF9MSUJTKFtkbG9wZW5dLCBbZGxdLCwsIFskTEFHRU5UTElCUyAkTFNOTVBMSUJTXSwgW0xNSUJMSUJTXSkKK25ldHNubXBfc2F2ZV9MSUJTPSIkTElCUyIKK0xJQlM9IiRMTUlCTElCUyAkTEFHRU5UTElCUyAkTFNOTVBMSUJTICRMSUJTIgorQUNfQ0hFQ0tfRlVOQ1MoW2Rsb3Blbl0pCitMSUJTPSIkbmV0c25tcF9zYXZlX0xJQlMiCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M0NzU0NQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMgpAQCAtMCwwICsxLDM4NSBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgcnVuCisjIGFmdGVyIHRoZSBhZ2VudCBtb2R1bGUgdGVzdHMuCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyAgIEhBVkVfTElCIERlZmluaXRpb25zIHVzZWQgaW4gdGhlIE5ldC1TTk1QIGNvZGUgYmFzZToKKyMKKyMgICAgICAgSEFWRV9MSUJDUllQVE86CWFwcHMKKyMgICAgICAgSEFWRV9MSUJSUE06CWFnZW50CisjCisKKyMjCisjICAgU2ltcGxlIGNoZWNrczoKKyMjCisKKyMgQUNfQ0hFQ0tfTElCKGRlcywgbWFpbikKKyMgQUNfQ0hFQ0tfTElCKG0sICAgYXNpbikKKworIyAgIGRtYWxsb2MKKyMKK2lmIHRlc3QgIiR7d2l0aF9kbWFsbG9jK3NldH0iID0gc2V0OyB0aGVuCisgICBpZiB0ZXN0ICIkd2l0aF9kbWFsbG9jIiA9IHllcyAtYSAtZCAkd2l0aF9kbWFsbG9jIDsgdGhlbgorICAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aF9kbWFsbG9jKQorICAgZmkKKyAgIEFDX0NIRUNLX0hFQURFUlMoW2RtYWxsb2MuaF0pCisgICBBQ19TRUFSQ0hfTElCUyhbZG1hbGxvY19tZXNzYWdlXSwgW2RtYWxsb2NdKQorZmkKKworIyAgIEVGZW5jZQorIyAgICAgICAoVGhpcyB1c2VkIHRvIGJlIG9uIGJ5IGRlZmF1bHQgZm9yIGRldmVsb3BlciBjaGVja291dCkKKyMKK2lmIHRlc3QgIngkdXNlX2VmZW5jZSIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19TRUFSQ0hfTElCUyhbRUZfRXhpdF0sIFtlZmVuY2VdKQorZmkKKworCisjICAgRUxGIGxpYnJhcmllcworIyAgICAgICBUeXBpY2FsbHkgdXNlZCBmb3IgJ25saXN0JyAgKG5lZWRlZCBmb3IgdXB0aW1lKQorIworaWYgdGVzdCAieCR3aXRoX2VsZiIgIT0gInhubyI7IHRoZW4KK2Nhc2UgJHRhcmdldF9vcyBpbgorCWxpbnV4KikgIyBhZGQgaG9zdHMgd2hpY2ggZG9uJ3QgdXNlIG5saXN0IGhlcmUKKyAgICAgICAgICAgICAgICA7OworCWlyaXgqKSAjIENoZWNrIGZvciBubGlzdCBpbiBtbGQgKGlyaXgpCisJCUFDX0NIRUNLX0xJQihlbGYsIG5saXN0KQorCQlBQ19DSEVDS19MSUIoZWxmLCBubGlzdDY0KQorCQlBQ19DSEVDS19MSUIobWxkLCBubGlzdCkKKwkJOzsKKwkqKSAjIGRlZmF1bHQKKwkJQUNfQ0hFQ0tfTElCKGVsZiwgbmxpc3QpCisJCTs7Citlc2FjCitmaQorIAorCisjICAgbGlic29ja2V0CisjICAgICAgIE5lZWRlZCBmb3IgJ3NvY2tldCgyKScgICAgICAgICAgICAgICAgICAgICAgICAgIChTb2xhcmlzKQorIyAgICAgICBQb3NzaWJseSBhbHNvIGZvciAnZ2V0aG9zdG5hbWUoMyknICAgICAgICAgICAgICAobm9uLVNvbGFyaXMpCisjICAgICAgICAgICAoYWx0ZXJuYXRpdmVseSBpbiBsaWJuc2wgICAgICAgICAgICAgICAgICAgIChTb2xhcmlzKQorIyAgICAgICAgICAgIG9yIGluIGxpYndzMl8zMikgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisjCitjYXNlIHgkd2l0aF9zb2NrbGliIGluCit4d2luc29jazIpCisgICMgICBsaWJ3czJfdzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNaW5HVykKKyAgIworICBuZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCisgIExJQlM9IiRMSUJTIC1sd3MyXzMyIgorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsKKyAgICAjaW5jbHVkZSA8d2luc29jazIuaD4KKyAgXSwgWworICAgIHNvY2tldCgwLCAwLCAwKTsKKyAgICBnZXRob3N0YnluYW1lKDApOworICBdKV0sIFsKKyAgICAjIEtlZXAgTElCUy4KKyAgICB0cnVlCisgIF0sIFsKKyAgICAjIFJlc3RvcmUgTElCUyBhbmQgY29tcGxhaW4uCisgICAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorICAgIEFDX01TR19FUlJPUihbbGlid3MyXzMyIG5vdCBmb3VuZC5dKQorICBdKQorICA7OworKikKKyAgQUNfU0VBUkNIX0xJQlMoc29ja2V0LCBzb2NrZXQsLEFDX01TR19FUlJPUihbc29ja2V0KDIpIG5vdCBmb3VuZC5dKSkKKyAgQUNfU0VBUkNIX0xJQlMoZ2V0aG9zdGJ5bmFtZSwgW25zbCBzb2NrZXRdKQorICBBQ19DSEVDS19GVU5DUyhnZXRob3N0YnluYW1lKQorICA7OworZXNhYworCisKKyMgICBsaWJpcGhscGFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEN5Z3dpbiBhbmQgTWluR1cpCisjCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTElCUyAtbGlwaGxwYXBpIgorQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbCisgICNpbmNsdWRlIDx3aW5zb2NrMi5oPgorICAjaW5jbHVkZSA8aXBobHBhcGkuaD4KK10sIFsKKyAgSXBSZW5ld0FkZHJlc3MoMCk7CitdKV0sIFsKKyAgIyBLZWVwIExJQlMuCisgIHRydWUKK10sIFsKKyAgIyBSZXN0b3JlIExJQlMgYW5kIGNvbXBsYWluLgorICBMSUJTPSIkbmV0c25tcF9zYXZlX0xJQlMiCisgIGNhc2UgeCR3aXRoX3NvY2tsaWIgaW4KKyAgeHdpbnNvY2syKQorICAgIEFDX01TR19FUlJPUihbbGliaXBobHBhcGkgbm90IGZvdW5kLl0pCisgICAgOzsKKyAgZXNhYworXSkKKworCisjICAgbGlicmVnZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNaW5HVykKKyMKK25ldHNubXBfc2F2ZV9MSUJTPSIkTElCUyIKK0xJQlM9IiRMSUJTIC1scmVnZXgiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cmVnZXguaD4KK10sIFsKKyAgcmVnY29tcCgwLCAwLCAwKTsKK10pXSwgWworICAjIEtlZXAgTElCUy4KKyAgdHJ1ZQorXSwgWworICAjIFJlc3RvcmUgTElCUy4KKyAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorXSkKKworCisjICAgbGlic25tcGFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNaW5HVykKKyMKK25ldHNubXBfc2F2ZV9MSUJTPSIkTElCUyIKK0xJQlM9IiRMSUJTIC1sc25tcGFwaSIKK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWworICAjaW5jbHVkZSA8c25tcC5oPgorXSwgWworICBTbm1wVXRpbE1lbUFsbG9jKDApOworXSldLCBbCisgICMgS2VlcCBMSUJTLgorICB0cnVlCitdLCBbCisgICMgUmVzdG9yZSBMSUJTLgorICBMSUJTPSIkbmV0c25tcF9zYXZlX0xJQlMiCitdKQorCisKKyMgICBrc3RhdCBsaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbGFyaXMpCisjCitORVRTTk1QX1NFQVJDSF9MSUJTKGtzdGF0X2xvb2t1cCwga3N0YXQsCisgICAgICAgIEFDX0RFRklORShIQVZFX0xJQktTVEFULCAxLAorICAgICAgICAJW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3N0YXQnIGxpYnJhcnkgKC1sa3N0YXQpLl0pLCwsCisgICAgICAgIExORVRTTk1QTElCUykKKworCisjIworIyAgIE1JQi1tb2R1bGUtc3BlY2lmaWMgY2hlY2tzCisjIworCisjICAgbGliZGV2c3RhdAorIyAgICAgICAgKGZvciBkaXNrSU8gTUlCKQorIworIyAgIE5vdC1Vc2VkOiBIQVZFX0dFVERFVlMvSEFWRV9ERVZTVEFUX0dFVERFVlMKKyMKK2VjaG8gIiAkbW9kdWxlX2xpc3QgIiB8ICRHUkVQICIgdWNkLXNubXAvZGlza2lvICIgPi9kZXYvbnVsbAoraWYgdGVzdCAkPyAtZXEgMCA7IHRoZW4KKwlORVRTTk1QX1NFQVJDSF9MSUJTKGdldGRldnMsIGRldnN0YXQsCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfR0VUREVWUywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZpbmUgaWYgeW91IGhhdmUgZ2V0ZGV2cygpXSksLCxMTUlCTElCUykKKwlORVRTTk1QX1NFQVJDSF9MSUJTKGRldnN0YXRfZ2V0ZGV2cywgZGV2c3RhdCwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9ERVZTVEFUX0dFVERFVlMsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBbZGVmaW5lIGlmIHlvdSBoYXZlIGRldnN0YXRfZ2V0ZGV2cygpXSksLCxMTUlCTElCUykKK2ZpCisKKworIyAgIExNLVNFTlNPUlMtTUlCIHN1cHBvcnQKKyMKK2VjaG8gIiAkbW9kdWxlX2xpc3QgIiB8ICRHUkVQIC1pICJ1Y2Qtc25tcC9sbXNlbnNvciIgPiAvZGV2L251bGwKK2lmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCisgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHNlbnNvcnMgc3VwcG9ydF0pCisgICAgICAgIGNhc2UgJHRhcmdldF9vcyBpbgorICAgICAgICBzb2xhcmlzKikKKyAgICAgICAgICAgICMgIEFnZW50OiAgSEFWRV9QSUNMX0gKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihwaWNsLmgsIExNSUJMSUJTPSIke0xNSUJMSUJTfSAtbHBpY2wiLCkKKyAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUlMocGljbC5oKQorICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgICMgIE5vdC1Vc2VkOiAgSEFWRV9TRU5TT1JTX1NFTlNPUlNfSAorICAgICAgICAgICAgIworICAgICAgICAgICAgQUNfQ0hFQ0tfSEVBREVSKHNlbnNvcnMvc2Vuc29ycy5oLCwKKyAgICAgICAgICAgICAgICBbQUNfTVNHX0VSUk9SKFthc2tlZCB0byB1c2UgbG1fc2Vuc29ycyBidXQgSSBjb3VsZG4ndCBmaW5kIHNlbnNvcnMvc2Vuc29ycy5oXSldKQorICAgICAgICAgICAgTkVUU05NUF9TRUFSQ0hfTElCUyhzZW5zb3JzX2dldF9kZXRlY3RlZF9jaGlwcywgc2Vuc29ycywsCisgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbYXNrZWQgdG8gdXNlIGxtX3NlbnNvcnMgYnV0IEkgY291bGRuJ3QgZmluZCAtbHNlbnNvcnNdKV0sLAorICAgICAgICAgICAgICAgIExNSUJMSUJTKQorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworZmkKKworIworIyBsaWJubCAobmV0bGluaykKKyMKKworaWYgdGVzdCAieCR3aXRoX25sIiAhPSAieG5vIjsgdGhlbgorICAgIGNhc2UgJHRhcmdldF9vcyBpbgorICAgIGxpbnV4KikgIyBDaGVjayBmb3IgbGlibmwgKGxpbnV4KQorCU5FVFNOTVBfU0VBUkNIX0xJQlMoCisJICAgIG5sX2Nvbm5lY3QsIG5sLAorCSAgICBbQUNfQ0hFQ0tfSEVBREVSUyhuZXRsaW5rL25ldGxpbmsuaCldLCwsIExNSUJMSUJTKQorICAgIDs7CisgICAgZXNhYworZmkKKworCisKKyMjCisjICAgTW9yZSBjb21wbGV4IGNoZWNrczoKKyMjCisKKyMgICBTZWN1cml0eSByZWxhdGVkIGZ1bmN0aW9ucworIworTk9OQUdFTlRMSUJTPSRMSUJTCSAjIHNhdmUgb2xkIGxpYnJhcmllcworU1NISU5TVEFMTEJJTlBST0dTPSIiCitpZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiICE9ICJ4bm8iOyB0aGVuCisgICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiICE9ICJ4eWVzIiAtYSAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIEFDX0NIRUNLX0xJQihwa2NzMTEsIENfSW5pdGlhbGl6ZSwKKyAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlBLQ1MxMSwgMSwKKyAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwa2NzMTEnIGxpYnJhcnkgKC1scGtjczExKS5dKQorICAgICAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCisgICAgZWxzZSAKKyAgICAgICAgaWYgdGVzdCAieCR0cnlyc2FyZWYiICE9ICJ4bm8iOyB0aGVuCisgICAgICAgICAgICBBQ19DSEVDS19MSUIocnNhcmVmLCBSU0FQcml2YXRlRGVjcnlwdCkKKyAgICAgICAgICAgIEFDX0NIRUNLX0xJQihSU0FnbHVlLCBSU0FfUEtDUzFfUlNBcmVmKQorICAgICAgICBmaQorCisgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIC1sZWF5MzJdKQorICAgICAgICBuZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCisgICAgICAgIExJQlM9Ii1sZWF5MzIiCisgICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWworICAgICAgICAgICAgICAgICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl0sCisgICAgICAgICAgICAgICAgW3JldHVybiBFVlBfbWQ1KCk7XSldLAorICAgICAgICAgICAgW0FDX01TR19SRVNVTFQoeWVzKTsgYWNfY3ZfbGliX2VheTMyX0VWUF9tZDU9eWVzOyBDUllQVE89ImVheTMyIl0sCisgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChubyldCisgICAgICAgICkKKyAgICAgICAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorCisgICAgICAgIGlmIHRlc3QgeCRDUllQVE8gPSB4OyB0aGVuCisgICAgICAgICAgICBBQ19DSEVDS19MSUIoW2NyeXB0b10sIFtFVlBfbWQ1XSwgW0NSWVBUTz0iY3J5cHRvIl0pCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgdGVzdCB4JENSWVBUTyAhPSB4OyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJDUllQVE8sIDEsCisgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBPcGVuU1NMIGxpYnJhcnkgKC1sY3J5cHRvIG9yIC1sZWF5MzIpLl0pCisgICAgICAgICAgICBMSUJDUllQVE89Ii1sJHtDUllQVE99IgorICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKCR7Q1JZUFRPfSwgQUVTX2NmYjEyOF9lbmNyeXB0LCAKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9BRVNfQ0ZCMTI4X0VOQ1JZUFQsIDEsCisgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYEFFU19jZmIxMjhfZW5jcnlwdCcgZnVuY3Rpb24uXSkpCisKKyAgICAgICAgICAgIEFDX0NIRUNLX0xJQigke0NSWVBUT30sIEVWUF9NRF9DVFhfY3JlYXRlLAorICAgICAgICAgICAgICAgIEFDX0RFRklORShbSEFWRV9FVlBfTURfQ1RYX0NSRUFURV0sIFtdLAorICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2NyZWF0ZScgZnVuY3Rpb24uXSkKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX01EX0NUWF9ERVNUUk9ZXSwgW10sCisgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYEVWUF9NRF9DVFhfZGVzdHJveScgZnVuY3Rpb24uXSkpCisgICAgICAgIGZpCisgICAgICAgIGlmIGVjaG8gIiAkdHJhbnNwb3J0X3Jlc3VsdF9saXN0ICIgfCAkR1JFUCAiVExTIiA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBBQ19DSEVDS19MSUIoc3NsLCBTU0xfbGlicmFyeV9pbml0LAorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlNTTCwgMSwKKyAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3NsJyBsaWJyYXJ5ICgtbHNzbCkuXSkKKyAgICAgICAgICAgICAgICBMSUJDUllQVE89IiAtbHNzbCAkTElCQ1JZUFRPIiwJCisJCUFDX01TR19FUlJPUihbVGhlIERUTFMgYmFzZWQgdHJhbnNwb3J0cyByZXF1aXJlIHRoZSBsaWJzc2wgbGlicmFyeSBmcm9tIE9wZW5TU0wgdG8gYmUgYXZhaWxhYmxlXSkJLC1sY3J5cHRvKQorICAgICAgICBmaQorICAgICAgICBpZiBlY2hvICIgJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCAiIHwgJEdSRVAgIiBTU0ggIiA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBBQ19DSEVDS19MSUIoc3NoMiwgbGlic3NoMl9zZXNzaW9uX3N0YXJ0dXAsCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCU1NIMiwgMSwKKyAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3NoMicgbGlicmFyeSAoLWxzc2gyKS5dKQorICAgICAgICAgICAgICAgIExJQkNSWVBUTz0iIC1sc3NoMiAkTElCQ1JZUFRPIiwKKyAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW1RoZSBTU0ggdHJhbnNwb3J0IHJlcXVpcmVzIHRoZSBsaWJzc2gyIGxpYnJhcnkgdG8gYmUgYXZhaWxhYmxlXSksKQorICAgICAgICAgICAgU1NISU5TVEFMTEJJTlBST0dTPXNzaHRvc25tcAorICAgICAgICBmaQorICAgIGZpCitlbGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgorICAgIEFDX0NIRUNLX0xJQihwa2NzMTEsIENfSW5pdGlhbGl6ZSwKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCUEtDUzExKQorICAgICAgICBMSUJQS0NTMTE9Ii1scGtjczExIikKK2ZpCitMSUJTPSROT05BR0VOVExJQlMJICMgcmVzdG9yZSBvbGQgbGlicmFyaWVzCitBQ19TVUJTVChTU0hJTlNUQUxMQklOUFJPR1MpCisKKworIyAgIFRDUCB3cmFwcGVyIHN1cHBvcnQKKyMKK19jcHBmbGFncz0iJHtDUFBGTEFHU30iCitfbGRmbGFncz0iJHtMREZMQUdTfSIKK2lmIHRlc3QgIiR3aXRoX2xpYndyYXAiICE9ICJubyI7IHRoZW4KKyAgaWYgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gInllcyI7IHRoZW4KKyAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLUkkd2l0aF9saWJ3cmFwL2luY2x1ZGUiCisgICAgTERGTEFHUz0iJHtMREZMQUdTfSAtTCR3aXRoX2xpYndyYXAvbGliIgorICBmaQorCisgIF9saWJzPSR7TElCU30KKyAgQUNfQ0hFQ0tfSEVBREVSKHRjcGQuaCwgLAorICAgIEFDX01TR19FUlJPUihbQXNrZWQgdG8gdXNlIGxpYndyYXAgYnV0IEkgY291bGRuJ3QgZmluZCB0Y3BkLmguXSkpCisKKyAgTElCUz0iJExJQlMgLWx3cmFwIgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBUQ1Agd3JhcHBlcnMgbGlicmFyeSAtbHdyYXBdKQorICAjIFhYWDogc2hvdWxkIGNoZWNrIGZvciBob3N0c19jdGwKKyAgQUNfVFJZX0xJTksoCisgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAgI2luY2x1ZGUgPHRjcGQuaD4KKyAgICAgaW50IGFsbG93X3NldmVyaXR5ID0gMDsKKyAgICAgaW50IGRlbnlfc2V2ZXJpdHkgID0gMDtdLAorICAgIFtob3N0c19hY2Nlc3MoKHZvaWQgKikwKV0sCisgICAgW0FDX01TR19SRVNVTFQoW3llc10pCisgICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9MSUJXUkFQKQorICAgICB0ZXN0ICIkd2l0aF9saWJ3cmFwIiAhPSBubyAtYSAiJHdpdGhfbGlid3JhcCIgIT0geWVzICYmIF93cmFwbGlicz0iLUwkd2l0aF9saWJ3cmFwL2xpYiIKKyAgICAgX3dyYXBsaWJzPSIkX3dyYXBsaWJzIC1sd3JhcCJdLAorICAgIFtBQ19NU0dfUkVTVUxUKFtub10pCisgICAgICMgTGludXggUmVkSGF0IDYuMSB3b24ndCBsaW5rIGxpYndyYXAgd2l0aG91dCBsaWJuc2wKKyAgICAgQUNfQ0hFQ0tfRlVOQyh5cF9nZXRfZGVmYXVsdF9kb21haW4sICwKKyAgICAgICBBQ19DSEVDS19MSUIobnNsLCB5cF9nZXRfZGVmYXVsdF9kb21haW4pKQorICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBUQ1Agd3JhcHBlcnMgbGlicmFyeSAtbHdyYXAgbGlua2VkIHdpdGggLWxuc2xdKQorICAgICBBQ19UUllfTElOSygKKyAgICAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCSNpbmNsdWRlIDx0Y3BkLmg+CisJaW50IGFsbG93X3NldmVyaXR5ID0gMDsKKwlpbnQgZGVueV9zZXZlcml0eSAgPSAwO10sCisgICAgICAgW2hvc3RzX2FjY2Vzcygodm9pZCAqKTApXSwKKyAgICAgICBbQUNfTVNHX1JFU1VMVCh5ZXMpCisJQUNfREVGSU5FKE5FVFNOTVBfVVNFX0xJQldSQVApCisJdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCisJX3dyYXBsaWJzPSIkX3dyYXBsaWJzIC1sd3JhcCAtbG5zbCJdLAorICAgICAgIFtBQ19NU0dfUkVTVUxUKG5vKQorCUFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgbGlid3JhcCBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LildKV0pCisgIExBR0VOVExJQlM9IiRfd3JhcGxpYnMiCisgIENQUEZMQUdTPSR7X2NwcGZsYWdzfQorICBMREZMQUdTPSR7X2xkZmxhZ3N9CisgIExJQlM9JHtfbGlic30KK2ZpCisKKworIyMKKyMgICBteXNxbAorIyMKK2lmIHRlc3QgIngkd2l0aF9teXNxbCIgPSAieHllcyIgOyB0aGVuCisgIEFDX1BBVEhfUFJPR1MoTVlTUUxDT05GSUcsbXlzcWxfY29uZmlnKQorICB0ZXN0IC14ICIkTVlTUUxDT05GSUciIFwKKwl8fCBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIG15c3FsX2NvbmZpZyBhbmQgd2FzIHNwZWNpZmljYWxseSBhc2tlZCB0byB1c2UgTXlTUUwgc3VwcG9ydF0pCisgIE1ZU1FMX0xJQlM9YCRNWVNRTENPTkZJRyAtLWxpYnNgCisgIE1ZU1FMX0lOQ0xVREVTPWAkTVlTUUxDT05GSUcgLS1pbmNsdWRlYAorICBfbGlicz0iJHtMSUJTfSIKKyAgX2NwcGZsYWdzPSIke0NQUEZMQUdTfSIKKyAgTElCUz0iJHtMSUJTfSAke01ZU1FMX0xJQlN9IgorICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gJHtNWVNRTF9JTkNMVURFU30iCisgIEFDX0NIRUNLX0hFQURFUihteXNxbC5oLCwKKyAgICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbXlzcWwuaCBhbmQgd2FzIHNwZWNpZmljYWxseSBhc2tlZCB0byB1c2UgTXlTUUwgc3VwcG9ydF0pXSkKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIE1ZX0lOSVQoKSB3b3Jrc10pCisgIEFDX0xJTktfSUZFTFNFKFsKKyAgICBBQ19MQU5HX1BST0dSQU0oCisgICAgICBbWyNpbmNsdWRlIDxteV9nbG9iYWwuaD4KKyAgICAgICAgI2luY2x1ZGUgPG15X3N5cy5oPl1dLAorICAgICAgW1tNWV9JTklUKCJteV9pbml0X3Rlc3QiKV1dKV0sCisgICAgICBbQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgICAgIFtBQ19NU0dfUkVTVUxUKG5vKQorICAgICAgIEFDX0RFRklORShbSEFWRV9CUk9LRU5fTElCTVlTUUxDTElFTlRdLCAxLAorICAgICAgICAgICAgICAgICBbRGVmaW5lIGlmIHVzaW5nIE1ZX0lOSVQoKSBjYXVzZXMgYSBsaW5rZXIgZXJyb3JdKV0pCisgIENQUEZMQUdTPSIke19jcHBmbGFnc30iCisgIExJQlM9IiR7X2xpYnN9IgorICBBQ19NU0dfQ0FDSEVfQUREKE1ZU1FMIFRyYXAgTG9nZ2luZzogICAgICAgICBlbmFibGVkKQorZWxzZQorICBBQ19NU0dfQ0FDSEVfQUREKE1ZU1FMIFRyYXAgTG9nZ2luZzogICAgICAgICB1bmF2YWlsYWJsZSkKK2ZpCitBQ19TVUJTVChNWVNRTF9MSUJTKQorQUNfU1VCU1QoTVlTUUxfSU5DTFVERVMpCisgIAorCisjIworIyAgIE5vbi1saWJyYXJ5IGNoZWNrcworIyMKKworIyBubGlzdAorQUNfQ0hFQ0tfRlVOQ1Mobmxpc3Qgbmxpc3Q2NCBrbmxpc3QpCisKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWVjOWE5Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MxCkBAIC0wLDAgKzEsMjQgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIE1pc2NlbGxhbmVvdXMgY2hlY2tzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBDb21waWxhdGlvbi1yZWxhdGVkCisjIworCisjICAgICAgIER5bmFtaWMgbW9kdWxlcyByZXF1aXJlIFBvc2l0aW9uLUluZGVwZW5kZW50IENvZGUKKyMJICAgIExJQl9DRkxBR1MvRExMSUJTOiB1c2VkIGluIGFnZW50IE1ha2VmaWxlIG9ubHkKKyMKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB3ZSBoYXZlIHRvIGJ1aWxkIFBJQyBjb2RlXSkKK2VjaG8gIiAkbW9kdWxlX2xpc3QgIiB8ICRHUkVQICIgdWNkLXNubXAvZGxtb2QgIiA+L2Rldi9udWxsCitpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgorICAgIExJQl9DRkxBR1M9IiRMSUJfQ0ZMQUdTICRTSExJQl9DRkxBR1MiCisgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCitlbHNlCisgICAgRExMSUJTPSIiCisgICAgQUNfTVNHX1JFU1VMVChubykKK2ZpCisKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDg2N2IyCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyCkBAIC0wLDAgKzEsODggQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIE1pc2NlbGxhbmVvdXMgY2hlY2tzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBQYWNrYWdlIGNoYXJhY3RlcmlzdGljcworIyAgICAgICBBdXRoZW50aWNhdGlvbi9FbmNyeXB0aW9uIHN1cHBvcnQKKyMjCisKKyMgICAgICAgQ2hlY2sgZm9yIFBLQ1MxMQorIworQUNfTVNHX0NIRUNLSU5HKFtmb3IgYXV0aGVudGljYXRpb24gc3VwcG9ydF0pCit1c2VvcGVuc3NsPW5vCit1c2Vwa2NzPW5vCitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wa2NzMTFfQ19Jbml0aWFsaXplIiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX3NlY3VyaXR5X2NyeXB0b2tpX2giICE9ICJ4eWVzIjsgdGhlbgorICAgIGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIFBLQ1MxMSBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LikKKyAgICBmaQorZWxzZQorICAgIGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICB1c2Vwa2NzPXllcworICAgIGZpCitmaQorCisjICAgICAgIENoZWNrIGZvciBPcGVuU1NMCisjCitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jcnlwdG9fRVZQX21kNSIgIT0gInh5ZXMiIC1hICJ4JGFjX2N2X2xpYl9lYXkzMl9FVlBfbWQ1IiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfaG1hY19oIiAhPSAieHllcyI7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGFza2Vkb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBPcGVuU1NMIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQorICAgIGZpCitlbHNlCisgICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIHVzZW9wZW5zc2w9eWVzCisgICAgZWxpZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkdXNlcGtjcyIgIT0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgICB1c2VvcGVuc3NsPXllcworICAgICAgICBmaQorICAgIGZpCitmaQorCisjICAgICAgIEF2YWlsYWJsZSBhdXRoZW50aWNhdGlvbi9lbmNyeXB0aW9uIG1vZGVzCisjCitpZiB0ZXN0ICJ4JHVzZW9wZW5zc2wiICE9ICJ4bm8iIDsgdGhlbgorICAgIGF1dGhtb2Rlcz0iTUQ1IFNIQTEiCisgICAgaWYgdGVzdCAieCRlbmFibGVfcHJpdmFjeSIgIT0gInhubyIgOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfYWVzX2giID0gInh5ZXMiIDsgdGhlbgorICAgICAgICAgICAgZW5jcm1vZGVzPSJERVMgQUVTIgorCWVsc2UKKwkgICAgZW5jcm1vZGVzPSJERVMiCisJZmkKKyAgICBlbHNlCisgICAgICAgIGVuY3Jtb2Rlcz0iW2Rpc2FibGVkXSIKKyAgICBmaQorICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9PUEVOU1NMKQorICAgIExORVRTTk1QTElCUz0iJExORVRTTk1QTElCUyAkTElCQ1JZUFRPIgorICAgIEFDX01TR19SRVNVTFQoT3BlblNTTCBTdXBwb3J0KQorZWxpZiB0ZXN0ICJ4JHVzZXBrY3MiICE9ICJ4bm8iIDsgdGhlbgorICAgIGF1dGhtb2Rlcz0iTUQ1IFNIQTEiCisgICAgaWYgdGVzdCAieCRlbmFibGVfcHJpdmFjeSIgIT0gInhubyIgOyB0aGVuCisgICAgICAgIGVuY3Jtb2Rlcz0iREVTIgorICAgIGVsc2UKKyAgICAgICAgZW5jcm1vZGVzPSJbZGlzYWJsZWRdIgorICAgIGZpCisgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX1BLQ1MxMSwgMSwKKyAgICAgIFtEZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLl0pCisgICAgTE5FVFNOTVBMSUJTPSIkTE5FVFNOTVBMSUJTICRMSUJQS0NTMTEiCisgICAgQUNfTVNHX1JFU1VMVChQS0NTMTEgU3VwcG9ydCkKK2VsaWYgdGVzdCAieCRlbmFibGVfbWQ1IiAhPSAieG5vIjsgdGhlbgorICAgIGF1dGhtb2Rlcz0iTUQ1IgorICAgIGVuY3Jtb2Rlcz0iIgorICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9JTlRFUk5BTF9NRDUpCisgICAgQUNfTVNHX1JFU1VMVChJbnRlcm5hbCBNRDUgU3VwcG9ydCkKK2ZpCitpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KKyAgICBhdXRobW9kZXM9YGVjaG8gJGF1dGhtb2RlcyB8ICRTRUQgJ3MvTUQ1ICovLzsnYAorZmkKK0FDX1NVQlNUKExORVRTTk1QTElCUykKK0FDX1NVQlNUKExBR0VOVExJQlMpCisKK0FDX01TR19DQUNIRV9BREQoQXV0aGVudGljYXRpb24gc3VwcG9ydDogICAgICRhdXRobW9kZXMpCitBQ19NU0dfQ0FDSEVfQUREKEVuY3J5cHRpb24gc3VwcG9ydDogICAgICAgICAkZW5jcm1vZGVzKQorCitpZiB0ZXN0ICJ4JGFsbF93YXJuaW5ncyIgIT0gIngiOyB0aGVuCisgICAgQUNfTVNHX0NBQ0hFX0FERChXQVJOSU5HOiAkYWxsX3dhcm5pbmdzKQorZmkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2FmZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzCkBAIC0wLDAgKzEsMjAgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIE1pc2NlbGxhbmVvdXMgY2hlY2tzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBDb21waWxhdGlvbiBjaGFyYWN0ZXJpc3RpY3MKKyMjCisKKyMgICAgICAgQnl0ZSBvcmRlcgorIworaWYgdGVzdCAiJHdpdGhfZW5kaWFubmVzcyIgPSAiYmlnIjsgdGhlbgorICAgIGFjX2N2X2NfYmlnZW5kaWFuPXllcworZWxpZiB0ZXN0ICIkd2l0aF9lbmRpYW5uZXNzIiA9ICJsaXR0bGUiIDsgdGhlbgorICAgIGFjX2N2X2NfYmlnZW5kaWFuPW5vCitmaQorQUNfQ19CSUdFTkRJQU4oLCwKKyAgICBbQUNfTVNHX0VSUk9SKFtGYWlsZWQgdG8gZmlndXJlIG91dCBob3N0IGVuZGlhbm5lc3MsIHBsZWFzZSB1c2UgLS13aXRoLWVuZGlhbm5lc3MgdG8gc3BlY2lmeSBpdC5dKV0pCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkZGVkNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNApAQCAtMCwwICsxLDI4NiBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgTWlzY2VsbGFuZW91cyBPcGVyYXRpbmctU3lzdGVtIGNoYXJhY3RlcmlzdGljcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworIwlEZXRlcm1pbmUgaG93IHRvIHRlc3QgZm9yIGNoYXJhY3RlciBkZXZpY2VzCisjCVtXZSBhc3N1bWUgdGhhdCAvZGV2L251bGwgZG9lcyBhY3R1YWxseSBleGlzdCFdCisjCitpZiB0ZXN0IC1jIC9kZXYvbnVsbDsgdGhlbgorICAgIENERVZfVEVTVF9GTEFHPSItYyIKK2VsaWYgdGVzdCAtZiAvZGV2L251bGw7IHRoZW4KKyAgICBDREVWX1RFU1RfRkxBRz0iLWYiCitlbHNlCisgICAgQUNfTVNHX1dBUk4oW0Nhbid0IHJlbGlhYmx5IGRldGVjdCBjaGFyYWN0ZXIgZGV2aWNlc10pCisgICAgIyBJcyBpdCBhY3R1YWxseSBzZW5zaWJsZSB0byBmYWxsIGJhY2sgb24gInRlc3QgLWYiID8KKyAgICBDREVWX1RFU1RfRkxBRz0iLWYiCitmaQorCisjICAgICAgIEtlcm5lbCBMb2NhdGlvbgorIwkgICAgdXNlZCBpbiBsaWJyYXJ5L2FnZW50CisjCitBQ19DQUNIRV9DSEVDSyhbZm9yIGxvY2F0aW9uIG9mIHN5c3RlbSBrZXJuZWxdLAorICAgIGFjX2N2X0tFUk5FTF9MT0MsCisgICBbYWNfY3ZfS0VSTkVMX0xPQz0idW5rbm93biIKKyAgICBmb3IgaSBpbiAvdm11bml4IC9ocC11eCAvc3RhbmQvdm11bml4IC9kZXYva3N5bXMgL2tlcm5lbC91bml4IC9rZXJuZWwvZ2VudW5peCAvbmV0YnNkIC91bml4IC9rZXJuZWwgL2JzZCAvbWFjaF9rZXJuZWwgL2Jvb3Qva2VybmVsL2tlcm5lbAorICAgIGRvCisgICAgICAgIGlmIHRlc3QgJENERVZfVEVTVF9GTEFHICRpOyB0aGVuCisgICAgICAgICAgICBhY19jdl9LRVJORUxfTE9DPSIkaSIKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBmaQorICAgIGRvbmUKKyAgICAjCisgICAgIyBJbiBwcmluY2lwbGUsIHRoaXMgdGVzdCBpcyBtZWFudCB0byBwcm92aWRlIGEgZGVmYXVsdCBwYXRoIHRvIHRoZSBrZXJuZWwKKyAgICAjIEluIHByYWN0aWNlLCB0aGUgdGVzdCBpcyBicm9rZW4gYW5kIHRoZSBrZXJuZWwgcGF0aCBpcyBzZXQgdG8gInVua25vd24iCisgICAgIworICAgICMgTm90ZSB0aGF0IG9uIGNlcnRhaW4gc3lzdGVtcyAoZS5nLiBzb21lIExpbnV4IGRpc3RyaWJ1dGlvbnMpLAorICAgICMgICAgaXQgaXMgaW1wb3NzaWJsZSB0byBwcmVkaWN0IHRoZSBuYW1lIG9mIHRoZSBrZXJuZWwsCisgICAgIyAgICBwYXJ0aWN1bGFybHkgaWYgaXQgaW5jbHVkZXMgdGhlIGtlcm5lbCB2ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIGV0YworICAgICMKKyAgICAjIFNpbmNlIHRoaXMgZGVmYXVsdCB3aWxsIG5ldmVyIGFjdHVhbGx5IGJlIHVzZWQsIHRoZW4gZG9uJ3QgdHJ5IHRvIHNldCBpdAorICAgICMKKyAgICBpZiB0ZXN0ICRpID0gInVua25vd24iOyB0aGVuCisgICAgICAgIEFDX01TR19XQVJOKFtDYW4ndCBmaW5kIHN5c3RlbSBrZXJuZWwuLi4gaG9wZWZ1bGx5IHRoaXMgd29uJ3QgYmUgbmVlZGVkIV0pCisgICAgZmkKK10pCitBQ19ERUZJTkVfVU5RVU9URUQoS0VSTkVMX0xPQywiJGFjX2N2X0tFUk5FTF9MT0MiLCBbbG9jYXRpb24gb2YgVU5JWCBrZXJuZWxdKQorCisKKyMgICAgICAgU3dhcCBkZXZpY2UgTG9jYXRpb24KKyMgICAgICAgICAgICgvZGV2L2RtZW0gb3IgL2Rldi9kcnVtKQorIwkgICAgdXNlZCBpbiBhZ2VudCBvbmx5CisjCitBQ19DQUNIRV9DSEVDSyhbZm9yIGxvY2F0aW9uIG9mIHN3YXAgZGV2aWNlXSwKKyAgICBhY19jdl9ETUVNX0xPQywKKyAgIFtpZiB0ZXN0ICRDREVWX1RFU1RfRkxBRyAvZGV2L2RtZW07IHRoZW4KKyAgICAgICAgYWNfY3ZfRE1FTV9MT0M9Ii9kZXYvZG1lbSIKKyAgICBlbGlmIHRlc3QgJENERVZfVEVTVF9GTEFHIC9kZXYvZHJ1bTsgdGhlbgorICAgICAgICBhY19jdl9ETUVNX0xPQz0iL2Rldi9kcnVtIgorICAgIGVsc2UKKyAgICAgICAgYWNfY3ZfRE1FTV9MT0M9Im5vbmUiCisgICAgZmkKK10pCisjCisjICBOb3RlIHRoYXQgaXQncyBPSyBpZiB0aGlzIGRldmljZSBpcyBub3QgZm91bmQKKyMKK2lmIHRlc3QgIngkYWNfY3ZfRE1FTV9MT0MiICE9ICJ4bm9uZSI7IHRoZW4KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoRE1FTV9MT0MsIiRhY19jdl9ETUVNX0xPQyIsIFtsb2NhdGlvbiBvZiBzd2FwIGRldmljZV0pCitmaQorCisKKyMgICAgICAgTW91bnQgdGFibGUgTG9jYXRpb24KKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtb3VudCB0YWJsZSBsb2NhdGlvbl0sCisgICAgYWNfY3ZfRVRDX01OVFRBQiwKKyAgIFthY19jdl9FVENfTU5UVEFCPSIke3dpdGhfbW50dGFiOi11bmtub3dufSIKKyAgICBpZiB0ZXN0ICIkYWNfY3ZfRVRDX01OVFRBQiIgPSAidW5rbm93biI7IHRoZW4KKyAgICAgICAgZm9yIGkgaW4gL2V0Yy9tbnR0YWIgL2V0Yy9tdGFiIC9ldGMvZmlsZXN5c3RlbXMgL2Rldi9tbnR0YWIKKyAgICAgICAgZG8KKyAgICAgICAgICAgIGlmIHRlc3QgLWYgJGkgLW8gLWMgJGk7IHRoZW4KKyAgICAgICAgICAgICAgICBhY19jdl9FVENfTU5UVEFCPSIkaSIKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICBmaQorXSkKK0FDX0RFRklORV9VTlFVT1RFRChFVENfTU5UVEFCLCIkYWNfY3ZfRVRDX01OVFRBQiIsIFtsb2NhdGlvbiBvZiBtb3VudCB0YWJsZSBsaXN0XSkKKworCisjICAgICAgIFByaW50aW5nCisjCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX1BBVEhfUFJPRyhbTFBTVEFUX1BBVEhdLGxwc3RhdCkKK2lmIHRlc3QgeCRMUFNUQVRfUEFUSCAhPSB4OyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKExQU1RBVF9QQVRILCAiJExQU1RBVF9QQVRIIiwKKwlbUGF0aCB0byB0aGUgbHBzdGF0IGNvbW1hbmRdKQorICAgIEFDX0RFRklORShIQVZFX0xQU1RBVCwgMSwgW1NldCBpZiB0aGUgbHBzdGF0IGNvbW1hbmQgaXMgYXZhaWxhYmxlXSkKK2ZpCitpZiB0ZXN0IC1yIC9ldGMvcHJpbnRjYXA7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9QUklOVENBUCwgMSwgW1NldCBpZiAvZXRjL3ByaW50Y2FwIGV4aXN0c10pCitmaQorCisKKyMgICAgICAgQ2hlY2sgcHMgYXJncworIwkgICAgdXNlZCBpbiBhZ2VudCBvbmx5CisjCitBQ19DQUNIRV9DSEVDSyhbZm9yIGNvcnJlY3QgZmxhZ3MgdG8gcHNdLAorICAgICBhY19jdl9wc19mbGFncywKKyAgICAgWworaWYgdGVzdCAiYCgkUFNQUk9HIC1lIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iLWUiCitlbGlmIHRlc3QgImAoJFBTUFJPRyAtZWwgMj4mMSkgfCAkRUdSRVAgJyAocHMpICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSItZWwiCitlbGlmIHRlc3QgImAoJFBTUFJPRyBhY3ggMj4mMSkgfCAkRUdSRVAgJyAocHMpICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSJhY3giCitlbGlmIHRlc3QgImAoJFBTUFJPRyAtYWN4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iLWFjeCIKK2VsaWYgdGVzdCAiYCgkUFNQUk9HIC1vIHBpZCx0dCxzdGF0ZSx0aW1lLHVjb21tIDI+JjEpIHwgJEVHUkVQICcgcHMgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1vIHBpZCx0dCxzdGF0ZSx0aW1lLHVjb21tIgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgYXggMj4mMSkgfCAkRUdSRVAgJyAocHMpICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSJheCIKK2VsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgorZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbiAKKyAgICBhY19jdl9wc19mbGFncz0iLWUiCitlbHNlCisgICAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBkZXRlcm1pbmUgdmFsaWQgcHMgZmxhZ3MuLi4gIGRlZmF1bHRpbmcuLi5dKQorICAgIGFjX2N2X3BzX2ZsYWdzPSItYWN4IgorZmkKK10pCisKK1BTQ01EPSIkUFNQUk9HICRhY19jdl9wc19mbGFncyIKK0FDX1NVQlNUKFBTQ01EKQorQUNfREVGSU5FX1VOUVVPVEVEKFBTQ01ELCAiJFBTUFJPRyAkYWNfY3ZfcHNfZmxhZ3MiLAorICBbQ29tbWFuZCB0byBnZW5lcmF0ZSBwcyBvdXRwdXQsIHRoZSBmaW5hbCBjb2x1bW4gbXVzdCBiZSB0aGUgcHJvY2VzcworICAgbmFtZSB3aXRoT1VUIGFyZ3VtZW50c10pCisKKworIyMKKyMgICBTeXN0ZW0vQ29tcGlsYXRpb24tcmVsYXRlZAorIyMKKworIyAgICAgICBDaGVjayB3aGV0aGVyIHN5c2N0bCgpIGlzIHVzYWJsZQorIwkgICAgdXNlZCBpbiBsaWJyYXJ5L2FnZW50CisjCitpZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfV0FSTihbQ2FuJ3QgY2hlY2sgc3lzY3RsLCBtYW51YWxseSBkZWZpbmUgTkVUU05NUF9DQU5fVVNFX1NZU0NUTCBpZiBwbGF0Zm9ybSBzdXBwb3J0IGF2YWlsYWJsZV0pCitlbHNlCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2lmIHN5c2N0bCBjYW4gcmVhZCBrZXJuZWwgaW5mb3JtYXRpb25dLAorICAgICAgICBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMLAorICAgICAgIFtBQ19UUllfUlVOKFsKKyNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TWVNfVElNRV9ICisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbHNlCisjICBpbmNsdWRlIDx0aW1lLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgSEFWRV9TWVNfU1lTQ1RMX0gKKyMgaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2VuZGlmCisKK21haW4oKSB7CisgIGludCAgICAgICAgICAgICAgICAgbWliWzJdOworICBzaXplX3QgICAgICAgICAgICAgIGxlbjsKKyAgc3RydWN0IHRpbWV2YWwgYm9vdHRpbWU7CisgIAorICBtaWJbMF0gPSBDVExfS0VSTjsKKyAgbWliWzFdID0gS0VSTl9CT09UVElNRTsKKyAgCisgIGxlbiA9IHNpemVvZihib290dGltZSk7CisgIHN5c2N0bChtaWIsIDIsICZib290dGltZSwgJmxlbiwgTlVMTCwgTlVMTCk7CisgIGlmIChib290dGltZS50dl9zZWMgIT0gMCkKKyAgICBleGl0KDApOworICBlbHNlCisgICAgZXhpdCgxKTsKK30KKyAgICAgICAgXSwKKyAgICAgICAgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTD15ZXMsCisgICAgICAgIGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEw9bm8sCisgICAgICAgIGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEw9bm8pXSkKK2ZpCisKK2lmIHRlc3QgIngkYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTCIgPSAieHllcyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwsIDEsIFtzeXNjdGwgd29ya3MgdG8gZ2V0IGJvb3R0aW1lLCBldGMuLi5dKQorZmkKKworCisjICAgQ2hlY2sgd2hldGhlciBUQ1AgdGltZXIgY29uc3RhbnRzIGFyZSBpbmRlZWQgY29uc3RhbnQKKyMgICAgICAgb3IgZGVwZW5kIG9uIHRoZSBrZXJuZWwgY2xvY2sgdGljayAnaHonLiAgICAgICAgKEZyZWVCU0QgNC54KQorIworIyAgICAgICBJZiB0aGUgbGF0dGVyLCB0aGVuIHdlIHdpbGwgbmVlZCB0byBoYXZlIGEgbG9jYWwKKyMgICAgICAgdmFyaWFibGUgJ2h6JyBkZWZpbmVkIGFuZCB3aXRoIGEgc3VpdGFibGUgdmFsdWUsCisjICAgICAgIHdoZW5ldmVyIHdlIHdhbnQgdG8gIHVzZSBvbmUgb25lIG9mIHRoZXNlICdjb25zdGFudHMnLgorIworIyAJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgVENQIHRpbWVycyBkZXBlbmQgb24gJ2h6J10sCisgICAgYWNfY3ZfVENQVFZfTkVFRFNfSFosCisgICBbQUNfRUdSRVBfQ1BQKGh6LAorICAgICAgICBbCisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KK1RDUFRWX1NSVFRERkxUCisgICAgICAgIF0sCisgICAgICAgIGFjX2N2X1RDUFRWX05FRURTX0haPXllcywKKyAgICAgICAgYWNfY3ZfVENQVFZfTkVFRFNfSFo9bm8pXSkKKworaWYgdGVzdCAieCRhY19jdl9UQ1BUVl9ORUVEU19IWiIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19ERUZJTkUoVENQVFZfTkVFRFNfSFosIDEsCisgICAgICAgIFtEZWZpbmUgaWYgdGhlIFRDUCB0aW1lciBjb25zdGFudHMgaW4gPG5ldGluZXQvdGNwX3RpbWVyLmg+CisgICAgICAgICBkZXBlbmQgb24gdGhlIGludGVnZXIgdmFyaWFibGUgJ2h6Jy4gIEA8OkBGcmVlQlNEIDQueEA6PkBdKQorZmkKKworCisjICAgQ2hlY2sgd2hldGhlciBJUCBSb3V0ZSB0YWJsZSBpcyBjYWNoZWQgICAgICAgICAgICAgIChTb2xhcmlzKQorIwkgICAgdXNlZCBpbiBhZ2VudCBvbmx5CisjCitjYXNlICR0YXJnZXRfb3MgaW4KKyAgc29sYXJpcyopCisgICAgIyAgICBIZWFkZXIgY2hlY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb2xhcmlzIDIuNi83KQorICAgICMKKyAgICBBQ19DSEVDS19IRUFERVJTKGluZXQvY29tbW9uLmgpCisgICAgQUNfQ0hFQ0tfSEVBREVSUyhpbmV0L2lwLmgsYWNfaW5ldF9pcF9oPXllcyxhY19pbmV0X2lwX2g9bm8sCisgICAgICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoW10pCisgICAgICAgIFsKKyNpZiBIQVZFX1NZU19TVFJFQU1fSAorI2luY2x1ZGUgPHN5cy9zdHJlYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfSU5FVF9DT01NT05fSAorI2luY2x1ZGUgPGluZXQvY29tbW9uLmg+CisjZW5kaWYKKyAgICAgICAgXSkKKyAgICBpZiB0ZXN0ICRhY19pbmV0X2lwX2ggPSB5ZXMgOyB0aGVuCisgICAgICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbWliMl9pcFJvdXRlRW50cnlfdCBpbiBpbmV0L21pYjIuaF0sCisgICAgICAgICAgICBhY19jdl9taWIyX2lwUm91dGVFbnRyeV90LAorICAgICAgICAgICBbQUNfVFJZX0NPTVBJTEUoWworI2lmIEhBVkVfSU5FVF9NSUIyX0gKKyNpbmNsdWRlIDxpbmV0L21pYjIuaD4KKyNlbmRpZgorICAgICAgICAgICAgICAgXSxbCisgIG1pYjJfaXBSb3V0ZUVudHJ5X3QgdGVzdGl0OworICBpZihzaXplb2YodGVzdGl0KSkKKyAgICByZXR1cm4oMCk7CisgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdD15ZXMsCisgICAgICAgICAgICAgICBhY19jdl9taWIyX2lwUm91dGVFbnRyeV90PW5vKV0pCisKKyAgICAgICAgaWYgdGVzdCAieCRhY19jdl9taWIyX2lwUm91dGVFbnRyeV90IiA9ICJ4eWVzIiA7IHRoZW4KKyAgICAgICAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIElSRV9DQUNIRSBpcyBkZWZpbmVkIGluIGluZXQvaXAuaF0sCisgICAgICAgICAgICAgICAgYWNfY3ZfaXJlX2NhY2hlLAorICAgICAgICAgICAgICAgW0FDX1RSWV9DT01QSUxFKFsKKyNpZiBIQVZFX0lORVRfSVBfSAorI2luY2x1ZGUgPGluZXQvaXAuaD4KKyNlbmRpZgorICAgICAgICAgICAgICAgICAgIF0sWworICBpbnQgdGVzdGl0PUlSRV9DQUNIRTsKKyAgaWYodGVzdGl0KQorICAgIHJldHVybigwKTsKKyAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgIGFjX2N2X2lyZV9jYWNoZT15ZXMsCisgICAgICAgICAgICAgICAgICAgYWNfY3ZfaXJlX2NhY2hlPW5vKV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFjX2N2X2lyZV9jYWNoZT1ubworICAgICAgICBmaQorCisgICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfaXJlX2NhY2hlIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0RFRklORURfSVJFX0NBQ0hFLFtdLAorICAgICAgICAgICAgICAgIFtkZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBJUkVfQ0FDSEUgZGVmaW5lZCBpbiA8aW5ldC9pcC5oPiBoZWFkZXIgZmlsZS5dKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBBQ19NU0dfV0FSTihbSXQgc2VlbXMgdGhhdCB5b3UgaGF2ZSBpbmV0L2lwLmgsIGJ1dCBJUkVfQ0FDSEUgaXMgbm90IGRlZmluZWQuIFwKK1RoYXQgbWVhbnMgdGhhdCB5b3VyIHF1ZXJ5IHRvIGlwUm91dGUgTUlCIGNvdWxkIGdlbmVyYXRlIG92ZXIgMjBrIHJlc3VsdHMhIFwKK0FuZCB0aGlzIGNhbiBiZSB2ZXJ5IHNsb3cuXSkKKyAgICAgICAgZmkKKyAgICBmaSAgICAgICAgICMgInRlc3QgJGFjX2luZXRfaXBfaCA9IHllcyIKKyAgICA7OworZXNhYwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZGJjNzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MKQEAgLTAsMCArMSwzOTcgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgcHJvZ3JhbXMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFNoZWxsIGNoZWNrczoKKyMjCisKKyMgICAgICAgQ2hlY2sgZm9yICdzaCcgb3ZlcmZsb3cgICAgICAgICAgICAgICAgICAgICAgICAgKEhQLVVYKQorIyAgICAgICAgICh0YWtlbiBmcm9tIFBlcmwncyBjb25maWd1cmUgc2NyaXB0KQorIworQUNfTVNHX0NIRUNLSU5HKFtpZiBJIG5lZWQgdG8gZmVlZCBteXNlbGYgdG8ga3NoXSkKK2lmIHRlc3QgLWYgL2hwLXV4IC1hIC1mIC9iaW4va3NoOyB0aGVuCisgIGlmIChQQVRIPS47IGFsaWFzIC14KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBBQ19NU0dfUkVTVUxUKG5vKQorICBlbHNlCisgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgaWYgdGVzdCAieCQxIiA9ICJ4IjsgdGhlbgorICAgICAgZXhlYyAvYmluL2tzaCAkMAorICAgIGVsc2UKKyAgICAgIGV4ZWMgL2Jpbi9rc2ggJDAgIiRAIgorICAgIGZpCisgIGZpCitlbHNlCisgIEFDX01TR19SRVNVTFQobm8pCitmaQorCisKKyMjCisjICAgU3RhbmRhcmQgYW5kIHBhdGggcHJvZ3JhbSBjaGVja3M6CisjIworCitBQ19QUk9HX0VHUkVQCitBQ19QUk9HX0dSRVAKK0FDX1BST0dfSU5TVEFMTAorQUNfUFJPR19MTl9TCitBQ19QUk9HX01BS0VfU0VUCitBQ19QUk9HX1NFRAorCitBQ19DSEVDS19QUk9HUyhGSU5ELCAgIGZpbmQpCitBQ19DSEVDS19QUk9HUyhXSE9BTUksIHdob2FtaSBsb2duYW1lLCB3aG9hbWkpCisKK0FDX1BBVEhfUFJPRyhBVVRPQ09ORiwgICAgYXV0b2NvbmYpCitBQ19QQVRIX1BST0coQVVUT0hFQURFUiwgIGF1dG9oZWFkZXIpCitBQ19QQVRIX1BST0coW1BFUkxQUk9HXSwgIHBlcmwpCitBQ19QQVRIX1BST0coW1BTUFJPR10sICAgIHBzKQorQUNfUEFUSF9QUk9HKFtQWVRIT05QUk9HXSxweXRob24pCisKK0FDX1BBVEhfUFJPRyhbVU5BTUVQUk9HXSwgdW5hbWUpCitBQ19ERUZJTkVfVU5RVU9URUQoVU5BTUVQUk9HLCIkVU5BTUVQUk9HIiwgW1doZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kXSkKKworaWYgdGVzdCAieCRhY19jdl9wcm9nX0FVVE9DT05GIiA9ICJ4IjsgdGhlbgorCUFVVE9DT05GPSI6IgorCUFDX1NVQlNUKEFVVE9DT05GKQorZmkKK2lmIHRlc3QgIngkYWNfY3ZfcHJvZ19BVVRPSEVBREVSIiA9ICJ4IjsgdGhlbgorCUFVVE9IRUFERVI9IjoiCisJQUNfU1VCU1QoQVVUT0hFQURFUikKK2ZpCisKK01BS0U9JHtNQUtFLSJtYWtlIn0KKyRNQUtFIC12IC1mIC9kZXYvbnVsbCAyPi9kZXYvbnVsbCB8ICRHUkVQIEdOVSA+L2Rldi9udWxsCitoYXZlX2dudV9tYWtlPSQ/CisKKworIyMKKyMgICBDb21waWxhdGlvbi1yZWxhdGVkIHByb2dyYW0gY2hlY2tzOgorIyMKKworQUNfTEFORyhbQ10pCitBQ19QUk9HX0NDCitBQ19QUk9HX0NQUAorTElOS0NDPSR7TElOS0NDLSIkQ0MifQorQUNfU1VCU1QoTElOS0NDKQorCitBQ19BSVgKK0FDX0NfQ09OU1QKK0FDX0NfSU5MSU5FCisKKyMgICAgICAgbGlidG9vbCBzdHVmZiBmb3Igc2hhcmVkL3N0YXRpYyBsaWJyYXJpZXMuCisjCitMVF9QUkVSRVEoWzIuMi42XSkKK0xUX0lOSVQoW3dpbjMyLWRsbF0pCitBQ19TVUJTVChMSUJUT09MX0RFUFMpCisKKworIyMKKyMgICBCdWlsZCBlbnZpcm9ubWVudDoKKyMjCisKKyMgICBkZXZlbG9wZXIgYnVpbGQgCisjICAgICAgIChlbmFibGVkIGJ5IGRlZmF1bHQgd2hlbiBidWlsZGluZyBmcm9tIFNWTiBjaGVja291dCkKKyMKK2lmIHRlc3QgIngkZGV2ZWxvcGVyIiAhPSAieG5vIiAtYSAtZiAkc3JjZGlyL3JlbW92ZS1maWxlczsgdGhlbgorICAgIGRldmVsb3Blcj0ieWVzIgorZmkKK0FDX01TR19DSEVDS0lORyhbZm9yIGRldmVsb3BlciBnY2MgZmxhZ3NdKQoraWYgdGVzdCAieCRkZXZlbG9wZXIiID0gInh5ZXMiIC1hICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKworICAgICMgICAgICAgV1dXWFhYIC0gc3RyaWN0IHR5cGUgY2hlY2tpbmcKKyAgICAjCisgICAgREVWRkxBR1M9Ii1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd3cml0ZS1zdHJpbmdzIC1XY2FzdC1xdWFsIgorZWxzZQorICAgIERFVkZMQUdTPSIiCitmaQorQUNfTVNHX1JFU1VMVCgkREVWRkxBR1MpCitBQ19TVUJTVChERVZGTEFHUykKKworCisjICAgYnVpbGRpbmcgb3V0c2lkZSBzb3VyY2UgZGlyZWN0b3J5CisjCisjICAgICAgIGEpIGVuc3VyZSBidWlsZCBpbmNsdWRlIHBhdGhzIGFyZSBiZWZvcmUgc291cmNlCisjICAgICAgIGIpIGVuc3VyZSBHTlUgbWFrZSB1c2VzICd2cGF0aCcgaW5zdGVhZCBvZiAnVlBBVEgnCisjCitOT05fR05VX1ZQQVRIPSJWUEFUSCA9IgorR05VX3ZwYXRoPSIjdnBhdGgiCisKKyMgICAgICAgZGVmaW5lIGluY2x1ZGUgcGF0aHMgcmVsYXRpdmUgdG8gdG9wX3NyY2RpcgorIyAgICAgICB0d2VhayBpbmNsdWRlcyBpZiB3ZSdyZSBidWlsZGluZyBvdXRzaWRlIG9mIHRoZSBzb3VyY2UgZGlyCisjCitpZiB0ZXN0ICJ4JHNyY2RpciIgPSAieC4iOyB0aGVuCisgICAgVE9QX0lOQ0xVREVTPVNSQ19UT1BfSU5DTFVERVMKKyAgICBTTk1QTElCX0lOQ0xVREVTPVNSQ19TTk1QTElCX0lOQ0xVREVTCisgICAgQUdFTlRfSU5DTFVERVM9U1JDX0FHRU5UX0lOQ0xVREVTCisgICAgSEVMUEVSX0lOQ0xVREVTPVNSQ19IRUxQRVJfSU5DTFVERVMKKyAgICBNSUJHUk9VUF9JTkNMVURFUz1TUkNfTUlCR1JPVVBfSU5DTFVERVMKK2Vsc2UKKyAgICBUT1BfSU5DTFVERVM9QkxEX1RPUF9JTkNMVURFUworICAgIFNOTVBMSUJfSU5DTFVERVM9QkxEX1NOTVBMSUJfSU5DTFVERVMKKyAgICBBR0VOVF9JTkNMVURFUz1CTERfQUdFTlRfSU5DTFVERVMKKyAgICBIRUxQRVJfSU5DTFVERVM9QkxEX0hFTFBFUl9JTkNMVURFUworICAgIE1JQkdST1VQX0lOQ0xVREVTPUJMRF9NSUJHUk9VUF9JTkNMVURFUworICAgIGlmIHRlc3QgJGhhdmVfZ251X21ha2UgLWVxIDAgOyB0aGVuCisgICAgICAgIE5PTl9HTlVfVlBBVEg9IiNWUEFUSCA9IgorICAgICAgICBHTlVfdnBhdGg9InZwYXRoIgorICAgIGZpCitmaQorQUNfU1VCU1QoVE9QX0lOQ0xVREVTKQorQUNfU1VCU1QoU05NUExJQl9JTkNMVURFUykKK0FDX1NVQlNUKEFHRU5UX0lOQ0xVREVTKQorQUNfU1VCU1QoSEVMUEVSX0lOQ0xVREVTKQorQUNfU1VCU1QoTUlCR1JPVVBfSU5DTFVERVMpCitBQ19TVUJTVChHTlVfdnBhdGgpCitBQ19TVUJTVChOT05fR05VX1ZQQVRIKQorCisKKyMjCisjICAgU3lzdGVtLXJlbGF0ZWQgY29tcGlsYXRpb24gY2hlY2tzOgorIyMKKworIyAgICAgICBXaGF0IHN5c3RlbSBhcmUgd2UgYnVpbGRpbmcgZm9yCisjCitBQ19DQU5PTklDQUxfVEFSR0VUCitjaGFuZ2VxdW90ZSgsICkKK1BBUlRJQUxUQVJHRVRPUz1gZWNobyAkdGFyZ2V0X29zIHwgc2VkICdzL1stLl9dLiovLydgCitjaGFuZ2VxdW90ZShbLCBdKQorQUNfTVNHX0NBQ0hFX0FERChCdWlsZGluZyBmb3I6ICAgICAgICAgICAgICAgJFBBUlRJQUxUQVJHRVRPUykKKworCisjCisjICAgIFdoZXRoZXIgb3Igbm90IEN5Z3dpbidzIGxkIHJlY29nbml6ZXMgdGhlIGZsYWcgLW5vLXVuZGVmaW5lZC4gCisjCisKK2Nhc2UgeCR0YXJnZXRfb3MgaW4KK3hjeWd3aW4qKQorICBzYXZlZF9MREZMQUdTPSRMREZMQUdTCisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSBsaW5rZXIgc3VwcG9ydHMgLW5vLXVuZGVmaW5lZF0pCisgIExERkxBR1M9IiRzYXZlZF9MREZMQUdTIC1XbCwtbm8tdW5kZWZpbmVkIgorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCisgICAgICAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgZG5sCisgICAgICAgICAgICAgICAgICBMRF9OT19VTkRFRklORUQ9LW5vLXVuZGVmaW5lZF0sCisgICAgICAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXSkKKyAgCisgIExERkxBR1M9IiRzYXZlZF9MREZMQUdTIgorICA7OworZXNhYworCitBQ19TVUJTVChMRF9OT19VTkRFRklORUQpCisKKworIworIyAgIFNvY2tldCBsaWJyYXJ5OiBlaXRoZXIgJ2RlZmF1bHQnIChub24tTWluR1cpIG9yICd3aW5zb2NrMicgKE1pbkdXKS4KKyMKK2Nhc2UgeCR0YXJnZXRfb3MgaW4KKyAgeG1pbmd3KikKKyAgICB3aXRoX3NvY2tsaWI9d2luc29jazI7OworICAqKQorICAgIHdpdGhfc29ja2xpYj1kZWZhdWx0OzsKK2VzYWMKKworCisjICAgQ2hlY2sgc3lzdGVtIGRlZmluZSBiZWhhdmlvdXIKKyMgICAgICAgRG9lcyAiLVV4IC1EeD14IiB3b3JrIGFzIGV4cGVjdGVkPworIworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVuLWRlZmluZSB0YXJnZXQgc3lzdGVtIHRva2VuIChiZWZvcmUgcmVkZWZpbmluZyldKQorT0xEX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iLVUkUEFSVElBTFRBUkdFVE9TIC1EJFBBUlRJQUxUQVJHRVRPUz0kUEFSVElBTFRBUkdFVE9TIgorCitBQ19FR1JFUF9DUFAoeWVzLAorICAgIFtbCisjaWZkZWYgJFBBUlRJQUxUQVJHRVRPUworeWVzCisjZW5kaWYKKyAgICBdXSwKKyAgICBbICBQQVJUSUFMVEFSR0VURkxBR1M9Ii1VJFBBUlRJQUxUQVJHRVRPUyAtRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKKyAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sCisgICAgWyAgUEFSVElBTFRBUkdFVEZMQUdTPSItRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKKyAgICAgICBBQ19NU0dfUkVTVUxUKFtub10pXSkKK0NGTEFHUz0iJENGTEFHUyAkUEFSVElBTFRBUkdFVEZMQUdTIgorQ1BQRkxBR1M9IiRPTERfQ1BQRkxBR1MiCisKKworIyAgICAgICBEZXRlcm1pbmUgYXBwcm9wcmlhdGUgPG5ldC1zbm1wL3N5c3RlbS97b3N9Lmg+IGluY2x1ZGUKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3RlbSBpbmNsdWRlIGZpbGVdKQorY2hhbmdlcXVvdGUoLCApCitmaWxlYmFzZT0kdGFyZ2V0X29zCisjIGlnbm9yZSBiaW5hcnkgZm9ybWF0IGluZGljYXRpb24KK2ZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvZWxmLy8nYAorZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgJFNFRCAncy9hb3V0Ly8nYAorZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgJFNFRCAncy9lY29mZi8vJ2AKK2ZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvY29mZi8vJ2AKK3doaWxlIHRlc3QgIngkZmlsZWJhc2UiICE9ICJ4JGxhc3QiIC1hICEgLWYgJHNyY2Rpci9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS8kZmlsZWJhc2UuaAorZG8KKyAgICBsYXN0PSRmaWxlYmFzZQorICAgIGZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvWy0uX11bXi0uX10qJC8vJ2AKKyAgICBpZiB0ZXN0ICJ4JGZpbGViYXNlIiA9ICJ4JGxhc3QiOyB0aGVuCisJZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgJFNFRCAncy9bMC05XSokLy8nYAorICAgIGZpCitkb25lCisKK2lmIHRlc3QgIngkZmlsZWJhc2UiID0gIngkbGFzdCI7IHRoZW4KKyAgICBmaWxlYmFzZT0iZ2VuZXJpYyIKK2ZpCithY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEU9Im5ldC1zbm1wL3N5c3RlbS8kZmlsZWJhc2UuaCIKK2NoYW5nZXF1b3RlKFssIF0pCitBQ19NU0dfUkVTVUxUKCRhY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUpCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFLCAiJGFjX2N2X05FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRSIpCisKKworIyAgICAgICBEZXRlcm1pbmUgYXBwcm9wcmlhdGUgPG5ldC1zbm1wL21hY2hpbmUve2NwdX0uaD4gaW5jbHVkZQorIworQUNfTVNHX0NIRUNLSU5HKFtmb3IgbWFjaGluZS10eXBlIGluY2x1ZGUgZmlsZV0pCitjaGFuZ2VxdW90ZSgsICkKK2ZpbGViYXNlPSR0YXJnZXRfY3B1Cit3aGlsZSB0ZXN0ICJ4JGZpbGViYXNlIiAhPSAieCRsYXN0IiAtYSAhIC1mICRzcmNkaXIvaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lLyRmaWxlYmFzZS5oCitkbworICAgIGxhc3Q9JGZpbGViYXNlCisgICAgZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgJFNFRCAncy9bLS5fXVteLS5fXSokLy8nYAorZG9uZQorCitpZiB0ZXN0ICJ4JGZpbGViYXNlIiA9ICJ4JGxhc3QiOyB0aGVuCisgICAgZmlsZWJhc2U9ImdlbmVyaWMiCitmaQorYWNfY3ZfTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRT0ibmV0LXNubXAvbWFjaGluZS8kZmlsZWJhc2UuaCIKK2NoYW5nZXF1b3RlKFssIF0pCitBQ19NU0dfUkVTVUxUKFskYWNfY3ZfTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRV0pCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRSwgIiRhY19jdl9ORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFIikKKworCisjIworIyAgIFBsYXRmb3JtLXNwZWNpZmljIGNvbXBpbGF0aW9uIGNoZWNrczoKKyMjCisKKyMgICBQcmVwcm9jZXNzb3IgY2hlY2tzOgorIworCisjICAgICAgIE1vcmUgc2Vuc2libGUgc3lzdGVtIGlkZW50aWZpZXIgICAgICAgICAgICAgICAgIChNaW5HVykKKyMKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisJQ0ZMQUdTPSIkQ0ZMQUdTIC1EbWluZ3czMiIKK2ZpCisKKyMgICAgICAgSGFuZGxlIC5pbiBmaWxlIGV4dGVuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgKEdDQykKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGFkZGl0aW9uYWwgY3BwIGZsYWdzXSkKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRDUFAiID0gIngkQ0MgLUUiOyB0aGVuCisgICAgRVhUUkFDUFBGTEFHUz0iLXggYyIKK2Vsc2UKKyAgICBFWFRSQUNQUEZMQUdTPSIiCitmaQorCisjICAgICAgIFNvbGFyaXMgZXh0cmEgQ1BQIGZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgIChTb2xhcmlzKQorIworaWYgdGVzdCAieCRHQ0MiICE9ICJ4eWVzIjsgdGhlbgorICAgIGNhc2UgJHRhcmdldF9vcyBpbgorICAgICAgICBzb2xhcmlzKikgRVhUUkFDUFBGTEFHUz0iJEVYVFJBQ1BQRkxBR1MgLVhzIiA7OworICAgIGVzYWMKK2ZpCisKK0FDX1NVQlNUKEVYVFJBQ1BQRkxBR1MpCitBQ19NU0dfUkVTVUxUKCRFWFRSQUNQUEZMQUdTKQorCisKKyMgICBDb21waWxlciBjaGVja3M6CisjCisKK0FDX1BBVEhfUFJPRyhbQ0NQQVRIXSwkQ0MpCitjYXNlICR0YXJnZXRfb3MgaW4KKyAgICBic2RpKikKKyAgICAgICAgIyAgIENoZWNrIGZvciBidW5kbGVkIGNvbXBpbGVyICAgICAgICAgICAgICAgICAgKEJTRGkpCisgICAgICAgICMKKwlpZiB0ZXN0ICJ4JENDUEFUSCIgPSAieC91c3IvdWNiL2NjIiAtbyAieCRDQ1BBVEgiID0gIngvdXNyL2Jpbi9jYyI7IHRoZW4KKwkgICAgQUNfTVNHX0VSUk9SKFsKKworKioqIFRoZSBCU0RJIC91c3IvdWNiL2NjIGNvbXBpbGVyIGRvZXMgbm90IHdvcmsgd2l0aCB0aGlzIHBhY2thZ2UuICAKKyoqKiBQbGVhc2UgcnVuIGNvbmZpZ3VyZSB3aXRoIC0td2l0aC1jYz1nY2MKK10pCisJZmkKKyAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgICAjICAgQ2hlY2sgZm9yIGJ1bmRsZWQgY29tcGlsZXIgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyAgICAgICAgIworCWlmIHRlc3QgIngkQ0NQQVRIIiA9ICJ4L3Vzci91Y2IvY2MiOyB0aGVuCisJICAgIEFDX01TR19FUlJPUihbCisKKyoqKiBUaGUgc29sYXJpcyAvdXNyL3VjYi9jYyBjb21waWxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLiAgCisqKiogUGxlYXNlIHB1dCBhIGRpZmZlcmVudCBjb21waWxlciBpbiB5b3VyIHBhdGggZmlyc3Qgb3IgcnVuCisqKiogY29uZmlndXJlIHdpdGggLS13aXRoLWNjPVhYLCB3aGVyZSBYWCBpcyB0aGUgY29tcGlsZXIgeW91IHdhbnQgdG8gdXNlLgorXSkKKwlmaQorICAgIDs7Citlc2FjCisKKworIyAgIENvbXBpbGVyIGZsYWdzOgorIworCisjIFRoZSBOZXQtU05NUCBzb3VyY2UgY29kZSBpcyBub3Qgc3RyaWN0LWFsaWFzaW5nIHNhZmUsIHNvIGFkZAorIyAtZm5vLXN0cmljdC1hbGlhc2luZyB0byAkQ0ZMQUdTIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdC4KK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgLWZuby1zdHJpY3QtYWxpYXNpbmddKQorbmV0c25tcF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKK0NGTEFHUz0iLWZuby1zdHJpY3QtYWxpYXNpbmcgJENGTEFHUyIKK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sIFtdKV0sIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sIFsKKyAgQUNfTVNHX1JFU1VMVChbbm9dKQorICBDRkxBR1M9IiRuZXRzbm1wX3NhdmVfQ0ZMQUdTIgorXSkKKworCisjICAgTGlua2VyIGNoZWNrczoKKyMKKyAgICAKK2Nhc2UgJHRhcmdldF9vcyBpbgorICAgIGFpeDQuMip8YWl4NC4zKnxhaXg1KnxhaXg2KikKKyAgICAgICAgIyAgIFJ1bnRpbWUgbGlua2luZyBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgKEFJWCkKKyAgICAgICAgIworICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doYXQgbGlua2VyIGZsYWdzIHRvIGFkZCB0byBlbmFibGUgcnVudGltZSBsaW5raW5nIG9uIEFJWF0pCisgICAgICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbworICAgICAgICAgICAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2FpeF9ydW50aW1lbGlua2luZ19mbGFnc19vaz15ZXMKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgICAgICBpZiB0ZXN0ICJYJG5ldHNubXBfYWl4X3J1bnRpbWVsaW5raW5nX2ZsYWdzX29rIiAhPSAiWHllcyI7IHRoZW4KKwkgICAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisJICAgICAgICBuZXRzbm1wX2FpeF9sZGZsYWdzPSItV2wsLWJydGwiCisJICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2FpeF9sZGZsYWdzPSItYnJ0bCIKKwkgICAgZmkKKyAgICAgICAgICAgIExERkxBR1M9IiRuZXRzbm1wX2FpeF9sZGZsYWdzICRMREZMQUdTIgorCSAgICBBQ19NU0dfUkVTVUxUKCRuZXRzbm1wX2FpeF9sZGZsYWdzKQorCWVsc2UKKwkgICAgQUNfTVNHX1JFU1VMVChbbm9uZV0pCisJZmkKKwk7OworCisgICAgZGFyd2luOCp8ZGFyd2luOSopCisgICAgICAgICMgICBGbGF0IE5hbWVzcGFjZSBsaW5raW5nICAgICAgICAgICAgICAgICAgICAgIChNYWMgT1MvWCkKKyAgICAgICAgIworICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgZGFyd2luIGxkIG1pZ2h0IG5lZWQgLWZsYXRfbmFtZXNwYWNlXSkKKwlpZiB0ZXN0IC16ICIkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIjsgdGhlbgorCQlMREZMQUdTPSItZmxhdF9uYW1lc3BhY2UgJExERkxBR1MiCisJCUFDX01TR19SRVNVTFQoW3llc10pCisJZWxzZQorCQlBQ19NU0dfUkVTVUxUKFtub10pCisJZmkKKwk7OworCisgICAgKikKKyAgICAgICAgOzsKK2VzYWMKKworCisKKyMjCisjICAgTm9uLXByb2dyYW0vY29tcGlsYXRpb24gY2hlY2tzOgorIyMKKworIyAgICAgICBTdWJzdGl0dXRlIHZlcnNpb24gbnVtYmVyLgorIworQUNfU1VCU1QoVkVSU0lPTiwgJFBBQ0tBR0VfVkVSU0lPTikKK0FDX01TR19DQUNIRV9BREQoTmV0LVNOTVAgVmVyc2lvbjogICAgICAgICAgICRQQUNLQUdFX1ZFUlNJT04pCisKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2E3NzdiCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzCkBAIC0wLDAgKzEsNzAzIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIGRhdGEgc3RydWN0dXJlcyAmIG1lbWJlcnMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFNpbXBsZSBjaGVja3M6CisjIworCisjICAgICAgIHN0cnVjdCBhcnBoZAorIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGFycGhkLmF0X25leHRdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JRl9FVEhFUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorI2VuZGlmCisgICAgXV0pCisKKworIyAgICAgICBzdHJ1Y3QgZGVzX2tzX3N0cnVjdAorIyAgICAgICAgICgnd2Vha19rZXknIGluZGljYXRlcyBvbGRlciB2ZXJzaW9uIG9mIE9wZW5TU0wpCisjICAgTGlicmFyeToKKyMKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfZGVzX2giID0gInh5ZXMiIDsgdGhlbgorICAgIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBkZXNfa3Nfc3RydWN0LndlYWtfa2V5XSwsLFtbCisjaWZkZWYgSEFWRV9PUEVOU1NMX0RFU19ICisjaW5jbHVkZSA8b3BlbnNzbC9kZXMuaD4KKyNlbmRpZgorICAgIF1dKQorZmkKKworIyAgICAgICBzdHJ1Y3QgZGlyZW50CisjICAgICAgICAgKHNlZSBhbHNvIEFDX1NUUlVDVF9ESVJFTlRfRF9UWVBFKQorIyAgIExpYnJhcnk6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZGlyZW50LmRfdHlwZV0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfRElSRU5UX0gKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBldGh0b29sX2NtZAorIworaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbGludXhfZXRodG9vbF9oIiA9ICJ4eWVzIiA7IHRoZW4KK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBldGh0b29sX2NtZC5zcGVlZF9oaV0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfTElOVVhfRVRIVE9PTF9ICisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorI2VuZGlmCisgICAgXV0pCitmaQorCisjICAgICAgIHN0cnVjdCBpcHN0YXQKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpcHN0YXQuaXBzX2NhbnRmcmFnLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfZGVsaXZlcmVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfZnJhZ2Ryb3BwZWQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19mcmFnbWVudGVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfbG9jYWxvdXQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19ub3Byb3RvLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfbm9yb3V0ZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX29kcm9wcGVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfb2ZyYWdtZW50cywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX3JlYXNzZW1ibGVkXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgorI2VuZGlmCisgICAgXV0pCisjCisjICAgTm90LVVzZWQ6CitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaXBzdGF0Lmlwc19jYW50Zm9yd2FyZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2ZyYWd0aW1lb3V0XSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IG1ic3RhdAorIyAgIE5vdC1Vc2VkOgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IG1ic3RhdC5tX2NsdXN0ZXJzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IG1ic3RhdC5tX2NsZnJlZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnN0YXQubV9tYnVmc10sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX01CVUZfSAorI2luY2x1ZGUgPHN5cy9tYnVmLmg+CisjZW5kaWYKKyAgICBdXSkKKworIwlzdHJ1Y3QgdXZtZXhwCisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgdXZtZXhwLnBnc3dhcGluXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaW5jbHVkZSA8dXZtL3V2bV9leHRlcm4uaD4KKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3Qgbmxpc3QKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBubGlzdC5uX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgc3RydWN0IG5saXN0NjQubl92YWx1ZV0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkxJU1RfSAorI2luY2x1ZGUgPG5saXN0Lmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uCisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc2lnYWN0aW9uLnNhX3NpZ2FjdGlvbl0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NJR05BTF9ICisjaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHNvY2thZGRyCisjICAgTGlicmFyeToKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzb2NrYWRkci5zYV9sZW4sCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIuc2FfdW5pb24uc2FfZ2VuZXJpYy5zYV9mYW1pbHkyLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Uuc3NfZmFtaWx5LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UuX19zc19mYW1pbHldLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9XSU5TT0NLMl9IKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dTMlRDUElQX0gKKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAgICAgKHNlZSBSRkMgMjU1MykKKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHNvY2thZGRyX2luNi5zaW42X3Njb3BlX2lkXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfV0lOU09DSzJfSAorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dTMlRDUElQX0gKKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IG1zZ2hkcgorIyAgIExpYnJhcnk6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgbXNnaGRyLm1zZ19jb250cm9sXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfV0lOU09DSzJfSAorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dTMlRDUElQX0gKKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHN0YXRmcworIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXRmcy5mX2ZhdmFpbCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ZnMuZl9mZnJlZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ZnMuZl9maWxlcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ZnMuZl9mcnNpemVdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX1NZU19TVEFURlNfSAorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX01PVU5UX0gKKyNpbmNsdWRlIDxzeXMvbW91bnQuaD4KKyNlbmRpZiAKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3Qgc3RhdHZmcworIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXR2ZnMuZl9maWxlcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0dmZzLmZfZnJzaXplLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXR2ZnMubW50X2Rpcl0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfU1lTX1NUQVRGU19ICisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzd2RldnQKKyMgICBOb3QtVXNlZDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzd2RldnQuc3dfbmJsa3NlbmFibGVkXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfQ09ORl9ICisjaW5jbHVkZSA8c3lzL2NvbmYuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCB0Y3BzdGF0CisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgdGNwc3RhdC50Y3BfcmN2bWVtZHJvcF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RJTUVPVVRfSAorI2luY2x1ZGUgPHN5cy90aW1lb3V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfVENQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9USU1FUl9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9UQ1BfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcF92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCB0bQorIyAgIExpYnJhcnk6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgdG0udG1fZ210b2ZmXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1lTX1RJTUVfSAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBlbmRpZgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHVkcHN0YXQKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCB1ZHBzdGF0LnVkcHNfZGlzY2FyZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfZnVsbHNvY2ssCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX25vcG9ydCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfbm9wb3J0YmNhc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX29wYWNrZXRzXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1VEUF9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9VRFBfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisKKworIyMKKyMgICBpZm5ldC1yZWxhdGVkIGNoZWNrczoKKyMjCisKKyMgICAgICAgRG9lcyAic3RydWN0IGlmbmV0IiBuZWVkIF9LRVJORUwgZGVmaW5lZD8gICAgICAgKElyaXgpCisjCitBQ19DQUNIRV9DSEVDSyhbaWYgX0tFUk5FTCBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBpZl9tdHVdLAorICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMXSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTD11bmtub3duCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pLAorICAgICAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9bm9dKQorICAgICAgICAgaWYgdGVzdCAiJGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCIgPSB1bmtub3duIDsgdGhlbgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFsKKyNkZWZpbmUgX0tFUk5FTCAxCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAorI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KKyNlbmRpZgorICAgICAgICAgICAgIF0sIFtbc3RydWN0IGlmbmV0IHRlc3Q7IHRlc3QuaWZfbXR1ID0gMDtdXSksCisgICAgICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTD15ZXNdKQorICAgICAgICAgZmldKQorCitpZiB0ZXN0ICJ4JGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19ERUZJTkUoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwsIDEsCisgICAgICAgIFtpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZF0pCitmaQorCisjICAgICAgIERvZXMgInN0cnVjdCBpZm5ldCIgbmVlZCBfS0VSTkVMX1NUUlVDVFVSRVMgZGVmaW5lZD8gICAgICAgKERyYWdvbkZseSAzKQorIworQUNfQ0FDSEVfQ0hFQ0soW2lmIF9LRVJORUxfU1RSVUNUVVJFUyBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBpZl9tdHVdLAorICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVNdLAorICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVM9dW5rbm93bgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTShbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAorI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KKyNlbmRpZgorICAgICAgICAgICAgIF0sIFtbc3RydWN0IGlmbmV0IHRlc3Q7IHRlc3QuaWZfbXR1ID0gMDtdXSldLAorICAgICAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUz1ub10pCisgICAgICAgICBpZiB0ZXN0ICIkYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMiID0gdW5rbm93biA7IHRoZW4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pXSwKKyAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVM9eWVzXSkKKyAgICAgICAgIGZpXSkKKworaWYgdGVzdCAieCRhY19jdl9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUyIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19ERUZJTkUoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUywgMSwKKyAgICAgICAgW2lmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWRdKQorZmkKKworCisjICAgICAgIHN0cnVjdCBpZmFkZHIKKyMgICBOb3QtVXNlZDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpZmFkZHIuaWZhX25leHRdLCwsWworICAgIFsKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisgICAgXQorICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAorI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBpZm5ldAorIyAgICAgICAgIChCcm9rZW4gb24gRnJlZUJTRCAtICNkZWZpbmUnZCBpbiA8bmV0L2lmLmg+KQorIyAgIEFnZW50OiAgICg/b3IgTm90LVVzZWQ/KQorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGlmbmV0LmlmX2FkZHJsaXN0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX2FkZHJoZWFkLnRxaF9maXJzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9iYXVkcmF0ZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9iYXVkcmF0ZS5pZnNfdmFsdWUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfaWJ5dGVzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX2ltY2FzdHMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfaXFkcm9wcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9sYXN0Y2hhbmdlLnR2X3NlYywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9sYXN0Y2hhbmdlLnR2X25zZWMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfbXR1LAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX25vcHJvdG8sCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfb2J5dGVzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX29tY2FzdHMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfc3BlZWQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl94bmFtZV0sLCxbWworI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNlbmRpZgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisjZGVmaW5lIEtFUk5FTAorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisjZGVmaW5lIF9LRVJORUwgMQorI2VuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAorI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1FVRVVFX0gKKyNpbmNsdWRlIDxzeXMvcXVldWUuaD4KKyNlbmRpZgorI2lmZGVmIGxpbnV4CitzdHJ1Y3QgaWZuZXQgeworCWNoYXIJKmlmX25hbWU7CQkvKiBuYW1lLCBlLmcuICJlbiIgb3IgImxvIiAqLworCXNob3J0CWlmX3VuaXQ7CQkvKiBzdWItdW5pdCBmb3IgbG93ZXIgbGV2ZWwgZHJpdmVyICovCisJc2hvcnQJaWZfbXR1OwkJCS8qIG1heGltdW0gdHJhbnNtaXNzaW9uIHVuaXQgKi8KKwlzaG9ydAlpZl9mbGFnczsJCS8qIHVwL2Rvd24sIGJyb2FkY2FzdCwgZXRjLiAqLworCWludAlpZl9tZXRyaWM7CQkvKiByb3V0aW5nIG1ldHJpYyAoZXh0ZXJuYWwgb25seSkgKi8KKwljaGFyICAgIGlmX2h3YWRkciBbNl07CQkvKiBldGhlcm5ldCBhZGRyZXNzICovCisJaW50CWlmX3R5cGU7CQkvKiBpbnRlcmZhY2UgdHlwZTogMT1nZW5lcmljLAorCQkJCQkgICAyOD1zbGlwLCBldGhlcj02LCBsb29wYmFjaz0yNCAqLworCWludAlpZl9zcGVlZDsJCS8qIGludGVyZmFjZSBzcGVlZDogaW4gYml0cy9zZWMgKi8KKworCXN0cnVjdCBzb2NrYWRkciBpZl9hZGRyOwkvKiBpbnRlcmZhY2UncyBhZGRyZXNzICovCisJc3RydWN0IHNvY2thZGRyIGlmdV9icm9hZGFkZHI7CS8qIGJyb2FkY2FzdCBhZGRyZXNzICovCisJc3RydWN0IHNvY2thZGRyIGlhX3N1Ym5ldG1hc2s7IAkvKiBpbnRlcmZhY2UncyBtYXNrICovCisKKwlzdHJ1Y3QJaWZxdWV1ZSB7CisJCWludAlpZnFfbGVuOworCQlpbnQJaWZxX2Ryb3BzOworCX0gaWZfc25kOwkJCS8qIG91dHB1dCBxdWV1ZSAqLworCWludAlpZl9pYnl0ZXM7CQkvKiBvY3RldHMgcmVjZWl2ZWQgb24gaW50ZXJmYWNlICovCisJaW50CWlmX2lwYWNrZXRzOwkJLyogcGFja2V0cyByZWNlaXZlZCBvbiBpbnRlcmZhY2UgKi8KKwlpbnQJaWZfaWVycm9yczsJCS8qIGlucHV0IGVycm9ycyBvbiBpbnRlcmZhY2UgKi8KKyAgICAgICAgaW50ICAgICBpZl9pcWRyb3BzOyAgICAgICAgICAgICAvKiBpbnB1dCBxdWV1ZSBvdmVycnVucyAqLworCWludAlpZl9vYnl0ZXM7CQkvKiBvY3RldHMgc2VudCBvbiBpbnRlcmZhY2UgKi8KKwlpbnQJaWZfb3BhY2tldHM7CQkvKiBwYWNrZXRzIHNlbnQgb24gaW50ZXJmYWNlICovCisJaW50CWlmX29lcnJvcnM7CQkvKiBvdXRwdXQgZXJyb3JzIG9uIGludGVyZmFjZSAqLworCWludAlpZl9jb2xsaXNpb25zOwkJLyogY29sbGlzaW9ucyBvbiBjc21hIGludGVyZmFjZXMgKi8KKy8qIGVuZCBzdGF0aXN0aWNzICovCisJc3RydWN0CWlmbmV0ICppZl9uZXh0OworfTsKKyNlbmRpZgorICAgIF1dKQorCisKKyMjCisjICAgcnRlbnRyeSBzdHJ1Y3R1cmUgY2hlY2tzOgorIyMKKworIyBDaGVjayBzdHJ1Y3QgcnRlbnRyeSBmb3IgY29tbW9uIGZpZWxkcworIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHJ0ZW50cnkucnRfZHN0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfaGFzaCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X25leHQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9yZWZjbnQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF91bml0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfdXNlXSwsLAorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisjZGVmaW5lIEtFUk5FTAorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisjZGVmaW5lIF9LRVJORUwgMQorI2VuZGlmCisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjdW5kZWYgS0VSTkVMCisjdW5kZWYgX0tFUk5FTAorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCisgICAgXSkKKworCisjIENoZWNrIGZvciBCU0QgNC4zIHZzIDQuNCBzdHJ1Y3QgcnRlbnRyeQorIworQUNfQ0FDSEVfQ0hFQ0soW3R5cGUgb2YgcnRlbnRyeSBzdHJ1Y3R1cmVdLAorICAgIFthY19jdl9SVEVOVFJZX1RZUEVdLAorICAgIFsKKyAgICAgICAgIyBCU0QgNC40IGNvbXBhdGlibGUgc3RydWN0dXJlCisgICAgICAgICMgICAgKCdydF9ub2RlcycgYXJyYXkpCisgICAgICAgICMKKyAgICAgICAgQUNfVFJZX0NPTVBJTEUoWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNlbmRpZgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisjZGVmaW5lIEtFUk5FTAorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisjZGVmaW5lIF9LRVJORUwgMQorI2VuZGlmCisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjdW5kZWYgS0VSTkVMCisjdW5kZWYgX0tFUk5FTAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorICAgICAgICBdLFsKKworI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0RTVAorI2RlZmluZSBydF9kc3QgcnRfbm9kZXMtPnJuX2tleQorI2VuZGlmCisKKyAgc3RydWN0IHJ0ZW50cnkgcnQ7IAorICBydC5ydF9ub2Rlc1swXS5ybl9mbGFncyA9IDE7CisgIHJ0LnJ0X2RzdDsKKyAgICAgICAgXSwgYWNfY3ZfUlRFTlRSWV9UWVBFPSJCU0QtNC40IikKKworICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieCI7IHRoZW4KKyAgICAgICAgIyBCU0QgNC4zIGNvbXBhdGlibGUgc3RydWN0dXJlCisgICAgICAgICMgICAgKCdydF9oYXNoJykKKyAgICAgICAgIworICAgICAgICBBQ19UUllfQ09NUElMRShbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQorI2VuZGlmCisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKKyNkZWZpbmUgS0VSTkVMCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKKyNkZWZpbmUgX0tFUk5FTCAxCisjZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyN1bmRlZiBLRVJORUwKKyN1bmRlZiBfS0VSTkVMCisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisgICAgICAgIF0sWworCitzdHJ1Y3QgcnRlbnRyeSBydDsgCitydC5ydF9oYXNoOworICAgICAgICBdLCBhY19jdl9SVEVOVFJZX1RZUEU9IkJTRC00LjMiKQorICAgICAgICBmaQorCisgICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfUlRFTlRSWV9UWVBFIiA9ICJ4IjsgdGhlbgorICAgICAgICAjIE5laXRoZXIgQlNEIDQuMyBub3IgNC40IGNvbXBhdGlibGUgc3RydWN0dXJlCisgICAgICAgICMKKyAgICAgICAgICAgIGFjX2N2X1JURU5UUllfVFlQRT0idW5rbm93biIKKyAgICAgICAgZmkKKyAgICBdKQorCitpZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieEJTRC00LjQiOyB0aGVuCisgICAgQUNfREVGSU5FKFJURU5UUllfNF80LCAxLCBbVXNlIEJTRCA0LjQgcm91dGluZyB0YWJsZSBlbnRyaWVzP10pCitmaQorCisjICAgIENoZWNrIGZvciBvcnRlbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBbHBoYSkKKyMKK2lmIHRlc3QgIngkYWNfY3ZfUlRFTlRSWV9UWVBFIiA9ICJ4dW5rbm93biI7IHRoZW4KKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHN0cnVjdCBydGVudHJ5XSwKKyAgICAgICAgW2FjX2N2X3N0cnVjdF9ydGVudHJ5XSwKKyAgICAgICAgW0FDX0VHUkVQX0NQUChvcnRlbnRyeSwKKyAgICAgICAgICAgIFsKKyNkZWZpbmUgS0VSTkVMCisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgW2FjX2N2X3N0cnVjdF9ydGVudHJ5PW9ydGVudHJ5XSwKKyAgICAgICAgICAgIFthY19jdl9zdHJ1Y3RfcnRlbnRyeT1ydGVudHJ5IF0pCisgICAgICAgIGlmIHRlc3QgIngkYWNfY3Zfc3RydWN0X3J0ZW50cnkiID0gInhydGVudHJ5IiA7IHRoZW4KKyAgICAgICAgICAgICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0icnRlbnRyeSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIGFjX2N2X3N0cnVjdF9ydGVudHJ5PSJvcnRlbnRyeSIKKyAgICAgICAgZmkKKyAgICBdKQorZWxzZQorICAgIFJURU5UUllfVFlQRT0icnRlbnRyeSIKKyAgICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0icnRlbnRyeSIKK2ZpCisKK2lmIHRlc3QgIngkYWNfY3Zfc3RydWN0X3J0ZW50cnkiID0gIngiOyB0aGVuCisgICAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9cnRlbnRyeQorZmkKK0FDX0RFRklORV9VTlFVT1RFRChSVEVOVFJZLHN0cnVjdCAke2FjX2N2X3N0cnVjdF9ydGVudHJ5fSwKKyAgICAgICAgW2RlZmluZSBydGVudHJ5IHRvIG9ydGVudHJ5IG9uIFNZU1YgbWFjaGluZXMgKGFscGhhcyldKQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTFiM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcwpAQCAtMCwwICsxLDIyMCBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciB0eXBlcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgU3RhbmRhcmQgY2hlY2tzOgorIyMKKworQUNfQ0hFQ0tfU0laRU9GKHNob3J0KQorQUNfQ0hFQ0tfU0laRU9GKGludCkKK0FDX0NIRUNLX1NJWkVPRihsb25nKQorQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZykKK0FDX0NIRUNLX1NJWkVPRihpbnRtYXhfdCkKKworQUNfVFlQRV9JTlQ4X1QKK0FDX1RZUEVfSU5UMTZfVAorQUNfVFlQRV9JTlQzMl9UCitBQ19UWVBFX0lOVDY0X1QKK0FDX1RZUEVfSU5UTUFYX1QKK0FDX1RZUEVfVUlOVDhfVAorQUNfVFlQRV9VSU5UMTZfVAorQUNfVFlQRV9VSU5UMzJfVAorQUNfVFlQRV9VSU5UNjRfVAorQUNfVFlQRV9VSU5UTUFYX1QKK0FDX1RZUEVfSU5UUFRSX1QKK0FDX1RZUEVfVUlOVFBUUl9UCisKKyMjCisjICAgT3RoZXIgdHlwZSBjaGVja3M6CisjIworCitBQ19DSEVDS19UWVBFUyhbb2ZmNjRfdF0pCitBQ19DSEVDS19UWVBFUyhbbmZkc190XSwsLFsjaW5jbHVkZSA8c3lzL3BvbGwuaD5dKQorCisjICAgU29sYXJpcyBzcGVjaWZpYyBjaGVja3MKKyMgICAgICAgKHRha2VuIGZyb20gUGVybCdzIGNvbmZpZ3VyZSBzY3JpcHQpCisjCitBQ19DSEVDS19UWVBFUyhbQ291bnRlcjY0XSwsLFsjaW5jbHVkZSA8aW5ldC9taWIyLmg+XSkKK0FDX0NIRUNLX1RZUEVTKFttaWIyX2lwSWZTdGF0c0VudHJ5X3RdLCwsWyNpbmNsdWRlIDxpbmV0L21pYjIuaD5dKQorCisjICAgTi5COiAgVGhlIGFib3ZlIGNoZWNrcyBjb3VsZCBzYWZlbHkgYmUgbW92ZWQgdG8KKyMgICAgICAgICB0aGUgbGF0ZXIgJ2NvbmZpZ190eXBlcycgc3ViLXNjcmlwdAorIworCisKKyMjCisjICAgRGV0ZXJtaW5lIHRoZSBJUHY2IHN0YWNrIHR5cGUKKyMjCisKKyMgICAgICAgVGhlc2UgY2hlY2tzIGFsc28gc2V0IHRoZSBMSUJTL0NGTEFHUyB2YXJpYWJsZXMsCisjICAgICAgIHdoaWNoIG1heSBiZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQgZnVuY3Rpb24gdGVzdHMKKyMKKworaWYgdGVzdCAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KKwl2NnR5cGU9dW5rbm93bgorCXY2bGliPW5vbmUKKwl2NnRyeWxpYmM9bm8KKworCUFDX01TR19DSEVDS0lORyhbW2lwdjYgc3RhY2sgdHlwZV1dKQorCWZvciBpIGluIHY2ZCB0b3NoaWJhIGthbWUgaW5yaWEgemV0YSBsaW51eC1nbGliYyBsaW51eC1pbmV0NiBjeWd3aW4gd2luc29jazIgZ2VuZXJpYzsgZG8KKwkJY2FzZSAkaSBpbgorCQl2NmQpCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8L3Vzci9sb2NhbC92Ni9pbmNsdWRlL3N5cy90eXBlcy5oPgorI2lmZGVmIF9fVjZEX18KK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOyB2NmxpYj12NjsKKwkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKKwkJCQlDRkxBR1M9Ii1JL3Vzci9sb2NhbC92Ni9pbmNsdWRlICRDRkxBR1MiXSkKKwkJCTs7CisJCXRvc2hpYmEpCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaWZkZWYgX1RPU0hJQkFfSU5FVDYKK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOyB2NmxpYj1pbmV0NjsKKwkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCisJCQk7OworCQlrYW1lKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpZmRlZiBfX0tBTUVfXworeWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7IHY2bGliPWluZXQ2OworCQkJCXY2bGliZGlyPS91c3IvbG9jYWwvdjYvbGliOworCQkJCXY2dHJ5bGliYz15ZXM7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorCQkJOzsKKwkJaW5yaWEpCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2lmZGVmIElQVjZfSU5SSUFfVkVSU0lPTgoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7CisJCQkJdjZsaWI9ZHVtbXk7CisJCQkJdjZsaWJkaXI9bm9uZTsKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCXpldGEpCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaWZkZWYgX1pFVEFfTUlOQU1JX0lORVQ2CitBCit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsgdjZsaWI9aW5ldDY7CisJCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorCQkJOzsKKwkJbGludXgtZ2xpYmMpCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSkgfHwgKF9fR0xJQkNfID4gMikpCit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsKKwkJCQl2NmxpYj1kdW1teTsKKwkJCQl2NmxpYmRpcj1ub25lOworCQkJCXY2dHJ5bGliYz15ZXM7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorCQkJOzsKKwkJbGludXgtaW5ldDYpCisJCQlpZiB0ZXN0IC1kIC91c3IvaW5ldDY7IHRoZW4KKwkJCQl2NnR5cGU9JGkKKwkJCQl2NmxpYj1pbmV0NgorCQkJCXY2bGliZGlyPS91c3IvaW5ldDYvbGliCisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyIKKwkJCWZpCisJCQk7OworCQljeWd3aW4pCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2lmZGVmIF9DWUdXSU5fSU42X0gKK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOworCQkJCXY2bGliPWR1bW15OworCQkJCXY2bGliZGlyPW5vbmUKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgOzsKKwkJd2luc29jazIpCisJCQlBQ19FR1JFUF9DUFAoeWVzLCBbCisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNpZiBkZWZpbmVkKF9XUzJUQ1BJUF9IKQoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7CisJCQkJdjZsaWI9ZHVtbXk7CisJCQkJdjZsaWJkaXI9bm9uZQorCQkJCXY2dHJ5bGliYz15ZXM7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorCQkJOzsKKwkJY3lnd2luKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpZmRlZiBfQ1lHV0lOX0lONl9ICit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsKKwkJCQl2NmxpYj1kdW1teTsKKwkJCQl2NmxpYmRpcj1ub25lCisJCQkJdjZ0cnlsaWJjPXllczsKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCisgICAgICAgICAgICAgICAgICAgICAgIDs7CisJCWdlbmVyaWMpCisgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtbcG9zdHBvbmVkXV0pCisJCQlBQ19DSEVDS19NRU1CRVIoW3N0cnVjdCBzb2NrYWRkcl9pbjYuc2luNl9hZGRyXSwsLFsKK0FDX0lOQ0xVREVTX0RFRkFVTFQoKQorWyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCitdXSkKKwkgICAgICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtbaXB2NiBzdGFjayB0eXBlXV0pCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfc3RydWN0X3NvY2thZGRyX2luNl9zaW42X2FkZHIiID0gInh5ZXMiOyB0aGVuCisJCQkJdjZ0eXBlPSRpCisJCQkJdjZsaWI9ZHVtbXkKKwkJCQl2NmxpYmRpcj1ub25lCisJCQkJdjZ0cnlsaWJjPXllcworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorCQkJOzsKKwkJZXNhYworCQlpZiB0ZXN0ICIkdjZ0eXBlIiAhPSAidW5rbm93biI7IHRoZW4KKwkJCWJyZWFrCisJCWZpCisJZG9uZQorCisJaWYgdGVzdCAiJHY2bGliIiAhPSAibm9uZSI7IHRoZW4KKwkJaWYgdGVzdCAtZCAkdjZsaWJkaXIgLWEgLWYgJHY2bGliZGlyL2xpYiR2NmxpYi5hOyB0aGVuCisJCQlMSUJTPSItTCR2NmxpYmRpciAtbCR2NmxpYiAkTElCUyIKKwkJCWVuYWJsZV9pcHY2PSJ5ZXMiCisJCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2LCB1c2luZyBsaWIkdjZsaWIiXSkKKwkJZWxpZiB0ZXN0ICIkdjZ0cnlsaWJjIiA9ICJ5ZXMiOyB0aGVuCisJCQllbmFibGVfaXB2Nj0ieWVzIgorCQkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiwgdXNpbmcgbGliYyJdKQorCQllbHNlCisJCQlBQ19NU0dfRVJST1Iobm8gSVB2NiBsaWJyYXJ5IGxpYiR2NmxpYi5hIGZvdW5kLikKKwkJCWV4aXQgMQorCQlmaQorCWVsc2UKKwkJZW5hYmxlX2lwdjY9Im5vIgorCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2Il0pCisJZmkKK2ZpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFlZmRkMwotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X21hbnVhbApAQCAtMCwwICsxLDE3MCBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjCisjIFByb21wdCBmb3IgdmFyaW91cyBiaXRzIG9mIHVzZXIgaW5mb3JtYXRpb24KKyMKKworaWYgdGVzdCAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEUiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0xPQyIgPSAieCIgLW8gIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfQ09OVEFDVCIgPSAieCIgLW8gIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgPSAieCI7IHRoZW4KK0FDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgdG8gcHJvbXB0IGZvciB2YWx1ZXMsIGFjX2N2X2hhdmVfd2FybmVkLAorWworaWYgdGVzdCAieCRkZWZhdWx0cyIgPSAieG5vIjsgdGhlbgorQUNfTVNHX05PVElDRShbCisKKwkgKioqKioqKioqKioqKiogQ29uZmlndXJhdGlvbiBTZWN0aW9uICoqKioqKioqKioqKioqCisKKwlZb3UgYXJlIGFib3V0IHRvIGJlIHByb21wdGVkIHdpdGggYSBzZXJpZXMgb2YgcXVlc3Rpb25zLiAgQW5zd2VyCit0aGVtIGNhcmVmdWxseSwgYXMgdGhleSBkZXRlcm1pbmUgaG93IHRoZSBTTk1QIGFnZW50IGFuZCByZWxhdGVkCithcHBsaWNhdGlvbnMgYXJlIHRvIGZ1bmN0aW9uLgorCisJQWZ0ZXIgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZmluaXNoZXMsIHlvdSBjYW4gYnJvd3NlIHRoZSBuZXdseQorY3JlYXRlZCBuZXQtc25tcC1jb25maWcuaCBmaWxlIGZvciBmdXJ0aGVyIC0gbGVzcyBpbXBvcnRhbnQgLSBwYXJhbWV0ZXJzIHRvCittb2RpZnkuICBCZSBjYXJlZnVsIGlmIHlvdSByZS1ydW4gY29uZmlndXJlIHRob3VnaCwgc2luY2UgbmV0LXNubXAtY29uZmlnLmggCit3aWxsIGJlIG92ZXJ3cml0dGVuLgorCistUHJlc3MgcmV0dXJuIHRvIGNvbnRpbnVlLQorXSkKKworcmVhZCB0bXBpbnB1dCA8JkFTX09SSUdJTkFMX1NURElOX0ZECithY19jdl9oYXZlX3dhcm5lZD0ieWVzIgorZWxzZQorICBhY19jdl9oYXZlX3dhcm5lZD0ibm8iCitmaQorXSkKK2Vsc2UKKyAgYWNfY3ZfaGF2ZV93YXJuZWQ9InllcyIKK2ZpCisKK01FPWAkV0hPQU1JYAoraWYgdGVzdCAtZiAvZXRjL3Jlc29sdi5jb25mOyB0aGVuCisgIExPQz1gYXdrICcvXmRvbWFpbi97bG9jPSRORn1FTkR7cHJpbnQgbG9jfScgL2V0Yy9yZXNvbHYuY29uZmAKK2ZpCitpZiB0ZXN0ICJ4JExPQyIgPSB4OyB0aGVuCisgIExPQz0iQG5vLndoZXJlIgorZmkKKworQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTixbCisKKyoqKiBEZWZhdWx0IFNOTVAgVmVyc2lvbjoKKworCVN0YXJ0aW5nIHdpdGggTmV0LVNOTVAgNS4wLCB5b3UgY2FuIGNob29zZSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mCit0aGUgU05NUCBwcm90b2NvbCB0byB1c2Ugd2hlbiBubyB2ZXJzaW9uIGlzIGdpdmVuIGV4cGxpY2l0bHkgb24gdGhlCitjb21tYW5kIGxpbmUsIG9yIHZpYSBhbiAnc25tcC5jb25mJyBmaWxlLiAgSW4gdGhlIHBhc3QgdGhpcyB3YXMgc2V0IHRvCitTTk1QdjEsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHRvIHN3aXRjaCB0byBTTk1QdjMgaWYgZGVzaXJlZC4gIFNOTVB2Mword2lsbCBwcm92aWRlIGEgbW9yZSBzZWN1cmUgbWFuYWdlbWVudCBlbnZpcm9ubWVudCAoYW5kIHRodXMgeW91J3JlCitlbmNvdXJhZ2VkIHRvIHN3aXRjaCB0byBTTk1QdjMpLCBidXQgbWF5IGJyZWFrIGV4aXN0aW5nIHNjcmlwdHMgdGhhdAorcmVseSBvbiB0aGUgb2xkIGJlaGF2aW91ci4gIChUaG91Z2ggc3VjaCBzY3JpcHRzIHdpbGwgcHJvYmFibHkgbmVlZCB0bworYmUgY2hhbmdlZCB0byB1c2UgdGhlICctYycgY29tbXVuaXR5IGZsYWcgYW55d2F5LCBhcyB0aGUgU05NUHYxCitjb21tYW5kIGxpbmUgdXNhZ2UgaGFzIGNoYW5nZWQgYXMgd2VsbC4pLgorICAgQXQgdGhpcyBwcm9tcHQgeW91IGNhbiBzZWxlY3QgXCIxXCIsIFwiMlwiIChmb3IgU05NUHYyYyksIG9yIFwiM1wiIGFzCit0aGUgZGVmYXVsdCB2ZXJzaW9uIGZvciB0aGUgY29tbWFuZCB0b29scyAoc25tcGdldCwgLi4uKSB0byB1c2UuICBUaGlzCitjYW4gYWx3YXlzIGJlIG92ZXJyaWRkZW4gYXQgcnVudGltZSB1c2luZyB0aGUgLXYgZmxhZyB0byB0aGUgdG9vbHMsIG9yCitieSB1c2luZyB0aGUgXCJkZWZWZXJzaW9uXCIgdG9rZW4gaW4geW91ciBzbm1wLmNvbmYgZmlsZS4KKyAgIFByb3ZpZGluZyB0aGUgLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uPVwieFwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQord2lsbCBhdm9pZCB0aGlzIHByb21wdC4KKworRGVmYXVsdCB2ZXJzaW9uIG9mIFNOTVAgdG8gdXNlXSwzLHVucXVvdGVkKQorCisjIHdlIHRlc3RlZCB0aGlzIGFib3ZlIGJlZm9yZSB0aGUgcHJvbXB0LCBidXQgdGhlIHByb21wdCBtYXkgZ2l2ZSBhIG5ldyB2YWx1ZS4KK2Nhc2UgIiR7YWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTn0iIGluCisgIFtbMTIzXV0pIDs7CisgIDJjKSBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPTIgOzsKKyAgKikKKyAgICBBQ19NU0dfRVJST1IoW0lsbGVnYWwgdmVyc2lvbiBudW1iZXIuICBPbmx5IDEsIDIgKGZvciBTTk1QdjJjKSBhbmQgMyBhcmUgc3VwcG9ydGVkLl0pCisgICAgOzsKK2VzYWMKKworQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9TWVNfQ09OVEFDVCxbCisKKyoqKiBTeXN0ZW0gQ29udGFjdCBJbmZvcm1hdGlvbjoKKworCURlc2NyaWJlcyB3aG8gc2hvdWxkIGJlIGNvbnRhY3RlZCBhYm91dCB0aGUgaG9zdCB0aGUgYWdlbnQgaXMKK3J1bm5pbmcgb24uICBUaGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgTUlCLUlJIHRyZWUuICBUaGlzCitjYW4gYWxzbyBiZSBvdmVyLXJpZGRlbiB1c2luZyB0aGUgXCJzeXNjb250YWN0XCIgc3ludGF4IGluIHRoZSBhZ2VudCdzCitjb25maWd1cmF0aW9uIGZpbGVzLgorICBQcm92aWRpbmcgdGhlIC0td2l0aC1zeXMtY29udGFjdD1cImNvbnRhY3RcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKK3dpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK1N5c3RlbSBDb250YWN0IEluZm9ybWF0aW9uXSwkTUVAJExPQyxxdW90ZWQpCisKK0FDX1BST01QVF9VU0VSKE5FVFNOTVBfU1lTX0xPQyxbCisKKyoqKiBTeXN0ZW0gTG9jYXRpb246CisKKwlEZXNjcmliZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBzeXN0ZW0uICBUaGlzIGluZm9ybWF0aW9uIGlzCithdmFpbGFibGUgaW4gdGhlIE1JQi1JSSB0cmVlLiAgdGhpcyBjYW4gYWxzbyBiZSBvdmVyLXJpZGRlbiB1c2luZyB0aGUKK1wic3lzbG9jYXRpb25cIiBzeW50YXggaW4gdGhlIGFnZW50J3MgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtc3lzLWxvY2F0aW9uPVwibG9jYXRpb25cIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKK3dpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK1N5c3RlbSBMb2NhdGlvbl0sVW5rbm93bixxdW90ZWQpCisKK2lmIHRlc3QgLWQgL3Zhci9sb2c7IHRoZW4KKyAgZGVmYXVsdGxvZz0iL3Zhci9sb2cvc25tcGQubG9nIgorZWxzZQorICBkZWZhdWx0bG9nPSIvdXNyL2FkbS9zbm1wZC5sb2ciCitmaQorICAKK0FDX1BST01QVF9VU0VSKE5FVFNOTVBfTE9HRklMRSxbCisKKyoqKiBMb2dmaWxlIGxvY2F0aW9uOgorCisJRW50ZXIgdGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIHRoZSBzbm1wZCBhZ2VudCB0byBkdW1wCitpbmZvcm1hdGlvbiAmIGVycm9ycyB0by4gIElmIG5vdCBkZWZpbmVkIChlbnRlciB0aGUga2V5d29yZCBcIm5vbmVcIgorYXQgdGhlIHByb21wdCBiZWxvdykgdGhlIGFnZW50IHdpbGwgdXNlIHN0ZG91dCBhbmQgc3RkZXJyIGluc3RlYWQuCisoTm90ZTogVGhpcyB2YWx1ZSBjYW4gYmUgb3Zlci1yaWRkZW4gdXNpbmcgY29tbWFuZCBsaW5lIG9wdGlvbnMuKQorICBQcm92aWRpbmcgdGhlIC0td2l0aC1sb2dmaWxlPVwicGF0aFwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQord2lsbCBhdm9pZCB0aGlzIHByb21wdC4KKworTG9jYXRpb24gdG8gd3JpdGUgbG9nZmlsZV0sJGRlZmF1bHRsb2cscXVvdGVkKQorCitpZiB0ZXN0IC1kIC92YXI7IHRoZW4KKyAgZGVmYXVsdHN0b3JlPSIvdmFyL25ldC1zbm1wIgorICB1Y2RkZWZhdWx0c3RvcmU9Ii92YXIvdWNkLXNubXAiCitlbHNlCisgIGRlZmF1bHRzdG9yZT0iL2V0Yy9uZXQtc25tcCIKKyAgdWNkZGVmYXVsdHN0b3JlPSIvZXRjL3VjZC1zbm1wIgorZmkKKyAgCitBQ19QUk9NUFRfVVNFUihORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZLFsKKworKioqIHNubXBkIHBlcnNpc3RlbnQgc3RvcmFnZSBsb2NhdGlvbjoKKworCUVudGVyIGEgZGlyZWN0b3J5IGZvciB0aGUgU05NUCBsaWJyYXJ5IHRvIHN0b3JlIHBlcnNpc3RlbnQKK2RhdGEgaW4gdGhlIGZvcm0gb2YgYSBjb25maWd1cmF0aW9uIGZpbGUuICBUaGlzIGRlZmF1bHQgbG9jYXRpb24gaXMKK2RpZmZlcmVudCB0aGFuIHRoZSBvbGQgZGVmYXVsdCBsb2NhdGlvbiAod2hpY2ggd2FzIGZvciB1Y2Qtc25tcCkuICBJZgoreW91IHN0YXkgd2l0aCB0aGUgbmV3IHBhdGgsIEknbGwgYXNrIHlvdSBpbiBhIHNlY29uZCBpZiB5b3Ugd2lzaCB0bworY29weSB5b3VyIGZpbGVzIG92ZXIgdG8gdGhlIG5ldyBsb2NhdGlvbiAob25jZSBvbmx5KS4gIElmIHlvdSBwaWNrCitzb21lIG90aGVyIHBhdGggdGhhbiB0aGUgZGVmYXVsdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGVtIHlvdXJzZWxmLgorVGhlcmUgaXMgbm90aGluZyB3cm9uZyB3aXRoIHBpY2tpbmcgdGhlIG9sZCBwYXRoICgkdWNkZGVmYXVsdHN0b3JlKSBpZgoreW91J2QgcmF0aGVyLgorICBQcm92aWRpbmcgdGhlIC0td2l0aC1wZXJzaXN0ZW50LWRpcmVjdG9yeT1cInBhdGhcIiBwYXJhbWV0ZXIgdG8KKy4vY29uZmlndXJlIHdpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK0xvY2F0aW9uIHRvIHdyaXRlIHBlcnNpc3RlbnQgaW5mb3JtYXRpb25dLCRkZWZhdWx0c3RvcmUscXVvdGVkKQorCitQRVJTSVNURU5UX0RJUkVDVE9SWT0kYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9QRVJTSVNURU5UX0RJUkVDVE9SWQorQUNfU1VCU1QoUEVSU0lTVEVOVF9ESVJFQ1RPUlkpCitVQ0RQRVJTSVNURU5UX0RJUkVDVE9SWT0kdWNkZGVmYXVsdHN0b3JlCitBQ19TVUJTVChVQ0RQRVJTSVNURU5UX0RJUkVDVE9SWSkKKworaWYgdGVzdCAkUEVSU0lTVEVOVF9ESVJFQ1RPUlkgPSAiJGRlZmF1bHRzdG9yZSIgLWEgLWQgIiR1Y2RkZWZhdWx0c3RvcmUiIC1hICEgLWQgIiRkZWZhdWx0c3RvcmUiIDsgdGhlbgorQUNfQ0FDSEVfQ0hFQ0soSWYgd2Ugc2hvdWxkIGNvcHkgdGhlIG9sZCBwZXJzaXN0ZW50IGRpcmVjdG9yeSwgYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTLAorWworQUNfUFJPTVBUX1VTRVJfTk9fREVGSU5FKGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUyxbCisKKyoqKiBDb3B5aW5nIG9sZCB1Y2Qtc25tcCBwZXJzaXN0ZW50IGZpbGVzIHRvIG5ldC1zbm1wIHBlcnNpc3RlbnQgZGlyZWN0b3J5OgorCisJV291bGQgeW91IGxpa2UgdG8gY29weSB0aGUgb2xkZXIgdWNkLXNubXAgcGVyc2lzdGVudCBmaWxlcworaW50byB5b3VyIG5ldyBuZXQtc25tcCBwZXJzaXN0ZW50IGZpbGUgcGF0aD8gIFRoaXMgd2lsbCBmdW5jdGlvbmFsbHkKK3NhdmUgYWxsIHlvdXIgdWNkLXNubXAgZGF0YSBhbmQgbGV0IGl0IGJlIHVzZWQgd2l0aGluIHRoZSBuZXQtc25tcAordG9vbHMuICBUaGlzIHdpbGwgb25seSBiZSBkb25lIG9uY2Ugd2hlbiB5b3UgcnVuIG1ha2UgaW5zdGFsbC4gIElmIHlvdQord2lzaCB0byBkbyB0aGlzLCBlbnRlciAieWVzIiBhdCB0aGUgcHJvbXB0LgorICBQcm92aWRpbmcgdGhlIC0td2l0aC1jb3B5LXBlcnNpc3RlbnQtZmlsZXM9XCJub1wiIChvciBcInllc1wiKQorcGFyYW1ldGVycyB0byAuL2NvbmZpZ3VyZSB3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitDb3B5IHVjZC1zbm1wIGRhdGEgaW50byB0aGUgbmV0LXNubXAgZGF0YSBkaXJlY3RvcnldLCJ5ZXMiKQorXSkKK2Vsc2UKK2FjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUz0ibm8iCitmaQorQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSIkYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTIgorQUNfU1VCU1QoQ09QWV9QRVJTSVNURU5UX0ZJTEVTKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWU4MzY3Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMKQEAgLTAsMCArMSwxMDEgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENvbmZpZ3VyZSBwYXRocworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgUHJlZml4IHBhdGhzOgorIyMKKworIyAgIE1haW4gcHJlZml4CisjCitpZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiOyB0aGVuCisgIHByZWZpeD0vdXNyL2xvY2FsCitmaQorCisjICAgICAgIFByZWZpeCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgKKyMgICAgICAgICAgIGkuZS4gYmVnaW4gd2l0aCAiLyIgICAgICAgICAgICAgICAgICAgICAgICAgKFVuaXgpCisjICAgICAgICAgICAgICAgIG9yICJbQS1aXToiICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXaW5kb3dzKQorIworZmlyc3RjaGFyPWBlY2hvICRwcmVmaXggfCAkU0VEICdzL1woLlwpLiovXDEvJ2AKK2lmIHRlc3QgIngkZmlyc3RjaGFyIiAhPSAieC8iIDsgdGhlbgorICAgc2Vjb25kY2hhcj1gZWNobyAkcHJlZml4IHwgJFNFRCAncy8uXCguXCkuKi9cMS8nYAorICAgaWYgdGVzdCAieCRzZWNvbmRjaGFyIiAhPSAieDoiIDsgdGhlbgorICAgICAgcHJlZml4PWBwd2RgLyRwcmVmaXgKKyAgICAgIGVjaG8gImFkanVzdGluZyBwcmVmaXggdG8gJHByZWZpeCIKKyAgIGZpCitmaQorCisKKyMgICBFeGVjIHByZWZpeAorIworaWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSAieE5PTkUiOyB0aGVuCisgICAgZXhlY19wcmVmaXg9JHByZWZpeAorZmkKKworIyAgICAgICBQcmVmaXggbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoCisjICAgICAgICAgICBpLmUuIGJlZ2luIHdpdGggIi8iICAgICAgICAgICAgICAgICAgICAgICAgIChVbml4KQorIyAgICAgICAgICAgICAgICBvciAiW0EtWl06IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2luZG93cykKKyMKK2ZpcnN0Y2hhcj1gZWNobyAkZXhlY19wcmVmaXggfCAkU0VEICdzL1woLlwpLiovXDEvJ2AKK2lmIHRlc3QgIngkZmlyc3RjaGFyIiAhPSAieC8iIDsgdGhlbgorICAgc2Vjb25kY2hhcj1gZWNobyAkZXhlY19wcmVmaXggfCAkU0VEICdzLy5cKC5cKS4qL1wxLydgCisgICBpZiB0ZXN0ICJ4JHNlY29uZGNoYXIiICE9ICJ4OiIgOyB0aGVuCisgICAgICBleGVjX3ByZWZpeD1gcHdkYC8kZXhlY19wcmVmaXgKKyAgICAgIGVjaG8gImFkanVzdGluZyBleGVjX3ByZWZpeCB0byAkZXhlY19wcmVmaXgiCisgICBmaQorZmkKKworCisjIworIyAgIEVudmlyb25tZW50YWwgdmFyaWFibGVzOgorIyMKKworIyAgICAgICBTTk1QTElCUEFUSAorIworU05NUExJQlBBVEg9IiIKK3RtcHNldD0iJGxpYmRpci9zbm1wIgord2hpbGUgdGVzdCAieCR0bXBzZXQiICE9ICJ4JFNOTVBMSUJQQVRIIjsgZG8KKyAgICBTTk1QTElCUEFUSD0iJHRtcHNldCIKKyAgICBldmFsIHRtcHNldD0iJHRtcHNldCIKK2RvbmUKK0FDX0RFRklORV9VTlFVT1RFRChTTk1QTElCUEFUSCwiJFNOTVBMSUJQQVRIIikKK0FDX1NVQlNUKFNOTVBMSUJQQVRIKQorQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBETE1PRFBBVEgsIiRTTk1QTElCUEFUSC9kbG1vZCIpCisKKyMgICAgICAgU05NUFNIQVJFUEFUSAorIworU05NUFNIQVJFUEFUSD0iIgordG1wc2V0PSIkZGF0YWRpci9zbm1wIgord2hpbGUgdGVzdCAieCR0bXBzZXQiICE9ICJ4JFNOTVBTSEFSRVBBVEgiOyBkbworICAgIFNOTVBTSEFSRVBBVEg9IiR0bXBzZXQiCisgICAgZXZhbCB0bXBzZXQ9IiR0bXBzZXQiCitkb25lCitBQ19ERUZJTkVfVU5RVU9URUQoU05NUFNIQVJFUEFUSCwiJFNOTVBTSEFSRVBBVEgiKQorQUNfU1VCU1QoU05NUFNIQVJFUEFUSCkKKworIyAgICAgICBNSUJESVJTICAgKGRlZmF1bHQpCisjCitpZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIiA9ICJ4IjsgdGhlbgorICAgIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTPSJcJEhPTUUvLnNubXAvbWliczokU05NUFNIQVJFUEFUSC9taWJzIgorICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieGN5Z3dpbiI7IHRoZW4KKyAgICAgICAgIworICAgICAgICAjICAgIFVTZSBXaW5kb3dzLXN0eWxlIHBhdGggc2VwYXJhdG9yCisgICAgICAgIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiIHwgJFNFRCAncy86LzsvZydgCisgICAgZmkKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkRJUlMsIiRORVRTTk1QX0RFRkFVTFRfTUlCRElSUyIpCitmaQorQUNfU1VCU1QoTkVUU05NUF9ERUZBVUxUX01JQkRJUlMpCisKKyMgICAgICAgU05NUENPTkZQQVRICisjCitTTk1QQ09ORlBBVEg9IiIKK3RtcHNldD0iJHN5c2NvbmZkaXIvc25tcCIKK3doaWxlIHRlc3QgIngkdG1wc2V0IiAhPSAieCRTTk1QQ09ORlBBVEgiOyBkbworICAgIFNOTVBDT05GUEFUSD0iJHRtcHNldCIKKyAgICBldmFsIHRtcHNldD0iJHRtcHNldCIKK2RvbmUKK0FDX0RFRklORV9VTlFVT1RFRChTTk1QQ09ORlBBVEgsIiRTTk1QQ09ORlBBVEgiKQorQUNfU1VCU1QoU05NUENPTkZQQVRIKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24gYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTJiNjZmCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KQEAgLTAsMCArMSwzNjIgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjICAgUGVybCAmIFB5dGhvbiBzdXBwb3J0CisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBDaGVjayB3aGV0aGVyIE5ldC1TTk1QIGNvbmZpZ3VyYXRpb24gd2lsbCBzdXBwb3J0IFBlcmwKKyMjCisKKyMgICBJbnB1dHM6CisjICAgICAgIGluc3RhbGxfcGVybDogICB3aGV0aGVyIG9yIG5vdCB0byBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMvbm8vdHJ5ICAgKGkuZS4gJ21heWJlJyAtIHRoZSBkZWZhdWx0KQorIyAgICAgICBlbWJlZF9wZXJsOiAgICAgd2hldGhlciBvciBub3QgdG8gZW1iZWQgUGVybCBzdXBwb3J0IHdpdGhpbiB0aGUgYWdlbnQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMvbm8vdHJ5ICAgKGkuZS4gJ21heWJlJyAtIHRoZSBkZWZhdWx0KQorIworIyAgICAgICBhY19jdl9wYXRoX1BFUkxQUk9HOiAgICBQYXRoIHRvIHBlcmwgYmluYXJ5CisKKworIyAgICAgICBFbWJlZGRlZCBQZXJsIHJlcXVpcmVzIFBlcmwgbW9kdWxlcywgYW5kIHRoZSBwZXJsIGJpbmFyeQorIworaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieG5vIiA7IHRoZW4KKyAgICAgICAgaW5zdGFsbF9wZXJsPSJ0cnkiCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JGFjX2N2X3BhdGhfUEVSTFBST0ciID0gIngiIC1vICJ4JGFjX2N2X3BhdGhfUEVSTFBST0ciID0gInhubyIgOyB0aGVuCisgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgIGZpCitmaQorCisjICAgICAgIFBlcmwgbW9kdWxlcyByZXF1aXJlIHRoZSBwZXJsIGJpbmFyeQorIworaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgIG15cGVybD0kYWNfY3ZfcGF0aF9QRVJMUFJPRworICAgIGlmIHRlc3QgJG15cGVybCA9ICJubyIgOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFDX01TR19FUlJPUigtLWVuYWJsZS1lbWJlZGRlZC1wZXJsIHJlcXVlc3RlZCBidXQgbm8gcGVybCBleGVjdXRhYmxlIGZvdW5kKQorICAgICAgICBmaQorICAgIGZpCitmaQorCisjICAgICAgIFBlcmwgbW9kdWxlcyByZXF1aXJlIHNoYXJlZCBsaWJyYXJpZXMKKyMKK2lmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9zaGFyZWQiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoUGVybCBzdXBwb3J0IHJlcXVpcmVzIC0tZW5hYmxlLXNoYXJlZCkKKyAgICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBQZXJsIG1vZHVsZXMgY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGZyb20gd2l0aGluIHRoZSBzb3VyY2UgdHJlZQorIworaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaWYgd2UgYXJlIGluIHRoZSBzb3VyY2UgdHJlZSBzbyB3ZSBjYW4gaW5zdGFsbCBQZXJsIG1vZHVsZXNdKQorICAgIGlmIHRlc3QgIngkc3JjZGlyIiA9ICJ4LiIgLW8gLWQgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlIDsgdGhlbgorICAgICAgICBBQ19NU0dfUkVTVUxUKFtZZXNdKQorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW05vXSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtQZXJsIG1vZHVsZXMgY2FuIG5vdCBiZSBidWlsdCBvdXRzaWRlIHRoZSBzb3VyY2UgZGlyZWN0b3J5XSkKKyAgICAgICAgZmkKKyAgICBmaQorZmkgICAgICAKKworCisjICAgVGhlIHJlc3Qgb2YgdGhlIFBlcmwtcmVsYXRlZCBjaGVja3MgYXJlbid0IHJlbGV2YW50CisjICAgICAgIGlmIHdlJ3JlIG5vdCB1c2luZyB0aGUgUGVybCBtb2R1bGVzCisjCitpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCisKKworIyMKKyMgICBDaGVjayBjb21waWxlciBjb21wYXRhYmlsaXR5CisjIworCisgICAgIyAgICAgICBXaGF0IGNvbXBpbGVyIHdhcyB1c2VkIHRvIGJ1aWxkIHRoZSBwZXJsIGJpbmFyeT8KKyAgICAjCisgICAgaWYgdGVzdCAieGVuYWJsZV9wZXJsX2NjX2NoZWNrcyIgIT0gInhubyIgOyB0aGVuCisgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgY2NdKQorICAgICAgICBjaGFuZ2VxdW90ZSgsICkKKyAgICAgICAgUEVSTENDPWAkbXlwZXJsIC1WOmNjIHwgJG15cGVybCAtbiAtZSAncHJpbnQgaWYgKHMvXlxzKmNjPS4oWy09XHdcc1wvXSspLjtccyovJDEvKTsnYAorICAgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorICAgICAgICBpZiB0ZXN0ICJ4JFBFUkxDQyIgIT0gIngiIDsgdGhlbgorICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbJFBFUkxDQ10pCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGRldGVybWluZSB0aGUgY29tcGlsZXIgdGhhdCB3YXMgdXNlZCB0byBidWlsZCAkbXlwZXJsLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBwZXJsIGJpbmFyeSBvciB1c2UgLS13aXRob3V0LXBlcmwtbW9kdWxlcyB0byBidWlsZCB3aXRob3V0IFBlcmwuXSkKKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgZmkKKworICAgICMgICAgICAgV2FzIEdDQyB1c2VkIHRvIGJ1aWxkIHRoZSBwZXJsIGJpbmFyeT8KKyAgICAjCisgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJFBFUkxDQyBpcyBhIEdOVSBDIGNvbXBpbGVyXSkKKyAgICAgICAgT0xEQ0M9JENDCisgICAgICAgIENDPSIkUEVSTENDIgorICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbCisgICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW10sIFtbCisjaWZuZGVmIF9fR05VQ19fCisgIGNob2tlIG1lCisjZW5kaWYKKyAgICAgICAgICAgIF1dKV0sIFtwZXJsY2NfaXNfZ251PXllc10sIFtwZXJsY2NfaXNfZ251PW5vXSkKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbJHBlcmxjY19pc19nbnVdKQorICAgICAgICBDQz0kT0xEQ0MKKworICAgICAgICAjICAgICAgIENoZWNrIGNvbXBhdGFiaWxpdHk6ICBHbnUgTmV0LVNOTVAgdnMgTm9uLUdudSBwZXJsCisgICAgICAgICMKKyAgICAgICAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiIC1hICJ4JHBlcmxjY19pc19nbnUiID0gInhubyIgOyB0aGVuCisgICAgICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAJICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgCSAgICBlbHNlCisgICAgICAJICAgICAgICBBQ19NU0dfRVJST1IoW1RoaXMgYnVpbGQgaXMgdXNpbmcgYSBHTlUgQyBjb21waWxlciAoJENDKSB3aGlsZSBQZXJsIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggYSBub24tR05VIChvciBub24td29ya2luZykgY29tcGlsZXIgKCRQRVJMQ0MpLiBUaGlzIGxpa2VseSB3b24ndCB3b3JrIGZvciBidWlsZGluZyB3aXRoIFBlcmwgc3VwcG9ydC4gRWl0aGVyIHNwZWNpZnkgYSBkaWZmZXJlbnQgY29tcGlsZXIgKC0td2l0aC1jYz1QQVRIKSwgZGlzYWJsZSB0aGlzIGNoZWNrICgtLWRpc2FibGUtcGVybC1jYy1jaGVja3MpIG9yIGJ1aWxkIHdpdGhvdXQgUGVybCAoLS13aXRob3V0LXBlcmwtbW9kdWxlcykuXSkKKyAgICAgIAkgICAgZmkKKyAgICAgICAgZmkKKyAgICBmaQorCisgICAgIyAgICAgICBDaGVjayBjb21wYXRhYmlsaXR5OiAgTm9uLUdudSBOZXQtU05NUCB2cyBHbnUgcGVybAorICAgICMKKyAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkR0NDIiAhPSAieHllcyIgLWEgIngkcGVybGNjX2lzX2dudSIgPSAieHllcyIgOyB0aGVuCisgICAgICAJICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICAgIAkgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgICAJICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW1RoaXMgYnVpbGQgaXMgdXNpbmcgYSBub24tR05VIEMgY29tcGlsZXIgKCRDQykgd2hpbGUgUGVybCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGEgR05VIGNvbXBpbGVyICgkUEVSTENDKS4gVGhpcyBsaWtlbHkgd29uJ3Qgd29yayBmb3IgYnVpbGRpbmcgd2l0aCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzcGVjaWZ5IGEgZGlmZmVyZW50IGNvbXBpbGVyICgtLXdpdGgtY2M9UEFUSCksIGRpc2FibGUgdGhpcyBjaGVjayAoLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzKSBvciBidWlsZCB3aXRob3V0IFBlcmwgKC0td2l0aG91dC1wZXJsLW1vZHVsZXMpLl0pCisgICAgICAJICAgIGZpCisgICAgICAgIGZpCisgICAgZmkKKworICAgICMgICAgICAgQXJlIHdlIGNsZWFyIHRvIHByb2NlZWQ/CisgICAgIworICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICAgICAgaW5zdGFsbF9wZXJsPSJ5ZXMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieG5vIiA7IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgICAgZmkKKyAgICBmaQorCisKKyMjCisjICAgRGV0ZXJtaW5lIGNvbXBpbGF0aW9uIGVudmlyb25tZW50IG5lZWRlZCBmb3IgZW1iZWRkZWQgUGVybAorIyMKKworIyAgICAgICBTeXN0ZW0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzCisjCitjYXNlICR0YXJnZXRfb3MgaW4KKyAgICBzb2xhcmlzKikKKyAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgICAgICAgIyAgIENoZWNrIGZvciBMQVJHRUZJTEUgc3VwcG9ydCAgICAgICAgICAgICAgIChTb2xhcmlzKQorICAgICAgICAgICMKKyAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcm9ibGVtYXRpYyBQZXJsIGNjIGZsYWdzIG9uIFN1bnNdKQorICAgICAgICAgIGlmICRteXBlcmwgLVY6Y2NmbGFncyB8ICRHUkVQIExBUkdFRklMRSA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgICAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW1Blcmwgd2FzIGNvbXBpbGVkIHdpdGggTEFSR0VGSUxFIHN1cHBvcnQgd2hpY2ggd2lsbCBicmVhayBOZXQtU05NUC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCisgICAgICAgICAgICBmaQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW25vbmUga25vd25dKQorICAgICAgICAgIGZpCisgICAgICBmaQorICAgIDs7CisKKyAgICAqKQorICAgIDs7Citlc2FjCisKKyMgICAgICAgQ29tcGlsZXIgZmxhZ3MKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBDRkxBR1NdKQorICAgIHBlcmxjZmxhZ3M9YCRteXBlcmwgLU1FeHRVdGlsczo6RW1iZWQgLWUgY2NvcHRzYAorICAgIGlmIHRlc3QgIngkcGVybGNmbGFncyIgIT0gIngiIDsgdGhlbgorICAgICAgQUNfTVNHX1JFU1VMVChbJHBlcmxjZmxhZ3NdKQorICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRwZXJsY2ZsYWdzIgorICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIEMgY29tcGlsZXIgZmxhZ3MgdGhhdCB3ZXJlIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgUGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCisgICAgICBmaQorICAgIGZpCitmaQorCisjICAgICAgIExpbmtlciBmbGFncworIworaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIExERkxBR1NdKQorICAgIG5ldHNubXBfcGVybGxkb3B0cz1gJG15cGVybCAtTUV4dFV0aWxzOjpFbWJlZCAtZSBsZG9wdHNgCisgICAgaWYgdGVzdCAieCRuZXRzbm1wX3BlcmxsZG9wdHMiICE9ICJ4IiA7IHRoZW4KKyAgICAgIEFDX01TR19SRVNVTFQoWyRuZXRzbm1wX3BlcmxsZG9wdHNdKQorICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGxpbmtlciBvcHRpb25zIHRoYXQgd2VyZSB1c2VkIHRvIGJ1aWxkICRteXBlcmwuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IFBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgZmkKKyAgICBmaQorICAgIGlmIHRlc3QgIngkZW5hYmxlX2FzX25lZWRlZCIgIT0gInhubyIgOyB0aGVuCisgICAgICAjICAgSnVzdC1pbi10aW1lIGxpbmtpbmcgd2lsbCBlbWJlZCB0aGUgUGVybCBsaWJyYXJ5IHdpdGhpbgorICAgICAgIyAgICAgICB0aGUgTmV0LVNOTVAgbGlicmFyeSAocmF0aGVyIHRoYW4gdGhlIGFnZW50IGFwcGxpY2F0aW9uKQorICAgICAgIworICAgICAgUEVSTExET1BUU19GT1JfTElCUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKKyAgICAgICMgICBQZXJsIGNjZGxmbGFncyAoUlBBVEggdG8gbGlicGVybCwgaG9wZWZ1bGx5KQorICAgICAgIworICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBDQ0RMRkxBR1NdKQorICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICBuZXRzbm1wX3BlcmxjY2RsZmxhZ3M9YCRteXBlcmwgLVY6Y2NkbGZsYWdzIHwgJG15cGVybCAtbiAtZSAncHJpbnQgJDEgJyJpZiAoL15ccypjY2RsZmxhZ3M9JyhbXiddKyknOy8pOyJgCisgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorICAgICAgQUNfTVNHX1JFU1VMVChbJG5ldHNubXBfcGVybGNjZGxmbGFnc10pCisgICAgICBQRVJMTERPUFRTX0ZPUl9BUFBTPSIkbmV0c25tcF9wZXJsY2NkbGZsYWdzIgorICAgIGVsc2UKKyAgICAgICMgICBPdGhlcndpc2UgZW1iZWQgdGhlIFBlcmwgbGlicmFyeSB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uCisgICAgICAjCisgICAgICBQRVJMTERPUFRTX0ZPUl9MSUJTPSIkbmV0c25tcF9wZXJsbGRvcHRzIgorICAgICAgIyBsaW5rICphcHBsaWNhdGlvbnMqIGFnYWluc3QgbGlicGVybAorICAgICAgUEVSTExET1BUU19GT1JfQVBQUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKKyAgICBmaQorZmkKKworIyAgICAgICAnUGVybF9ldmFsX3B2JyBmdW5jdGlvbiAoYW5kIGVxdWl2YWxlbnRzKQorIworaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICAjICAgVGhyZWUgcG9zc2libGUgdmVyc2lvbnMgb2YgdGhpcyByb3V0aW5lOgorICAgICMgICAgICAgZXZhbF9wdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG8gNS4wMDNfOTdkKQorICAgICMgICAgICAgcGVybF9ldmFsX3B2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNS4wMDQvNS4wMDUpCisgICAgIyAgICAgICBQZXJsX2V2YWxfcHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIDUuNmZmKQorICAgICMKKyAgICBPTERMSUJTPSIkTElCUyIKKyAgICBMSUJTPSIkTElCUyAkbmV0c25tcF9wZXJsbGRvcHRzIgorICAgIEFDX0NIRUNLX0ZVTkNTKGV2YWxfcHYpCisgICAgQUNfQ0hFQ0tfRlVOQyhwZXJsX2V2YWxfcHYsCisgICAgICBBQ19ERUZJTkUoSEFWRV9QRVJMX0VWQUxfUFZfTEMsIDEsCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgdGhlIHBlcmxfZXZhbF9wdicgZnVuY3Rpb24uXSkpCisgICAgQUNfQ0hFQ0tfRlVOQyhQZXJsX2V2YWxfcHYsCisgICAgICBBQ19ERUZJTkUoSEFWRV9QRVJMX0VWQUxfUFZfVUMsIDEsCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYFBlcmxfZXZhbF9wdicgZnVuY3Rpb24uXSkpCisgICAgTElCUz0iJE9MRExJQlMiCisgICAgIworICAgICMgICBOb3RlIHRoYXQgYXV0b2NvbmYgZmxhdHRlbnMgY2FzZSB3aGVuIGRlZmluaW5nIHRva2VucywKKyAgICAjICAgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGxhdHRlciB0d28uCisKKyAgICBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcGVybF9ldmFsX3B2IiAhPSAieHllcyIgLWEgIngkYWNfY3ZfZnVuY19QZXJsX2V2YWxfcHYiICE9ICJ4eWVzIiAtYSAieCRhY19jdl9mdW5jX2V2YWxfcHYiICE9ICJ4eWVzIiA7IHRoZW4KKyAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIHRoZSBldmFsX3B2LCBwZXJsX2V2YWxfcHYgb3IgUGVybF9ldmFsX3B2IGZ1bmN0aW9ucyBuZWVkZWQgZm9yIGVtYmVkZGVkIFBlcmwgc3VwcG9ydC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgICMgICBBY3RpdmF0ZSBFbWJlZGRlZCBQZXJsCisgICAgICAjCisgICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTUJFRERFRF9QRVJMLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQuXSkKKyAgICAgIE9USEVSQUdFTlRMSUJPQkpTPSJzbm1wX3BlcmwubyIKKyAgICAgIE9USEVSQUdFTlRMSUJMT0JKUz0ic25tcF9wZXJsLmxvIgorCisgICAgICBFTUJFRFBFUkxJTlNUQUxMPSJlbWJlZHBlcmxpbnN0YWxsIgorICAgICAgRU1CRURQRVJMVU5JTlNUQUxMPSJlbWJlZHBlcmx1bmluc3RhbGwiCisgICAgICBlbWJlZF9wZXJsPSJ5ZXMiCisgICAgZmkKK2Vsc2UKKyAgICAgIEVNQkVEUEVSTElOU1RBTEw9IiIKKyAgICAgIEVNQkVEUEVSTFVOSU5TVEFMTD0iIgorICAgICAgZW1iZWRfcGVybD0ibm8iCisgICAgZmkKK2ZpCisKKworIyMKKyMgICBSZXBvcnQgYW5kIGNvbmZpZ3VyZSByZXN1bHRzCisjIworCitBQ19TVUJTVChFTUJFRFBFUkxJTlNUQUxMKQorQUNfU1VCU1QoRU1CRURQRVJMVU5JTlNUQUxMKQorQUNfU1VCU1QoUEVSTExET1BUU19GT1JfTElCUykKK0FDX1NVQlNUKFBFUkxMRE9QVFNfRk9SX0FQUFMpCisKKyMgICAgICAgUmVzdWx0cyBvZiBFbWJlZGRlZCBQZXJsIGNoZWNrcworIworQUNfTVNHX0NIRUNLSU5HKFtmb3IgcG90ZW50aWFsIGVtYmVkZGVkIFBlcmwgc3VwcG9ydF0pCitpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4eWVzIiA7IHRoZW4KKyAgQUNfTVNHX0NBQ0hFX0FERChFbWJlZGRlZCBQZXJsIHN1cHBvcnQ6ICAgICAgZGlzYWJsZWQpCisgIEFDX01TR19SRVNVTFQoW2Rpc2FibGVkXSkKK2Vsc2UKKyAgQUNfTVNHX0NBQ0hFX0FERChFbWJlZGRlZCBQZXJsIHN1cHBvcnQ6ICAgICAgZW5hYmxlZCkKKyAgQUNfTVNHX1JFU1VMVChbZW5hYmxlZF0pCitmaQorCisjICAgICAgIFJlc3VsdHMgb2YgUGVybCBNb2R1bGUgY2hlY2tzCisjCitQRVJMVEFSR1M9IiIKK1BFUkxJTlNUQUxMVEFSR1M9IiIKK1BFUkxVTklOU1RBTExUQVJHUz0iIgorQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gaW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzXSkKK2lmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICBQRVJMVEFSR1M9InBlcmxtb2R1bGVzIgorICAgIFBFUkxJTlNUQUxMVEFSR1M9InBlcmxpbnN0YWxsIgorICAgIFBFUkxVTklOU1RBTExUQVJHUz0icGVybHVuaW5zdGFsbCIKKyAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh5ZXMiIDsgdGhlbgorICAgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFBlcmwgbW9kdWxlczogICAgICAgICAgYnVpbGRpbmcgLS0gZW1iZWRkYWJsZSkKKyAgICAgIEFDX01TR19SRVNVTFQoW3llcyAtLSBhbmQgZW1iZWRkYWJsZV0pCisgICAgZWxzZQorICAgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFBlcmwgbW9kdWxlczogICAgICAgICAgYnVpbGRpbmcgLS0gbm90IGVtYmVkZGFibGUpCisgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgLS0gbm90IGVtYmVkZGFibGVdKQorICAgIGZpCitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGRpc2FibGVkKQorZmkKK0FDX1NVQlNUKFBFUkxUQVJHUykKK0FDX1NVQlNUKFBFUkxJTlNUQUxMVEFSR1MpCitBQ19TVUJTVChQRVJMVU5JTlNUQUxMVEFSR1MpCitBQ19TVUJTVChQRVJMQVJHUykKKworCisjICAgICAgIFJlc2V0IExJQlMgdG8gcHJlLWxpYndyYXAgdmFsdWUgICAoPz8/KQorIworQUdFTlRMSUJTPSRMSUJTCitMSUJTPSROT05BR0VOVExJQlMKKworCisKKyMjCisjICAgUHl0aG9uIGNoZWNrcworIyMKKworUFlUSE9OVEFSR1M9IiIKK1BZVEhPTklOU1RBTExUQVJHUz0iIgorUFlUSE9OVU5JTlNUQUxMVEFSR1M9IiIKK1BZVEhPTkNMRUFOVEFSR1M9IiIKK0FDX01TR19DSEVDS0lORyhbaWYgd2Ugc2hvdWxkIGluc3RhbGwgdGhlIHB5dGhvbiBiaW5kaW5nc10pCitpZiB0ZXN0ICJ4JGluc3RhbGxfcHl0aG9uIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICBQWVRIT05UQVJHUz0icHl0aG9ubW9kdWxlcyIKKyAgICBQWVRIT05JTlNUQUxMVEFSR1M9InB5dGhvbmluc3RhbGwiCisgICAgUFlUSE9OVU5JTlNUQUxMVEFSR1M9InB5dGhvbnVuaW5zdGFsbCIKKyAgICBQWVRIT05DTEVBTlRBUkdTPSJweXRob25jbGVhbiIKKyAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBidWlsZGluZyBmb3IgJFBZVEhPTlBST0cpCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2Vsc2UKKyAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBkaXNhYmxlZCkKKyAgICBBQ19NU0dfUkVTVUxUKFtub10pCitmaQorQUNfU1VCU1QoUFlUSE9OVEFSR1MpCitBQ19TVUJTVChQWVRIT05JTlNUQUxMVEFSR1MpCitBQ19TVUJTVChQWVRIT05VTklOU1RBTExUQVJHUykKK0FDX1NVQlNUKFBZVEhPTkNMRUFOVEFSR1MpCitBQ19TVUJTVChQWVRIT05BUkdTKQorCisKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfdHlwZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5Yzg1YQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzCkBAIC0wLDAgKzEsNTcgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgdHlwZXMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFN0YW5kYXJkIGNoZWNrczoKKyMjCisKKyMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KK0FDX1RZUEVfT0ZGX1QKK0FDX1RZUEVfUElEX1QKK0FDX0hFQURFUl9USU1FCisKKworIyMKKyMgICBNb3JlIGNvbXBsZXggY2hlY2tzOgorIyMKKworIyAgIENoZWNrIGZvciAnc29ja2xlbl90JyAgICAgICAgICAgICAgICAgICAgICAgICAgIChIUC1VWCkKKyMKK0FDX0NIRUNLX1RZUEVTKFtzb2NrbGVuX3RdLCwsWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIFNURENfSEVBREVSUworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWZdKQorCisKKyMgICBDaGVjayBmb3IgJ2luX2FkZHJfdCcKKyMgICAgICAgTWF5IGJlIGluIDxuZXRpbmV0L2luLmg+ICAgICAgICAgICAgICAgICAgICAgICAgKEFJWCkKKyMKK0FDX0NIRUNLX1RZUEVTKFtpbl9hZGRyX3RdLCwsWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIFNURENfSEVBREVSUworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWZdKQorCisKKyMgICBDaGVjayBmb3IgJ3NzaXplX3QnCisjICAgICAgIE5vdCBuZWNlc3NhcmlseSBpbiA8c3lzL3R5cGVzLmg+ICAgICAgICAgICAgICAgIChvbGRlciBNaW5HVykKKyMKK0FDX0NIRUNLX1RZUEVTKFtzc2l6ZV90XSwsLFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZl0pCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOTNmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQpAQCAtMCwwICsxLDEwMjQgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjICAgQ29tbWFuZC1saW5lIHByb2Nlc3NpbmcgLSAtLXdpdGgvLS1lbmFibGUKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFN5c3RlbTogQ29tcGlsZXIgc2V0dGluZ3MKKyMjCisKK0FDX0FSR19XSVRIKGNjLCBbCitDb21waWxlciBPcHRpb25zOgorICAtLXdpdGgtY2M9Q0MgICAgICAgICAgICAgICAgICAgIHVzZSBDQyB0byBjb21waWxlIChkZWZhdWx0PWdjYykuXSwKKyAgICBbQ0M9JHdpdGhfY2M7ZXhwb3J0IENDXSkKKworQUNfQVJHX1dJVEgobGlua2NjLCBbCisgIC0td2l0aC1saW5rY2M9Q0MgICAgICAgICAgICAgICAgdXNlIENDIHRvIGxpbmsgKGRlZmF1bHQ9Z2NjKS5dLAorICAgIFtMSU5LQ0M9JHdpdGhfbGlua2NjO2V4cG9ydCBMSU5LQ0NdKQorCitBQ19BUkdfV0lUSChhciwKK1sgIC0td2l0aC1hcj1BUiAgICAgICAgICAgICAgICAgICAgdXNlIEFSIGFzIHRoZSBhcmNoaXZlci5dLAorICAgIFtBUj0kd2l0aF9hcjsgZXhwb3J0IEFSXSkKKworQUNfQVJHX1dJVEgoZW5kaWFubmVzcywKK1sgIC0td2l0aC1lbmRpYW5uZXNzPWJpZ3xsaXR0bGUgICAgZGVmaW5lIGVuZGlhbm5lc3Mgb2YgdGFyZ2V0IHBsYXRmb3JtIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxpbmcuXSwKKyAgICBbaWYgdGVzdCAkd2l0aF9lbmRpYW5uZXNzICE9ICJiaWciIC1hICR3aXRoX2VuZGlhbm5lc3MgIT0gImxpdHRsZSIgOyB0aGVuCisgICAgICAgQUNfTVNHX0VSUk9SKFtFbmRpYW5uZXNzIG11c3QgYmUgYmlnIG9yIGxpdHRsZSwgbm90ICIkd2l0aF9lbmRpYW5uZXNzIi5dKTsKKyAgICAgZmkKK10pCisKK0FDX0FSR19XSVRIKGNmbGFncywKK1sgIC0td2l0aC1jZmxhZ3M9Q0ZMQUdTICAgICAgICAgICAgdXNlIENGTEFHUyBhcyBjb21waWxlIHRpbWUgYXJndW1lbnRzLl0sCisgICAgW0NGTEFHUz0kd2l0aF9jZmxhZ3M7IGV4cG9ydCBDRkxBR1NdKQorCitBQ19BUkdfV0lUSChsZGZsYWdzLAorWyAgLS13aXRoLWxkZmxhZ3M9TERGTEFHUyAgICAgICAgICB1c2UgTERGTEFHUyBhcyBsaW5rIHRpbWUgYXJndW1lbnRzIHRvIGxkLl0sCisgICAgW0xERkxBR1M9JHdpdGhfbGRmbGFnczsgZXhwb3J0IExERkxBR1NdKQorCitBQ19BUkdfRU5BQkxFKGFzLW5lZWRlZCwKK1sgIC0tZGlzYWJsZS1hcy1uZWVkZWQgICAgICAgICAgICAgTGluayBsaWJwZXJsIGFnYWluc3QgYXBwbGljYXRpb25zIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gTmV0LVNOTVAgbGlicmFyaWVzLiBVc2Ugb25seSBpZiB0aGUgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXkgZG9lc24ndCB3b3JrLl0pCisKK0FDX0FSR19XSVRIKGxpYnMsCitbICAtLXdpdGgtbGlicz1MSUJTICAgICAgICAgICAgICAgIHVzZSBMSUJTIGFzIGxpbmsgdGltZSBhcmd1bWVudHMgdG8gbGQuXSwKKyAgICBbTElCUz0kd2l0aF9saWJzOyBleHBvcnQgTElCU10pCisKK0FDX0FSR19FTkFCTEUoc2lsZW50LWxpYnRvb2wsCitbICAtLWVuYWJsZS1zaWxlbnQtbGlidG9vbCAgICAgICAgIFBhc3MgLS1zaWxlbnQgdG8gbGlidG9vbC5dLAorCUxJQlRPT0xGTEFHUz0tLXNpbGVudCkKK0FDX1NVQlNUKExJQlRPT0xGTEFHUykKKworCisjIworIyAgIFN5c3RlbTogTGlicmFyeSBzZXR0aW5ncworIyMKKworTkVUU05NUF9BUkdfV0lUSChkbWFsbG9jLAorICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWRtYWxsb2M9UEFUSF0sCisgICAgICAgICAgICAgICAgW1VzZSBkbWFsbG9jIGxpYnJhcnkgKHd3dy5kbWFsbG9jLmNvbSldKSkKKworTkVUU05NUF9BUkdfV0lUSChlZmVuY2UsCitbICAtLXdpdGgtZWZlbmNlICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGFuZCB1c2UgbGliZWZlbmNlIChtYWxsb2MpLl0sCisgICAgICB1c2VfZWZlbmNlPSIkd2l0aHZhbCIpCisKK3RyeXJzYXJlZj1ubworTkVUU05NUF9BUkdfV0lUSChyc2FyZWYsCitbICAtLXdpdGgtcnNhcmVmPVBBVEggICAgICAgICAgICAgIExvb2sgZm9yIGxpYnJzYXJlZiBpbiBQQVRIL2xpYi5dLAorICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KKyAgICAgIHRyeXJzYXJlZj15ZXMKKyAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgorICAgICAgdHJ5cnNhcmVmPW5vCisgICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KKyAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKKyAgICAgIHRyeXJzYXJlZj15ZXMKKyAgICBmaSwKKykKKwordHJ5b3BlbnNzbD1kZWZhdWx0eWVzCithc2tlZG9wZW5zc2w9bm8KK05FVFNOTVBfQVJHX1dJVEgob3BlbnNzbCwKK1sgIC0td2l0aC1vcGVuc3NsPVBBVEggICAgICAgICAgICAgTG9vayBmb3Igb3BlbnNzbCBpbiBQQVRIL2xpYi5dLAorICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KKyAgICAgIHRyeW9wZW5zc2w9eWVzCisgICAgICBhc2tlZG9wZW5zc2w9eWVzCisgICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KKyAgICAgIHRyeW9wZW5zc2w9bm8KKyAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgorICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCR3aXRodmFsKQorICAgICAgdHJ5b3BlbnNzbD15ZXMKKyAgICAgIGFza2Vkb3BlbnNzbD15ZXMKKyAgICBmaSwKKykKK2lmIHRlc3QgIngkdHJ5b3BlbnNzbCIgPSAieGRlZmF1bHR5ZXMiOyB0aGVuCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoL3Vzci9sb2NhbC9zc2wpCisgICAgICB0cnlvcGVuc3NsPXllcworZmkKK0FDX0FSR19XSVRIKFtzc2xdLCxORVRTTk1QX0lOVkFMSURfV0lUSChbb3BlbnNzbF0pKQorQUNfQVJHX0VOQUJMRShbc3NsXSwsTkVUU05NUF9JTlZBTElEX1dJVEgoW29wZW5zc2xdKSkKKworYXNrZWRwa2NzPW5vCitORVRTTk1QX0FSR19XSVRIKHBrY3MsCitbICAtLXdpdGgtcGtjcz1QQVRIICAgICAgICAgICAgICAgIExvb2sgZm9yIHBrY3MxMSBpbiBQQVRIL2xpYi5dLAorICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KKyAgICAgIGFza2VkcGtjcz15ZXMKKyAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgorICAgICAgYXNrZWRwa2NzPW5vCisgICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KKyAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKKyAgICAgIGFza2VkcGtjcz15ZXMKKyAgICBmaSwKKykKKwordHJ5a3JiNT1kZWZhdWx0eWVzCithc2tlZGtyYjU9bm8KK05FVFNOTVBfQVJHX1dJVEgoa3JiNSwKK1sgIC0td2l0aC1rcmI1PVBBVEggICAgICAgICAgICAgICAgTG9vayBmb3Iga3JiNSBpbiBQQVRIL2xpYi5dLAorICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KKyAgICAgIHRyeWtyYjU9eWVzCisgICAgICBhc2tlZGtyYjU9eWVzCisgICAgICBrcmI1cGF0aD11bmRlZgorICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCisgICAgICB0cnlrcmI1PW5vCisgICAgICBrcmI1cGF0aD11bmRlZgorICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCisgICAgICB0cnlrcmI1PXllcworICAgICAgYXNrZWRrcmI1PXllcworICAgICAga3JiNXBhdGg9JHdpdGh2YWwKKyAgICBmaSwKKykKK2lmIHRlc3QgIngkdHJ5a3JiNSIgPSAieGRlZmF1bHR5ZXMiOyB0aGVuCisgICAgICB0cnlrcmI1PXllcworICAgICAga3JiNXBhdGg9L3Vzci9rZXJiZXJvcworZmkKKworTkVUU05NUF9BUkdfV0lUSChycG0sCitbICAtLXdpdGhvdXQtcnBtICAgICAgICAgICAgICAgICAgIERvbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhlIFJQTSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBzeXN0ZW0gd2hlbiBidWlsZGluZyB0aGUgaG9zdCBNSUIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuXSkKKworCisjIworIyAgIFByb2plY3Q6IEJ1aWxkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MKKyMjCisKKyMgICAgICAgSW5zdGFsbCBwcmVmaXgKKyMKK0FDX0FSR19XSVRIKGluc3RhbGwtcHJlZml4LAorWyAgLS13aXRoLWluc3RhbGwtcHJlZml4PVBBVEggICAgICBKdXN0IGZvciBpbnN0YWxsaW5nLCBwcmVmaXggYWxsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHdpdGggUEFUSC4gIFRoaXMgaXMga25vd24gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gd29yayBvbiBzb21lIHN5c3RlbXMgd2l0aCBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgKGVnLCBIUFVYKV0sCisgICAgICBJTlNUQUxMX1BSRUZJWD0iJHdpdGh2YWwiKQorCitpZiB0ZXN0ICJ4JElOU1RBTExfUFJFRklYIiA9ICJ4eWVzIiA7IHRoZW4KKyAgQUNfTVNHX0VSUk9SKFstLXdpdGgtaW5zdGFsbC1wcmVmaXggcmVxdWlyZXMgYW4gYXJndW1lbnRdKQorZmkKK2lmIHRlc3QgIngkSU5TVEFMTF9QUkVGSVgiID0gInhubyIgOyB0aGVuCisgIElOU1RBTExfUFJFRklYPSIiCitmaQorQUNfU1VCU1QoSU5TVEFMTF9QUkVGSVgpCisKKworIyAgIAorIyAgIFN1YnN5c3RlbXMgdG8gYnVpbGQ6CisjICAgICAgIEFnZW50CisjCitORVRTTk1QX0FSR19FTkFCTEUoYWdlbnQsCitbICAtLWRpc2FibGUtYWdlbnQgICAgICAgICAgICAgICAgIERvIG5vdCBidWlsZCB0aGUgYWdlbnQgKHNubXBkKS5dKQoraWYgdGVzdCAieCRlbmFibGVfYWdlbnQiICE9ICJ4bm8iOyB0aGVuCisgICBTTk1QRD0nc25tcGQkKEVYRUVYVCknCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIGFnZW50IgorICAgVFJBUExJQlM9JyQoVFJBUERXSVRIQUdFTlQpJworICAgVVNFVFJBUExJQlM9JyQoVVNFQUdFTlRMSUJTKScKK2Vsc2UKKyAgIFNOTVBEPSIiCisgICAjIHdlIHN0aWxsIG5lZWQvd2FudCB0aGUgYWdlbnRsaWJzIChmb3Igc3ViYWdlbnRzLCBlLmcuIHNubXB0cmFwZCkKKyAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYWdlbnQiCisgICAjIGJ1aWxkaW5nIHNubXB0cmFwZCB3L28gYWdlbnRsaWJzIGRvZXNuJ3Qgd29yayBhdG0KKyAgICNUUkFQTElCUz0nJChUUkFQRFdJVEhPVVRBR0VOVCknCisgICAjVVNFVFJBUExJQlM9JyQoVVNFTElCUyknCisgICBUUkFQTElCUz0nJChUUkFQRFdJVEhBR0VOVCknCisgICBVU0VUUkFQTElCUz0nJChVU0VBR0VOVExJQlMpJworZmkKK0FDX1NVQlNUKFNOTVBEKQorQUNfU1VCU1QoVFJBUExJQlMpCitBQ19TVUJTVChVU0VUUkFQTElCUykKKworIyAgICAgICBBcHBsaWNhdGlvbnMKKyMKK05FVFNOTVBfQVJHX0VOQUJMRShhcHBsaWNhdGlvbnMsCitbICAtLWRpc2FibGUtYXBwbGljYXRpb25zICAgICAgICAgIERvIG5vdCBidWlsZCB0aGUgYXBwcyAoc25tcGdldCwgLi4uKS5dKQoraWYgdGVzdCAieCRlbmFibGVfYXBwbGljYXRpb25zIiAhPSAieG5vIjsgdGhlbgorICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhcHBzIgorZmkKKworIyAgICAgICBNYW51YWwgcGFnZXMKKyMKK05FVFNOTVBfQVJHX0VOQUJMRShtYW51YWxzLAorWyAgLS1kaXNhYmxlLW1hbnVhbHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWFudWFscy5dKQoraWYgdGVzdCAieCRlbmFibGVfbWFudWFscyIgIT0gInhubyI7IHRoZW4KKyAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgbWFuIgorZmkKKworIyAgICAgICBTdXBwb3J0aW5nIHNjcmlwdHMKKyMKK05FVFNOTVBfQVJHX0VOQUJMRShzY3JpcHRzLAorWyAgLS1kaXNhYmxlLXNjcmlwdHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgc2NyaXB0cyAobWliMmMsIC4uLikuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3NjcmlwdHMiICE9ICJ4bm8iOyB0aGVuCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIGxvY2FsIgorZmkKKworIyAgICAgICBNSUIgZmlsZXMKKyMKK0FDX0FSR19FTkFCTEUobWlicywKK1sgIC0tZGlzYWJsZS1taWJzICAgICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgdGhlIG1pYiBmaWxlcy5dKQoraWYgdGVzdCAieCRlbmFibGVfbWlicyIgIT0gInhubyI7IHRoZW4KKyAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgbWlicyIKK2ZpCisjIHdpdGgtbWlicyBpcyB2YWxpZCB0b28sIGJ1dCBtZWFucyBzb21ldGhpbmcgZWxzZQorCitBQ19TVUJTVChNQUlOU1VCUykKK0FDX01TR19DSEVDS0lORyhbd2hhdCB0byBidWlsZCBhbmQgaW5zdGFsbF0pCitBQ19NU0dfUkVTVUxUKFskTUFJTlNVQlNdKQorCisKKyMgICAgICAgTUlCIG1vZHVsZSB2YWxpZGF0aW9uIChkdXJpbmcgImNvbmZpZ3VyZSIpCisjCitORVRTTk1QX0FSR19FTkFCTEUobWliLWNvbmZpZy1jaGVja2luZywKK1sgIC0tZW5hYmxlLW1pYi1jb25maWctY2hlY2tpbmcgICAgVHVybnMgb24gZXh0cmEgY2hlY2tzIGR1cmluZyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgbWliIG1vZHVsZXMuIEFueSBjb25mbGljdHMgd2lsbCBjYXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSB0byBhYm9ydCAoZGVmYXVsdCBpcyB0byBpc3N1ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyBhbmQgY29udGludWUuKV0sCisgIFtpZiB0ZXN0ICIkZW5hYmxldmFsIiA9IHllcyAtbyAiJGVuYWJsZXZhbCIgPSBubyA7IHRoZW4KKyAgICAgd2l0aF9taWJfY2ZnX2NoZWNrcz0iJGVuYWJsZXZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1taWItY29uZmlnLWNoZWNraW5nXSkKKyAgIGZpXSwKKyAgW3dpdGhfbWliX2NmZ19jaGVja3M9Im5vIl0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShtaWItY29uZmlnLWRlYnVnLAorWyAgLS1lbmFibGUtbWliLWNvbmZpZy1kZWJ1ZyAgICAgICBUdXJucyBvbiB2ZXJib3NlIG91dHB1dCBkdXJpbmcgbWliIG1vZHVsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBwcm9jZXNzaW5nLl0sCisgIFtpZiB0ZXN0ICIkZW5hYmxldmFsIiA9IHllcyAtbyAiJGVuYWJsZXZhbCIgPSBubyA7IHRoZW4KKyAgICAgd2l0aF9taWJfY2ZnX2RlYnVnPSIkZW5hYmxldmFsIgorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS1lbmFibGUvLS1kaXNhYmxlLW1pYi1jb25maWctZGVidWddKQorICAgZmldLAorICBbd2l0aF9taWJfY2ZnX2RlYnVnPSJubyJdKQorCisKKyMgICAgICAgVmVyc2lvbi1zcGVjaWZpYyBmZWF0dXJlcworIworQUNfQVJHX0VOQUJMRShbbmV3LWZlYXR1cmVzXSwKKyAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1uZXctZmVhdHVyZXNdLAorICAgICAgICAgICAgICAgIFtDb21waWxlIGluIG5ldyBNSUIgbW9kdWxlcyBhbmQgb3RoZXIgZXhwZXJpbWVudGFsIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkdWUgdG8gYmUgaW5jbHVkZWQgaW4gZnV0dXJlIHJlbGVhc2VzLl0pXSkKKworQUNfQVJHX0VOQUJMRShbb2xkLWZlYXR1cmVzXSwKKyAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1vbGQtZmVhdHVyZXNdLAorICAgICAgICAgICAgICAgIFtDb21waWxlIGluIG9sZCBNSUIgbW9kdWxlcyBhbmQgb3RoZXIgZGVwcmVjYXRlZCBmZWF0dXJlcworICAgICAgICAgICAgICAgICB3aGljaCB3ZXJlIHJlcGxhY2VkIGluIHRoZSBkZWZhdWx0IGJ1aWxkIG9mIHRoaXMgcmVsZWFzZS5dKV0pCisKK0FDX0FSR19XSVRIKFtmZWF0dXJlcy1vZl0sCisgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWZlYXR1cmVzLW9mPXZlcnNpb25dLAorICAgICAgICAgICAgICAgIFtDb21waWxlIGluIE1JQiBtb2R1bGVzIGFuZCBvdGhlciBmZWF0dXJlcyBhcyBpZiB0aGlzIHdhcworICAgICAgICAgICAgICAgICByZWxlYXNlICJ2ZXJzaW9uIiAoZGVmYXVsdCBpcyBdQUNfUEFDS0FHRV9WRVJTSU9OWykuXSldLCwKKyAgICAgICAgW3dpdGhfZmVhdHVyZXNfb2Y9JFBBQ0tBR0VfVkVSU0lPTl0pCisgICAKKworIyAgICAgICBNYW51YWwgcHJvbXB0aW5nIGR1cmluZyAiY29uZmlndXJlIgorIworTkVUU05NUF9BUkdfV0lUSChkZWZhdWx0cywKK1sKK01pc2NlbGxhbmVvdXM6CisgIC0td2l0aC1kZWZhdWx0cyAgICAgICAgIFVzZSBkZWZhdWx0cyBmb3IgcHJvbXB0ZWQgdmFsdWVzLl0sCisgIFtpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXMgLW8gIiR3aXRodmFsIiA9IG5vIDsgdGhlbgorICAgICBkZWZhdWx0cz0iJHdpdGh2YWwiCisgICBlbHNlCisgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHVzZSAtLXdpdGgvLS13aXRob3V0LWRlZmF1bHRzXSkKKyAgIGZpXSwKKyAgW2RlZmF1bHRzPSJubyJdKQorCisKKyMgICAgICAgVUNEIGNvbXBhdGFiaWxpdHkKKyMKK05FVFNOTVBfQVJHX0VOQUJMRSh1Y2Qtc25tcC1jb21wYXRpYmlsaXR5LAorWyAgLS1lbmFibGUtdWNkLXNubXAtY29tcGF0aWJpbGl0eSBJbnN0YWxsIHVjZC1zbm1wIGxvb2stYWxpa2UgaGVhZGVycyBhbmQgbGlicy4KK10pCisKK2lmIHRlc3QgIngkZW5hYmxlX3VjZF9zbm1wX2NvbXBhdGliaWxpdHkiID0gInh5ZXMiIDsgdGhlbgkKKyAgaW5zdGFsbHVjZGhlYWRlcnM9aW5zdGFsbHVjZGhlYWRlcnMKKyAgaW5zdGFsbHVjZGxpYnM9aW5zdGFsbHVjZGxpYnMKKyAgQUNfTVNHX0NBQ0hFX0FERChVQ0QtU05NUCBjb21wYXRhYmlsaXR5OiAgICAgZW5hYmxlZCkKK2ZpCitBQ19TVUJTVChpbnN0YWxsdWNkaGVhZGVycykKK0FDX1NVQlNUKGluc3RhbGx1Y2RsaWJzKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogTUlCIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX0VOQUJMRShtaWItbG9hZGluZywKK1sgIC0tZGlzYWJsZS1taWItbG9hZGluZyAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IHBhcnNlcyBhbmQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaXB1bGF0ZXMgdGhlIG1pYiBmaWxlcy5dKQoraWYgdGVzdCAieCRlbmFibGVfbWliX2xvYWRpbmciID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkddLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgbWliIGxvYWRpbmcgYW5kIHBhcnNpbmcgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkXSkKK2ZpCisKK05FVFNOTVBfQVJHX1dJVEgobWliZGlycywKK1sgIC0td2l0aC1taWJkaXJzPSJkaXIxOmRpcjI6IiAgIERlZmF1bHQgZGlyZWN0b3JpZXMgdG8gbG9vayBmb3IgbWlicy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogXCRIT01FLy5zbm1wL21pYnM6REFUQURJUi9zbm1wL21pYnMpXSwKKyAgICBbTkVUU05NUF9ERUZBVUxUX01JQkRJUlM9IiR3aXRoX21pYmRpcnMiCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTLCIkd2l0aF9taWJkaXJzIiwKKyAgICAgICAgW2RlZmF1bHQgbG9jYXRpb24gdG8gbG9vayBmb3IgbWlicyB0byBsb2FkIHVzaW5nIHRoZSBhYm92ZSB0b2tlbnMKKyAgICAgICAgIGFuZC9vciB0aG9zZSBpbiB0aGUgTUlCUyBlbnZyaW9ubWVudCB2YXJpYWJsZV0pXSkKKworQUNfQVJHX1dJVEgobWlicywKK1sgIC0td2l0aC1taWJzPSJpdGVtMTppdGVtMjoiICAgIERlZmF1bHQgbWliIElEcyB0byByZWFkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUaGUgZGVmYXVsdCBsaXN0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGFkZGl0aW9uIG9mIGFueSBtaWJzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgbWliIG1vZHVsZXMgdGhlIGFnZW50IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCB3aXRoKV0sCisgICAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiR3aXRoX21pYnMiKQorIyBlbmFibGUtbWlicyBpcyB2YWxpZCB0b28sIGJ1dCBtZWFucyBzb21ldGhpbmcgZWxzZQorCitORVRTTk1QX0FSR19XSVRIKG1pYmZpbGVzLAorWyAgLS13aXRoLW1pYmZpbGVzPSJmaWxlMTpmaWxlMiIgRGVmYXVsdCBtaWIgZmlsZXMgdG8gbG9hZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogIG5vbmUuICB1c2VzIElEcyBhYm92ZSBpbnN0ZWFkLildLAorICAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRklMRVMsIiR3aXRoX21pYmZpbGVzIiwKKyAgICAgICAgW2RlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLl0pKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogU2VjdXJpdHkgY29uZmlndXJhdGlvbgorIyMKKworTkVUU05NUF9BUkdfRU5BQkxFKGRlcywKK1sgIC0tZGlzYWJsZS1kZXMgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgREVTIGVuY3J5cHRpb24uXSkKK2lmIHRlc3QgIngkZW5hYmxlX2RlcyIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9ERVNdLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgREVTIGVuY3J5cHRpb24gc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWRdKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKHByaXZhY3ksCitbICAtLWRpc2FibGUtcHJpdmFjeSAgICAgICAgICAgICAgIERvbid0IGNvbXBpbGUgaW4gc3VwcG9ydCBmb3IgcHJpdmFjeSAoZW5jcnlwdGlvbikuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3ByaXZhY3kiICE9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJViwgMSwKKyAgICBbZGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgc3VwcG9ydCBmb3IgYm90aCBhdXRoZW50aWNhdGlvbiBhbmQKKyAgICAgcHJpdmFjeSBzdXBwb3J0Ll0pCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUobWQ1LAorWyAgLS1kaXNhYmxlLW1kNSAgICAgICAgICAgICAgICAgICBEbyBub3Qgc3VwcG9ydCBNRDUgYXV0aGVudGljYXRpb24uXSkKK2lmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9NRDVdLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgTUQ1IGF1dGhlbnRpY2F0aW9uIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkXSkKK2ZpCisKK05FVFNOTVBfQVJHX0VOQUJMRShpbnRlcm5hbC1tZDUsCitbICAtLWVuYWJsZS1pbnRlcm5hbC1tZDUgICAgICAgICAgIFVzZSB0aGUgaW50ZXJuYWwgTUQ1IHN1cHBvcnQuXSkKK2lmIHRlc3QgIngkZW5hYmxlX2ludGVybmFsX21kNSIgPSAieHllcyI7IHRoZW4KKyAgaWYgdGVzdCAieCRlbmFibGVfbWQ1IiA9ICJ4bm8iOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFlvdSBjYW4gbm90IHNwZWNpZnkgYm90aCAtLWVuYWJsZS1pbnRlcm5hbC1tZDUgYW5kIC0tZGlzYWJsZS1tZDUpCisgIGVsc2UKKyAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1LCAxLAorICAgICAgW2RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi5dKQorICBmaQorZmkKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IE1pc2MgY29uZmlndXJhdGlvbgorIyMKKworTkVUU05NUF9BUkdfV0lUSChvcGFxdWUtc3BlY2lhbC10eXBlcywKK1sgIC0td2l0aG91dC1vcGFxdWUtc3BlY2lhbC10eXBlcyAgRG9uJ3QgdXNlIHNwZWNpYWwgb3BhcXVlIGVuY29kaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QIG5vcm1hbGx5IGNhbm5vdCBoYW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZyBudW1iZXJzLCBub3IgbGFyZ2UgNjQgYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdlcnMgd2VsbC4gIEJ5IGRlZmF1bHQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC1zbm1wIHBhY2thZ2UgY29tcGlsZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGVzZSBleHRyYSBkYXRhdHlwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4gYSBsZWdhbCB3YXkpXSkKKyMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuCitpZiB0ZXN0ICJ4JHdpdGhfb3BhcXVlX3NwZWNpYWxfdHlwZXMiICE9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMsIDEsCisgICAgW1Nob3VsZCB3ZSBjb21waWxlIHRvIHVzZSBzcGVjaWFsIG9wYXF1ZSB0eXBlczogZmxvYXQsIGRvdWJsZSwgY291bnRlcjY0LAorICAgICBpNjQsIHVpNjQsIHVuaW9uP10pCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUoaXB2NiwKK1sgIC0tZW5hYmxlLWlwdjYgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgSVB2NiByZWFkeSB2ZXJzaW9uLl0sCisgICAgW2lmIHRlc3QgIngkZW5hYmxlX2lwdjYiID0gInh5ZXMiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfSVBWNiwgMSwKKyAgICAgICAgW2RlZmluZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgSVB2NiBzdXBwb3J0XSkKKyAgICBmaV0pCisKK05FVFNOTVBfQVJHX1dJVEgobG9nZmlsZSwKK1sgIC0td2l0aC1sb2dmaWxlPSJsb2NhdGlvbiIgICAgICAgRGVmYXVsdCBsb2cgZmlsZSBsb2NhdGlvbiBmb3Igc25tcGQuXSwKKyAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEU9IiR3aXRoX2xvZ2ZpbGUiKQoraWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRSIgPSAibm8iOyB0aGVuCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFPSJub25lIgorZmkKKworTkVUU05NUF9BUkdfV0lUSChwZXJzaXN0ZW50LWRpcmVjdG9yeSwKK1sgIC0td2l0aC1wZXJzaXN0ZW50LWRpcmVjdG9yeT0iZGlyZWN0b3J5IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgZGlyZWN0b3J5IGZvciBwZXJzaXN0ZW50IGRhdGEgc3RvcmFnZS5dLGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlk9IiR3aXRoX3BlcnNpc3RlbnRfZGlyZWN0b3J5IikKKworTkVUU05NUF9BUkdfV0lUSChwZXJzaXN0ZW50LW1hc2ssCitbICAtLXdpdGgtcGVyc2lzdGVudC1tYXNrPSJtYXNrIiAgRGVmYXVsdCBtYXNrIGZvciBwZXJzaXN0ZW50IGRhdGEgc3RvcmFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogMDc3KV0sCisgIFtpZiB0ZXN0IFtgZXhwciAiWCR3aXRodmFsIiA6ICdYWzAtN10qJCdgXSAtZXEgNCA7IHRoZW4KKyAgICAgQUNfTVNHX1JFU1VMVChbdXNpbmcgcGVyc2lzdGVudCBtYXNrICR3aXRodmFsXSkKKyAgICAgd2l0aHZhbD0iMCR3aXRodmFsIgorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSBwcm92aWRlIGEgdGhyZWUgZGlnaXQgb2N0YWwgcGVyc2lzdGVudCBtYXNrIHZhbHVlXSkKKyAgIGZpXSwKKyAgW3dpdGh2YWw9MDc3CisgICBBQ19NU0dfUkVTVUxUKFt1c2luZyBkZWZhdWx0IHBlcnNpc3RlbnQgbWFzayAkd2l0aHZhbF0pXSkKK0FDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1BFUlNJU1RFTlRfTUFTSywkd2l0aHZhbCwKKyAgIFt1bWFzayBwZXJtaXNzaW9ucyB0byBzZXQgdXAgcGVyc2lzdGVudCBmaWxlcyB3aXRoXSkKKworTkVUU05NUF9BUkdfV0lUSChjb3B5X3BlcnNpc3RlbnRfZmlsZXMsCitbICAtLXdpdGgtY29weS1wZXJzaXN0ZW50LWZpbGVzPSJubyIgRG9uJ3QgY29weSBwZXJzaXN0ZW50IGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHVzZSAieWVzIiB0byBjb3B5IHRoZW0pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiB5ZXMpXSwKKyAgICBhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVM9IiR3aXRoX2NvcHlfcGVyc2lzdGVudF9maWxlcyIpCisKK2RlZmF1bHRfdGVtcF9maWxlX3BhdHRlcm49Ii90bXAvc25tcGRYWFhYWFgiCitORVRTTk1QX0FSR19XSVRIKHRlbXAtZmlsZS1wYXR0ZXJuLAorWyAgLS13aXRoLXRlbXAtZmlsZS1wYXR0ZXJuPVBBVFRFUk4gIFBhdHRlcm4gb2YgdGVtcG9yYXJ5IGZpbGVzIChEZWZhdWx0OiAvdG1wL3NubXBkWFhYWFhYKV0sCisgIFtpZiB0ZXN0IGBleHByICJYJHdpdGh2YWwiIDogIi4qWFhYWFhYJCJgIC1uZSAwIDsgdGhlbgorICAgICBBQ19NU0dfUkVTVUxUKHVzaW5nIHRlbXBvcmFyeSBmaWxlIHBhdHRlcm4gJHdpdGh2YWwpCisgICBlbHNlCisgICAgIEFDX01TR19FUlJPUihbdGVtcG9yYXJ5IGZpbGUgcGF0dGVucyBtdXN0IGVuZCB3aXRoIDYgWCdzXSkKKyAgIGZpXSwKKyAgW3dpdGh2YWw9IiRkZWZhdWx0X3RlbXBfZmlsZV9wYXR0ZXJuIgorICAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IHRlbXBvcmFyeSBmaWxlIHBhdHRlcm4gJHdpdGh2YWwpXSkKK0FDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOLCIkd2l0aHZhbCIsCisgIFtQYXR0ZXJuIG9mIHRlbXBvcmFyeSBmaWxlc10pCisKKworIyMKKyMgICBQcm9qZWN0OiBMaWJyYXJ5OiBWZXJzaW9uIGNvbmZpZ3VyYXRpb24KKyMjCisKK1NOTVBfVkVSU0lPTlM9IiIKK05FVFNOTVBfQVJHX0VOQUJMRShzbm1wdjEsCitbICAtLWRpc2FibGUtc25tcHYxICAgICAgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGNvZGUgdGhhdCBpbXBsZW1lbnRzIFNOTVB2MS5dKQoraWYgdGVzdCAieCRlbmFibGVfc25tcHYxIiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NOTVBWMV0sIDEsIAorICAgICAgICAgICAgW0RlZmluZSBpZiBTTk1QdjEgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkXSkKK2Vsc2UKKyAgU05NUF9WRVJTSU9OUz0iJFNOTVBfVkVSU0lPTlMgMSIKK2ZpCisKK05FVFNOTVBfQVJHX0VOQUJMRShzbm1wdjJjLAorWyAgLS1kaXNhYmxlLXNubXB2MmMgICAgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgaW1wbGVtZW50cyBTTk1QdjJjLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdjJjIiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NOTVBWMkNdLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUHYyYyBjb2RlIHNob3VsZCBub3QgYmUgaW5jbHVkZWRdKQorZWxzZQorICBTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAyYyIKK2ZpCisKK1NOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDMiCitBQ19NU0dfQ0FDSEVfQUREKFNOTVAgVmVyc2lvbnMgU3VwcG9ydGVkOiAgICRTTk1QX1ZFUlNJT05TKQorCitORVRTTk1QX0FSR19XSVRIKGRlZmF1bHQtc25tcC12ZXJzaW9uLAorWyAgLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uPSIzIiBEZWZhdWx0IHZlcnNpb24gb2YgU05NUCB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZ2FsIHZhbHVlczogMSwgMiAoZm9yIFNOTVB2MmMpIG9yIDMuXSwKKyAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPSIkd2l0aF9kZWZhdWx0X3NubXBfdmVyc2lvbiIpCisKKyMgd2UgdGVzdCB0aGlzIG5vdyBhbmQgbGF0ZXIgYXMgd2VsbC4gIHdlIHRlc3QgaXQgbm93IHNvIGNvbmZpZ3VyZSBjYW4gZGllCisjIGVhcmx5IG9uIHdpdGggYW4gZXJyb3IgcmF0aGVyIHRoYW4gd2FpdGluZyB0aWxsIHRoZSBlbmQgb2YgdGhlIHNjcmlwdC4KK2Nhc2UgIiR7YWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTi0zfSIgaW4KKyAgW1sxMjNdXSkgOzsKKyAgMmMpIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT049MiA7OworICAqKQorICAgIEFDX01TR19FUlJPUihbSWxsZWdhbCB2ZXJzaW9uIG51bWJlci4gIE9ubHkgMSwgMiAoZm9yIFNOTVB2MmMpIGFuZCAzIGFyZSBzdXBwb3J0ZWQuXSkKKyAgICA7OworZXNhYworCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogVHJhbnNwb3J0IG1vZHVsZXMKKyMjCisKK0FDX0FSR19XSVRIKHRyYW5zcG9ydHMsCitbICAtLXdpdGgtdHJhbnNwb3J0cz0idDEgdDIgLi4uIiAgIENvbXBpbGUgaW4gdGhlIGdpdmVuIFNOTVAgdHJhbnNwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIChzcGFjZSBvciBjb21tYSBzZXBhcmF0ZWQgbGlzdCkuXSkKK0FDX0FSR19XSVRIKG91dF90cmFuc3BvcnRzLAorWyAgLS13aXRoLW91dC10cmFuc3BvcnRzPSJ0MSAuLi4iICBFeGNsdWRlIGxpc3RlZCBTTk1QIHRyYW5zcG9ydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGFjZSBvciBjb21tYSBzZXBhcmF0ZWQgbGlzdCkuCisKKyAgQXZhaWxhYmxlIFNOTVAgdHJhbnNwb3J0IG1vZHVsZXMgYXJlOgorCisgICAgVURQICAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVEUC9JUC4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBhbHdheXMgY29tcGlsZWQgaW4uCisgICAgVURQSVB2NiAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVEUC9JUHY2LgorICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGF2YWlsYWJsZSBmb3IgTGludXgsIFNvbGFyaXMgYW5kCisgICAgICAgICAgICAgICAgRnJlZUJTRCBhdCBsZWFzdC4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IGlmIElQdjYgc3VwcG9ydCBpcyBlbmFibGVkLgorICAgIFRDUElQdjYgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVB2Ni4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBhdmFpbGFibGUgZm9yIExpbnV4LCBTb2xhcmlzIGFuZAorICAgICAgICAgICAgICAgIEZyZWVCU0QgYXQgbGVhc3QuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBpZiBJUHY2IHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAgICBUQ1AgICAgICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVENQL0lQLgorICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQsIGJ1dCBtYXkgYmUgb21pdHRlZC4KKyAgICBVbml4ICAgICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVW5peCBkb21haW4gcHJvdG9jb2xzLgorICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgZXhjZXB0IG9uIFdpbjMyCisgICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBhbmQgbWF5IGJlIG9taXR0ZWQuCisgICAgQ2FsbGJhY2sgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIGFuIGludGVybmFsIGxvY2FsbHkgY29ubmVjdGVkIHBhaXIKKyAgICAgICAgICAgICAgICBvZiBzbm1wX3Nlc3Npb25zLgorICAgIEFsaWFzICAgICAgIFRoZSBhbGlhcyB0cmFuc3BvcnQgc2ltcGx5IGxldHMgeW91IGRlZmluZSBtb3JlIGNvbXBsZXgKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnQgc3RyaW5ncyBhbmQgYWxpYXMgdGhlbSB0byBzaW1wbGUgbmFtZXMgaW4KKyAgICAgICAgICAgICAgICB0aGUgc25tcC5jb25mIGZpbGUuCisgICAgQUFMNVBWQyAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIEFBTDUgUFZDcy4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBwcmVzZW50bHkgb25seSBhdmFpbGFibGUgZm9yIExpbnV4LAorICAgICAgICAgICAgICAgIGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgYW5kIG1heSBiZSBvbWl0dGVkLgorICAgIElQWCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBJUFggcGVyIFJGQyAxNDIwLgorICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIHByZXNlbnRseSBvbmx5IGF2YWlsYWJsZSBmb3IgTGludXgsCisgICAgICAgICAgICAgICAgaXMgbmV2ZXIgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBhbmQgbWF5IGJlIG9taXR0ZWQuCisgICAgU1NIICAgICAgICAgKGFscGhhKSBzdXBwb3J0IGZvciB0dW5uZWxpbmcgU05NUCBvdmVyIFNTSAorICAgIERUTFNVRFAgICAgIChhbHBoYSkgc3VwcG9ydCBmb3IgdHVubmVsaW5nIFNOTVAgb3ZlciBEVExTL1VEUAorXSkKKworIworIyBDYXRjaCBjb21tb24gbWlzdGFrZXMgaW4gdHJhbnNwb3J0IG9wdGlvbnMKKyMKK0FDX0FSR19XSVRIKHRyYW5zcG9ydCwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFt0cmFuc3BvcnRzXSkpCitBQ19BUkdfV0lUSChvdXQtdHJhbnNwb3J0LCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW291dC10cmFuc3BvcnRzXSkpCisKKworIyMKKyMgICBQcm9qZWN0OiBMaWJyYXJ5OiBTZWN1cml0eSBtb2R1bGVzCisjIworCitORVRTTk1QX0FSR19XSVRIKHNlY3VyaXR5LW1vZHVsZXMsCitbICAtLXdpdGgtc2VjdXJpdHktbW9kdWxlcz0iczEgczIgLi4uIiAgIENvbXBpbGUgaW4gdGhlIGdpdmVuIFNOTVAgc2VjdXJpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSBzZXJ2aWNlcyAoc3BhY2Ugc2VwYXJhdGVkIGxpc3QpLgorCisgIEF2YWlsYWJsZSBTTk1QIHNlY3VyaXR5IHNlcnZpY2VzOgorCisgICAgICAgIHVzbSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB1c2VyIGJhc2VkIFNOTVAgc2VjdXJpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1aXJlZCBhbmQgYWx3YXlzIGNvbXBpbGVkIGluKQorICAgICAgICBrc20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3Iga2VyYmVyb3MgYmFzZWQgU05NUCBzZWN1cml0eQorICAgICAgICB0c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIFRyYW5zcG9ydC1iYXNlZCBzZWN1cml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvciB1c2Ugd2l0aCB0aGUgU1NIIGFuZCBEVExTVURQIHRyYW5zcG9ydHMpCitdKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogRGV2ZWxvcGVyLXJlbGF0ZWQgc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZWJ1Z2dpbmcsCitbICAtLWVuYWJsZS1kZWJ1Z2dpbmcgICAgICAgICAgICAgIE91dHB1dHMgZXh0cmEgZGVidWdnaW5nIGluZm9ybWF0aW9uIGF0IGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzLiAgTm9ybWFsbHksIHlvdSBzaG91bGQgbm90IGVuYWJsZSB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpbnN0ZWFkIHVzZSB0aGUgLUQgZmxhZyBvZiB0aGUgY29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdG9nZ2xlcyBkZWJ1Z2luZyBvdXRwdXQgYXQgcnVudGltZS4KKyAgLS1kaXNhYmxlLWRlYnVnZ2luZyAgICAgICAgICAgICBEaXNhbGxvd3MgZGVidWdnaW5nIGNvZGUgdG8gYmUgYnVpbHQgaW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtaWdodCBwcm92aWRlIHNvbWUgc3BlZWQgYmVuZWZpdHMuXSwKKyAgICBBQ19ERUZJTkUoTkVUU05NUF9BTFdBWVNfREVCVUcpKQoraWYgdGVzdCAieCRlbmFibGVfZGVidWdnaW5nIiA9ICJ4bm8iOyB0aGVuCisgICAgQUNfREVGSU5FKE5FVFNOTVBfTk9fREVCVUdHSU5HKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKGRldmVsb3BlciwKK1sgIC0tZW5hYmxlLWRldmVsb3BlciAgICAgICAgICAgICAgVHVybnMgb24gc3VwZXItZHVwZXItZXh0cmEtY29tcGlsZS13YXJuaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdXNpbmcgZ2NjLl0sCisgIFtpZiB0ZXN0ICIkZW5hYmxldmFsIiA9IHllcyA7IHRoZW4KKyAgICAgZGV2ZWxvcGVyPSJ5ZXMiCisgICBlbGlmIHRlc3QgIiRlbmFibGV2YWwiICE9IG5vIDsgdGhlbgorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS1lbmFibGUvLS1kaXNhYmxlLWRldmVsb3Blcl0pCisgICBmaV0pCisKK05FVFNOTVBfQVJHX0VOQUJMRSh0ZXN0aW5nLWNvZGUsCitbICAtLWVuYWJsZS10ZXN0aW5nLWNvZGUgICAgICAgICAgIEVuYWJsZXMgc29tZSBjb2RlIHNlY3Rpb25zIHRoYXQgc2hvdWxkIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZyBvZiBjZXJ0YWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBmdW5jdGlvbmFsaXRpZXMuICBUaGlzIHNob3VsZCAqbm90KiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0dXJuZWQgb24gZm9yIHByb2R1Y3Rpb24gdXNlLiAgRXZlci5dLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgOyB0aGVuCisgICAgIEFDX0RFRklORShORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUsIDEsIFt0ZXN0aW5nIGNvZGUgc2VjdGlvbnMuXSkKKyAgIGVsaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8gOyB0aGVuCisgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHVzZSAtLWVuYWJsZS8tLWRpc2FibGUtdGVzdGluZy1jb2RlXSkKKyAgIGZpXSkKKworTkVUU05NUF9BUkdfRU5BQkxFKHJlZW50cmFudCwKK1sgIC0tZW5hYmxlLXJlZW50cmFudCAgICAgICAgICAgICAgRW5hYmxlcyBsb2NraW5nIGZ1bmN0aW9ucyB0aGF0IHByb3RlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IHJlc291cmNlcyBpbiBzb21lIG11bHRpLXRocmVhZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50cy4gIFRoaXMgZG9lcyBub3QgZ3VhcmFudGVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLXNhZmUgb3BlcmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSBhbiBleHBlcmltZW50YWwgc2V0dGluZy5dLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgLW8gIiRlbmFibGV2YWwiID0gbm8gOyB0aGVuCisgICAgIHdpdGhfcmVzX2xvY2tzPSIkZW5hYmxldmFsIgorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS1lbmFibGUvLS1kaXNhYmxlLXJlZW50cmFudF0pCisgICBmaV0sCisgIFt3aXRoX3Jlc19sb2Nrcz0ibm8iXSkKKworTkVUU05NUF9BUkdfRU5BQkxFKGRlcHJlY2F0ZWQsCitbICAtLWRpc2FibGUtZGVwcmVjYXRlZCAgICAgICAgICAgIERvbid0IGNvbXBpbGUgaW4gZGVwcmVjYXRlZCBmdW5jdGlvbnMuXSkKK2lmIHRlc3QgIiRlbmFibGVfZGVwcmVjYXRlZCIgPSBubyA7IHRoZW4KKyAgIEFDX0RFRklORShbTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OU10sIDEsCisgICAgICAgICAgICAgW0RlZmluZSB0byBzdXBwcmVzcyBpbmNsdXNpb24gb2YgZGVwcmVjYXRlZCBmdW5jdGlvbnNdKQorZmkKKworCisKKyMjCisjICAgUHJvamVjdDogQWdlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncworIyMKKworTkVUU05NUF9BUkdfV0lUSChyb290LWFjY2VzcywKK1sKK0NvbmZpZ3VyaW5nIHRoZSBhZ2VudDoKKyAgLS13aXRob3V0LXJvb3QtYWNjZXNzICAgICAgICAgICBUaGUgc25tcGQgYWdlbnQgd29uJ3QgcmVxdWlyZSByb290IGFjY2VzcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBpdC4gIFRoZSBpbmZvcm1hdGlvbiBpdCByZXR1cm5zIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYi1JSSB0cmVlIG1heSBub3QgYmUgY29ycmVjdCwgaG93ZXZlci5dKQorIyBPbmx5IGRlZmluZSBpZiBzcGVjaWZpY2FsbHkgY2hvc2VuIGFzIC0td2l0aG91dCAoaS5lLiwgZGVmYXVsdCB0byB0cnVlKS4KK2lmIHRlc3QgIngkd2l0aF9yb290X2FjY2VzcyIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9OT19ST09UX0FDQ0VTUywgMSwKKyAgICBbSWYgeW91IGRvbid0IGhhdmUgcm9vdCBhY2Nlc3MgZG9uJ3QgZXhpdCB1cG9uIGttZW0gZXJyb3JzXSkKK2ZpCisKK05FVFNOTVBfQVJHX1dJVEgoa21lbS11c2FnZSwKK1sgIC0td2l0aG91dC1rbWVtLXVzYWdlICAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgYW55IGNvZGUgcmVsYXRlZCB0byB0aGUgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Yga21lbS5dKQorIyBPbmx5IGRlZmluZSBpZiBzcGVjaWZpY2FsbHkgY2hvc2VuIGFzIC0td2l0aG91dCAoaS5lLiwgZGVmYXVsdCB0byB0cnVlKS4KK2lmIHRlc3QgIngkd2l0aF9rbWVtX3VzYWdlIiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX05PX0tNRU1fVVNBR0UsIDEsIFtJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLl0pCitmaQorCitORVRTTk1QX0FSR19XSVRIKGR1bW15LXZhbHVlcywKK1sgIC0td2l0aC1kdW1teS12YWx1ZXMgICAgICAgICAgICAgUHJvdmlkZSAncGxhY2Vob2xkZXInIGR1bW15IHZhbHVlcyB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRlY2huaWNhbGx5IG5vdCBjb21wbGlhbnQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QIHNwZWNpZmljYXRpb25zLCBidXQgd2FzIGhvdyB0aGUgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRlZCBmb3IgdmVyc2lvbnMgPCA0LjAuXSkKKyMgRGVmaW5lIHVubGVzcyBzcGVjaWZpY2FsbHkgc3VwcHJlc3NlZCAoaS5lLiwgb3B0aW9uIGRlZmF1bHRzIHRvIGZhbHNlKS4KK2lmIHRlc3QgIngkd2l0aF9kdW1teV92YWx1ZXMiICE9ICJ4eWVzIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9OT19EVU1NWV9WQUxVRVMsIDEsCisgICAgW0lmIHlvdSBkb24ndCB3YW50IHRoZSBhZ2VudCB0byByZXBvcnQgb24gdmFyaWFibGVzIGl0IGRvZXNuJ3QgaGF2ZQorICAgICBkYXRhIGZvcl0pCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUoc2V0LXN1cHBvcnQsCitbICAtLWRpc2FibGUtc2V0LXN1cHBvcnQgICAgICAgICAgIERvIG5vdCBhbGxvdyBTTk1QIHNldCByZXF1ZXN0cy5dKQoraWYgdGVzdCAieCRlbmFibGVfc2V0X3N1cHBvcnQiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlRdLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUCBTRVQgc3VwcG9ydCBzaG91bGQgYmUgZGlzYWJsZWRdKQorZmkKKworCitORVRTTk1QX0FSR19XSVRIKHN5c19jb250YWN0LAorWyAgLS13aXRoLXN5cy1jb250YWN0PSJ3aG9Ad2hlcmUiICBEZWZhdWx0IHN5c3RlbSBjb250YWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IExPR0lOQERPTUFJTk5BTUUpXSwKKyAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19DT05UQUNUPSIkd2l0aF9zeXNfY29udGFjdCIpCisKK05FVFNOTVBfQVJHX1dJVEgoc3lzX2xvY2F0aW9uLAorWyAgLS13aXRoLXN5cy1sb2NhdGlvbj0ibG9jYXRpb24iICBEZWZhdWx0IHN5c3RlbSBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBVbmtub3duKV0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfTE9DPSIkd2l0aF9zeXNfbG9jYXRpb24iKQorCisKKworIyMKKyMgICBQcm9qZWN0OiBBZ2VudDogRXh0ZW5zaWJpbGl0eSBjb25maWd1cmF0aW9uCisjIworCitORVRTTk1QX0FSR19FTkFCTEUobG9jYWwtc211eCwKK1sgIC0tZW5hYmxlLWxvY2FsLXNtdXggICAgICAgICAgICAgUmVzdHJpY3QgU01VWCBjb25uZWN0aW9ucyB0byBsb2NhbGhvc3QgKGJ5IGRlZmF1bHQpLl0sCisgICAgW2lmIHRlc3QgIngkZW5hYmxlX2xvY2FsX3NtdXgiID0gInh5ZXMiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWCwgMSwKKyAgICAgICAgICBbZGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0CisgICAgICAgICAgIGJ5IGRlZmF1bHRdKQorICAgIGZpXSkKKworTkVUU05NUF9BUkdfRU5BQkxFKGFnZW50eC1kb20tc29jay1vbmx5LAorWyAgLS1lbmFibGUtYWdlbnR4LWRvbS1zb2NrLW9ubHkgICBEaXNhYmxlIFVEUC9UQ1AgdHJhbnNwb3J0cyBmb3IgYWdlbnR4Ll0sCitBQ19ERUZJTkUoTkVUU05NUF9BR0VOVFhfRE9NX1NPQ0tfT05MWSwgMSwKKyAgICBbZGVmaW5lIGlmIGFnZW50eCB0cmFuc3BvcnQgaXMgdG8gdXNlIGRvbWFpbiBzb2NrZXRzIG9ubHldKSkKKworTkVUU05NUF9BUkdfRU5BQkxFKHNubXB0cmFwZC1zdWJhZ2VudCwKK1sgIC0tZGlzYWJsZS1zbm1wdHJhcGQtc3ViYWdlbnQgICAgRGlzYWJsZSBhZ2VudHggc3ViYWdlbnQgY29kZSBpbiBzbm1wdHJhcGQuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3NubXB0cmFwZF9zdWJhZ2VudCIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgsIDEsCisgICAgW2RlZmluZSBpZiB5b3UgZG8gbm90IHdhbnQgc25tcHRyYXBkIHRvIHJlZ2lzdGVyIGFzIGFuIEFnZW50WCBzdWJhZ2VudF0pCitmaQorCitkZWZhdWx0X2FnZW50eF9zb2NrZXQ9Ii92YXIvYWdlbnR4L21hc3RlciIKK05FVFNOTVBfQVJHX1dJVEgoYWdlbnR4LXNvY2tldCwKK1sgIC0td2l0aC1hZ2VudHgtc29ja2V0PUZJTEUgICAgICAgICBBZ2VudFggc29ja2V0IChEZWZhdWx0OiAvdmFyL2FnZW50eC9tYXN0ZXIgYXMgc3BlY2lmaWVkIGluIFJGQzI3NDEpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgZnVsbCBwYXRoIF0pOworICBmaQorICBBQ19NU0dfUkVTVUxUKHVzaW5nIEFnZW50WCBzb2NrZXQgJHdpdGh2YWwpCitdLFsKKyAgd2l0aHZhbD0kZGVmYXVsdF9hZ2VudHhfc29ja2V0CisgIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCBBZ2VudFggc29ja2V0ICRkZWZhdWx0X2FnZW50eF9zb2NrZXQpCitdKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQUdFTlRYX1NPQ0tFVCwiJHdpdGh2YWwiLAorICAgICAgICBbVW5peCBkb21haW4gc29ja2V0IGZvciBBZ2VudFggbWFzdGVyLXN1YmFnZW50IGNvbW11bmljYXRpb25dKQorCisKKyMjCisjICAgUHJvamVjdDogQWdlbnQ6IE1JQiBtb2R1bGUgY29uZmlndXJhdGlvbgorIyMKKworTkVUU05NUF9BUkdfRU5BQkxFKG1pbmlfYWdlbnQsCitbICAtLWVuYWJsZS1taW5pLWFnZW50ICAgICAgICAgICAgIEJ1aWxkIGEgbWluaW1hbCBhZ2VudC5dKQoraWYgdGVzdCAieCRlbmFibGVfbWluaV9hZ2VudCIgPSAieHllcyI7IHRoZW4KKyAgICBtaW5pX2FnZW50PSJ5ZXMiCitlbHNlCisgICAgbWluaV9hZ2VudD0ibm8iCitmaQorQUNfQVJHX1dJVEgoW21pbmlhZ2VudF0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW21pbmktYWdlbnRdKSkKK0FDX0FSR19FTkFCTEUoW21pbmlhZ2VudF0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW21pbmktYWdlbnRdKSkKKworTkVUU05NUF9BUkdfRU5BQkxFKG1mZC1yZXdyaXRlcywKK1sgIC0tZW5hYmxlLW1mZC1yZXdyaXRlcyAgICAgICAgICAgVXNlIG5ldyBNRkQgcmV3cml0ZXMgb2YgbWliIG1vZHVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgYXZhaWxhYmxlLiAoZGVmYXVsdCBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBtaWIgbW9kdWxlIGNvZGUpLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCisgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTLCAxLAorICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE1GRCBtb2R1bGUgcmV3cml0ZXNdKQorZmkKKworCitORVRTTk1QX0FSR19XSVRIKG1pYl9tb2R1bGVzLAorWyAgLS13aXRoLW1pYi1tb2R1bGVzPSJpdGVtMSAuLi4iICBDb21waWxlIHdpdGggYWRkaXRpb25hbCBtaWIgbW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNwYWNlIHNlcGFyYXRlZCBsaXN0KS5dKQorCitORVRTTk1QX0FSR19XSVRIKG91dF9taWJfbW9kdWxlcywKK1sgIC0td2l0aC1vdXQtbWliLW1vZHVsZXM9Imxpc3QiICAgQ29tcGlsZSB3aXRob3V0IHRoZXNlIG1pYiBtb2R1bGVzLgorCisgIERlZmF1bHQgbWliIG1vZHVsZXMgY29tcGlsZWQgaW50byB0aGUgYWdlbnQgKHdoaWNoIGNhbiBiZSByZW1vdmVkKToKKyAgCisgICAgbWliSUkgICAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgbWliLUlJIHRyZWUuCisgICAgc25tcHYzbWlicyAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgc25tcHYzIG1pYiBtb2R1bGVzLgorICAgIHVjZF9zbm1wICAgICAgICAgICAgICAgVUNELVNOTVAtTUlCIHNwZWNpZmljIGV4dGVuc2lvbnMuCisgICAgYWdlbnRfbWlicyAgICAgICAgICAgICBORVQtU05NUC1BR0VOVC1NSUIgZXh0ZW5zaW9ucworICAgIGFnZW50eCAgICAgICAgICAgICAgICAgQWdlbnRYIHN1cHBvcnQgKHNlZSBiZWxvdykKKyAgICBub3RpZmljYXRpb24gICAgICAgICAgIG1pYnMgc3VwcG9ydGluZyBzcGVjaWZpY2F0aW9uIG9mIHRyYXAgZGVzdGluYXRpb25zLgorICAgIHRhcmdldCAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgdGhlIFNOTVAgV0dzIFRBUkdFVC1NSUIuCisgICAgdXRpbGl0aWVzICAgICAgICAgICAgICBnZW5lcmFsIGFnZW50IGNvbmZpZ3VyYXRpb24gdXRpbGl0aWVzLgorICAgIGRpc21hbi9ldmVudCAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIERJU01BTi1FVkVOVC1NSUIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRzIHNlbGYgbW9uaXRvcmluZyBhbmQgbm90aWZpY2F0aW9uIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnkgd2hlbiBlcnJvciBjb25kaXRpb25zIGFyZSBmb3VuZCkKKyAgICBkaXNtYW4vc2NoZWR1bGUgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBESVNNQU4tU0NIRURVTEUtTUlCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlnZ2VyIFNFVCByZXF1ZXN0cyBhdCBzcGVjaWZpZWQgdGltZXMpCisgICAgaG9zdCAgICAgICAgICAgICAgICAgICBob3N0IHJlc291cmNlcyBtaWIgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ubHkgb24gbWFqb3Igc3VwcG9ydGVkIHBsYXRmb3JtcykKKworICBPcHRpb25hbCBtaWIgbW9kdWxlcyB0aGF0IGNhbiBiZSBidWlsdCBpbnRvIHRoZSBhZ2VudCBpbmNsdWRlOgorICAgIHNtdXggICAgICAgICAgICAgICAgICAgc211eCBzdXBwb3J0IHRvIGFsbG93IHN1YmFnZW50cyB0byBhdHRhY2ggdG8gc25tcGQuCisgICAgbWliSUkvbXRhX3NlbmRtYWlsICAgICBTZW5kbWFpbCBzdGF0aXN0aWNzIG1vbml0b3JpbmcgKE1UQS1NSUIpCisgICAgdWNkLXNubXAvZGlza2lvICAgICAgICBUYWJsZSBvZiBpby1kZXZpY2VzIGFuZCBob3cgbXVjaCBkYXRhIHRoZXkgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC93cml0dGVuLiAgKG9ubHkgdGVzdGVkIG9uIFNvbGFyaXMsIExpbnV4KQorICAgIGRpc21hbi9vbGQtZXZlbnQtbWliICAgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgdGhlIERJU01BTi1FVkVOVC1NSUIKKworICBPcHRpb25hbCBtb2R1bGVzIGZvciBzcGVjaWZpYyBwbGF0Zm9ybXMKKyAgICBMaW51eAorICAgICAgdWNkLXNubXAvbG1TZW5zb3JzICAgaGFyZHdhcmUgbW9uaXRvcmluZyAoTE0tU0VOU09SUy1NSUIpCisgICAgICBpcC1taWIvaXB2NEludGVyZmFjZVRhYmxlICAoZXhwZXJpbWVudGFsKQorICAgICAgaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZSAgKGV4cGVyaW1lbnRhbCkKKyAgICAgIHR1bm5lbCAgICAgICAgICAgICAgIExpbnV4IFRVTk5FTC1NSUIgc3VwcG9ydCAoaWZUYWJsZSBleHRlbnNpb24pCisgICAgICBtaWJJSS9pbnRlcmZhY2VzICAgICAob2xkIGlmVGFibGUgaW1wbGVtZW50YXRpb24pCisgICAgICBtaXNjL2lwZndhY2MgICAgICAgICBhY2NvdW50aW5nIHJ1bGVzIElQIGZpcmV3YWxsIGluZm9ybWF0aW9uCisgICAgICBpcGZ3Y2hhaW5zL2lwZndjaGFpbnMgIGZpcmV3YWxsIGNoYWlucyB1bmRlciBpcGZ3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTZWUgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy9SRUFETUUpCisgICAgICBzY3RwLW1pYiAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgU0NUUC1NSUIKKyAgICAgIGV0aGVybGlrZS1taWIgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBFdGhlckxpa2UtTUlCCisKKyAgICBTb2xhcmlzCisgICAgICB1Y2Qtc25tcC9sbVNlbnNvcnMgICBoYXJkd2FyZSBtb25pdG9yaW5nIChMTS1TRU5TT1JTLU1JQikKKyAgICAgIGlmLW1pYiAgICAgICAgICAgICAgIElGLU1JQiByZXdyaXRlIChhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQorICAgICAgdGNwLW1pYiAgICAgICAgICAgICAgVENQLU1JQiByZXdyaXRlICh0Y3BDb25uZWN0aW9uVGFibGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcExpc3RlbmVyVGFibGU7IGFkZCAtLWVuYWJsZS1tZmQtcmV3cml0ZXMpCisgICAgICB1ZHAtbWliICAgICAgICAgICAgICBVRFAtTUlCIHJld3JpdGUgKHVkcEVuZHBvaW50VGFibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCAtLWVuYWJsZS1tZmQtcmV3cml0ZXMpCisKKyAgICBGcmVlQlNEL09wZW5CU0QKKyAgICAgIGlmLW1pYiAgICAgICAgICAgICAgIElGLU1JQiByZXdyaXRlIChhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQorCisgIEFnZW50WCBzdXBwb3J0OgorICAgIGFnZW50eC9zdWJhZ2VudCAgICAgICAgYWxsb3dzIHRoZSBhZ2VudCB0byBydW4gYXMgZWl0aGVyIGEgc25tcCBhZ2VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXMgYW4gYWdlbnRYIHN1Yi1hZ2VudC4KKyAgICBhZ2VudHgvbWFzdGVyICAgICAgICAgIG1ha2VzIHRoZSBhZ2VudCBydW4gYXMgYW4gYWdlbnRYIG1hc3RlciBhZ2VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhIG5vcm1hbCBzbm1wIGFnZW50LgorICAgIGFnZW50eCAgICAgICAgICAgICAgICAgaW5jbHVkZXMgYm90aCBhZ2VudHgvbWFzdGVyIGFuZCBhZ2VudHgvY2xpZW50LgorCisgIE9wdGlvbmFsIG1vZHVsZXMgZm9yIEMgY29kZXJzIHRvIGxvb2sgYXQgYW5kL29yIGluY2x1ZGUgYXMgZXh0ZW5zaW9uIGV4YW1wbGVzOgorICAKKyAgICBleGFtcGxlcy91Y2REZW1vUHVibGljICBTTk1QdjMgaW50ZXJvcGVyYWJpbGl0eSB0ZXN0aW5nIG1pYi4KKyAgICBleGFtcGxlcy9leGFtcGxlICAgICAgICBleGFtcGxlIEMgY29kZSBleHRlbnNpb24uXSkKKworCisjCisjIENhdGNoIGNvbW1vbiBtaXN0YWtlcyBpbiBjb25maWd1cmUgb3B0aW9ucworIworQUNfQVJHX1dJVEgobWliLW1vZHVsZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFttaWItbW9kdWxlc10pKQorQUNfQVJHX1dJVEgobW9kdWxlLCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW21pYi1tb2R1bGVzXSkpCitBQ19BUkdfV0lUSChtb2R1bGVzLCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW21pYi1tb2R1bGVzXSkpCisKK0FDX0FSR19XSVRIKG91dC1taWItbW9kdWxlLCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW291dC1taWItbW9kdWxlc10pKQorQUNfQVJHX1dJVEgob3V0LW1vZHVsZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtbWliLW1vZHVsZXNdKSkKK0FDX0FSR19XSVRIKG91dC1tb2R1bGVzLCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW291dC1taWItbW9kdWxlc10pKQorCisKKyMjCisjICAgUHJvamVjdDogRW50ZXJwcmlzZSBzZXR0aW5ncwkoPyBBZ2VudC9MaWJyYXJ5L0JvdGg/KQorIyMKKworTkVUU05NUF9BUkdfV0lUSChlbnRlcnByaXNlLW9pZCwKK1tFbnRlcnByaXNlIE9JRHM6ICAod2FybmluZzogdGhpcyBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uKQorCisgIC0td2l0aC1lbnRlcnByaXNlLW9pZCAgICAgICAgICAgICAgVGhlIGVudGVycHJpc2UgbnVtYmVyIGFzc2lnbmVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlbmRvciBieSBJQU5BLiAgU2VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy9jZ2ktYmluL2VudGVycHJpc2UucGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZXQgb25lLCB0aG91Z2ggdXNpbmcgdGhlIGRlZmF1bHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9iYWJseSB0aGUgcmlnaHQgY2hvaWNlIGlzIG1vc3QgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgODA3MiA9ICJlbnRlcnByaXNlLm5ldC1zbm1wIildLFsKKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIGVudGVycHJpc2UgbnVtYmVyIF0pOworICBmaQorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9FTlRFUlBSSVNFX09JRCwgJHdpdGh2YWwpCisgIGVudF9vaWQ9IjEsMyw2LDEsNCwxLCR3aXRodmFsIgorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9FTlRFUlBSSVNFX01JQiwgJGVudF9vaWQpCisgIGVudF9kb3Rfb2lkPSIxLjMuNi4xLjQuMS4kd2l0aHZhbCIKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9ET1RfTUlCLCAkZW50X2RvdF9vaWQpCisgIEFDX01TR19SRVNVTFQodXNpbmcgZW50ZXJwcmlzZSBudW1iZXIgJHdpdGh2YWwpCitdLFsKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0ICJlbnRlcnByaXNlLm5ldC1zbm1wIikKK10pCisKK05FVFNOTVBfQVJHX1dJVEgoZW50ZXJwcmlzZS1zeXNvaWQsCitbCisgIC0td2l0aC1lbnRlcnByaXNlLXN5c29pZCAgICAgICAgICAgVGhlIGJhc2UgT0lEIGZvciB0aGUgc3lzT2JqZWN0SUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3lzdGVtIGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLjEuMy42LjEuNC4xLjgwNzIuMy4yLi4uID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZXRTbm1wQWdlbnRPSURzLi4uIildLFsKKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBiYXNlIE9JRCB2YWx1ZSBdKTsKKyAgZmkKKyAgc3lzX29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJyB8IHNlZCAncy9cLi9cLC9nJ2AKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX01JQiwgJHN5c19vaWQpCisgIHN5c19kb3Rfb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nYAorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fRE9UX01JQiwgJHN5c19kb3Rfb2lkKQorICBzeXNvaWRfbGVuPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvW15cLl0vL2cnIHwgYXdrIC1GXC4gJ3sgcHJpbnQgTkYgfSdgCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9ET1RfTUlCX0xFTkdUSCwgJHN5c29pZF9sZW4pCisgIEFDX01TR19SRVNVTFQodXNpbmcgZW50ZXJwcmlzZSBzeXNPSUQgJHdpdGh2YWwgLi4uLikKK10sWworICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgZW50ZXJwcmlzZSBzeXNPSUQgIk5FVC1TTk1QLU1JQjo6bmV0U25tcEFnZW50T0lEcy4uLiIpCitdKQorCitORVRTTk1QX0FSR19XSVRIKGVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCwKK1sKKyAgLS13aXRoLWVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCBUaGUgT0lEIHVzZWQgZm9yIHRoZSByb290IG9mCisJCQkJICAgICBlbnRlcnByaXNlIHNwZWNpZmljIG5vdGlmaWNhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLjEuMy42LjEuNC4xLjgwNzIuNCA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV0U25tcE5vdGlmaWNhdGlvblByZWZpeCIpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgYmFzZSBPSUQgdmFsdWUgXSk7CisgIGZpCisgIG5vdGlmaWNhdGlvbl9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLycgfCBzZWQgJ3MvXC4vXCwvZydgCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX05PVElGSUNBVElPTl9NSUIsICRub3RpZmljYXRpb25fb2lkKQorICBub3RpZmljYXRpb25fZG90X29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJ2AKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUIsICRub3RpZmljYXRpb25fZG90X29pZCkKKyAgbm90aWZpY2F0aW9ub2lkX2xlbj1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL1teXC5dLy9nJyB8IGF3ayAtRlwuICd7IHByaW50IE5GIH0nYAorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9OT1RJRklDQVRJT05fRE9UX01JQl9MRU5HVEgsICRub3RpZmljYXRpb25vaWRfbGVuKQorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2Ugbm90aWZpY2F0aW9ucyAkd2l0aHZhbCkKK10sWworICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgbm90aWZpY2F0aW9ucyAiTkVULVNOTVAtTUlCOjpuZXRTbm1wTm90aWZpY2F0aW9ucyIpCitdKQorCisKKyMjCisjICAgUHJvamVjdDogUGVybCBzZXR0aW5ncworIyMKKworTkVUU05NUF9BUkdfV0lUSChwZXJsLW1vZHVsZXMsCitbCitQZXJsOgorICAtLXdpdGgtcGVybC1tb2R1bGVzWz1BUkdTXSAgICAgIEluc3RhbGwgdGhlIFBlcmwgbW9kdWxlcyBhbG9uZyB3aXRoIHRoZSByZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG5ldC1zbm1wIHRvb2xraXQuICBJZiBBUkdTIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLCB0aGV5J3JlIHBhc3NlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZS5QTCBzY3JpcHQuXSxbCisgICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgorICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICBlbHNlCisgICAgICBpbnN0YWxsX3Blcmw9InllcyIKKyAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiAhPSAieWVzIjsgdGhlbgorICAgICAgICBQRVJMQVJHUz0iJHdpdGh2YWwiCisgICAgICBmaQorICAgIGZpCitdLCBpbnN0YWxsX3Blcmw9InRyeSIpCisKK05FVFNOTVBfQVJHX0VOQUJMRShlbWJlZGRlZC1wZXJsLAorWyAgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgICAgICAgICBEaXNhYmxlIGVtYmVkZGVkIFBlcmwgaW4gdGhlIFNOTVAgYWdlbnQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHRyYXBkLiBbZW5hYmxlZCBieSBkZWZhdWx0XV0sCisgICAgZW1iZWRfcGVybD0iJGVuYWJsZXZhbCIsIGVtYmVkX3Blcmw9InRyeSIpCisKK05FVFNOTVBfQVJHX0VOQUJMRShwZXJsLWNjLWNoZWNrcywKK1sgIC0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcyAgICAgICAgRGlzYWJsZSBjb25maWd1cmUgY2hlY2tzIGZvciB3aGV0aGVyIFBlcmwncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgQ29tcGlsZXIgaXMgY29tcGF0aWJsZSB3aXRoIG91cnMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkIFBlcmwgaXMgZW5hYmxlZC5dKQorCisKKyMjCisjICAgUHJvamVjdDogUHl0aG9uIHNldHRpbmdzCisjIworCitBQ19BUkdfV0lUSChweXRob24tbW9kdWxlcywKK1sKK1B5dGhvbjoKKyAgLS13aXRoLXB5dGhvbi1tb2R1bGVzWz1BUkdTXSAgICBJbnN0YWxsIHRoZSBweXRob24gYmluZGluZ3MgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0IG9mIHRoZSBuZXQtc25tcCB0b29sa2l0LiAgSWYgQVJHUyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCwgdGhleSdyZSBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXAucHkgc2NyaXB0IGFzIGFyZ3VtZW50cy5dLFsKKyAgICBpbnN0YWxsX3B5dGhvbj0ieWVzIgorICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCisgICAgICBQWVRIT05BUkdTPSIiCisgICAgZWxpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCisgICAgICBQWVRIT05BUkdTPSIiCisgICAgICBpbnN0YWxsX3B5dGhvbj0ibm8iCisgICAgZWxzZQorICAgICAgUFlUSE9OQVJHUz0iJHdpdGh2YWwiCisgICAgZmkKK10sIGluc3RhbGxfcHl0aG9uPSJubyIpCisKKworIyMKKyMgICBQcm9qZWN0OiBMaWJyYXJ5IHNldHRpbmdzCisjIworCitORVRTTk1QX0FSR19XSVRIKHNlcnZlci1zZW5kLWJ1ZiwKK1sKK05ldHdvcmsgQnVmZmVyczoKKyAgLS13aXRoLXNlcnZlci1zZW5kLWJ1Zls9QVJHXSAgICBVc2UgQVJHIGZvciB0aGUgZGVmYXVsdCBVRFAvVENQIHNlbmQgYnVmZmVyIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgT1MgYnVmZmVyIGZvciBzZXJ2ZXIgc29ja2V0cyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgKHNubXBkLCBzbm1wdHJhcGQpLiAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBydW50aW1lIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEFSRyBzaG91bGQgYmUgdGhlIHNpemUgaW4gYnl0ZXNdLFsKKyAgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHNlbmQgYnVmZmVyIF0pCisgICBmaQorICAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfU0VORF9CVUYsICR3aXRodmFsKV0sCisgICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHNlbmQgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQorCitORVRTTk1QX0FSR19XSVRIKHNlcnZlci1yZWN2LWJ1ZiwKK1sgIC0td2l0aC1zZXJ2ZXItcmVjdi1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb24sIGJ1dCBmb3IgcmVjZWl2ZSBidWZmZXJdLFsKKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBwb3NpdGl2ZSBudW1iZXIgZm9yIHRoZSBzZXJ2ZXIgcmVjdiBidWZmZXIgXSkKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfUkVDVl9CVUYsICR3aXRodmFsKV0sCisgIEFDX01TR19SRVNVTFQoW3VzaW5nIE9TIGRlZmF1bHQgcmVjdiBidWZmZXIgc2l6ZSBmb3Igc2VydmVyIHNvY2tldHNdKSApCisKK05FVFNOTVBfQVJHX1dJVEgoY2xpZW50LXNlbmQtYnVmLAorWyAgLS13aXRoLWNsaWVudC1zZW5kLWJ1Zls9QVJHXSAgICBTaW1pbGFyIGFzIHByZXZpb3VzIG9wdGlvbnMsIGJ1dCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZSBidWZmZXIgb2YgY2xpZW50IHNvY2tldHNdLFsKKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBwb3NpdGl2ZSBudW1iZXIgZm9yIHRoZSBjbGllbnQgc2VuZCBidWZmZXIgXSkKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9DTElFTlRfU0VORF9CVUYsICR3aXRodmFsKV0sCisgIEFDX01TR19SRVNVTFQoW3VzaW5nIE9TIGRlZmF1bHQgc2VuZCBidWZmZXIgc2l6ZSBmb3IgY2xpZW50IHNvY2tldHNdKSApCisKK05FVFNOTVBfQVJHX1dJVEgoY2xpZW50LXJlY3YtYnVmLAorWyAgLS13aXRoLWNsaWVudC1yZWN2LWJ1Zls9QVJHXSAgICBTaW1pbGFyIGFzIHByZXZpb3VzIG9wdGlvbnMsIGJ1dCBmb3IgdGhlIHNlbmQgYnVmZmVyXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgY2xpZW50IHJlY3YgYnVmZmVyIF0pCisgIGZpCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAorICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIGNsaWVudCBzb2NrZXRzXSkgKQorCisjIworIyAgIFN5c3RlbTogbGlicmFyeSBzZXR0aW5ncyAgKG1vcmUpCisjIworCitORVRTTk1QX0FSR19XSVRIKGVsZiwKKyAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtZWxmXSxbdXNlIGVsZiBsaWJyYXJpZXNdKV0pCisKK05FVFNOTVBfQVJHX1dJVEgobmwsCisgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLW5sXSxbdXNlIGxpYm5sIHRvIGdldCBuZXRsaW5rIGRhdGEgKGxpbnV4IG9ubHkpLl0pXSkKKworTkVUU05NUF9BUkdfV0lUSChsaWJ3cmFwLAorICBbICAtLXdpdGgtbGlid3JhcFs9TElCUEFUSF0gIENvbXBpbGUgaW4gbGlid3JhcCAodGNwX3dyYXBwZXJzKSBzdXBwb3J0Ll0sCisgIFtdLAorICBbd2l0aF9saWJ3cmFwPSJubyJdKQorCitORVRTTk1QX0FSR19XSVRIKHpsaWIsCisgIFsgIC0td2l0aC16bGliWz1ESVJdICAgICAgICAgdXNlIGxpYnogaW4gRElSXSwKKyAgW10sCisgIFt3aXRoX3psaWI9Im5vIl0pCisKK0FDX0FSR19XSVRIKGJ6aXAyLAorICBbICAtLXdpdGgtYnppcDJbPURJUl0gICAgICAgIHVzZSBsaWJiejIgaW4gRElSXSwKKyAgW10sCisgIFt3aXRoX2J6aXAyPSJubyJdKQorCitORVRTTk1QX0FSR19XSVRIKAorIFttbnR0YWJdLAorIEFTX0hFTFBfU1RSSU5HKAorICAgWy0td2l0aC1tbnR0YWI9Ii9ldGMvbW50dGFiIl0sCisgICBbTW91bnQgdGFibGUgbG9jYXRpb24uIFRoZSBkZWZhdWx0IGlzIHRvIGF1dG9kZXRlY3QgdGhpcy5dKSkKKworIyMKKyMgICBQcm9qZWN0OiBteXNxbAorIyMKKworTkVUU05NUF9BUkdfV0lUSChteXNxbCwKKyAgWyAgLS13aXRoLW15c3FsICAgICAgICAgICAgSW5jbHVkZSBzdXBwb3J0IGZvciBNeVNRTC5dKQoraWYgdGVzdCAieCR3aXRoX215c3FsIiA9ICJ4eWVzIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfTVlTUUwsIDEsCisgICAgW2RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBteXNxbCBjb2RlIGZvciBzbm1wdHJhcGQgLi4uXSkKK2ZpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MTk5N2YuLjAwMDAwMDAKLS0tIGEvY29uZmlndXJlLmluCisrKyAvZGV2L251bGwKQEAgLTEsNDgxNyArMCwwIEBACi0jIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQotIyB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cwotIyB0aGF0IG1heSBhcHBseToKLSMKLSMgUG9ydGlvbnMgQ29weXJpZ2h0IKkgMjAwMyBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKLSMgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KLSMKLQotIwotIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgotIwotQUNfSU5JVChbTmV0LVNOTVBdLCBbNS40LjRdLCBbbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0pCi1BQ19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NSQ0RJUihbYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jXSkKLUFDX1JFVklTSU9OKFskUmV2aXNpb24kXSkKLQotQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oKQotCi1BQ19NU0dfQ0FDSEVfSU5JVCgpCi0KLSMKLSMgc2F2ZSB0aGUgY29uZmlndXJlIGFyZ3VtZW50cwotIwotQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQ09ORklHVVJFX09QVElPTlMsIiRhY19jb25maWd1cmVfYXJncyIpCi1DT05GSUdVUkVfT1BUSU9OUz0iXCIkYWNfY29uZmlndXJlX2FyZ3MiXCIKLUFDX1NVQlNUKENPTkZJR1VSRV9PUFRJT05TKQotCi0jCi0jIENvbXBpbGF0aW9uIHNldHVwCi0jCi1BQ19BUkdfV0lUSChjYywgWwotQ29tcGlsZXIgT3B0aW9uczoKLSAgLS13aXRoLWNjPUNDICAgICAgICAgICAgICAgICAgICB1c2UgQ0MgdG8gY29tcGlsZSAoZGVmYXVsdD1nY2MpLl0sCi0gICAgW0NDPSR3aXRoX2NjO2V4cG9ydCBDQ10pCi0KLUFDX0FSR19XSVRIKGxpbmtjYywgWwotICAtLXdpdGgtbGlua2NjPUNDICAgICAgICAgICAgICAgIHVzZSBDQyB0byBsaW5rIChkZWZhdWx0PWdjYykuXSwKLSAgICBbTElOS0NDPSR3aXRoX2xpbmtjYztleHBvcnQgTElOS0NDXSkKLQotQUNfQVJHX1dJVEgoYXIsCi1bICAtLXdpdGgtYXI9QVIgICAgICAgICAgICAgICAgICAgIHVzZSBBUiBhcyB0aGUgYXJjaGl2ZXIuXSwKLSAgICBbQVI9JHdpdGhfYXI7IGV4cG9ydCBBUl0pCi0KLUFDX0FSR19XSVRIKGVuZGlhbm5lc3MsCi1bICAtLXdpdGgtZW5kaWFubmVzcz1iaWd8bGl0dGxlICAgIGRlZmluZSBlbmRpYW5uZXNzIG9mIHRhcmdldCBwbGF0Zm9ybSB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsaW5nLl0sCi0gICAgW2lmIHRlc3QgJHdpdGhfZW5kaWFubmVzcyAhPSAiYmlnIiAtYSAkd2l0aF9lbmRpYW5uZXNzICE9ICJsaXR0bGUiIDsgdGhlbgotICAgICAgIEFDX01TR19FUlJPUihbRW5kaWFubmVzcyBtdXN0IGJlIGJpZyBvciBsaXR0bGUsIG5vdCAiJHdpdGhfZW5kaWFubmVzcyIuXSk7Ci0gICAgIGZpCi1dKQotCi1BQ19BUkdfV0lUSChjZmxhZ3MsCi1bICAtLXdpdGgtY2ZsYWdzPUNGTEFHUyAgICAgICAgICAgIHVzZSBDRkxBR1MgYXMgY29tcGlsZSB0aW1lIGFyZ3VtZW50cy5dLAotICAgIFtDRkxBR1M9JHdpdGhfY2ZsYWdzOyBleHBvcnQgQ0ZMQUdTXSkKLQotQUNfQVJHX1dJVEgobGRmbGFncywKLVsgIC0td2l0aC1sZGZsYWdzPUxERkxBR1MgICAgICAgICAgdXNlIExERkxBR1MgYXMgbGluayB0aW1lIGFyZ3VtZW50cyB0byBsZC5dLAotICAgIFtMREZMQUdTPSR3aXRoX2xkZmxhZ3M7IGV4cG9ydCBMREZMQUdTXSkKLQotQUNfQVJHX0VOQUJMRShhcy1uZWVkZWQsCi1bICAtLWVuYWJsZS1hcy1uZWVkZWQgICAgICAgICAgICAgIExpbmsgbGlicGVybCBhZ2FpbnN0IE5ldC1TTk1QIGxpYnJhcmllcyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhcHBsaWNhdGlvbnMuIFdlIHJlY29tbWVuZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGlzIG9wdGlvbiBpZiBpdCB3b3Jrcy5dKQotCi1BQ19BUkdfV0lUSChsaWJzLAotWyAgLS13aXRoLWxpYnM9TElCUyAgICAgICAgICAgICAgICB1c2UgTElCUyBhcyBsaW5rIHRpbWUgYXJndW1lbnRzIHRvIGxkLl0sCi0gICAgW0xJQlM9JHdpdGhfbGliczsgZXhwb3J0IExJQlNdKQotCi1BQ19BUkdfRU5BQkxFKHNpbGVudC1saWJ0b29sLAotWyAgLS1lbmFibGUtc2lsZW50LWxpYnRvb2wgICAgICAgICBQYXNzIC0tc2lsZW50IHRvIGxpYnRvb2wuXSwKLQlMSUJUT09MRkxBR1M9LS1zaWxlbnQpCi1BQ19TVUJTVChMSUJUT09MRkxBR1MpCi0KLUFDX0FSR19XSVRIKGluc3RhbGwtcHJlZml4LAotWyAgLS13aXRoLWluc3RhbGwtcHJlZml4PVBBVEggICAgICBKdXN0IGZvciBpbnN0YWxsaW5nLCBwcmVmaXggYWxsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHdpdGggUEFUSC4gIFRoaXMgaXMga25vd24gbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gd29yayBvbiBzb21lIHN5c3RlbXMgd2l0aCBzaGFyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgKGVnLCBIUFVYKV0sCi0gICAgICBJTlNUQUxMX1BSRUZJWD0iJHdpdGh2YWwiKQotCi1pZiB0ZXN0ICJ4JElOU1RBTExfUFJFRklYIiA9ICJ4eWVzIiA7IHRoZW4KLSAgQUNfTVNHX0VSUk9SKFstLXdpdGgtaW5zdGFsbC1wcmVmaXggcmVxdWlyZXMgYW4gYXJndW1lbnRdKQotZmkKLWlmIHRlc3QgIngkSU5TVEFMTF9QUkVGSVgiID0gInhubyIgOyB0aGVuCi0gIElOU1RBTExfUFJFRklYPSIiCi1maQotQUNfU1VCU1QoSU5TVEFMTF9QUkVGSVgpCi0KLSMgY2hlY2sgZm9yIGVycm9ycyBpbiBhcmdzIHRoYXQgcnVuIGFmdGVyIG1vZHVsZSBwcm9jZXNzaW5nIGhlcmUsIHNvCi0jIHRoZXkgZmFpbCBiZWZvcmUgbW9kdWxlIHByb2Nlc3NpbmcuLi4KLUFDX0FSR19FTkFCTEUobGlid3JhcCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtbGlid3JhcC8tLXdpdGhvdXQtbGlid3JhcCBpbnN0ZWFkIF0pICkKLSAgQUNfQVJHX0VOQUJMRSh6bGliLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC16bGliLy0td2l0aG91dC16bGliIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1pbmlfYWdlbnQsCi1bICAtLWVuYWJsZS1taW5pLWFnZW50ICAgICAgICAgICAgIEJ1aWxkIGEgbWluaW1hbCBhZ2VudC5dKQotaWYgdGVzdCAieCRlbmFibGVfbWluaV9hZ2VudCIgPSAieHllcyI7IHRoZW4KLSAgICBtaW5pX2FnZW50PSJ5ZXMiCi1lbHNlCi0gICAgbWluaV9hZ2VudD0ibm8iCi1maQotQUNfQVJHX1dJVEgobWluaV9hZ2VudCwsCi0gICAgICAgICBBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLW1pbmktYWdlbnQvLS1kaXNhYmxlLW1pbmktYWdlbnQgaW5zdGVhZCBdKSApCi1BQ19BUkdfV0lUSChtaW5pYWdlbnQsLAotICAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taW5pLWFnZW50Ly0tZGlzYWJsZS1taW5pLWFnZW50IGluc3RlYWQgXSkgKQotQUNfQVJHX0VOQUJMRShtaW5pYWdlbnQsLAotICAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taW5pLWFnZW50Ly0tZGlzYWJsZS1taW5pLWFnZW50IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGFnZW50LAotWyAgLS1kaXNhYmxlLWFnZW50ICAgICAgICAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFnZW50IChzbm1wZCkuXSkKLWlmIHRlc3QgIngkZW5hYmxlX2FnZW50IiAhPSAieG5vIjsgdGhlbgotICAgU05NUEQ9J3NubXBkJChFWEVFWFQpJwotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhZ2VudCIKLSAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKLSAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCi1lbHNlCi0gICBTTk1QRD0iIgotICAgIyB3ZSBzdGlsbCBuZWVkL3dhbnQgdGhlIGFnZW50bGlicyAoZm9yIHN1YmFnZW50cywgZS5nLiBzbm1wdHJhcGQpCi0gICBNQUlOU1VCUz0iJE1BSU5TVUJTIGFnZW50IgotICAgIyBidWlsZGluZyBzbm1wdHJhcGQgdy9vIGFnZW50bGlicyBkb2Vzbid0IHdvcmsgYXRtCi0gICAjVFJBUExJQlM9JyQoVFJBUERXSVRIT1VUQUdFTlQpJwotICAgI1VTRVRSQVBMSUJTPSckKFVTRUxJQlMpJwotICAgVFJBUExJQlM9JyQoVFJBUERXSVRIQUdFTlQpJwotICAgVVNFVFJBUExJQlM9JyQoVVNFQUdFTlRMSUJTKScKLWZpCi1BQ19TVUJTVChTTk1QRCkKLUFDX1NVQlNUKFRSQVBMSUJTKQotQUNfU1VCU1QoVVNFVFJBUExJQlMpCi1BQ19BUkdfV0lUSChhZ2VudCwsCi0gICAgICAgICBBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWFnZW50Ly0tZGlzYWJsZS1hZ2VudCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShhcHBsaWNhdGlvbnMsCi1bICAtLWRpc2FibGUtYXBwbGljYXRpb25zICAgICAgICAgIERvIG5vdCBidWlsZCB0aGUgYXBwcyAoc25tcGdldCwgLi4uKS5dKQotaWYgdGVzdCAieCRlbmFibGVfYXBwbGljYXRpb25zIiAhPSAieG5vIjsgdGhlbgotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhcHBzIgotZmkKLSMgQ29tbW9uIG1pc3Rha2VzCi1BQ19BUkdfV0lUSChhcHBsaWNhdGlvbnMsLAotICAgICAgICBBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWFwcGxpY2F0aW9ucy8tLWRpc2FibGUtYXBwbGljYXRpb25zIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1hbnVhbHMsCi1bICAtLWRpc2FibGUtbWFudWFscyAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBtYW51YWxzLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tYW51YWxzIiAhPSAieG5vIjsgdGhlbgotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBtYW4iCi1maQotQUNfQVJHX1dJVEgobWFudWFscywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1tYW51YWxzLy0tZGlzYWJsZS1tYW51YWxzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKHNjcmlwdHMsCi1bICAtLWRpc2FibGUtc2NyaXB0cyAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBzY3JpcHRzIChtaWIyYywgLi4uKS5dKQotaWYgdGVzdCAieCRlbmFibGVfc2NyaXB0cyIgIT0gInhubyI7IHRoZW4KLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgbG9jYWwiCi1maQotQUNfQVJHX1dJVEgoc2NyaXB0cywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1zY3JpcHRzLy0tZGlzYWJsZS1zY3JpcHRzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1pYnMsCi1bICAtLWRpc2FibGUtbWlicyAgICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBtaWIgZmlsZXMuXSkKLWlmIHRlc3QgIngkZW5hYmxlX21pYnMiICE9ICJ4bm8iOyB0aGVuCi0gICBNQUlOU1VCUz0iJE1BSU5TVUJTIG1pYnMiCi1maQotIyB3aXRoLW1pYnMgaXMgdmFsaWQgdG9vLCBidXQgbWVhbnMgc29tZXRoaW5nIGVsc2UKLQotQUNfU1VCU1QoTUFJTlNVQlMpCi1BQ19NU0dfQ0hFQ0tJTkcoW3doYXQgdG8gYnVpbGQgYW5kIGluc3RhbGxdKQotQUNfTVNHX1JFU1VMVChbJE1BSU5TVUJTXSkKLQotQUNfQVJHX0VOQUJMRShtaWItbG9hZGluZywKLVsgIC0tZGlzYWJsZS1taWItbG9hZGluZyAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IHBhcnNlcyBhbmQgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaXB1bGF0ZXMgdGhlIG1pYiBmaWxlcy5dKQotaWYgdGVzdCAieCRlbmFibGVfbWliX2xvYWRpbmciID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkddLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgbWliIGxvYWRpbmcgYW5kIHBhcnNpbmcgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkXSkKLWZpCi1BQ19BUkdfV0lUSChtaWItbG9hZGluZywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taWItbG9hZGluZy8tLWRpc2FibGUtbWliLWxvYWRpbmcgaW5zdGVhZCBdKSApCi0KLSMKLVNOTVBfVkVSU0lPTlM9IiIKLUFDX0FSR19FTkFCTEUoc25tcHYxLAotWyAgLS1kaXNhYmxlLXNubXB2MSAgICAgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgaW1wbGVtZW50cyBTTk1QdjEuXSkKLWlmIHRlc3QgIngkZW5hYmxlX3NubXB2MSIgPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TTk1QVjFdLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUHYxIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCi1lbHNlCi0gIFNOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDEiCi1maQotQUNfQVJHX1dJVEgoc25tcHYxLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXNubXB2MS8tLWRpc2FibGUtc25tcHYxIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKHNubXB2MmMsCi1bICAtLWRpc2FibGUtc25tcHYyYyAgICAgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGNvZGUgdGhhdCBpbXBsZW1lbnRzIFNOTVB2MmMuXSkKLWlmIHRlc3QgIngkZW5hYmxlX3NubXB2MmMiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfU05NUFYyQ10sIDEsIAotICAgICAgICAgICAgW0RlZmluZSBpZiBTTk1QdjJjIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCi1lbHNlCi0gIFNOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDJjIgotZmkKLUFDX0FSR19XSVRIKHNubXB2MmMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc25tcHYyYy8tLWRpc2FibGUtc25tcHYyYyBpbnN0ZWFkIF0pICkKLQotU05NUF9WRVJTSU9OUz0iJFNOTVBfVkVSU0lPTlMgMyIKLUFDX01TR19DQUNIRV9BREQoU05NUCBWZXJzaW9ucyBTdXBwb3J0ZWQ6ICAgJFNOTVBfVkVSU0lPTlMpCi0KLUFDX0FSR19FTkFCTEUoc2V0LXN1cHBvcnQsCi1bICAtLWRpc2FibGUtc2V0LXN1cHBvcnQgICAgICAgICAgIERvIG5vdCBhbGxvdyBTTk1QIHNldCByZXF1ZXN0cyB0byB0aGUgYWdlbnQuXSkKLWlmIHRlc3QgIngkZW5hYmxlX3NldF9zdXBwb3J0IiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUXSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVAgU0VUIHN1cHBvcnQgc2hvdWxkIGJlIGRpc2FibGVkXSkKLWZpCi1BQ19BUkdfV0lUSChzZXQtc3VwcG9ydCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1zZXQtc3VwcG9ydC8tLWRpc2FibGUtc2V0LXN1cHBvcnQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoZGVzLAotWyAgLS1kaXNhYmxlLWRlcyAgICAgICAgICAgICAgICAgICBEbyBub3Qgc3VwcG9ydCBERVMgZW5jcnlwdGlvbi5dKQotaWYgdGVzdCAieCRlbmFibGVfZGVzIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX0RFU10sIDEsIAotICAgICAgICAgICAgW0RlZmluZSBpZiBERVMgZW5jcnlwdGlvbiBzaG91bGQgbm90IGJlIHN1cHBvcnRlZF0pCi1maQotQUNfQVJHX1dJVEgoZGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWRlcy8tLWRpc2FibGUtZGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKHByaXZhY3ksCi1bICAtLWRpc2FibGUtcHJpdmFjeSAgICAgICAgICAgICAgIERvbid0IGNvbXBpbGUgaW4gc3VwcG9ydCBmb3IgcHJpdmFjeSAoZW5jcnlwdGlvbikuXSkKLWlmIHRlc3QgIngkZW5hYmxlX3ByaXZhY3kiICE9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVikKLWZpCi1BQ19BUkdfV0lUSChwcml2YWN5LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXByaXZhY3kvLS1kaXNhYmxlLXByaXZhY3kgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUobWQ1LAotWyAgLS1kaXNhYmxlLW1kNSAgICAgICAgICAgICAgICAgICBEbyBub3Qgc3VwcG9ydCBNRDUgYXV0aGVudGljYXRpb24uXSkKLWlmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9NRDVdLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgTUQ1IGF1dGhlbnRpY2F0aW9uIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkXSkKLWZpCi1BQ19BUkdfV0lUSChtZDUsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWQ1Ly0tZGlzYWJsZS1tZDUgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoaW50ZXJuYWwtbWQ1LAotWyAgLS1lbmFibGUtaW50ZXJuYWwtbWQ1ICAgICAgICAgICBVc2UgdGhlIGludGVybmFsIE1ENSBzdXBwb3J0Ll0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9pbnRlcm5hbF9tZDUiID0gInh5ZXMiOyB0aGVuCi0gIGlmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgotICAgIEFDX01TR19FUlJPUihZb3UgY2FuIG5vdCBzcGVjaWZ5IGJvdGggLS1lbmFibGUtaW50ZXJuYWwtbWQ1IGFuZCAtLWRpc2FibGUtbWQ1KQotICBlbHNlCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENSkKLSAgZmkKLWZpCi1BQ19BUkdfV0lUSChpbnRlcm5hbC1tZDUsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtaW50ZXJuYWwtbWQ1Ly0tZGlzYWJsZS1pbnRlcm5hbC1tZDUgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoaXB2NiwKLVsgIC0tZW5hYmxlLWlwdjYgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgSVB2NiByZWFkeSB2ZXJzaW9uLl0sCi0gICAgW2lmIHRlc3QgIngkZW5hYmxlX2lwdjYiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfSVBWNikKLSAgICBmaV0pCi1BQ19BUkdfV0lUSChpcHY2LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWlwdjYvLS1kaXNhYmxlLWlwdjYgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUobG9jYWwtc211eCwKLVsgIC0tZW5hYmxlLWxvY2FsLXNtdXggICAgICAgICAgICAgUmVzdHJpY3QgU01VWCBjb25uZWN0aW9ucyB0byBsb2NhbGhvc3QgKGJ5IGRlZmF1bHQpLl0sCi0gICAgW2lmIHRlc3QgIngkZW5hYmxlX2xvY2FsX3NtdXgiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWCkKLSAgICBmaV0pCi1BQ19BUkdfV0lUSChsb2NhbC1zbXV4LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWxvY2FsLXNtdXgvLS1kaXNhYmxlLWxvY2FsLXNtdXggaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoZGVidWdnaW5nLAotWyAgLS1lbmFibGUtZGVidWdnaW5nICAgICAgICAgICAgICBPdXRwdXRzIGV4dHJhIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhdCBhbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcy4gIE5vcm1hbGx5LCB5b3Ugc2hvdWxkIG5vdCBlbmFibGUgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgaW5zdGVhZCB1c2UgdGhlIC1EIGZsYWcgb2YgdGhlIGNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvZ2dsZXMgZGVidWdpbmcgb3V0cHV0IGF0IHJ1bnRpbWUuCi0gIC0tZGlzYWJsZS1kZWJ1Z2dpbmcgICAgICAgICAgICAgRGlzYWxsb3dzIGRlYnVnZ2luZyBjb2RlIHRvIGJlIGJ1aWx0IGluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWlnaHQgcHJvdmlkZSBzb21lIHNwZWVkIGJlbmVmaXRzLl0sCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfQUxXQVlTX0RFQlVHKSkKLUFDX0FSR19XSVRIKGRlYnVnZ2luZywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1kZWJ1Z2dpbmcvLS1kaXNhYmxlLWRlYnVnZ2luZyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShkZXZlbG9wZXIsCi1bICAtLWVuYWJsZS1kZXZlbG9wZXIgICAgICAgICAgICAgIFR1cm5zIG9uIHN1cGVyLWR1cGVyLWV4dHJhLWNvbXBpbGUtd2FybmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHVzaW5nIGdjYy5dLAotICAgIGRldmVsb3Blcj15ZXMpCi1BQ19BUkdfV0lUSChkZXZlbG9wZXIsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtZGV2ZWxvcGVyLy0tZGlzYWJsZS1kZXZlbG9wZXIgaW5zdGVhZCBdKSApCi0KLWlmIHRlc3QgIngkZW5hYmxlX2RlYnVnZ2luZyIgPSAieG5vIjsgdGhlbgotICAgIEFDX0RFRklORShORVRTTk1QX05PX0RFQlVHR0lORykKLWZpCi0KLUFDX0FSR19XSVRIKGRtYWxsb2MsCi1bICAtLXdpdGgtZG1hbGxvYz1QQVRIICAgICAgICAgICAgIFVzZSBkbWFsbG9jIGxpYnJhcnkgKHd3dy5kbWFsbG9jLmNvbSldLAotICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KLSAgICAgIExJQlM9IiRMSUJTIC1sZG1hbGxvYyIKLSAgICAgIEFDX0RFRklORShIQVZFX0RNQUxMT0NfSCkKLSAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCR3aXRodmFsKQotICAgICAgTElCUz0iJExJQlMgLWxkbWFsbG9jIgotICAgICAgQUNfREVGSU5FKEhBVkVfRE1BTExPQ19IKQotICAgIGZpCi0pCi1BQ19TVUJTVChIQVZFX0RNQUxMT0NfSCkKLUFDX0FSR19FTkFCTEUoZG1hbGxvYywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtZG1hbGxvYy8tLXdpdGhvdXQtZG1hbGxvYyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoZWZlbmNlLAotWyAgLS13aXRoLWVmZW5jZSAgICAgICAgICAgICAgICAgICBMb29rIGZvciBhbmQgdXNlIGxpYmVmZW5jZSAobWFsbG9jKS5dLAotICAgICAgdXNlX2VmZW5jZT0iJHdpdGh2YWwiKQotQUNfQVJHX0VOQUJMRShlZmVuY2UsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWVmZW5jZS8tLXdpdGhvdXQtZWZlbmNlIGluc3RlYWQgXSkgKQotCi10cnlyc2FyZWY9bm8KLUFDX0FSR19XSVRIKHJzYXJlZiwKLVsgIC0td2l0aC1yc2FyZWY9UEFUSCAgICAgICAgICAgICAgTG9vayBmb3IgbGlicnNhcmVmIGluIFBBVEgvbGliLl0sCi0gICAgaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgdHJ5cnNhcmVmPXllcwotICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCi0gICAgICB0cnlyc2FyZWY9bm8KLSAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCR3aXRodmFsKQotICAgICAgdHJ5cnNhcmVmPXllcwotICAgIGZpLAotKQotQUNfQVJHX0VOQUJMRShyc2FyZWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXJzYXJlZi8tLXdpdGhvdXQtcnNhcmVmIGluc3RlYWQgXSkgKQotCi10cnlvcGVuc3NsPWRlZmF1bHR5ZXMKLWFza2Vkb3BlbnNzbD1ubwotQUNfQVJHX1dJVEgob3BlbnNzbCwKLVsgIC0td2l0aC1vcGVuc3NsPVBBVEggICAgICAgICAgICAgTG9vayBmb3Igb3BlbnNzbCBpbiBQQVRIL2xpYi5dLAotICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KLSAgICAgIHRyeW9wZW5zc2w9eWVzCi0gICAgICBhc2tlZG9wZW5zc2w9eWVzCi0gICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KLSAgICAgIHRyeW9wZW5zc2w9bm8KLSAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCR3aXRodmFsKQotICAgICAgdHJ5b3BlbnNzbD15ZXMKLSAgICAgIGFza2Vkb3BlbnNzbD15ZXMKLSAgICBmaSwKLSkKLWlmIHRlc3QgIngkdHJ5b3BlbnNzbCIgPSAieGRlZmF1bHR5ZXMiOyB0aGVuCi0gICAgICBBQ19BRERfU0VBUkNIX1BBVEgoL3Vzci9sb2NhbC9zc2wpCi0gICAgICB0cnlvcGVuc3NsPXllcwotZmkKLUFDX0FSR19FTkFCTEUob3BlbnNzbCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3BlbnNzbC8tLXdpdGhvdXQtb3BlbnNzbCBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKHNzbCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3BlbnNzbC8tLXdpdGhvdXQtb3BlbnNzbCBpbnN0ZWFkIF0pICkKLUFDX0FSR19FTkFCTEUoc3NsLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1vcGVuc3NsLy0td2l0aG91dC1vcGVuc3NsIGluc3RlYWQgXSkgKQotCi10cnlrcmI1PWRlZmF1bHR5ZXMKLWFza2Vka3JiNT1ubwotQUNfQVJHX1dJVEgoa3JiNSwKLVsgIC0td2l0aC1rcmI1PVBBVEggICAgICAgICAgICAgICAgTG9vayBmb3Iga3JiNSBpbiBQQVRIL2xpYi5dLAotICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KLSAgICAgIHRyeWtyYjU9eWVzCi0gICAgICBhc2tlZGtyYjU9eWVzCi0gICAgICBrcmI1cGF0aD11bmRlZgotICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCi0gICAgICB0cnlrcmI1PW5vCi0gICAgICBrcmI1cGF0aD11bmRlZgotICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCi0gICAgICB0cnlrcmI1PXllcwotICAgICAgYXNrZWRrcmI1PXllcwotICAgICAga3JiNXBhdGg9JHdpdGh2YWwKLSAgICBmaSwKLSkKLWlmIHRlc3QgIngkdHJ5a3JiNSIgPSAieGRlZmF1bHR5ZXMiOyB0aGVuCi0gICAgICB0cnlrcmI1PXllcwotICAgICAga3JiNXBhdGg9L3Vzci9rZXJiZXJvcwotZmkKLUFDX0FSR19FTkFCTEUoa3JiNSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgta3JiNS8tLXdpdGhvdXQta3JiNSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgocnBtLAotWyAgLS13aXRob3V0LXJwbSAgICAgICAgICAgICAgICAgICBEb24ndCBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBSUE0gcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3lzdGVtIHdoZW4gYnVpbGRpbmcgdGhlIGhvc3QgTUlCCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl0pCi1BQ19BUkdfRU5BQkxFKHJwbSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtcnBtLy0td2l0aG91dC1ycG0gaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoYWdlbnR4LWRvbS1zb2NrLW9ubHksCi1bICAtLWVuYWJsZS1hZ2VudHgtZG9tLXNvY2stb25seSAgIERpc2FibGUgVURQL1RDUCB0cmFuc3BvcnRzIGZvciBhZ2VudHguXSwKLUFDX0RFRklORShORVRTTk1QX0FHRU5UWF9ET01fU09DS19PTkxZKSkKLUFDX0FSR19XSVRIKGFnZW50eC1kb20tc29jay1vbmx5LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWFnZW50eC1kb20tc29jay1vbmx5Ly0tZGlzYWJsZS1hZ2VudHgtZG9tLXNvY2stb25seSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShzbm1wdHJhcGQtc3ViYWdlbnQsCi1bICAtLWRpc2FibGUtc25tcHRyYXBkLXN1YmFnZW50ICAgIERpc2FibGUgYWdlbnR4IHN1YmFnZW50IGNvZGUgaW4gc25tcHRyYXBkLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdHJhcGRfc3ViYWdlbnQiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYKQotZmkKLUFDX0FSR19XSVRIKHNubXB0cmFwZC1zdWJhZ2VudCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1zbm1wdHJhcGQtc3ViYWdlbnQvLS1kaXNhYmxlLXNubXB0cmFwZC1zdWJhZ2VudCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgob3BhcXVlLXNwZWNpYWwtdHlwZXMsCi1bICAtLXdpdGhvdXQtb3BhcXVlLXNwZWNpYWwtdHlwZXMgIERvbid0IHVzZSBzcGVjaWFsIG9wYXF1ZSBlbmNvZGluZ3MuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBub3JtYWxseSBjYW5ub3QgaGFuZGxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmcgbnVtYmVycywgbm9yIGxhcmdlIDY0IGJpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXJzIHdlbGwuICBCeSBkZWZhdWx0LCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtc25tcCBwYWNrYWdlIGNvbXBpbGVzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlc2UgZXh0cmEgZGF0YXR5cGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluIGEgbGVnYWwgd2F5KV0pCi1BQ19BUkdfRU5BQkxFKG9wYXF1ZS1zcGVjaWFsLXR5cGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1vcGFxdWUtc3BlY2lhbC10eXBlcy8tLXdpdGhvdXQtb3BhcXVlLXNwZWNpYWwtdHlwZXMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG1pYmRpcnMsCi1bICAtLXdpdGgtbWliZGlycz0iZGlyMTpkaXIyOiIgICBEZWZhdWx0IGRpcmVjdG9yaWVzIHRvIGxvb2sgZm9yIG1pYnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IFwkSE9NRS8uc25tcC9taWJzOkRBVEFESVIvc25tcC9taWJzKV0sCi0gICAgW05FVFNOTVBfREVGQVVMVF9NSUJESVJTPSIkd2l0aF9taWJkaXJzIgotICAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRElSUywiJHdpdGhfbWliZGlycyIpXSkKLUFDX0FSR19FTkFCTEUobWliZGlycywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtbWliZGlycy8tLXdpdGhvdXQtbWliZGlycyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgobWlicywKLVsgIC0td2l0aC1taWJzPSJpdGVtMTppdGVtMjoiICAgIERlZmF1bHQgbWliIElEcyB0byByZWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUaGUgZGVmYXVsdCBsaXN0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNOTVB2Mi1NSUI6SUYtTUlCOklQLU1JQjpUQ1AtTUlCOlVEUC1NSUIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgYWRkaXRpb24gb2YgYW55IG1pYnMgdXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBtaWIgbW9kdWxlcyB0aGUgYWdlbnQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkIHdpdGgpXSwKLSAgICBORVRTTk1QX0RFRkFVTFRfTUlCUz0iJHdpdGhfbWlicyIpCi0jIGVuYWJsZS1taWJzIGlzIHZhbGlkIHRvbywgYnV0IG1lYW5zIHNvbWV0aGluZyBlbHNlCi0KLUFDX0FSR19XSVRIKG1pYmZpbGVzLAotWyAgLS13aXRoLW1pYmZpbGVzPSJmaWxlMTpmaWxlMiIgRGVmYXVsdCBtaWIgZmlsZXMgdG8gbG9hZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogIG5vbmUuICB1c2VzIElEcyBhYm92ZSBpbnN0ZWFkLildLAotICAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRklMRVMsIiR3aXRoX21pYmZpbGVzIikpCi1BQ19BUkdfRU5BQkxFKG1pYmZpbGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1taWJmaWxlcy8tLXdpdGhvdXQtbWliZmlsZXMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUobWliLWNvbmZpZy1jaGVja2luZywKLVsgIC0tZW5hYmxlLW1pYi1jb25maWctY2hlY2tpbmcgICAgVHVybnMgb24gZXh0cmEgY2hlY2tzIGR1cmluZyBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgbWliIG1vZHVsZXMuIEFueSBjb25mbGljdHMgd2lsbCBjYXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSB0byBhYm9ydCAoZGVmYXVsdCBpcyB0byBpc3N1ZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyBhbmQgY29udGludWUuKV0sCi0gICAgd2l0aF9taWJfY2ZnX2NoZWNrcz0ieWVzIix3aXRoX21pYl9jZmdfY2hlY2tzPSJubyIpCi1BQ19BUkdfV0lUSChtaWItY29uZmlnLWNoZWNraW5nLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLW1pYi1jb25maWctY2hlY2tpbmcvLS1kaXNhYmxlLW1pYi1jb25maWctY2hlY2tpbmcgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUobWliLWNvbmZpZy1kZWJ1ZywKLVsgIC0tZW5hYmxlLW1pYi1jb25maWctZGVidWcgICAgICAgVHVybnMgb24gdmVyYm9zZSBvdXRwdXQgZHVyaW5nIG1pYiBtb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgcHJvY2Vzc2luZy4pXSwKLSAgICB3aXRoX21pYl9jZmdfZGVidWc9InllcyIsd2l0aF9taWJfY2ZnX2RlYnVnPSJubyIpCi1BQ19BUkdfV0lUSChtaWItY29uZmlnLWNoZWNraW5nLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLW1pYi1jb25maWctY2hlY2tpbmcvLS1kaXNhYmxlLW1pYi1jb25maWctY2hlY2tpbmcgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUobWZkLXJld3JpdGVzLAotWyAgLS1lbmFibGUtbWZkLXJld3JpdGVzICAgICAgICAgICBVc2UgbmV3IE1GRCByZXdyaXRlcyBvZiBtaWIgbW9kdWxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBhdmFpbGFibGUuIChkZWZhdWx0IGlzIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIG1pYiBtb2R1bGUgY29kZSkuXSkKLWlmIHRlc3QgIngkZW5hYmxlX21mZF9yZXdyaXRlcyIgPSAieHllcyI7IHRoZW4KLSAgIEFDX0RFRklORShORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMpCi1maQotQUNfQVJHX1dJVEgobWZkLXJld3JpdGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLW1mZC1yZXdyaXRlcy8tLWRpc2FibGUtbWZkLXJld3JpdGVzIGluc3RlYWQgXSkgKQotCi1hc2tlZHBrY3M9bm8KLUFDX0FSR19XSVRIKHBrY3MsCi1bICAtLXdpdGgtcGtjcz1QQVRIICAgICAgICAgICAgICAgIExvb2sgZm9yIHBrY3MxMSBpbiBQQVRIL2xpYi5dLAotICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KLSAgICAgIGFza2VkcGtjcz15ZXMKLSAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgotICAgICAgYXNrZWRwa2NzPW5vCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIGFza2VkcGtjcz15ZXMKLSAgICBmaSwKLSkKLUFDX0FSR19FTkFCTEUocGtjcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtcGtjcy8tLXdpdGhvdXQtcGtjcyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRSh0ZXN0aW5nLWNvZGUsCi1bICAtLWVuYWJsZS10ZXN0aW5nLWNvZGUgICAgICAgICAgIEVuYWJsZXMgc29tZSBjb2RlIHNlY3Rpb25zIHRoYXQgc2hvdWxkIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZyBvZiBjZXJ0YWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBmdW5jdGlvbmFsaXRpZXMuICBUaGlzIHNob3VsZCAqbm90KiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0dXJuZWQgb24gZm9yIHByb2R1Y3Rpb24gdXNlLiAgRXZlci5dLAotICAgIEFDX0RFRklORShORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUpKQotQUNfQVJHX1dJVEgodGVzdGluZy1jb2RlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXRlc3RpbmctY29kZS8tLWRpc2FibGUtdGVzdGluZy1jb2RlIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKHJlZW50cmFudCwKLVsgIC0tZW5hYmxlLXJlZW50cmFudCAgICAgICAgICAgICAgRW5hYmxlcyBsb2NraW5nIGZ1bmN0aW9ucyB0aGF0IHByb3RlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IHJlc291cmNlcyBpbiBzb21lIG11bHRpLXRocmVhZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50cy4gIFRoaXMgZG9lcyBub3QgZ3VhcmFudGVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLXNhZmUgb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRseSBhbiBleHBlcmltZW50YWwgc2V0dGluZy5dLAotICAgIHdpdGhfcmVzX2xvY2tzPSJ5ZXMiLHdpdGhfcmVzX2xvY2tzPSJubyIpCi1BQ19BUkdfV0lUSChyZWVudHJhbnQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtcmVlbnRyYW50Ly0tZGlzYWJsZS1yZWVudHJhbnQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKHJvb3QtYWNjZXNzLAotWwotQ29uZmlndXJpbmcgdGhlIGFnZW50OgotICAtLXdpdGhvdXQtcm9vdC1hY2Nlc3MgICAgICAgICAgIFRoZSBzbm1wZCBhZ2VudCB3b24ndCByZXF1aXJlIHJvb3QgYWNjZXNzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIGl0LiAgVGhlIGluZm9ybWF0aW9uIGl0IHJldHVybnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliLUlJIHRyZWUgbWF5IG5vdCBiZSBjb3JyZWN0LCBob3dldmVyLl0pCi1BQ19BUkdfRU5BQkxFKHJvb3QtYWNjZXNzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1yb290LWFjY2Vzcy8tLXdpdGhvdXQtcm9vdC1hY2Nlc3MgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGttZW0tdXNhZ2UsCi1bICAtLXdpdGhvdXQta21lbS11c2FnZSAgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGFueSBjb2RlIHJlbGF0ZWQgdG8gdGhlIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGttZW0uXSkKLUFDX0FSR19FTkFCTEUoa21lbS11c2FnZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgta21lbS11c2FnZS8tLXdpdGhvdXQta21lbS11c2FnZSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoZHVtbXktdmFsdWVzLAotWyAgLS13aXRoLWR1bW15LXZhbHVlcyAgICAgICAgICAgICBQcm92aWRlICdwbGFjZWhvbGRlcicgZHVtbXkgdmFsdWVzIHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGVjaG5pY2FsbHkgbm90IGNvbXBsaWFudCB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgc3BlY2lmaWNhdGlvbnMsIGJ1dCB3YXMgaG93IHRoZSBhZ2VudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGVkIGZvciB2ZXJzaW9ucyA8IDQuMC5dKQotQUNfQVJHX0VOQUJMRShkdW1teS12YWx1ZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWR1bW15LXZhbHVlcy8tLXdpdGhvdXQtZHVtbXktdmFsdWVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChwZXJzaXN0ZW50LWRpcmVjdG9yeSwKLVsgIC0td2l0aC1wZXJzaXN0ZW50LWRpcmVjdG9yeT0iZGlyZWN0b3J5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgZGlyZWN0b3J5IGZvciBwZXJzaXN0ZW50IGRhdGEgc3RvcmFnZS5dLGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlk9IiR3aXRoX3BlcnNpc3RlbnRfZGlyZWN0b3J5IikKLUFDX0FSR19FTkFCTEUocGVyc2lzdGVudC1kaXJlY3RvcnksLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5Ly0td2l0aG91dC1wZXJzaXN0ZW50LWRpcmVjdG9yeSBpbnN0ZWFkIF0pICkKLQotZGVmYXVsdF9wZXJzaXN0ZW50X21hc2s9MDc3Ci1BQ19BUkdfV0lUSChwZXJzaXN0ZW50LW1hc2ssCi1bICAtLXdpdGgtcGVyc2lzdGVudC1tYXNrPSJtYXNrIiAgRGVmYXVsdCBtYXNrIGZvciBwZXJzaXN0ZW50IGRhdGEgc3RvcmFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogMDc3KV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIG1hc2sgdmFsdWUgXSk7Ci0gIGZpCi0gIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCBwZXJzaXN0ZW50IG1hc2sgJHdpdGh2YWwpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1BFUlNJU1RFTlRfTUFTSywkd2l0aHZhbCkKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgcGVyc2lzdGVudCBtYXNrICRkZWZhdWx0X3BlcnNpc3RlbnRfbWFzaykKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfUEVSU0lTVEVOVF9NQVNLLCRkZWZhdWx0X3BlcnNpc3RlbnRfbWFzaykKLV0pCi1BQ19BUkdfRU5BQkxFKHBlcnNpc3RlbnQtbWFzaywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtcGVyc2lzdGVudC1tYXNrIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChjb3B5X3BlcnNpc3RlbnRfZmlsZXMsCi1bICAtLXdpdGgtY29weS1wZXJzaXN0ZW50LWZpbGVzPSJubyIgRG9uJ3QgY29weSBwZXJzaXN0ZW50IGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHVzZSAieWVzIiB0byBjb3B5IHRoZW0pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiB5ZXMpXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVM9IiR3aXRoX2NvcHlfcGVyc2lzdGVudF9maWxlcyIpCi1BQ19BUkdfRU5BQkxFKGNvcHlfcGVyc2lzdGVudF9maWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtY29weV9wZXJzaXN0ZW50X2ZpbGVzLy0td2l0aG91dC1jb3B5X3BlcnNpc3RlbnRfZmlsZXMgaW5zdGVhZCBdKSApCi0KLWRlZmF1bHRfdGVtcF9maWxlX3BhdHRlcm49Ii90bXAvc25tcGRYWFhYWFgiCi1BQ19BUkdfV0lUSCh0ZW1wLWZpbGUtcGF0dGVybiwKLVsgIC0td2l0aC10ZW1wLWZpbGUtcGF0dGVybj1QQVRURVJOICBQYXR0ZXJuIG9mIHRlbXBvcmFyeSBmaWxlcyAoRGVmYXVsdDogL3RtcC9zbm1wZFhYWFhYWCldLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBwYXR0ZXJuIF0pOwotICBmaQotICBBQ19NU0dfUkVTVUxUKHVzaW5nIHRlbXBvcmFyeSBmaWxlIHBhdHRlcm4gJHdpdGh2YWwpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOLCIkd2l0aHZhbCIsW1BhdHRlcm4gb2YgdGVtcG9yYXJ5IGZpbGVzXSkKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgdGVtcG9yYXJ5IGZpbGUgcGF0dGVybiAkZGVmYXVsdF90ZW1wX2ZpbGVfcGF0dGVybikKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4sIiRkZWZhdWx0X3RlbXBfZmlsZV9wYXR0ZXJuIixbUGF0dGVybiBvZiB0ZW1wb3JhcnkgZmlsZXNdKQotXSkKLUFDX0FSR19FTkFCTEUodGVtcC1maWxlLXBhdHRlcm4sLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXRlbXAtZmlsZS1wYXR0ZXJuIGluc3RlYWQgXSkgKQotCi1kZWZhdWx0X2FnZW50eF9zb2NrZXQ9Ii92YXIvYWdlbnR4L21hc3RlciIKLUFDX0FSR19XSVRIKGFnZW50eC1zb2NrZXQsCi1bICAtLXdpdGgtYWdlbnR4LXNvY2tldD1GSUxFICAgICAgICAgQWdlbnRYIHNvY2tldCAoRGVmYXVsdDogL3Zhci9hZ2VudHgvbWFzdGVyIGFzIHNwZWNpZmllZCBpbiBSRkMyNzQxKV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGZ1bGwgcGF0aCBdKTsKLSAgZmkKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBBZ2VudFggc29ja2V0ICR3aXRodmFsKQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9BR0VOVFhfU09DS0VULCIkd2l0aHZhbCIsW1VuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uXSkKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgQWdlbnRYIHNvY2tldCAkZGVmYXVsdF9hZ2VudHhfc29ja2V0KQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9BR0VOVFhfU09DS0VULCIkZGVmYXVsdF9hZ2VudHhfc29ja2V0IixbVW5peCBkb21haW4gc29ja2V0IGZvciBBZ2VudFggbWFzdGVyLXN1YmFnZW50IGNvbW11bmljYXRpb25dKQotXSkKLUFDX0FSR19FTkFCTEUoYWdlbnR4LXNvY2tldCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtYWdlbnR4LXNvY2tldCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoZGVmYXVsdC1zbm1wLXZlcnNpb24sCi1bICAtLXdpdGgtZGVmYXVsdC1zbm1wLXZlcnNpb249IjMiIERlZmF1bHQgdmVyc2lvbiBvZiBTTk1QIHRvIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVnYWwgdmFsdWVzOiAxLCAyIChmb3IgU05NUHYyYykgb3IgMy5dLAotICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT049IiR3aXRoX2RlZmF1bHRfc25tcF92ZXJzaW9uIikKLUFDX0FSR19FTkFCTEUoZGVmYXVsdC1zbm1wLXZlcnNpb24sLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uLy0td2l0aG91dC1kZWZhdWx0LXNubXAtdmVyc2lvbiBpbnN0ZWFkIF0pICkKLQotIyB3ZSB0ZXN0IHRoaXMgbm93IGFuZCBsYXRlciBhcyB3ZWxsLiAgd2UgdGVzdCBpdCBub3cgc28gY29uZmlndXJlIGNhbiBkaWUKLSMgZWFybHkgb24gd2l0aCBhbiBlcnJvciByYXRoZXIgdGhhbiB3YWl0aW5nIHRpbGwgdGhlIGVuZCBvZiB0aGUgc2NyaXB0LgotaWYgdGVzdCAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiAhPSAieCI7IHRoZW4KLSAgaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iID0gIjJjIjsgdGhlbgotICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT049IjIiCi0gIGZpCi0gIGlmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiAhPSAiMSIgLWEgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiAhPSAiMiIgLWEgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiAhPSAiMyI7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoSWxsZWdhbCB2ZXJzaW9uIG51bWJlciBwYXNzZWQgdG8gLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uKQotICBmaQotZmkKLQotQUNfQVJHX1dJVEgoc3lzX2NvbnRhY3QsCi1bICAtLXdpdGgtc3lzLWNvbnRhY3Q9Indob0B3aGVyZSIgIERlZmF1bHQgc3lzdGVtIGNvbnRhY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogTE9HSU5ARE9NQUlOTkFNRSldLAotICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0NPTlRBQ1Q9IiR3aXRoX3N5c19jb250YWN0IikKLUFDX0FSR19FTkFCTEUoc3lzX2NvbnRhY3QsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXN5cy1jb250YWN0Ly0td2l0aG91dC1zeXMtY29udGFjdCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoc3lzX2xvY2F0aW9uLAotWyAgLS13aXRoLXN5cy1sb2NhdGlvbj0ibG9jYXRpb24iICBEZWZhdWx0IHN5c3RlbSBsb2NhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBVbmtub3duKV0sCi0gICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfTE9DPSIkd2l0aF9zeXNfbG9jYXRpb24iKQotQUNfQVJHX0VOQUJMRShzeXNfbG9jYXRpb24sLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXN5cy1sb2NhdGlvbi8tLXdpdGhvdXQtc3lzLWxvY2F0aW9uIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChsb2dmaWxlLAotWyAgLS13aXRoLWxvZ2ZpbGU9ImxvY2F0aW9uIiAgICAgICBEZWZhdWx0IGxvZyBmaWxlIGxvY2F0aW9uIGZvciBzbm1wZC5dLAotICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRT0iJHdpdGhfbG9nZmlsZSIpCi1BQ19BUkdfRU5BQkxFKGxvZ2ZpbGUsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWxvZ2ZpbGUvLS13aXRob3V0LWxvZ2ZpbGUgaW5zdGVhZCBdKSApCi1pZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFIiA9ICJubyI7IHRoZW4KLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEU9Im5vbmUiCi1maQotCi1BQ19BUkdfV0lUSCh0cmFuc3BvcnRzLAotWyAgLS13aXRoLXRyYW5zcG9ydHM9InQxIHQyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHRyYW5zcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyAoc3BhY2Ugc2VwYXJhdGVkIGxpc3QpLl0pCi1BQ19BUkdfV0lUSChvdXRfdHJhbnNwb3J0cywKLVsgIC0td2l0aC1vdXQtdHJhbnNwb3J0cz0idDEgLi4uIiAgRXhjbHVkZSBsaXN0ZWQgU05NUCB0cmFuc3BvcnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BhY2Ugc2VwYXJhdGVkIGxpc3QpLgotCi0gIEF2YWlsYWJsZSBTTk1QIHRyYW5zcG9ydCBtb2R1bGVzIGFyZToKLQotICAgIFVEUCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVAuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYWx3YXlzIGNvbXBpbGVkIGluLgotICAgIFVEUElQdjYgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVB2Ni4KLSAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBhdmFpbGFibGUgZm9yIExpbnV4LCBTb2xhcmlzIGFuZAotICAgICAgICAgICAgICAgIEZyZWVCU0QgYXQgbGVhc3QuCi0gICAgICAgICAgICAgICAgSXQgaXMgbmV2ZXIgY29tcGlsZWQgaW4gYnkgZGVmYXVsdC4KLSAgICBUQ1BJUHY2ICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQdjYuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYXZhaWxhYmxlIGZvciBMaW51eCwgU29sYXJpcyBhbmQKLSAgICAgICAgICAgICAgICBGcmVlQlNEIGF0IGxlYXN0LgotICAgICAgICAgICAgICAgIEl0IGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQuCi0gICAgVENQICAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFRDUC9JUC4KLSAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0LCBidXQgbWF5IGJlIG9taXR0ZWQuCi0gICAgVW5peCAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVuaXggZG9tYWluIHByb3RvY29scy4KLSAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IGV4Y2VwdCBvbiBXaW4zMgotICAgICAgICAgICAgICAgIHBsYXRmb3JtcywgYW5kIG1heSBiZSBvbWl0dGVkLgotICAgIENhbGxiYWNrICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBhbiBpbnRlcm5hbCBsb2NhbGx5IGNvbm5lY3RlZCBwYWlyCi0gICAgICAgICAgICAgICAgb2Ygc25tcF9zZXNzaW9ucy4KLSAgICBBQUw1UFZDICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgQUFMNSBQVkNzLgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIHByZXNlbnRseSBvbmx5IGF2YWlsYWJsZSBmb3IgTGludXgsCi0gICAgICAgICAgICAgICAgaXMgbmV2ZXIgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBhbmQgbWF5IGJlIG9taXR0ZWQuCi0gICAgSVBYICAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIElQWCBwZXIgUkZDIDE0MjAuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgcHJlc2VudGx5IG9ubHkgYXZhaWxhYmxlIGZvciBMaW51eCwKLSAgICAgICAgICAgICAgICBpcyBuZXZlciBjb21waWxlZCBpbiBieSBkZWZhdWx0IGFuZCBtYXkgYmUgb21pdHRlZC4KLV0pCi0KLSMKLSMgQ2F0Y2ggY29tbW9uIG1pc3Rha2VzIGluIHRyYW5zcG9ydCBvcHRpb25zCi0jCi1BQ19BUkdfV0lUSCh0cmFuc3BvcnQsLCAgICBBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC10cmFuc3BvcnRzLy0td2l0aG91dC10cmFuc3BvcnRzIGluc3RlYWQgXSkgICAgICkKLUFDX0FSR19XSVRIKG91dC10cmFuc3BvcnQsLEFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW91dC10cmFuc3BvcnRzLy0td2l0aG91dC1vdXQtdHJhbnNwb3J0cyBpbnN0ZWFkIF0pICkKLQotIwotIyBzZWN1cml0eSBtb2R1bGVzCi0jCi0KLUFDX0FSR19XSVRIKHNlY3VyaXR5LW1vZHVsZXMsCi1bICAtLXdpdGgtc2VjdXJpdHktbW9kdWxlcz0iczEgczIgLi4uIiAgIENvbXBpbGUgaW4gdGhlIGdpdmVuIFNOTVAgc2VjdXJpdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSBzZXJ2aWNlcyAoc3BhY2Ugc2VwYXJhdGVkIGxpc3QpLgotCi0gIEF2YWlsYWJsZSBTTk1QIHNlY3VyaXR5IHNlcnZpY2VzOgotCi0gICAgICAgIHVzbSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB1c2VyIGJhc2VkIFNOTVAgc2VjdXJpdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1aXJlZCBhbmQgYWx3YXlzIGNvbXBpbGVkIGluKQotICAgICAgICBrc20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3Iga2VyYmVyb3MgYmFzZWQgU05NUCBzZWN1cml0eQotXSkKLUFDX0FSR19FTkFCTEUoc2VjdXJpdHktbW9kdWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtc2VjdXJpdHktbW9kdWxlcy8tLXdpdGhvdXQtc2VjdXJpdHktbW9kdWxlcyBpbnN0ZWFkIF0pICkKLQotIwotIyBtaWIgbW9kdWxlcwotIwotCi1BQ19BUkdfV0lUSChtaWJfbW9kdWxlcywKLVsgIC0td2l0aC1taWItbW9kdWxlcz0iaXRlbTEgLi4uIiAgQ29tcGlsZSB3aXRoIGFkZGl0aW9uYWwgbWliIG1vZHVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTcGFjZSBzZXBhcmF0ZWQgbGlzdCkuXSkKLUFDX0FSR19FTkFCTEUobWliX21vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzLy0td2l0aG91dC1taWItbW9kdWxlcyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgob3V0X21pYl9tb2R1bGVzLAotWyAgLS13aXRoLW91dC1taWItbW9kdWxlcz0ibGlzdCIgICBDb21waWxlIHdpdGhvdXQgdGhlc2UgbWliIG1vZHVsZXMuCi0KLSAgRGVmYXVsdCBtaWIgbW9kdWxlcyBjb21waWxlZCBpbnRvIHRoZSBhZ2VudCAod2hpY2ggY2FuIGJlIHJlbW92ZWQpOgotICAKLSAgICBtaWJJSSAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBtaWItSUkgdHJlZS4KLSAgICBzbm1wdjNtaWJzICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBzbm1wdjMgbWliIG1vZHVsZXMuCi0gICAgdWNkX3NubXAgICAgICAgICAgICAgICBVQ0QtU05NUC1NSUIgc3BlY2lmaWMgZXh0ZW5zaW9ucy4KLSAgICBhZ2VudF9taWJzICAgICAgICAgICAgIE5FVC1TTk1QLUFHRU5ULU1JQiBleHRlbnNpb25zCi0gICAgYWdlbnR4ICAgICAgICAgICAgICAgICBBZ2VudFggc3VwcG9ydCAoc2VlIGJlbG93KQotICAgIG5vdGlmaWNhdGlvbiAgICAgICAgICAgbWlicyBzdXBwb3J0aW5nIHNwZWNpZmljYXRpb24gb2YgdHJhcCBkZXN0aW5hdGlvbnMuCi0gICAgdGFyZ2V0ICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciB0aGUgU05NUCBXR3MgVEFSR0VULU1JQi4KLSAgICB1dGlsaXRpZXMgICAgICAgICAgICAgIGdlbmVyYWwgYWdlbnQgY29uZmlndXJhdGlvbiB1dGlsaXRpZXMuCi0gICAgZGlzbWFuL2V2ZW50ICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgRElTTUFOLUVWRU5ULU1JQgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VwcG9ydHMgc2VsZiBtb25pdG9yaW5nIGFuZCBub3RpZmljYXRpb24gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeSB3aGVuIGVycm9yIGNvbmRpdGlvbnMgYXJlIGZvdW5kKQotICAgIGRpc21hbi9zY2hlZHVsZSAgICAgICAgc3VwcG9ydCBmb3IgdGhlIERJU01BTi1TQ0hFRFVMRS1NSUIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyaWdnZXIgU0VUIHJlcXVlc3RzIGF0IHNwZWNpZmllZCB0aW1lcykKLSAgICBob3N0ICAgICAgICAgICAgICAgICAgIGhvc3QgcmVzb3VyY2VzIG1pYiBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25seSBvbiBtYWpvciBzdXBwb3J0ZWQgcGxhdGZvcm1zKQotCi0gIE9wdGlvbmFsIG1pYiBtb2R1bGVzIHRoYXQgY2FuIGJlIGJ1aWx0IGludG8gdGhlIGFnZW50IGluY2x1ZGU6Ci0gICAgc211eCAgICAgICAgICAgICAgICAgICBzbXV4IHN1cHBvcnQgdG8gYWxsb3cgc3ViYWdlbnRzIHRvIGF0dGFjaCB0byBzbm1wZC4KLSAgICBtaWJJSS9tdGFfc2VuZG1haWwgICAgIFNlbmRtYWlsIHN0YXRpc3RpY3MgbW9uaXRvcmluZyAoTVRBLU1JQikKLSAgICB1Y2Qtc25tcC9kaXNraW8gICAgICAgIFRhYmxlIG9mIGlvLWRldmljZXMgYW5kIGhvdyBtdWNoIGRhdGEgdGhleSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkL3dyaXR0ZW4uICAob25seSB0ZXN0ZWQgb24gU29sYXJpcywgTGludXgpCi0gICAgZGlzbWFuL29sZC1ldmVudC1taWIgICBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRElTTUFOLUVWRU5ULU1JQgotCi0gIE9wdGlvbmFsIG1vZHVsZXMgZm9yIHNwZWNpZmljIHBsYXRmb3JtcwotICAgIExpbnV4Ci0gICAgICB1Y2Qtc25tcC9sbVNlbnNvcnMgICBoYXJkd2FyZSBtb25pdG9yaW5nIChMTS1TRU5TT1JTLU1JQikKLSAgICAgIGlwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUgIChleHBlcmltZW50YWwpCi0gICAgICBpcC1taWIvaXB2NkludGVyZmFjZVRhYmxlICAoZXhwZXJpbWVudGFsKQotICAgICAgdHVubmVsICAgICAgICAgICAgICAgTGludXggVFVOTkVMLU1JQiBzdXBwb3J0IChpZlRhYmxlIGV4dGVuc2lvbikKLSAgICAgIG1pYklJL2ludGVyZmFjZXMgICAgIChvbGQgaWZUYWJsZSBpbXBsZW1lbnRhdGlvbikKLSAgICAgIG1pc2MvaXBmd2FjYyAgICAgICAgIGFjY291bnRpbmcgcnVsZXMgSVAgZmlyZXdhbGwgaW5mb3JtYXRpb24KLSAgICAgIGlwZndjaGFpbnMvaXBmd2NoYWlucyAgZmlyZXdhbGwgY2hhaW5zIHVuZGVyIGlwZncKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNlZSBhZ2VudC9taWJncm91cC9pcGZ3Y2hhaW5zL1JFQURNRSkKLSAgICAgIHNjdHAtbWliICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBTQ1RQLU1JQgotCi0gICAgU29sYXJpcwotICAgICAgdWNkLXNubXAvbG1TZW5zb3JzICAgaGFyZHdhcmUgbW9uaXRvcmluZyAoTE0tU0VOU09SUy1NSUIpCi0gICAgICBpZi1taWIgICAgICAgICAgICAgICBJRi1NSUIgcmV3cml0ZSAoYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKLSAgICAgIHRjcC1taWIgICAgICAgICAgICAgIFRDUC1NSUIgcmV3cml0ZSAodGNwQ29ubmVjdGlvblRhYmxlIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BMaXN0ZW5lclRhYmxlOyBhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQotICAgICAgdWRwLW1pYiAgICAgICAgICAgICAgVURQLU1JQiByZXdyaXRlICh1ZHBFbmRwb2ludFRhYmxlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQotCi0gICAgRnJlZUJTRC9PcGVuQlNECi0gICAgICBpZi1taWIgICAgICAgICAgICAgICBJRi1NSUIgcmV3cml0ZSAoYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKLQotICBBZ2VudFggc3VwcG9ydDoKLSAgICBhZ2VudHgvc3ViYWdlbnQgICAgICAgIGFsbG93cyB0aGUgYWdlbnQgdG8gcnVuIGFzIGVpdGhlciBhIHNubXAgYWdlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFzIGFuIGFnZW50WCBzdWItYWdlbnQuCi0gICAgYWdlbnR4L21hc3RlciAgICAgICAgICBtYWtlcyB0aGUgYWdlbnQgcnVuIGFzIGFuIGFnZW50WCBtYXN0ZXIgYWdlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYSBub3JtYWwgc25tcCBhZ2VudC4KLSAgICBhZ2VudHggICAgICAgICAgICAgICAgIGluY2x1ZGVzIGJvdGggYWdlbnR4L21hc3RlciBhbmQgYWdlbnR4L2NsaWVudC4KLQotICBPcHRpb25hbCBtb2R1bGVzIGZvciBDIGNvZGVycyB0byBsb29rIGF0IGFuZC9vciBpbmNsdWRlIGFzIGV4dGVuc2lvbiBleGFtcGxlczoKLSAgCi0gICAgZXhhbXBsZXMvdWNkRGVtb1B1YmxpYyAgU05NUHYzIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZyBtaWIuCi0gICAgZXhhbXBsZXMvZXhhbXBsZSAgICAgICAgZXhhbXBsZSBDIGNvZGUgZXh0ZW5zaW9uLl0pCi1BQ19BUkdfRU5BQkxFKG91dF9taWJfbW9kdWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzLy0td2l0aG91dC1vdXQtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSApCi0KLQotIwotQUNfQVJHX1dJVEgoZW50ZXJwcmlzZS1vaWQsCi1bRW50ZXJwcmlzZSBPSURzOiAgKHdhcm5pbmc6IHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLikKLQotICAtLXdpdGgtZW50ZXJwcmlzZS1vaWQgICAgICAgICAgICAgIFRoZSBlbnRlcnByaXNlIG51bWJlciBhc3NpZ25lZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3IgYnkgSUFOQS4gIFNlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWFuYS5vcmcvY2dpLWJpbi9lbnRlcnByaXNlLnBsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IG9uZSwgdGhvdWdoIHVzaW5nIHRoZSBkZWZhdWx0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmFibHkgdGhlIHJpZ2h0IGNob2ljZSBpcyBtb3N0IGNhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDgwNzIgPSAiZW50ZXJwcmlzZS5uZXQtc25tcCIpXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBlbnRlcnByaXNlIG51bWJlciBdKTsKLSAgZmkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9PSUQsICR3aXRodmFsKQotICBlbnRfb2lkPSIxLDMsNiwxLDQsMSwkd2l0aHZhbCIKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9NSUIsICRlbnRfb2lkKQotICBlbnRfZG90X29pZD0iMS4zLjYuMS40LjEuJHdpdGh2YWwiCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfRE9UX01JQiwgJGVudF9kb3Rfb2lkKQotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2UgbnVtYmVyICR3aXRodmFsKQotXSxbCi0gIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCAiZW50ZXJwcmlzZS5uZXQtc25tcCIpCi1dKQotQUNfQVJHX0VOQUJMRShlbnRlcnByaXNlLW9pZCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtZW50ZXJwcmlzZS1vaWQvLS13aXRob3V0LWVudGVycHJpc2Utb2lkIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChlbnRlcnByaXNlLXN5c29pZCwKLVsKLSAgLS13aXRoLWVudGVycHJpc2Utc3lzb2lkICAgICAgICAgICBUaGUgYmFzZSBPSUQgZm9yIHRoZSBzeXNPYmplY3RJRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzeXN0ZW0gZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAuMS4zLjYuMS40LjEuODA3Mi4zLjIuLi4gPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldFNubXBBZ2VudE9JRHMuLi4iKV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGJhc2UgT0lEIHZhbHVlIF0pOwotICBmaQotICBzeXNfb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nIHwgc2VkICdzL1wuL1wsL2cnYAotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fTUlCLCAkc3lzX29pZCkKLSAgc3lzX2RvdF9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLydgCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9ET1RfTUlCLCAkc3lzX2RvdF9vaWQpCi0gIHN5c29pZF9sZW49YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9bXlwuXS8vZycgfCBhd2sgLUZcLiAneyBwcmludCBORiB9J2AKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX0RPVF9NSUJfTEVOR1RILCAkc3lzb2lkX2xlbikKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIHN5c09JRCAkd2l0aHZhbCAuLi4uKQotXSxbCi0gIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCBlbnRlcnByaXNlIHN5c09JRCAiTkVULVNOTVAtTUlCOjpuZXRTbm1wQWdlbnRPSURzLi4uIikKLV0pCi1BQ19BUkdfRU5BQkxFKGVudGVycHJpc2Utc3lzb2lkLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1lbnRlcnByaXNlLXN5c29pZC8tLXdpdGhvdXQtZW50ZXJwcmlzZS1zeXNvaWQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCwKLVsKLSAgLS13aXRoLWVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCBUaGUgT0lEIHVzZWQgZm9yIHRoZSByb290IG9mCi0JCQkJICAgICBlbnRlcnByaXNlIHNwZWNpZmljIG5vdGlmaWNhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLjEuMy42LjEuNC4xLjgwNzIuNCA9IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV0U25tcE5vdGlmaWNhdGlvblByZWZpeCIpXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgYmFzZSBPSUQgdmFsdWUgXSk7Ci0gIGZpCi0gIG5vdGlmaWNhdGlvbl9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLycgfCBzZWQgJ3MvXC4vXCwvZydgCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX05PVElGSUNBVElPTl9NSUIsICRub3RpZmljYXRpb25fb2lkKQotICBub3RpZmljYXRpb25fZG90X29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJ2AKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUIsICRub3RpZmljYXRpb25fZG90X29pZCkKLSAgbm90aWZpY2F0aW9ub2lkX2xlbj1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL1teXC5dLy9nJyB8IGF3ayAtRlwuICd7IHByaW50IE5GIH0nYAotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9OT1RJRklDQVRJT05fRE9UX01JQl9MRU5HVEgsICRub3RpZmljYXRpb25vaWRfbGVuKQotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2Ugbm90aWZpY2F0aW9ucyAkd2l0aHZhbCkKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgbm90aWZpY2F0aW9ucyAiTkVULVNOTVAtTUlCOjpuZXRTbm1wTm90aWZpY2F0aW9ucyIpCi1dKQotQUNfQVJHX0VOQUJMRShlbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZC8tLXdpdGhvdXQtZW50ZXJwcmlzZS1ub3RpZmljYXRpb24tb2lkIGluc3RlYWQgXSkgKQotIwotIyBDYXRjaCBjb21tb24gbWlzdGFrZXMgaW4gY29uZmlndXJlIG9wdGlvbnMKLSMKLUFDX0FSR19XSVRIKG1pYi1tb2R1bGUsLCAgICBBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjEuIFVzZSAtLXdpdGgtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSAgICAgKQotQUNfQVJHX1dJVEgobW9kdWxlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjMuIFVzZSAtLXdpdGgtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSApCi1BQ19BUkdfV0lUSChtb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjQuIFVzZSAtLXdpdGgtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG91dC1taWItbW9kdWxlLCxBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjUuIFVzZSAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgob3V0LW1vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uNy4gVXNlIC0td2l0aC1vdXQtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSApCi1BQ19BUkdfV0lUSChvdXQtbW9kdWxlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjguIFVzZSAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotCi0jCi0jIFBlcmwgc3BlY2lmaWMKLSMKLUFDX0FSR19XSVRIKHBlcmwtbW9kdWxlcywKLVsKLVBlcmw6Ci0gIC0td2l0aC1wZXJsLW1vZHVsZXNbPUFSR1NdICAgICAgSW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzIGFsb25nIHdpdGggdGhlIHJlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgbmV0LXNubXAgdG9vbGtpdC4gIElmIEFSR1MgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZXkncmUgcGFzc2VkIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2VmaWxlLlBMIHNjcmlwdC5dLFsKLSAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0gICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgIGVsc2UKLSAgICAgIGluc3RhbGxfcGVybD0ieWVzIgotICAgICAgaWYgdGVzdCAiJHdpdGh2YWwiICE9ICJ5ZXMiOyB0aGVuCi0gICAgICAgIFBFUkxBUkdTPSIkd2l0aHZhbCIKLSAgICAgIGZpCi0gICAgZmkKLV0sIGluc3RhbGxfcGVybD0idHJ5IikKLQotQUNfQVJHX0VOQUJMRShlbWJlZGRlZC1wZXJsLAotWyAgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgICAgICAgICBEaXNhYmxlIGVtYmVkZGVkIFBlcmwgaW4gdGhlIFNOTVAgYWdlbnQgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHRyYXBkLiBbZW5hYmxlZCBieSBkZWZhdWx0XV0sCi0gICAgZW1iZWRfcGVybD0iJGVuYWJsZXZhbCIsIGVtYmVkX3Blcmw9InRyeSIpCi0KLUFDX0FSR19FTkFCTEUocGVybC1jYy1jaGVja3MsCi1bICAtLWRpc2FibGUtcGVybC1jYy1jaGVja3MgICAgICAgIERpc2FibGUgY29uZmlndXJlIGNoZWNrcyBmb3Igd2hldGhlciBQZXJsJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDIENvbXBpbGVyIGlzIGNvbXBhdGlibGUgd2l0aCBvdXJzIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZCBQZXJsIGlzIGVuYWJsZWQuXSkKLQotIyBDb21tb24gcGVybCBtaXN0YWtlcwotQUNfQVJHX0VOQUJMRShwZXJsLW1vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXBlcmwtbW9kdWxlcy8tLXdpdGhvdXQtcGVybC1tb2R1bGVzIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgoZW1iZWRkZWQtcGVybCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsLy0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgocGVybC1jYy1jaGVja3MsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtcGVybC1jYy1jaGVja3MvLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzIGluc3RlYWQgXSkgKQotCi0KLSMKLSMgUHl0aG9uIHNwZWNpZmljCi0jCi1BQ19BUkdfV0lUSChweXRob24tbW9kdWxlcywKLVsKLVB5dGhvbjoKLSAgLS13aXRoLXB5dGhvbi1tb2R1bGVzWz1BUkdTXSAgICBJbnN0YWxsIHRoZSBweXRob24gYmluZGluZ3MgYWxvbmcgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0IG9mIHRoZSBuZXQtc25tcCB0b29sa2l0LiAgSWYgQVJHUyBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCwgdGhleSdyZSBwYXNzZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXAucHkgc2NyaXB0IGFzIGFyZ3VtZW50cy5dLFsKLSAgICBpbnN0YWxsX3B5dGhvbj0ieWVzIgotICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICBQWVRIT05BUkdTPSIiCi0gICAgZWxpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0gICAgICBQWVRIT05BUkdTPSIiCi0gICAgICBpbnN0YWxsX3B5dGhvbj0ibm8iCi0gICAgZWxzZQotICAgICAgUFlUSE9OQVJHUz0iJHdpdGh2YWwiCi0gICAgZmkKLV0sIGluc3RhbGxfcHl0aG9uPSJubyIpCi0KLSMgb3RoZXIgZmxhZ3MKLQotQUNfQVJHX1dJVEgoc2VydmVyLXNlbmQtYnVmLAotWwotTmV0d29yayBCdWZmZXJzOgotICAtLXdpdGgtc2VydmVyLXNlbmQtYnVmWz1BUkddICAgIFVzZSBBUkcgZm9yIHRoZSBkZWZhdWx0IFVEUC9UQ1Agc2VuZCBidWZmZXIgaW5zdGVhZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBPUyBidWZmZXIgZm9yIHNlcnZlciBzb2NrZXRzIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCAoc25tcGQsIHNubXB0cmFwZCkuICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIHJ1bnRpbWUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgQVJHIHNob3VsZCBiZSB0aGUgc2l6ZSBpbiBieXRlc10sWwotICAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBwb3NpdGl2ZSBudW1iZXIgZm9yIHRoZSBzZXJ2ZXIgc2VuZCBidWZmZXIgXSkKLSAgIGZpCi0gICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX1NFUlZFUl9TRU5EX0JVRiwgJHdpdGh2YWwpXSwKLSAgIEFDX01TR19SRVNVTFQoW3VzaW5nIE9TIGRlZmF1bHQgc2VuZCBidWZmZXIgc2l6ZSBmb3Igc2VydmVyIHNvY2tldHNdKSApCi1BQ19BUkdfRU5BQkxFKHNlcnZlci1zZW5kLWJ1ZiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtc2VydmVyLXNlbmQtYnVmLy0td2l0aG91dC1zZXJ2ZXItc2VuZC1idWYgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKHNlcnZlci1yZWN2LWJ1ZiwKLVsgIC0td2l0aC1zZXJ2ZXItcmVjdi1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb24sIGJ1dCBmb3IgcmVjZWl2ZSBidWZmZXJdLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBwb3NpdGl2ZSBudW1iZXIgZm9yIHRoZSBzZXJ2ZXIgcmVjdiBidWZmZXIgXSkKLSAgZmkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfUkVDVl9CVUYsICR3aXRodmFsKV0sCi0gIEFDX01TR19SRVNVTFQoW3VzaW5nIE9TIGRlZmF1bHQgcmVjdiBidWZmZXIgc2l6ZSBmb3Igc2VydmVyIHNvY2tldHNdKSApCi1BQ19BUkdfRU5BQkxFKHNlcnZlci1yZWN2LWJ1ZiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtc2VydmVyLXJlY3YtYnVmLy0td2l0aG91dC1zZXJ2ZXItcmVjdi1idWYgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGNsaWVudC1zZW5kLWJ1ZiwKLVsgIC0td2l0aC1jbGllbnQtc2VuZC1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb25zLCBidXQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmUgYnVmZmVyIG9mIGNsaWVudCBzb2NrZXRzXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgY2xpZW50IHNlbmQgYnVmZmVyIF0pCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1NFTkRfQlVGLCAkd2l0aHZhbCldLAotICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHNlbmQgYnVmZmVyIHNpemUgZm9yIGNsaWVudCBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShjbGllbnQtc2VuZC1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWNsaWVudC1zZW5kLWJ1Zi8tLXdpdGhvdXQtY2xpZW50LXNlbmQtYnVmIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChjbGllbnQtcmVjdi1idWYsCi1bICAtLXdpdGgtY2xpZW50LXJlY3YtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9ucywgYnV0IGZvciB0aGUgc2VuZCBidWZmZXJdLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBwb3NpdGl2ZSBudW1iZXIgZm9yIHRoZSBjbGllbnQgcmVjdiBidWZmZXIgXSkKLSAgZmkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9DTElFTlRfUkVDVl9CVUYsICR3aXRodmFsKV0sCi0gIEFDX01TR19SRVNVTFQoW3VzaW5nIE9TIGRlZmF1bHQgcmVjdiBidWZmZXIgc2l6ZSBmb3IgY2xpZW50IHNvY2tldHNdKSApCi1BQ19BUkdfRU5BQkxFKGNsaWVudC1yZWN2LWJ1ZiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtY2xpZW50LXJlY3YtYnVmLy0td2l0aG91dC1jbGllbnQtcmVjdi1idWYgaW5zdGVhZCBdKSApCi0KLSMKLSMgb3RoZXJ3aXNlIHByb21wdGVkIGluZm9ybWF0aW9uCi0jCi1BQ19BUkdfV0lUSChkZWZhdWx0cywKLVsKLU1pc2NlbGxhbmVvdXM6Ci0gIC0td2l0aC1kZWZhdWx0cyAgICAgICAgIFVzZSBkZWZhdWx0cyBmb3IgcHJvbXB0ZWQgdmFsdWVzLl0sCi0gICAgZGVmYXVsdHM9InllcyIsZGVmYXVsdHM9Im5vIikKLUFDX0FSR19FTkFCTEUoZGVmYXVsdHMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWRlZmF1bHRzLy0td2l0aG91dC1kZWZhdWx0cyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRSh1Y2Qtc25tcC1jb21wYXRpYmlsaXR5LAotWyAgLS1lbmFibGUtdWNkLXNubXAtY29tcGF0aWJpbGl0eSBJbnN0YWxsIHVjZC1zbm1wIGxvb2stYWxpa2UgaGVhZGVycyBhbmQgbGlicy4KLV0pCi1BQ19BUkdfV0lUSCh1Y2Qtc25tcC1jb21wYXRpYmlsaXR5LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXVjZC1zbm1wLWNvbXBhdGliaWxpdHkvLS1kaXNhYmxlLXVjZC1zbm1wLWNvbXBhdGliaWxpdHkgaW5zdGVhZCBdKSApCi0KLSMKLSMgc2V0dXAgaW5zdGFsbCB0YXJnZXRzCi0jCi1pZiB0ZXN0ICJ4JGVuYWJsZV91Y2Rfc25tcF9jb21wYXRpYmlsaXR5IiA9ICJ4eWVzIiA7IHRoZW4JCi0gIGluc3RhbGx1Y2RoZWFkZXJzPWluc3RhbGx1Y2RoZWFkZXJzCi0gIGluc3RhbGx1Y2RsaWJzPWluc3RhbGx1Y2RsaWJzCi0gIEFDX01TR19DQUNIRV9BREQoVUNELVNOTVAgY29tcGF0YWJpbGl0eTogICAgIGVuYWJsZWQpCi1maQotQUNfU1VCU1QoaW5zdGFsbHVjZGhlYWRlcnMpCi1BQ19TVUJTVChpbnN0YWxsdWNkbGlicykKLQotIyBPbmx5IGRlZmluZSBpZiBzcGVjaWZpY2FsbHkgY2hvc2VuIGFzIC0td2l0aG91dCAoaS5lLiwgZGVmYXVsdCB0byB0cnVlKS4gCi1pZiB0ZXN0ICJ4JHdpdGhfcm9vdF9hY2Nlc3MiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MpCi1maQotCi0jIE9ubHkgZGVmaW5lIGlmIHNwZWNpZmljYWxseSBjaG9zZW4gYXMgLS13aXRob3V0IChpLmUuLCBkZWZhdWx0IHRvIHRydWUpLgotaWYgdGVzdCAieCR3aXRoX2ttZW1fdXNhZ2UiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKLWZpCi0KLSMgRGVmaW5lIHVubGVzcyBzcGVjaWZpY2FsbHkgc3VwcHJlc3NlZCAoaS5lLiwgb3B0aW9uIGRlZmF1bHRzIHRvIGZhbHNlKS4gCi1pZiB0ZXN0ICJ4JHdpdGhfZHVtbXlfdmFsdWVzIiAhPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTKQotZmkKLQotIyBPbmx5IGRlZmluZSBpZiBzcGVjaWZpY2FsbHkgY2hvc2VuIGFzIC0td2l0aG91dCAoaS5lLiwgZGVmYXVsdCB0byB0cnVlKS4gCi1pZiB0ZXN0ICJ4JHdpdGhfb3BhcXVlX3NwZWNpYWxfdHlwZXMiICE9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMpCi1maQotCi0KLSMgb3ZlcmZsb3cgcHJvYmxlbXMgd2l0aCBocHV4J3Mgc2gKLSMgdGFrZW4gZnJvbSBQZXJsJ3MgQ29uZmlndXJlIHNjcmlwdCAKLQotQUNfTVNHX0NIRUNLSU5HKFtpZiBJIG5lZWQgdG8gZmVlZCBteXNlbGYgdG8ga3NoXSkKLWlmIHRlc3QgLWYgL2hwLXV4IC1hIC1mIC9iaW4va3NoOyB0aGVuCi0gIGlmIChQQVRIPS47IGFsaWFzIC14KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotICBlbHNlCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgaWYgdGVzdCAieCQxIiA9ICJ4IjsgdGhlbgotICAgICAgZXhlYyAvYmluL2tzaCAkMAotICAgIGVsc2UKLSAgICAgIGV4ZWMgL2Jpbi9rc2ggJDAgIiRAIgotICAgIGZpCi0gIGZpCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCi1maQotCi1pZiB0ZXN0ICJ4JGRldmVsb3BlciIgIT0gInhubyIgLWEgLWYgJHNyY2Rpci9yZW1vdmUtZmlsZXM7IHRoZW4KLSAgIyB0dXJuIG9uIHRoZSBkZXZlbG9wZXIgZmxhZyB3aGVuIHRha2VuIGZyb20gYSBTVk4gY2hlY2tvdXQgKG5vdCBhIHJlbGVhc2UpCi0gIGRldmVsb3Blcj0ieWVzIgotZmkKLQotQUNfTEFORyhbQ10pCi1BQ19QUk9HX0NDCi1BQ19QUk9HX0NQUAotTElOS0NDPSR7TElOS0NDLSIkQ0MifQotQUNfU1VCU1QoTElOS0NDKQotQUNfQUlYCi0KLSMgc3lzdGVtIGNoZWNrCi1BQ19DQU5PTklDQUxfVEFSR0VUCi1jaGFuZ2VxdW90ZSgsICkKLVBBUlRJQUxUQVJHRVRPUz1gZWNobyAkdGFyZ2V0X29zIHwgc2VkICdzL1stLl9dLiovLydgCi1jaGFuZ2VxdW90ZShbLCBdKQotCi0jIHBsYXRmb3JtLXNwZWNpZmljIGNvbXBpbGVyIGZsYWdzCi1pZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgotCUNGTEFHUz0iJENGTEFHUyAtRG1pbmd3MzIiCi1maQotCi0jIHBsYXRmb3JtLXNwZWNpZmljIGxpbmtlciBmbGFncwotY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgYWl4NC4yKnxhaXg0LjMqfGFpeDUqfGFpeDYqKQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doYXQgbGlua2VyIGZsYWdzIHRvIGFkZCB0byBlbmFibGUgcnVudGltZSBsaW5raW5nIG9uIEFJWF0pCi0gICAgICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbwotICAgICAgICAgICAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KLSAgICAgICAgICAgICAgICBuZXRzbm1wX2FpeF9ydW50aW1lbGlua2luZ19mbGFnc19vaz15ZXMKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgICAgICBpZiB0ZXN0ICJYJG5ldHNubXBfYWl4X3J1bnRpbWVsaW5raW5nX2ZsYWdzX29rIiAhPSAiWHllcyI7IHRoZW4KLQkgICAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCi0JICAgICAgICBuZXRzbm1wX2FpeF9sZGZsYWdzPSItV2wsLWJydGwiCi0JICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXRzbm1wX2FpeF9sZGZsYWdzPSItYnJ0bCIKLQkgICAgZmkKLSAgICAgICAgICAgIExERkxBR1M9IiRuZXRzbm1wX2FpeF9sZGZsYWdzICRMREZMQUdTIgotCSAgICBBQ19NU0dfUkVTVUxUKCRuZXRzbm1wX2FpeF9sZGZsYWdzKQotCWVsc2UKLQkgICAgQUNfTVNHX1JFU1VMVChbbm9uZV0pCi0JZmkKLQk7OwotICAgIGRhcndpbjgqfGRhcndpbjkqKQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgZGFyd2luIGxkIG1pZ2h0IG5lZWQgLWZsYXRfbmFtZXNwYWNlXSkKLQlpZiB0ZXN0IC16ICIkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIjsgdGhlbgotCQlMREZMQUdTPSItZmxhdF9uYW1lc3BhY2UgJExERkxBR1MiCi0JCUFDX01TR19SRVNVTFQoW3llc10pCi0JZWxzZQotCQlBQ19NU0dfUkVTVUxUKFtub10pCi0JZmkKLQk7OwotICAgICopCi0gICAgICAgIDs7Ci1lc2FjCi0KLSMgbGlidG9vbCBzdHVmZiBmb3Igc2hhcmVkL3N0YXRpYyBsaWJyYXJpZXMuCi1BQ19MSUJUT09MX0RMT1BFTgotQUNfTElCVE9PTF9XSU4zMl9ETEwKLUFDX1BST0dfTElCVE9PTAotQUNfU1VCU1QoTElCVE9PTF9ERVBTKQotCi0jIENoZWNrcyBmb3IgcHJvZ3JhbXMuCi1BQ19QUk9HX0lOU1RBTEwKLUFDX1BST0dfTE5fUwotQUNfUFJPR19NQUtFX1NFVAotQUNfUFJPR19FR1JFUAotQUNfUEFUSF9QUk9HKFtQU1BST0ddLHBzKQotQUNfUEFUSF9QUk9HKFtQRVJMUFJPR10scGVybCkKLUFDX1BBVEhfUFJPRyhbUFlUSE9OUFJPR10scHl0aG9uKQotQUNfQ0hFQ0tfUFJPR1MoV0hPQU1JLCB3aG9hbWkgbG9nbmFtZSwgd2hvYW1pKQotQUNfQ0hFQ0tfUFJPR1MoU0VELHNlZCBnc2VkKQotQUNfQ0hFQ0tfUFJPR1MoRklORCxmaW5kKQotQUNfUEFUSF9QUk9HKEFVVE9DT05GLCBhdXRvY29uZikKLUFDX1BBVEhfUFJPRyhBVVRPSEVBREVSLCBhdXRvaGVhZGVyKQotaWYgdGVzdCAieCRhY19jdl9wcm9nX0FVVE9DT05GIiA9ICJ4IjsgdGhlbgotCUFVVE9DT05GPSI6IgotCUFDX1NVQlNUKEFVVE9DT05GKQotZmkKLWlmIHRlc3QgIngkYWNfY3ZfcHJvZ19BVVRPSEVBREVSIiA9ICJ4IjsgdGhlbgotCUFVVE9IRUFERVI9IjoiCi0JQUNfU1VCU1QoQVVUT0hFQURFUikKLWZpCi0KLUFDX1BBVEhfUFJPRyhbVU5BTUVQUk9HXSx1bmFtZSkKLUFDX0RFRklORV9VTlFVT1RFRChVTkFNRVBST0csIiRVTkFNRVBST0ciKQotCi1BQ19DX0NPTlNUCi1BQ19DX0lOTElORQotCi0KLSMgZ2V0IHZlcnNpb24gbnVtYmVyLgotQUNfTVNHX0NIRUNLSU5HKFtmb3IgbmV0LXNubXAgdmVyc2lvbiBudW1iZXJdKQotVkVSU0lPTj0kUEFDS0FHRV9WRVJTSU9OCi0KLSMgY3JlYXRlIHRoZSByZWxlYXNlIHZlcnNpb24gbnVtYmVyLi4uLiAgSSdtIG5vdCBzdXJlIHRoaXMgaXMgdXNlZAotIyBhbnl3aGVyZSBhbnkgbG9uZ2VyLgotX3JlbGVhc2VfdmVyc2lvbj1gZWNobyAkVkVSU0lPTiB8IHNlZCAncy8iOy4qLy87cy8uKiIvLztzL3ByZS8wLi87J2AKLWNoYW5nZXF1b3RlKCwgKQotUkVMRUFTRVZFUlNJT049YGVjaG8gJF9yZWxlYXNlX3ZlcnNpb24gfCBzZWQgJ3MvXlwoWzAtOV1cKVwuXChbMC05XVwpL1wxOlwyOjAvJ2AKLWNoYW5nZXF1b3RlKFssIF0pCi0KLUFDX1NVQlNUKFZFUlNJT04pCi1BQ19TVUJTVChSRUxFQVNFVkVSU0lPTikKLUFDX01TR19SRVNVTFQoJFZFUlNJT04pCi1BQ19NU0dfQ0FDSEVfQUREKE5ldC1TTk1QIFZlcnNpb246ICAgICAgICAgICAkVkVSU0lPTikKLQotIyBzdXBlciB0eXBlIGNoZWNraW5nCi0jIFdXV1hYWAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGV2ZWxvcGVyIGdjYyBmbGFnc10pCi1pZiB0ZXN0ICJ4JGRldmVsb3BlciIgPSAieHllcyIgLWEgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgotICBERVZGTEFHUz0iLVdhbGwgLVdpbmxpbmUgLVdzdHJpY3QtcHJvdG90eXBlcyAtV3dyaXRlLXN0cmluZ3MgLVdjYXN0LXF1YWwgLVduby1jaGFyLXN1YnNjcmlwdHMiCi1lbHNlCi0gIERFVkZMQUdTPSIiCi1maQotQUNfTVNHX1JFU1VMVCgkREVWRkxBR1MpCi1BQ19TVUJTVChERVZGTEFHUykKLQotIwotIyBoYWNrcyBmb3IgYnVpbGRpbmcgb3V0c2lkZSBvZiB0aGUgc291cmNlIGRpcmVjdG9yeQotIwotIyAxKSBtYWtlIHN1cmUgYnVpbGQgaW5jbHVkZSBwYXRocyBhcmUgYmVmb3JlIHNvdXJjZQotIyAyKSBjaGVjayBmb3IgR05VIG1ha2UgdG8gdXNlIHZwYXRoIGluc3RlYWQgb2YgVlBBVEgKLSMKLU5PTl9HTlVfVlBBVEg9IlZQQVRIID0iCi1HTlVfdnBhdGg9IiN2cGF0aCIKLSMKLSMgZGVmaW5lIGluY2x1ZGUgcGF0aHMgcmVsYXRpdmUgdG8gdG9wX3NyY2RpcgotIyB0d2VhayBpbmNsdWRlcyBpZiB3ZSdyZSBidWlsZGluZyBvdXRzaWRlIG9mIHRoZSBzb3VyY2UgZGlyCi1pZiB0ZXN0ICJ4JHNyY2RpciIgPSAieC4iOyB0aGVuCi1UT1BfSU5DTFVERVM9U1JDX1RPUF9JTkNMVURFUwotU05NUExJQl9JTkNMVURFUz1TUkNfU05NUExJQl9JTkNMVURFUwotQUdFTlRfSU5DTFVERVM9U1JDX0FHRU5UX0lOQ0xVREVTCi1IRUxQRVJfSU5DTFVERVM9U1JDX0hFTFBFUl9JTkNMVURFUwotTUlCR1JPVVBfSU5DTFVERVM9U1JDX01JQkdST1VQX0lOQ0xVREVTCi1lbHNlCi1UT1BfSU5DTFVERVM9QkxEX1RPUF9JTkNMVURFUwotU05NUExJQl9JTkNMVURFUz1CTERfU05NUExJQl9JTkNMVURFUwotQUdFTlRfSU5DTFVERVM9QkxEX0FHRU5UX0lOQ0xVREVTCi1IRUxQRVJfSU5DTFVERVM9QkxEX0hFTFBFUl9JTkNMVURFUwotTUlCR1JPVVBfSU5DTFVERVM9QkxEX01JQkdST1VQX0lOQ0xVREVTCi1tYWtlIC12IC1mIC9kZXYvbnVsbCAyPi9kZXYvbnVsbCB8IGdyZXAgR05VID4vZGV2L251bGwKLWhhdmVfZ251X21ha2U9JD8KLWlmIHRlc3QgJGhhdmVfZ251X21ha2UgLWVxIDAgOyB0aGVuCi0gICAgTk9OX0dOVV9WUEFUSD0iI1ZQQVRIID0iCi0gICAgR05VX3ZwYXRoPSJ2cGF0aCIKLWZpCi1maQotQUNfU1VCU1QoVE9QX0lOQ0xVREVTKQotQUNfU1VCU1QoU05NUExJQl9JTkNMVURFUykKLUFDX1NVQlNUKEFHRU5UX0lOQ0xVREVTKQotQUNfU1VCU1QoSEVMUEVSX0lOQ0xVREVTKQotQUNfU1VCU1QoTUlCR1JPVVBfSU5DTFVERVMpCi1BQ19TVUJTVChHTlVfdnBhdGgpCi1BQ19TVUJTVChOT05fR05VX1ZQQVRIKQotCi0KLSMKLSMgQ2hlY2sgd2hldGhlciB3ZSBjYW4gdXNlIC1VeCAtRHg9eCB3aXRoIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIKLSMKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1bi1kZWZpbmUgdGFyZ2V0IHN5c3RlbSB0b2tlbiAoYmVmb3JlIHJlZGVmaW5pbmcpXSkKLU9MRF9DUFBGTEFHUz0iJENQUEZMQUdTIgotQ1BQRkxBR1M9Ii1VJFBBUlRJQUxUQVJHRVRPUyAtRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKLQotQUNfRUdSRVBfQ1BQKHllcyxbWwotI2lmZGVmICRQQVJUSUFMVEFSR0VUT1MKLXllcwotI2VuZGlmCi1dXSwKLVtQQVJUSUFMVEFSR0VURkxBR1M9Ii1VJFBBUlRJQUxUQVJHRVRPUyAtRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKLSBBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sCi1bUEFSVElBTFRBUkdFVEZMQUdTPSItRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKLSBBQ19NU0dfUkVTVUxUKFtub10pXSkKLUNGTEFHUz0iJENGTEFHUyAkUEFSVElBTFRBUkdFVEZMQUdTIgotQ1BQRkxBR1M9IiRPTERfQ1BQRkxBR1MiCi1BQ19NU0dfQ0FDSEVfQUREKEJ1aWxkaW5nIGZvcjogICAgICAgICAgICAgICAkUEFSVElBTFRBUkdFVE9TKQotCi0KLSMKLSMgY2hlY2sgZm9yIHNwZWNpYWwgaW5jbHVkZXMgYW5kIHBpY2sgb25lCi0jCi0KLUFDX01TR19DSEVDS0lORyhbZm9yIHN5c3RlbSBpbmNsdWRlIGZpbGVdKQotY2hhbmdlcXVvdGUoLCApCi1maWxlYmFzZT0kdGFyZ2V0X29zCi0jIGlnbm9yZSBiaW5hcnkgZm9ybWF0IGluZGljYXRpb24KLWZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8IHNlZCAncy9lbGYvLydgCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvYW91dC8vJ2AKLWZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8IHNlZCAncy9lY29mZi8vJ2AKLWZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8IHNlZCAncy9jb2ZmLy8nYAotd2hpbGUgdGVzdCAieCRmaWxlYmFzZSIgIT0gIngkbGFzdCIgLWEgISAtZiAkc3JjZGlyL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtLyRmaWxlYmFzZS5oCi1kbwotICAgIGxhc3Q9JGZpbGViYXNlCi0gICAgZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgc2VkICdzL1stLl9dW14tLl9dKiQvLydgCi0gICAgaWYgdGVzdCAieCRmaWxlYmFzZSIgPSAieCRsYXN0IjsgdGhlbgotCWZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8IHNlZCAncy9bMC05XSokLy8nYAotICAgIGZpCi1kb25lCi0KLWlmIHRlc3QgIngkZmlsZWJhc2UiID0gIngkbGFzdCI7IHRoZW4KLSAgICBmaWxlYmFzZT0iZ2VuZXJpYyIKLWZpCi1hY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEU9Im5ldC1zbm1wL3N5c3RlbS8kZmlsZWJhc2UuaCIKLQotY2hhbmdlcXVvdGUoWywgXSkKLUFDX01TR19SRVNVTFQoJGFjX2N2X05FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRSkKLUFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUsICIkYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFIikKLQotIyBzZWNvbmQgcGFydCwgdGhlIENQVSB0eXBlLgotCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBtYWNoaW5lLXR5cGUgaW5jbHVkZSBmaWxlXSkKLWNoYW5nZXF1b3RlKCwgKQotZmlsZWJhc2U9JHRhcmdldF9jcHUKLXdoaWxlIHRlc3QgIngkZmlsZWJhc2UiICE9ICJ4JGxhc3QiIC1hICEgLWYgJHNyY2Rpci9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvJGZpbGViYXNlLmgKLWRvCi0gICAgbGFzdD0kZmlsZWJhc2UKLSAgICBmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvWy0uX11bXi0uX10qJC8vJ2AKLWRvbmUKLQotaWYgdGVzdCAieCRmaWxlYmFzZSIgPSAieCRsYXN0IjsgdGhlbgotICAgIGZpbGViYXNlPSJnZW5lcmljIgotZmkKLWFjX2N2X05FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEU9Im5ldC1zbm1wL21hY2hpbmUvJGZpbGViYXNlLmgiCi1jaGFuZ2VxdW90ZShbLCBdKQotQUNfTVNHX1JFU1VMVChbJGFjX2N2X05FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEVdKQotCi1BQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRSwgIiRhY19jdl9ORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFIikKLQotQUNfUEFUSF9QUk9HKFtDQ1BBVEhdLCRDQykKLSMgd2F0Y2ggb3V0IGZvciAvdXNyL3VjYi9jYyBvbiBzb2xhcmlzLCBpdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGlzIHBhY2thZ2UuCi1jYXNlICR0YXJnZXRfb3MgaW4KLSAgICBic2RpKikKLQlpZiB0ZXN0ICJ4JENDUEFUSCIgPSAieC91c3IvdWNiL2NjIiAtbyAieCRDQ1BBVEgiID0gIngvdXNyL2Jpbi9jYyI7IHRoZW4KLQkgICAgQUNfTVNHX0VSUk9SKFsKLQotKioqIFRoZSBCU0RJIC91c3IvdWNiL2NjIGNvbXBpbGVyIGRvZXMgbm90IHdvcmsgd2l0aCB0aGlzIHBhY2thZ2UuICAKLSoqKiBQbGVhc2UgcnVuIGNvbmZpZ3VyZSB3aXRoIC0td2l0aC1jYz1nY2MKLV0pCi0JZmkKLSAgICA7OwotICAgIHNvbGFyaXMqKQotCWlmIHRlc3QgIngkQ0NQQVRIIiA9ICJ4L3Vzci91Y2IvY2MiOyB0aGVuCi0JICAgIEFDX01TR19FUlJPUihbCi0KLSoqKiBUaGUgc29sYXJpcyAvdXNyL3VjYi9jYyBjb21waWxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLiAgCi0qKiogUGxlYXNlIHB1dCBhIGRpZmZlcmVudCBjb21waWxlciBpbiB5b3VyIHBhdGggZmlyc3Qgb3IgcnVuCi0qKiogY29uZmlndXJlIHdpdGggLS13aXRoLWNjPVhYLCB3aGVyZSBYWCBpcyB0aGUgY29tcGlsZXIgeW91IHdhbnQgdG8gdXNlLgotXSkKLQlmaQotICAgIDs7Ci1lc2FjCi0gICAgCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhZGRpdGlvbmFsIGNwcCBmbGFnc10pCi0jIGdjYyBleHRyYSBDUFBGTEFHUwotaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiIC1hICJ4JENQUCIgPSAieCRDQyAtRSI7IHRoZW4KLSAgIyBleHRyYSBjcHAgZmxhZ3MgZm9yIGdudSBjIGNvbXBpbGVyIHRvIGFsbG93IC5pbiBmaWxlIGV4dGVuc2lvbnMuCi0gIEVYVFJBQ1BQRkxBR1M9Ii14IGMiCi1lbHNlCi0gIEVYVFJBQ1BQRkxBR1M9IiIKLWZpCi0KLSMgU29sYXJpcyBleHRyYSBjcHAgZmxhZ3MuCi1pZiB0ZXN0ICJ4JEdDQyIgIT0gInh5ZXMiOyB0aGVuCi0gIGNhc2UgJHRhcmdldF9vcyBpbgotICAgIHNvbGFyaXMqKSBFWFRSQUNQUEZMQUdTPSIkRVhUUkFDUFBGTEFHUyAtWHMiIDs7Ci0gIGVzYWMKLWZpCi0KLUFDX1NVQlNUKEVYVFJBQ1BQRkxBR1MpCi1BQ19NU0dfUkVTVUxUKCRFWFRSQUNQUEZMQUdTKQotCi0jICAgQ29tcGlsZXIgZmxhZ3M6Ci0jCi0KLSMgVGhlIE5ldC1TTk1QIHNvdXJjZSBjb2RlIGlzIG5vdCBzdHJpY3QtYWxpYXNpbmcgc2FmZSwgc28gYWRkCi0jIC1mbm8tc3RyaWN0LWFsaWFzaW5nIHRvICRDRkxBR1MgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGl0LgotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyAtZm5vLXN0cmljdC1hbGlhc2luZ10pCi1uZXRzbm1wX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotQ0ZMQUdTPSItZm5vLXN0cmljdC1hbGlhc2luZyAkQ0ZMQUdTIgotQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSwgW10pXSwgW0FDX01TR19SRVNVTFQoW3llc10pXSwgWwotICBBQ19NU0dfUkVTVUxUKFtub10pCi0gIENGTEFHUz0iJG5ldHNubXBfc2F2ZV9DRkxBR1MiCi1dKQotCi0jIFByZWZpeGVzIG11c3QgYmVnaW4gd2l0aCAiLyIgb3IgW0EtWl0gZm9sbG93ZWQgYnkgY29sb24uCi0KLWlmIHRlc3QgIngkcHJlZml4IiA9ICJ4Tk9ORSI7IHRoZW4KLSAgcHJlZml4PS91c3IvbG9jYWwKLWZpCi0KLWZjaD1gZWNobyAkcHJlZml4IHwgc2VkICdzL1woLlwpLiovXDEvJ2AKLWlmIHRlc3QgIngkZmNoIiAhPSAieC8iIDsgdGhlbgotICAgc2NoPWBlY2hvICRwcmVmaXggfCBzZWQgJ3MvLlwoLlwpLiovXDEvJ2AKLSAgIGlmIHRlc3QgIngkc2NoIiAhPSAieDoiIDsgdGhlbgotICAgICAgcHJlZml4PWBwd2RgLyRwcmVmaXgKLSAgICAgIGVjaG8gImFkanVzdGluZyBwcmVmaXggdG8gJHByZWZpeCIKLSAgIGZpCi1maQotCi1pZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICJ4Tk9ORSI7IHRoZW4KLSAgZXhlY19wcmVmaXg9JHByZWZpeAotZmkKLQotZmNoPWBlY2hvICRleGVjX3ByZWZpeCB8IHNlZCAncy9cKC5cKS4qL1wxLydgCi1pZiB0ZXN0ICJ4JGZjaCIgIT0gIngvIiA7IHRoZW4KLSAgIHNjaD1gZWNobyAkZXhlY19wcmVmaXggfCBzZWQgJ3MvLlwoLlwpLiovXDEvJ2AKLSAgIGlmIHRlc3QgIngkc2NoIiAhPSAieDoiIDsgdGhlbgotICAgICAgZXhlY19wcmVmaXg9YHB3ZGAvJGV4ZWNfcHJlZml4Ci0gICAgICBlY2hvICJhZGp1c3RpbmcgZXhlY19wcmVmaXggdG8gJGV4ZWNfcHJlZml4IgotICAgZmkKLWZpCi0KLSMgU2V0IFNOTVBMSUJQQVRIICYgU05NUFNIQVJFUEFUSAotCi1TTk1QTElCUEFUSD0iIgotdG1wc2V0PSIkbGliZGlyL3NubXAiCi13aGlsZSB0ZXN0ICJ4JHRtcHNldCIgIT0gIngkU05NUExJQlBBVEgiOyBkbwotICBTTk1QTElCUEFUSD0iJHRtcHNldCIKLSAgZXZhbCB0bXBzZXQ9IiR0bXBzZXQiCi1kb25lCi1BQ19ERUZJTkVfVU5RVU9URUQoU05NUExJQlBBVEgsIiRTTk1QTElCUEFUSCIpCi1BQ19TVUJTVChTTk1QTElCUEFUSCkKLUFDX0RFRklORV9VTlFVT1RFRChTTk1QRExNT0RQQVRILCIkU05NUExJQlBBVEgvZGxtb2QiKQotCi1TTk1QU0hBUkVQQVRIPSIiCi10bXBzZXQ9IiRkYXRhZGlyL3NubXAiCi13aGlsZSB0ZXN0ICJ4JHRtcHNldCIgIT0gIngkU05NUFNIQVJFUEFUSCI7IGRvCi0gIFNOTVBTSEFSRVBBVEg9IiR0bXBzZXQiCi0gIGV2YWwgdG1wc2V0PSIkdG1wc2V0IgotZG9uZQotQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBTSEFSRVBBVEgsIiRTTk1QU0hBUkVQQVRIIikKLUFDX1NVQlNUKFNOTVBTSEFSRVBBVEgpCi0KLWlmIHRlc3QgIngkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiID0gIngiOyB0aGVuCi0gIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTPSJcJEhPTUUvLnNubXAvbWliczokU05NUFNIQVJFUEFUSC9taWJzIgotICBpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gICAgTkVUU05NUF9ERUZBVUxUX01JQkRJUlM9YGVjaG8gIiRORVRTTk1QX0RFRkFVTFRfTUlCRElSUyIgfCAkU0VEICdzLzovOy9nJ2AKLSAgZmkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTLCIkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiKQotZmkKLUFDX1NVQlNUKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTKQotCi1TTk1QQ09ORlBBVEg9IiIKLXRtcHNldD0iJHN5c2NvbmZkaXIvc25tcCIKLXdoaWxlIHRlc3QgIngkdG1wc2V0IiAhPSAieCRTTk1QQ09ORlBBVEgiOyBkbwotICBTTk1QQ09ORlBBVEg9IiR0bXBzZXQiCi0gIGV2YWwgdG1wc2V0PSIkdG1wc2V0IgotZG9uZQotQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBDT05GUEFUSCwiJFNOTVBDT05GUEFUSCIpCi1BQ19TVUJTVChTTk1QQ09ORlBBVEgpCi0KLUFDX0NIRUNLX1NJWkVPRihzaG9ydCkKLUFDX0NIRUNLX1NJWkVPRihpbnQpCi1BQ19DSEVDS19TSVpFT0YobG9uZykKLUFDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcpCi1BQ19DSEVDS19TSVpFT0YoaW50bWF4X3QpCi1BQ19DSEVDS19UWVBFUyhbaW50OF90LCAgdWludDhfdCwgIHVfaW50OF90XSkKLUFDX0NIRUNLX1RZUEVTKFtpbnQxNl90LCB1aW50MTZfdCwgdV9pbnQxNl90XSkKLUFDX0NIRUNLX1RZUEVTKFtpbnQzMl90LCB1aW50MzJfdCwgdV9pbnQzMl90XSkKLUFDX0NIRUNLX1RZUEVTKFtpbnQ2NF90LCB1aW50NjRfdCwgdV9pbnQ2NF90XSkKLUFDX0NIRUNLX1RZUEVTKFtpbnRtYXhfdCwgdWludG1heF90XSkKLUFDX0NIRUNLX1RZUEVTKFtvZmY2NF90XSkKLUFDX0NIRUNLX1RZUEVTKFt1aW50cHRyX3QsIGludHB0cl90XSkKLQotIyBzb2xhcmlzIHNwZWNpZmljIHR5cGUKLUFDX0NIRUNLX1RZUEVTKFtDb3VudGVyNjRdLCwsWyNpbmNsdWRlIDxpbmV0L21pYjIuaD5dKQotCi0jIGd1ZXNzIElQdjYgc3RhY2sgdHlwZS4KLWlmIHRlc3QgIngkZW5hYmxlX2lwdjYiID0gInh5ZXMiOyB0aGVuCi0JdjZ0eXBlPXVua25vd24KLQl2NmxpYj1ub25lCi0JdjZ0cnlsaWJjPW5vCi0KLQlBQ19NU0dfQ0hFQ0tJTkcoW1tpcHY2IHN0YWNrIHR5cGVdXSkKLQlmb3IgaSBpbiB2NmQgdG9zaGliYSBrYW1lIGlucmlhIHpldGEgbGludXgtZ2xpYmMgbGludXgtaW5ldDYgZ2VuZXJpYzsgZG8KLQkJY2FzZSAkaSBpbgotCQl2NmQpCi0JCQlBQ19FR1JFUF9DUFAoeWVzLCBbCi0jaW5jbHVkZSA8L3Vzci9sb2NhbC92Ni9pbmNsdWRlL3N5cy90eXBlcy5oPgotI2lmZGVmIF9fVjZEX18KLXllcwotI2VuZGlmXSwKLQkJCQlbdjZ0eXBlPSRpOyB2NmxpYj12NjsKLQkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKLQkJCQlDRkxBR1M9Ii1JL3Vzci9sb2NhbC92Ni9pbmNsdWRlICRDRkxBR1MiXSkKLQkJCTs7Ci0JCXRvc2hpYmEpCi0JCQlBQ19FR1JFUF9DUFAoeWVzLCBbCi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaWZkZWYgX1RPU0hJQkFfSU5FVDYKLXllcwotI2VuZGlmXSwKLQkJCQlbdjZ0eXBlPSRpOyB2NmxpYj1pbmV0NjsKLQkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKLQkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCi0JCQk7OwotCQlrYW1lKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpZmRlZiBfX0tBTUVfXwoteWVzCi0jZW5kaWZdLAotCQkJCVt2NnR5cGU9JGk7IHY2bGliPWluZXQ2OwotCQkJCXY2bGliZGlyPS91c3IvbG9jYWwvdjYvbGliOwotCQkJCXY2dHJ5bGliYz15ZXM7Ci0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQotCQkJOzsKLQkJaW5yaWEpCi0JCQlBQ19FR1JFUF9DUFAoeWVzLCBbCi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2lmZGVmIElQVjZfSU5SSUFfVkVSU0lPTgoteWVzCi0jZW5kaWZdLAotCQkJCVt2NnR5cGU9JGk7Ci0JCQkJdjZsaWI9ZHVtbXk7Ci0JCQkJdjZsaWJkaXI9bm9uZTsKLQkJCQl2NnRyeWxpYmM9eWVzOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCXpldGEpCi0JCQlBQ19FR1JFUF9DUFAoeWVzLCBbCi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaWZkZWYgX1pFVEFfTUlOQU1JX0lORVQ2Ci1BCi15ZXMKLSNlbmRpZl0sCi0JCQkJW3Y2dHlwZT0kaTsgdjZsaWI9aW5ldDY7Ci0JCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7Ci0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQotCQkJOzsKLQkJbGludXgtZ2xpYmMpCi0JCQlBQ19FR1JFUF9DUFAoeWVzLCBbCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSkgfHwgKF9fR0xJQkNfID4gMikpCi15ZXMKLSNlbmRpZl0sCi0JCQkJW3Y2dHlwZT0kaTsKLQkJCQl2NmxpYj1kdW1teTsKLQkJCQl2NmxpYmRpcj1ub25lOwotCQkJCXY2dHJ5bGliYz15ZXM7Ci0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQotCQkJOzsKLQkJbGludXgtaW5ldDYpCi0JCQlpZiB0ZXN0IC1kIC91c3IvaW5ldDY7IHRoZW4KLQkJCQl2NnR5cGU9JGkKLQkJCQl2NmxpYj1pbmV0NgotCQkJCXY2bGliZGlyPS91c3IvaW5ldDYvbGliCi0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyIKLQkJCWZpCi0JCQk7OwotCQlnZW5lcmljKQotICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbW3Bvc3Rwb25lZF1dKQotCQkJQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLV0sIHNvY2thZGRyX2luNiwgc2luNl9hZGRyLCBubykKLQkgICAgICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtbaXB2NiBzdGFjayB0eXBlXV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9pbjZfaGFzX3NpbjZfYWRkciIgPSAieHllcyI7IHRoZW4KLQkJCQl2NnR5cGU9JGkKLQkJCQl2NmxpYj1kdW1teQotCQkJCXY2bGliZGlyPW5vbmUKLQkJCQl2NnRyeWxpYmM9eWVzCi0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyIKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0JCQk7OwotCQllc2FjCi0JCWlmIHRlc3QgIiR2NnR5cGUiICE9ICJ1bmtub3duIjsgdGhlbgotCQkJYnJlYWsKLQkJZmkKLQlkb25lCi0KLQlpZiB0ZXN0ICIkdjZsaWIiICE9ICJub25lIjsgdGhlbgotCQlpZiB0ZXN0IC1kICR2NmxpYmRpciAtYSAtZiAkdjZsaWJkaXIvbGliJHY2bGliLmE7IHRoZW4KLQkJCUxJQlM9Ii1MJHY2bGliZGlyIC1sJHY2bGliICRMSUJTIgotCQkJZW5hYmxlX2lwdjY9InllcyIKLQkJCUFDX01TR19SRVNVTFQoWyIkdjZ0eXBlLCAkZW5hYmxlX2lwdjYsIHVzaW5nIGxpYiR2NmxpYiJdKQotCQllbGlmIHRlc3QgIiR2NnRyeWxpYmMiID0gInllcyI7IHRoZW4KLQkJCWVuYWJsZV9pcHY2PSJ5ZXMiCi0JCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2LCB1c2luZyBsaWJjIl0pCi0JCWVsc2UKLQkJCUFDX01TR19FUlJPUihubyBJUHY2IGxpYnJhcnkgbGliJHY2bGliLmEgZm91bmQuKQotCQkJZXhpdCAxCi0JCWZpCi0JZWxzZQotCQllbmFibGVfaXB2Nj0ibm8iCi0JCUFDX01TR19SRVNVTFQoWyIkdjZ0eXBlLCAkZW5hYmxlX2lwdjYiXSkKLQlmaQotZmkKLQotIwotIyBNYXliZSBhZGQgbGlicmFyeSBleHRlbnNpb25zIGZvciB0aHJlYWQgbXV0ZXggbG9ja2luZy4KLSMKLQotaWYgdGVzdCAieCR3aXRoX3Jlc19sb2NrcyIgPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfUkVFTlRSQU5UKQotCi0gICAgY2FzZSAkdGFyZ2V0X29zIGluCi0KLSAgICBhaXgqKQotCUNDX1JVTlRJTUVfQVJHPSIkQ0NfUlVOVElNRV9BUkcgLWxwdGhyZWFkcyIKLQk7OwotCi0gICAgKikKLQk7OwotCi0gICAgZXNhYwotZmkKLQotIwotIyBBZGQgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlIGZpbGVzLgotIwotQUNfTVNHX0NIRUNLSU5HKFtmb3IgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlXSkKLW90aGVyX3NyY19saXN0PSIiCi1vdGhlcl9vYmpzX2xpc3Q9IiIKLW90aGVyX2xvYmpzX2xpc3Q9IiIKLW90aGVyX2FnZW50b2Jqcz0iIgotb3RoZXJfbGFnZW50b2Jqcz0iIgotb3RoZXJfdHJhcGRfb2JqZWN0cz0iIgotCi0jIFdpbjMyIHNlcnZpY2UgY29kZQotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4KLSAgb3RoZXJfc3JjX2xpc3Q9IiRvdGhlcl9zcmNfbGlzdCB3aW5zZXJ2aWNlLmMgd2luc2VydmljZXJjLnJjIgotICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2luc2VydmljZS5vIHdpbnNlcnZpY2VyYy5vIgotICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5zZXJ2aWNlLmxvIHdpbnNlcnZpY2VyYy5sbyIKLSAgb3RoZXJfYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5vIgotICBvdGhlcl9sYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5sbyIKLSAgb3RoZXJfdHJhcGRfb2JqZWN0cz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubyIgCi1maQotICAKLSMgV2luMzIgcGlwZXMKLWlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieGN5Z3dpbiI7IHRoZW4KLSAgb3RoZXJfc3JjX2xpc3Q9IiRvdGhlcl9zcmNfbGlzdCB3aW5waXBlLmMiCi0gIG90aGVyX29ianNfbGlzdD0iJG90aGVyX29ianNfbGlzdCB3aW5waXBlLm8iCi0gIG90aGVyX2xvYmpzX2xpc3Q9IiRvdGhlcl9sb2Jqc19saXN0IHdpbnBpcGUubG8iCi1maQotCi1BQ19TVUJTVChvdGhlcl9zcmNfbGlzdCkKLUFDX1NVQlNUKG90aGVyX29ianNfbGlzdCkKLUFDX1NVQlNUKG90aGVyX2xvYmpzX2xpc3QpCi1BQ19TVUJTVChvdGhlcl9hZ2VudG9ianMpCi1BQ19TVUJTVChvdGhlcl9sYWdlbnRvYmpzKQotQUNfU1VCU1Qob3RoZXJfdHJhcGRfb2JqZWN0cykKLQotQUNfTVNHX1JFU1VMVChbJG90aGVyX3NyY19saXN0ICRvdGhlcl9vYmpzX2xpc3QgJG90aGVyX2xvYmpzX2xpc3RdKQotQUNfTVNHX1JFU1VMVChbJG90aGVyX2FnZW50b2JqcyAkb3RoZXJfbGFnZW50b2JqcyAkb3RoZXJfdHJhcGRfb2JqZWN0c10pCi0gIAotIwotIyBEbyB0cmFuc3BvcnQgbW9kdWxlIHByb2Nlc3NpbmcuCi0jCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhbmQgY29uZmlndXJpbmcgdHJhbnNwb3J0IG1vZHVsZXMgdG8gdXNlXSkKLXRyYW5zcG9ydF9zcmNfbGlzdD0iIgotdHJhbnNwb3J0X2hkcl9saXN0PSIiCi10cmFuc3BvcnRfZGVmX2xpc3Q9IiIKLXRyYW5zcG9ydF9yZXN1bHRfbGlzdD0iIgotdHJhbnNwb3J0X2FkZF9saXN0PSIiCi10cmFuc3BvcnRfY2FsbGJhY2tfZGlzYWJsZWQ9IiIKLW5ld193aXRoX3RyYW5zcG9ydF9saXN0PWBlY2hvICR3aXRoX3RyYW5zcG9ydHMgfCBzZWQgJ3MvLC8gL2c7J2AKLW5ld193aXRoX291dF90cmFuc3BvcnRfbGlzdD1gZWNobyAkd2l0aF9vdXRfdHJhbnNwb3J0cyB8IHNlZCAncy8sLyAvZzsnYAotCi0jCi0jIEFkZCB0aGUgZGVmYXVsdCB0cmFuc3BvcnRzIHRvIHRoZSBsaXN0Ci0jCi1pZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieGN5Z3dpbiI7IHRoZW4KLSAgdHJhbnNwb3J0X2RlZmF1bHRfbGlzdD0iVURQIFRDUCBDYWxsYmFjayIKLWVsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4gCi0gIHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q9IlVEUCBUQ1AgQ2FsbGJhY2siCi1lbHNlCi0gIHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q9IlVEUCBUQ1AgVW5peCBDYWxsYmFjayIKLWZpCi1pZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgotICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFBJUHY2IFRDUElQdjYgJHRyYW5zcG9ydF9kZWZhdWx0X2xpc3QiCi1maQotZm9yIGkgaW4gJHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q7IGRvCi0gIGlmIGVjaG8gIiAkbmV3X3dpdGhfdHJhbnNwb3J0X2xpc3QgIiB8IGdyZXAgIiAkaSAiID4vZGV2L251bGw7IHRoZW4KLSAgICA6Ci0gIGVsc2UKLSAgICB0cmFuc3BvcnRfYWRkX2xpc3Q9IiRpICR0cmFuc3BvcnRfYWRkX2xpc3QiCi0gIGZpCi1kb25lCi1uZXdfdHJhbnNwb3J0X2xpc3Q9IiR0cmFuc3BvcnRfYWRkX2xpc3QgJG5ld193aXRoX3RyYW5zcG9ydF9saXN0IgotCi1mb3IgaSBpbiAkbmV3X3RyYW5zcG9ydF9saXN0OyBkbwotICBpZiBlY2hvICIgJG5ld193aXRoX291dF90cmFuc3BvcnRfbGlzdCAiIHwgZ3JlcCAiICRpICIgPi9kZXYvbnVsbDsgdGhlbgotICAgIGlmIHRlc3QgIngkaSIgPSAieFVEUCI7IHRoZW4KLSAgICAgIGVjaG8KLSAgICAgIEFDX01TR19FUlJPUihJdCBpcyBub3QgcG9zc2libGUgdG8gY29tcGlsZSB3aXRob3V0IFVEUC9JUCBzdXBwb3J0LikKLSAgICBlbGlmIHRlc3QgIngkaSIgPSAieENhbGxiYWNrIjsgdGhlbgotICAgICAgZWNobwotICAgICAgdHJhbnNwb3J0X2NhbGxiYWNrX2Rpc2FibGVkPSJ5ZXMiCi0gICAgZmkKLSAgZWxzZQotICAgIGlmIHRlc3QgIngkaSIgPSAieEFBTDVQVkMiOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgIT0gInhsaW51eCI7IHRoZW4KLSAgICAgICAgZWNobwotICAgICAgICBBQ19NU0dfRVJST1IoQUFMNSBQVkMgc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSAoTGludXggb25seSkpCi0gICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4SVBYIjsgdGhlbgotICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiICE9ICJ4bGludXgiOyB0aGVuCi0gICAgICAgIGVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKElQWCBzdXBwb3J0IHVuYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtIChMaW51eCBvbmx5KSkKLSAgICAgIGZpCi0gICAgZmkKLSAgICBpZiB0ZXN0ICJ4JGkiID0gInhVbml4IjsgdGhlbgotICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gICAgICAgIGVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKFVuaXggZG9tYWluIHByb3RvY29sIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0pCi0gICAgICBlbGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCi0gICAgICAgIGVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKFVuaXggZG9tYWluIHByb3RvY29sIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0pCi0gICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAhICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBpZiB0ZXN0ICJ4JGkiID0gInhVRFBJUHY2IiAtbyAieCRpIiA9ICJ4VENQSVB2NiI7IHRoZW4KLSAgICAgICAgICAgIGVjaG8KLSAgICAgICAgICAgIEFDX01TR19FUlJPUihJUHY2IHRyYW5zcG9ydHMgbm90IGF2YWlsYWJsZSBpZiBJUHY2IHN1cHBvcnQgaXMgbm90IGVuYWJsZWQpCi0gICAgICAgIGZpCi0gICAgZmkKLSAgICB0cmFuc3BvcnRfc3JjPSJzbm1wIiRpIkRvbWFpbi5jIgotICAgIHRyYW5zcG9ydF9oZHI9InNubXAiJGkiRG9tYWluLmgiCi0gICAgcmVsX3RyYW5zcG9ydF9zcmM9InNubXBsaWIvIiR0cmFuc3BvcnRfc3JjCi0gICAgcmVsX3RyYW5zcG9ydF9oZHI9ImluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8iJHRyYW5zcG9ydF9oZHIKLSAgICBpZiB0ZXN0IC1mICIkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyI7IHRoZW4KLSAgICAgIHRyYW5zcG9ydF9yZXN1bHRfbGlzdD0iJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCAkaSIKLSAgICAgIHRyYW5zcG9ydF9zcmNfbGlzdD0iJHRyYW5zcG9ydF9zcmMgJHRyYW5zcG9ydF9zcmNfbGlzdCIKLSAgICAgIGlmIHRlc3QgLWYgIiRzcmNkaXIvJHJlbF90cmFuc3BvcnRfaGRyIjsgdGhlbgotICAgICAgICB0cmFuc3BvcnRfaGRyX2xpc3Q9IiR0cmFuc3BvcnRfaGRyICR0cmFuc3BvcnRfaGRyX2xpc3QiCi0gICAgICBmaQotICAgICAgdHJhbnNwb3J0X2RlZj1gZWNobyAkaSB8IHNlZCAneS9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi8nYAotICAgICAgdHJhbnNwb3J0X2RlZl9saXN0PSJORVRTTk1QX1RSQU5TUE9SVF8iJHRyYW5zcG9ydF9kZWYiX0RPTUFJTiAkdHJhbnNwb3J0X2RlZl9saXN0IgotICAgIGVsc2UKLSAgICAgIGVjaG8KLSAgICAgIEFDX01TR19FUlJPUihDYW5ub3QgZmluZCBmaWxlICRzcmNkaXIvJHJlbF90cmFuc3BvcnRfc3JjIHRvIHN1cHBvcnQgU05NUCB0cmFuc3BvcnQgZG9tYWluICRpLikKLSAgICBmaQotICBmaQotZG9uZQotdHJhbnNwb3J0X29ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgc2VkICdzL1wuYy9cLm8vZydgIAkgCi10cmFuc3BvcnRfbG9ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgc2VkICdzL1wuYy9cLmxvL2cnYAotCi0jIyB3aW4zMiBwbGF0Zm9ybXMgcmVxdWlyZSBpbmV0X250b3AgZXRjLgotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4KLSAgaWYgZWNobyAiJHRyYW5zcG9ydF9kZWZfbGlzdCIgfCBncmVwICJJUFY2IiA+L2Rldi9udWxsOyB0aGVuCi0gICAgdHJhbnNwb3J0X29ial9saXN0PSIkdHJhbnNwb3J0X29ial9saXN0IGluZXRfbnRvcC5vIGluZXRfcHRvbi5vIgotICAgIHRyYW5zcG9ydF9sb2JqX2xpc3Q9IiR0cmFuc3BvcnRfbG9ial9saXN0IGluZXRfbnRvcC5sbyBpbmV0X3B0b24ubG8iCi0gIGZpCi1maQotCi1BQ19TVUJTVCh0cmFuc3BvcnRfaGRyX2xpc3QpCi1BQ19TVUJTVCh0cmFuc3BvcnRfc3JjX2xpc3QpCi1BQ19TVUJTVCh0cmFuc3BvcnRfb2JqX2xpc3QpCi1BQ19TVUJTVCh0cmFuc3BvcnRfbG9ial9saXN0KQotZm9yIGkgaW4gJHRyYW5zcG9ydF9kZWZfbGlzdDsgZG8KLSAgQUNfREVGSU5FX1VOUVVPVEVEKCRpKQotZG9uZQotQUNfTVNHX1JFU1VMVCgkdHJhbnNwb3J0X3Jlc3VsdF9saXN0LikKLUFDX01TR19DQUNIRV9BREQoTmV0d29yayB0cmFuc3BvcnQgc3VwcG9ydDogJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCkKLQotIwotIyBTZWN1cml0eSBtb2R1bGVzIHRvIHVzZQotIyAKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3Igc2VjdXJpdHkgbW9kdWxlcyB0byB1c2VdKQotc2VjdXJpdHlfZGVmX2xpc3Q9InVzbSIKLXNlY3VyaXR5X3NyY19saXN0PSIiCi1zZWN1cml0eV9vYmpfbGlzdD0iIiAJIAotc2VjdXJpdHlfbG9ial9saXN0PSIiCi1zZWN1cml0eV9pbml0X2ZpbGU9InNubXBsaWIvc25tcHNtX2luaXQuaCIKLXNlY3VyaXR5X2luY2xfZmlsZT0iaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIgotbmV3X3dpdGhfc2VjdXJpdHk9YGVjaG8gJHdpdGhfc2VjdXJpdHlfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotbmV3X3dpdGhfb3V0X3NlY3VyaXR5PWBlY2hvICR3aXRoX291dF9zZWN1cml0eV9tb2R1bGVzIHwgc2VkICdzLywvIC9nOydgCi0KLWlmIHRlc3QgISAtZCBpbmNsdWRlOyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUKLWZpCi1pZiB0ZXN0ICEgLWQgaW5jbHVkZS9uZXQtc25tcDsgdGhlbgotICBta2RpciBpbmNsdWRlL25ldC1zbm1wCi1maQotaWYgdGVzdCAhIC1kIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQ7IHRoZW4KLSAgbWtkaXIgaW5jbHVkZS9uZXQtc25tcC9hZ2VudAotZmkKLWlmIHRlc3QgISAtZCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnk7IHRoZW4KLSAgbWtkaXIgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5Ci1maQotaWYgdGVzdCAhIC1kIGluY2x1ZGUvdWNkLXNubXA7IHRoZW4KLSAgbWtkaXIgaW5jbHVkZS91Y2Qtc25tcAotZmkKLQotaWYgdGVzdCAhIC1kIHNubXBsaWI7IHRoZW4KLSAgbWtkaXIgc25tcGxpYgotZmkKLWVjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9pbml0X2ZpbGUKLWVjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9pbmNsX2ZpbGUKLQotZm9yIGkgaW4gJHNlY3VyaXR5X2RlZl9saXN0OyBkbwotICBpZiBlY2hvICIgJG5ld193aXRoX291dF9zZWN1cml0eSAiIHwgZ3JlcCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGkiID0gInh1c20iOyB0aGVuCi0JZWNobwotICAgICAgICBBQ19NU0dfRVJST1IoVGhlIFVTTSBzZWN1cml0eSBtb2R1bGUgaXMgbWFuZGF0b3J5KQotICAgIGZpCi0gIGVsc2UKLSAgICBuZXdfd2l0aF9zZWN1cml0eT0iJG5ld193aXRoX3NlY3VyaXR5ICRpIgotICBmaQotZG9uZQotCi1mb3IgaSBpbiAkbmV3X3dpdGhfc2VjdXJpdHk7IGRvCi0gIGNmaWxlPSJzbm1wIiRpIi5jIgotICBoZmlsZT0ic25tcCIkaSIuaCIKLQotICAjIG1ha2Ugc3VyZSBzdXBwb3J0IGV4aXN0cyBmb3IgaXQKLSAgaWYgdGVzdCAtZiAkc3JjZGlyIi9zbm1wbGliLyIkY2ZpbGUgLWEgLWYgJHNyY2RpciIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5LyIkaGZpbGU7IHRoZW4KLSAgICA6Ci0gIGVsc2UKLSAgICBlY2hvCi0gICAgQUNfTVNHX0VSUk9SKE5vIHN1Y2ggc2VjdXJpdHkgbW9kdWxlOiAkaSAvICRjZmlsZSAvICRoZmlsZSkKLSAgZmkKLQotICAjIGRlZmluZSBhIGJ1bmNoIG9mIHN0dWZmIHRvIGVuYWJsZSBpdAotICBzZWN1cml0eV9zcmNfbGlzdD0iJHNlY3VyaXR5X3NyY19saXN0ICRjZmlsZSIKLSAgc2VjdXJpdHlfaGRyX2xpc3Q9IiRzZWN1cml0eV9oZHJfbGlzdCAkaGZpbGUiCi0gIHNlY3VyaXR5X29ial9saXN0PSIkc2VjdXJpdHlfb2JqX2xpc3Qgc25tcCIkaSIubyIgCSAKLSAgc2VjdXJpdHlfbG9ial9saXN0PSIkc2VjdXJpdHlfbG9ial9saXN0IHNubXAiJGkiLmxvIgotICBkZWZfbmFtZT0iTkVUU05NUF9TRUNNT0RfImBlY2hvICRpIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonYAotICBlY2hvICJpbml0XyIkaSIoKTsiID4+ICRzZWN1cml0eV9pbml0X2ZpbGUKLSAgZWNobyAiI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvJGhmaWxlPiIgPj4gJHNlY3VyaXR5X2luY2xfZmlsZQotICBBQ19ERUZJTkVfVU5RVU9URUQoJGRlZl9uYW1lKQotZG9uZQotCi1BQ19TVUJTVChzZWN1cml0eV9zcmNfbGlzdCkKLUFDX1NVQlNUKHNlY3VyaXR5X2hkcl9saXN0KQotQUNfU1VCU1Qoc2VjdXJpdHlfb2JqX2xpc3QpIAkgCi1BQ19TVUJTVChzZWN1cml0eV9sb2JqX2xpc3QpCi1BQ19NU0dfUkVTVUxUKCRuZXdfd2l0aF9zZWN1cml0eSkKLUFDX01TR19DQUNIRV9BREQoU05NUHYzIFNlY3VyaXR5IE1vZHVsZXM6ICAgICRuZXdfd2l0aF9zZWN1cml0eSkKLQotIwotIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiBLU00gdG8gc2VlIHdoaWNoIGNyeXB0byBBUEkgd2Ugc3VwcG9ydAotIwotCi1hY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ9bm8KLXJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHk9Ci1hbHJlYWR5X2NoZWNrZWRfa3JiNT1ubwotCi1mb3Igc2VjIGluICRuZXdfd2l0aF9zZWN1cml0eQotZG8KLSAgaWYgdGVzdCAieCRzZWMiID0gInhrc20iIC1hICJ4eWVzIiA9ICJ4JGFscmVhZHlfY2hlY2tlZF9rcmI1IjsgdGhlbgotICAgIGNvbnRpbnVlCi0gIGZpCi0gIGFscmVhZHlfY2hlY2tlZF9rcmI1PXllcwotCi0gIGlmIHRlc3QgeCRzZWMgIT0geGtzbTsgdGhlbgotICAgIHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHk9IiRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5ICRzZWMiCi0gIGVsc2UKLSAgICBpZiB0ZXN0IG5vID0gJHRyeWtyYjU7IHRoZW4KLSAgICAgIEFDX01TR19OT1RJQ0UoW2NvbmZpZ3VyZWQgbm90IHRvIHVzZSBrcmI1LiBkaXNhYmxpbmcga3NtXSkKLSAgICAgIGNvbnRpbnVlCi0gICAgZmkKLQotICAgIEFDX1BBVEhfUFJPRyhba3JiNV9jb25maWddLGtyYjUtY29uZmlnLFtub10sJGtyYjVwYXRoL2JpbjokUEFUSCkKLQotICAgIGlmIHRlc3Qgbm8gIT0gJGtyYjVfY29uZmlnOyB0aGVuCi0gICAgICBDUFBGTEFHUz0iJENQUEZMQUdTIGAka3JiNV9jb25maWcgLS1jZmxhZ3NgIgotICAgICAgTElCUz0iJExJQlMgYCRrcmI1X2NvbmZpZyAtLWxpYnNgIgotICAgIGVsaWYgdGVzdCAka3JiNXBhdGggIT0gbm87IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgka3JiNXBhdGgpCi0gICAgZWxzZQotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKC91c3Iva2VyYmVyb3MpCi0gICAgZmkKLQotICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGtyYjVdKQotICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9oYXZlX2tyYjUsCi0gICAgICBBQ19DSEVDS19MSUIoa3JiNSwga3JiNV9pbml0X2NvbnRleHQsCi0JYWNfY3ZfaGF2ZV9rcmI1PXllcywgYWNfY3ZfaGF2ZV9rcmI1PW5vCi0gICAgICApCi0gICAgKQotCi0gICAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9rcmI1ID0gbm87IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkYXNrZWRrcmI1IiA9ICJ4eWVzIjsgdGhlbgotCUFDX01TR19FUlJPUihBc2tlZCB0byB1c2Uga3JiNSBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LikKLSAgICAgIGZpCi0gICAgICBBQ19NU0dfUkVTVUxUKG5vLiBkaXNhYmxpbmcga3NtKQotICAgICAgY29udGludWUKLSAgICBmaQotICAgICAgCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eT0iJHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHkga3NtIgotCi0gICAgQUNfTVNHX0NIRUNLSU5HKFtbZm9yIGhlaW1kYWxdXSkKLSAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVpbWRhbCwKLSAgICBbQUNfVFJZX0NPTVBJTEUoCi0gICAgICBbI2luY2x1ZGUgPGtyYjUuaD5dLAotICAgICAgW2NvbnN0IGNoYXIgKnYgPSBoZWltZGFsX3ZlcnNpb247XSwKLSAgICAgIGFjX2N2X2hlaW1kYWw9eWVzLAotICAgICAgYWNfY3ZfaGVpbWRhbD1ubwotICAgICldKQotICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2hlaW1kYWwpCi0gICAgaWYgdGVzdCAkYWNfY3ZfaGVpbWRhbCA9IHllczsgdGhlbgotICAgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwpCi0gICAgICBpZiB0ZXN0IG5vID0gJGtyYjVfY29uZmlnOyB0aGVuCi0JTElCUz0iJExJQlMgLWxrcmI1IC1sYXNuMSAtbGNvbV9lcnIgLWxyb2tlbiIKLSAgICAgIGZpCi0gICAgZWxpZiB0ZXN0IG5vID0gJGtyYjVfY29uZmlnOyB0aGVuCi0JTElCUz0iJExJQlMgLWxrcmI1IC1sY29tX2VyciIKLSAgICBmaQotCi0gICAgQUNfTVNHX0NIRUNLSU5HKFt0byBzZWUgd2hpY2ggY3J5cHRvIEFQSSB3ZSBuZWVkIHRvIHVzZV0pCi0gICAgQUNfQ0hFQ0tfRlVOQyhrcmI1X2NfZW5jcnlwdCxbCi0gICAgQUNfQ0FDSEVfVkFMKGFjX2N2X05FVFNOTVBfVVNFX0tFUkJFUk9TX01JVCwKLSAgICAgIEFDX0NIRUNLX0xJQihrNWNyeXB0bywga3JiNV9pbml0X2NvbnRleHQsCi0JYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUPXllcywgYWNfY3ZfTUlUX05FV19DUllQVG89bm8KLSAgICAgICkKLSAgICApCi0KLSAgICBpZiB0ZXN0IHllcyA9ICRhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ7IHRoZW4KLSAgICAgIEFDX01TR19SRVNVTFQobmV3IE1JVCBjcnlwdG8gQVBJKQotICAgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVCkKLSAgICAgIGlmIHRlc3Qgbm8gPSAka3JiNV9jb25maWc7IHRoZW4KLQlMSUJTPSIkTElCUyAtbGs1Y3J5cHRvIgotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBBQ19NU0dfUkVTVUxUKG9sZCBNSVQgY3J5cHRvIEFQSSldKQotICAgIGZpCi0gIGZpCi1kb25lCi0KLW5ld193aXRoX3NlY3VyaXR5PSRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5Ci0KLSMKLSMgZ2VuZXJhdGUgZW1wdHkgZmlsZXMKLSMKLSMgQ3JlYXRlIGluY2x1ZGUgZmlsZSBsaXN0IGZvciBzbm1wX3ZhcnMuaCB0byB1c2UuCi1taWJkaXI9ImFnZW50L21pYmdyb3VwIgotaWYgdGVzdCAhIC1kIGFnZW50OyB0aGVuCi0gIG1rZGlyIGFnZW50Ci1maQotaWYgdGVzdCAhIC1kIGFnZW50L21pYmdyb3VwOyB0aGVuCi0gIG1rZGlyIGFnZW50L21pYmdyb3VwCi1maQotaj0iJG1pYmRpci9taWJfbW9kdWxlX2luY2x1ZGVzLmggICRtaWJkaXIvYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmggXAotICAgJG1pYmRpci9taWJfbW9kdWxlX2luaXRzLmggICAgICRtaWJkaXIvYWdlbnRfbW9kdWxlX2luaXRzLmggICAgXAotICAgJG1pYmRpci9taWJfbW9kdWxlX3NodXRkb3duLmggICRtaWJkaXIvYWdlbnRfbW9kdWxlX3NodXRkb3duLmggXAotICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oICAgXAotICAgJG1pYmRpci9taWJfbW9kdWxlX2RvdF9jb25mLmggICRtaWJkaXIvYWdlbnRfbW9kdWxlX2RvdF9jb25mLmgiCi0KLWZvciBpIGluICRqOyBkbwotICBybSAtZiAkaQotICBlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkaQotZG9uZQotCi0jCi0jIERvIGhhaXJ5IGFnZW50IG1vZHVsZSBwcm9jZXNzaW5nLgotIwotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYW5kIGNvbmZpZ3VyaW5nIG1pYiBtb2R1bGVzIHRvIHVzZV0pCi0KLSMgc2V0IHVwIHRoZSBDUFAgY29tbWFuZAotTU9EVUxFQ1BQPSIkQ1BQICRQQVJUSUFMVEFSR0VURkxBR1MgLUkke3NyY2Rpcn0vaW5jbHVkZSAtSSR7c3JjZGlyfS9hZ2VudC9taWJncm91cCIKLWlmIHRlc3QgIngkZW5hYmxlX21mZF9yZXdyaXRlcyIgPSAieHllcyI7IHRoZW4KLSAgTU9EVUxFQ1BQPSIkTU9EVUxFQ1BQIC1ETkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTIgotZmkKLQotbW9kdWxlX2xpc3Q9IiIKLW1pYl9tb2R1bGVfbGlzdD0iIgotYWdlbnRfbW9kdWxlX2xpc3Q9IiIKLW5ld193aXRoX21pYl9tb2R1bGVzPWBlY2hvICR3aXRoX21pYl9tb2R1bGVzIHwgc2VkICdzLywvIC9nOydgCi1uZXdfd2l0aF9vdXRfbWliX21vZHVsZXM9YGVjaG8gJHdpdGhfb3V0X21pYl9tb2R1bGVzIHwgc2VkICdzLywvIC9nOydgCi0KLSMgc2V0IHVwIGluaXRpYWwgbW9kdWxlIGxpc3QKLW5ld19tb2R1bGVfbGlzdD0iJG5ld193aXRoX21pYl9tb2R1bGVzIGRlZmF1bHRfbW9kdWxlcyIKLQotIyBtaW5vciBtb2RpZmljYXRpb25zCi1pZiB0ZXN0ICJ4JGVuYWJsZV9hZ2VudCIgPSAieG5vIjsgdGhlbgotICAgIyBtaW5pbXVtIG1pYiBtb2R1bGUgbGlzdCBmb3Igc25tcHRyYXBkCi0gICBuZXdfbW9kdWxlX2xpc3Q9Im1pYklJL3ZhY21fdmFycyBtaWJJSS92YWNtX2NvbmYgdXRpbGl0aWVzL2V4ZWN1dGUgJG5ld193aXRoX21pYl9tb2R1bGVzIgotICAgZGVmYXVsdF9taWJzPVNOTVB2Mi1NSUI6SUYtTUlCOklQLU1JQjpUQ1AtTUlCOlVEUC1NSUIKLSAgIGRlZmF1bHRfbWlic19pbnN0YWxsPSIgIgotZWxpZiB0ZXN0ICJ4JG1pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCi0gICAjIGRlZmluZSB0aGUgbWluaSBhZ2VudCBmbGFnIHRvIHJlZHVjZSBvdXIgbG9hZCBsaXN0IGZyb20gZGVmYXVsdF9taWJzLmgKLSAgIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfTUlOSV9BR0VOVCIKLWZpCi0KLXRlc3RfbW9kdWxlcz0iJG5ld19tb2R1bGVfbGlzdCIKLW5ld19tb2R1bGVfbGlzdD0iIgotCi0jIHJlbW92ZSBtb2R1bGVzIHRoYXQgd2VyZSBleHBsaWNpdGx5IGV4Y2x1ZGVkCi1mb3IgaSBpbiAkdGVzdF9tb2R1bGVzCi0gZG8KLSAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyBpcyBib3RoIGluY2x1ZGVkIGFuZCBleGNsdWRlZC4iCi0gICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgY29uZmxpY3RdKQotICAgIGlmIHRlc3QgIngkd2l0aF9taWJfY2ZnX2NoZWNrcyIgPSAieHllcyI7IHRoZW4KLSAgICAgIEFDX01TR19XQVJOKFt1c2VyIHdpdGggICAgOiAkd2l0aF9taWJfbW9kdWxlc10pCi0gICAgICBBQ19NU0dfV0FSTihbZmluYWwgd2l0aCAgIDogJG5ld19tb2R1bGVfbGlzdF0pCi0gICAgICBBQ19NU0dfV0FSTihbdXNlciB3aXRob3V0IDogJHdpdGhfb3V0X21pYl9tb2R1bGVzXSkKLSAgICAgIEFDX01TR19XQVJOKFtmaW5hbCB3aXRob3V0OiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzXSkKLSAgICAgIEFDX01TR19FUlJPUihbJG1pYl9jZmdfbXNnXSkKLSAgICBlbHNlCi0gICAgICBBQ19NU0dfV0FSTihbJG1pYl9jZmdfbXNnIEl0IHdpbGwgYmUgZXhjbHVkZWRdKQotICAgICAgQUNfTVNHX0NBQ0hFX0FERChbKioqIE1JQiBNb2R1bGUgd2FybmluZyAqKiogJG1pYl9jZmdfbXNnIEl0IGhhcyBiZWVuIGV4Y2x1ZGVkLl0pCi0gICAgZmkKLSAgZWxzZQotICAgIG5ld19tb2R1bGVfbGlzdD0iJG5ld19tb2R1bGVfbGlzdCAkaSIKLSAgZmkKLWRvbmUKLQotQUNfTVNHX1JFU1VMVChbJG5ld19tb2R1bGVfbGlzdC5dKQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGxvb3Agb3ZlciBtb2R1bGUgbGlzdAotIwotYWxsX3dhcm5pbmdzPSIiCi1pZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19kZWJ1ZyIgPSAieHllcyI7IHRoZW4KLSAgIG1vZHVsZV9kZWJ1Zz0xCi1lbHNlCi0gICBtb2R1bGVfZGVidWc9MAotZmkKLWZpcnN0X3Bhc3M9MQotb3V0cHV0X3RvPW5vcm1hbAotCi1pZiB0ZXN0ICEgLWQgbWsgOyB0aGVuCi0gIG1rZGlyIG1rCi1maQotCi0KLW1vZHVsZV9ydWxlcz1tay9tb2R1bGVfcnVsZXMubWsKLWVjaG8gIiMgY29udGVudHMgYmVsb3cgYnVpbHQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmU7IGRvIG5vdCBlZGl0IGJ5IGhhbmQiID4gJG1vZHVsZV9ydWxlcwotCi0jCi0jIG1ha2UgZmlsZSBzdWItcGllY2VzCi0jCi1mb3IgaSBpbiBtb2R1bGVfbGlzdF9kZXBzIG1pYl9tb2R1bGVfbGlzdF9kZXBzIGFnZW50X21vZHVsZV9saXN0X2RlcHMgOyBkbwotICBldmFsICIkaT1tay8ke2l9Lm1rIgotICBlY2hvICIjIGNvbnRlbnRzIGJlbG93IGJ1aWx0IGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlOyBkbyBub3QgZWRpdCBieSBoYW5kIiA+IG1rLyR7aX0ubWsKLWRvbmUKLQotIwotIyB2YXJpYWJsZSBzZXR0aW5ncyBzdWItcGllY2VzCi0jCi1mb3IgaSBpbiBtb2R1bGVfbGlzdF9jb2RlIG1pYl9tb2R1bGVfbGlzdF9jb2RlIGFnZW50X21vZHVsZV9saXN0X2NvZGUgbW9kdWxlX2xpc3QgbWliX21vZHVsZV9saXN0IGFnZW50X21vZHVsZV9saXN0IDsgZG8KLSAgZXZhbCAiJGk9bWsvJHtpfS5tayIKLSAgZWNobyAiIyBjb250ZW50cyBiZWxvdyBidWlsdCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZTsgZG8gbm90IGVkaXQgYnkgaGFuZCIgPiBtay8ke2l9Lm1rCi0gIGVjaG8gIiRpPSBcXCIgPj4gbWsvJHtpfS5tawotZG9uZQotCi1lY2hvICRFQ0hPX04gImVjaG8gIiAkRUNIT19DID4gbWsvTU9EVUxFX0xJU1QubWsKLU1PRFVMRV9MSVNUPW1rL01PRFVMRV9MSVNULm1rCi0KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyB1bnRpbCB3ZSBoYXZlIGFuIGVtcHR5IG1vZHVsZSBsaXN0Li4uCi0jICAgKG1vZHVsZXMgbWF5IGFkZCBuZXcgbW9kdWxlcywgYW5kIHVudGlsIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGRvbmUuLi4pCi0jCi13aGlsZSB0ZXN0ICJ4JG5ld19tb2R1bGVfbGlzdCIgIT0gIngiOyBkbwotICBBQ19NU0dfTU9EVUxFX0RCRygtZSwiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIikKLSAgQUNfTVNHX01PRFVMRV9EQkcoIm5tbDogJG5ld19tb2R1bGVfbGlzdCIpCi0KLSAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAjIGxvb3Agb3ZlciBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIGN1cnJlbnQgbGlzdAotICAjCi0gIGZvciBqIGluICRuZXdfbW9kdWxlX2xpc3QKLSAgICBkbwotCi0gICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgZmlndXJlIG91dCB3aGljaCBzdWItYmxvY2tzIHRvIGJ1aWxkIGluIHBhcnRzCi0gICAgaWYgZWNobyAiJGoiIHwgZ3JlcCAiPSIgOyB0aGVuCi0gICAgICAgIyBidWlsZCBhIHNoYXJlZCBvYmplY3QgZmlsZQotICAgICAgICMgZm9ybWF0OiBzb2ZpbGVuYW1lPW1vZHVsZTE6bW9kdWxlMgotICAgICAgICMgWFhYOiBjdXJyZW50bHkgZG9lc24ndCBkbyB0aGlzCi0gICAgICAgZGxfbmFtZT1gZWNobyAkaiB8IHNlZCAncy89LiovLydgCi0gICAgICAgZGxfbmFtZXM9IiRkbF9uYW1lcyAkZGxfbmFtZSIKLSAgICAgICBkbF9vYmplY3RzPWBlY2hvICRqIHwgc2VkICdzLy4qPS8vJ2AKLSAgICAgICBtb2R1bGVfc3VibGlzdD1gZWNobyAkZGxfb2JqZWN0cyB8IHNlZCAncy86LyAvZydgCi0gICAgICAgc2F2ZWRfc3VibGlzdD0iIgotICAgICAgIHNhdmVkX3N1Ymxpc3RfY29kZT0iIgotICAgICAgIG91dHB1dF90bz1zZXBhcmF0ZQotCi0gICAgICAgIyBjcmVhdGUgb3V0cHV0IGZpbGVzCi0gICAgICAgIyB0aGVzZSBhY3R1YWxseSBnZXQgbnVrZWQgbGF0ZXIKLSAgICAgICBvdXRwdXRfaW5pdHM9ImFnZW50L21pYmdyb3VwLyR7ZGxfbmFtZX0tZGxsLmMiCi0gICAgICAgb3V0cHV0X2hkcnM9ImFnZW50L21pYmdyb3VwLyR7ZGxfbmFtZX0taGRycy5oIgotICAgIGVsc2UKLSAgICAgICAjIG5vdCBhIHNwZWNpYWwgdG9rZW4gaW52b2NhdGlvbgotICAgICAgIG1vZHVsZV9zdWJsaXN0PSRqCi0gICAgICAgb3V0cHV0X3RvPW5vcm1hbAotICAgICAgIG91dHB1dF90PQotICAgIGZpCi0KLSAgICB3aGlsZSB0ZXN0ICJ4JG1vZHVsZV9zdWJsaXN0IiAhPSAieCIgOyBkbwotCi0gICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgbG9vcCBvdmVyIGFsbCB0aGUgbW9kdWxlcyBpbiB0aGUgc3ViIGxpc3QKLSAgICBmb3IgaSBpbiAkbW9kdWxlX3N1Ymxpc3QKLSAgICBkbwotCi0gICAgQUNfTVNHX01PRFVMRV9EQkcoLWUgIlxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCi0gICAgQUNfTVNHX01PRFVMRV9EQkcoInRlc3RpbmcgJGkiKQotICAgIG5lZWRfaGVhZGVyPTAKLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGJ1aWxkIGEgcHNldWRvIGluY2x1ZGUgaGVhZGVyIHRoYXQgaW5jbHVkZXMgY3VycmVudCBjb25maWcgYW5kCi0gICAgIyBzeXN0ZW0gc3ltYm9sczoKLSAgICBBQ19MQU5HX0NPTkZURVNUKEFDX0xBTkdfU09VUkNFKFtbCi0jaW5jbHVkZSBORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUKLSNpbmNsdWRlICIkc3JjZGlyLyRtaWJkaXIvJGkuaCJdXSkpCi0gICAgbXYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBtYWNybzogY29uZmlnX2JlbG9uZ3NfaW4oQVJHKQotICAgICMgICBBUkc6IGVpdGhlcgotICAgICMgICAgIC0gbWliX21vZHVsZSAgID0+IGxpYm5ldHNubXBtaWJzICAgKGRlZmF1bHQpCi0gICAgIyAgICAgLSBhZ2VudF9tb2R1bGUgPT4gbGlibmV0c25tcGFnZW50Ci0gICAgIwotICAgIG1vZHVsZV90eXBlPW1pYl9tb2R1bGUKLSAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIG1vZHVsZV90eXBlPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19iZWxvbmdzX2luIHwgc2VkICdzQC4qY29uZmlnX2JlbG9uZ3NfaW4oXChbXildKlwpKS4qQFwxQCdgCi0gICAgICBjaGFuZ2VxdW90ZShbLCBdKQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRtb2R1bGVfdHlwZSIgPSAieCIgOyB0aGVuCi0gICAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCi0gICAgZmkKLSAgICBpZiB0ZXN0ICJ4JG91dHB1dF90byIgPSAieG5vcm1hbCIgOyB0aGVuCi0gICAgIAlvdXRwdXRfaW5pdHM9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5pdHMuaCIKLSAgICAgCW91dHB1dF9oZHJzPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luY2x1ZGVzLmgiCi0gICAgZmkKLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgd2l0aGluIHRoZSBkbGwgc3lzdGVtLiAKLSAgICAjICAgLSBpZiBmb3VuZCBpbiBhIGRsbCwgdGhlbiByZW1vdmUgZnJvbSB0aGUgZGxsIGFuZCBhZGQgdG8gbWFpbgotICAgIGRibGZpeD0iIgotICAgIGZvciBkbHRlc3QgaW4gJGRsX25hbWVzIDsgZG8KLSAgICAgIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtkbHRlc3R9X2ZpbGVzXCIiCi0gICAgICBpZiBlY2hvICIgJG1vZF9maWxlcyAiIHwgZ3JlcCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIyBzb21lIGRsbCBtb2R1bGUgaGFzIGFscmVhZHkgc2VlbiB0aGlzLCB1bmxvYWQgaXQgZnJvbSB0aGF0IGxpc3QKLSAgICAgICAgIyBhbmQgaW5jbHVkZSBpdCBpbiB0aGUgY29yZSAoYWdhaW4pCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKCJyZW1vdmluZyAkaSBmcm9tICRkbHRlc3QiKQotICAgICAgICBtb2RfZmlsZXM9YGVjaG8gIiAkbW9kX2ZpbGVzICIgfCBzZWQgInNAICRpIEBAImAKLSAgICAgICAgZGJsZml4PSJfX1hYWF9fIgotICAgICAgICBldmFsICJkbF8ke2RsdGVzdH1fZmlsZXM9XCIkbW9kX2ZpbGVzXCIiCi0KLSAgICAgICAgbW9kdWxlX2xpc3Q9IiRtb2R1bGVfbGlzdCAkaSIKLQllY2hvICJyZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJG1vZHVsZV9saXN0X2RlcHMKLQlpZiB0ZXN0ICRtb2R1bGVfdHlwZSA9ICJhZ2VudF9tb2R1bGUiIDsgdGhlbgotIAkgICAgZWNobyAic25tcF92YXJzLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkYWdlbnRfbW9kdWxlX2xpc3RfZGVwcwotICAgICAgICBlbHNlCi0gCSAgICBlY2hvICJtaWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJG1pYl9tb2R1bGVfbGlzdF9kZXBzCi0gICAgICAgIGZpCi0gICAgICAgIGV2YWwgJHttb2R1bGVfdHlwZX1fbGlzdD0iXCJcJCR7bW9kdWxlX3R5cGV9X2xpc3QgJGlcIiIKLQllY2hvICIJJGkgXFwiID4+ICRtb2R1bGVfbGlzdF9jb2RlCi0JZWNobyAkRUNIT19OICIgJGkiICRFQ0hPX0MgPj4gJE1PRFVMRV9MSVNUCi0gICAgICAgIGV2YWwgdG1wZmlsZXZhcj1cJGBlY2hvICR7bW9kdWxlX3R5cGV9X2xpc3RfY29kZWAKLSAgICAgICAgZWNobyAiCSRpIFxcIiA+PiAkdG1wZmlsZXZhcgotCi0JIyBYWFg6IGFkZCB0aGlzIHRvIHRoZSBtYWluIGluaXQgbGlzdDsgdGhpcyBpcyBwb3NzaWJsZSBub3QKLQkjIHF1aXRlIGluIHRoZSByaWdodCBzcG90IGFueSBsb25nZXIgYnV0IHdlJ3JlIHN0dWNrIHdpdGggaXQuCi0JIyBBZGRpbmcgaXQgYmFjayB0byB0aGUgb3JpZ2luYWwgb3JkZXJlZCBzcG90IHdvdWxkIGJlIGEKLQkjIG5pZ2h0bWFyZS4gIE9rLCB3ZSdyZSBhbHJlYWR5IGluIG5pZ2h0bWFyZSBjb2RlIHNvIHRoYXQKLQkjIHdvbHVkIGhhdmUgdG8gYmUgYSBuaWdodC10ZXJyb3IuCi0gICAgICAgIG1ubT1gZWNobyAkaSB8IHNlZCAncy8uKlwvLy87cy9cLmMkLy87J2AKLQlvdXRwdXRfaW5pdHNfdG1wPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luaXRzLmgiCi0JZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHNfdG1wCi0gICAgICAgICMgWFhYOiBldmVuIHdvcnNlLCB3ZSBsb29zZSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgbmVlZGVkIG9yIG5vdC4KLSAgICAgCW91dHB1dF9oZHJzX3RtcD0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbmNsdWRlcy5oIgotICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnNfdG1wCi0gICAgICBmaQotICAgIGRvbmUKLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIG1ha2Ugc3VyZSBtb2R1bGUgd2Fzbid0IGV4cGxpY2l0bHkgZXhjbHVkZWQsIG9yIGFscmVhZHkgYWRkZWQKLSAgICAjCi0gICAgaWYgdGVzdCAieCRkYmxmaXgiICE9ICJ4IiA7IHRoZW4KLSAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaSB3YXMgZHVwbGljYXRlZCAtLSBwdXR0aW5nIGludG8gbWFpbiIpCi0gICAgZWxpZiBlY2hvICIgJG5ld193aXRoX291dF9taWJfbW9kdWxlcyAiIHwgZ3JlcCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaSB3YXMgZXhjbHVkZWQiKQotICAgIGVsaWYgZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaSBhbHJlYWR5IHRlc3RlZCIpCi0gICAgZWxzZQotCi0gICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIHByb2Nlc3MgbW9kdWxlcyBoZWFkZXIsIGNoZWNraW5nIGZvciBjb25maWdfIHBzZXVkby1tYWNyb3MKLSAgICAgICMKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBkb2VzIHRoZSBoZWFkZXIgZmlsZSBmb3IgdGhlIG1vZHVsZSBleGlzdD8KLSAgICAgICMgICBtYWNyb3MgYXJlIG9ubHkgcHJvY2Vzc2VkIGlmIGl0IGRvZXMKLSAgICAgIGlmIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmg7IHRoZW4KLSAgICAgICAgbmV3X2xpc3Q9IiIKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2V4Y2x1ZGUobW9kdWxlcykKLSAgICAgIAkjICAtIGxpc3RzIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMKLSAgICAgIAkjICAgIC0gRUc6IG5ldyBNSUIgaW1wbGVtZW50YXRpb25zIGV4Y2x1ZGUgb2xkIGFuZCB2aWNlLXZlcnNhCi0gICAgICAJIwotICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgY29uZmxpY3RzCi0gICAgICAgICMKLQluZXdfbGlzdF9leGNsPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19leGNsdWRlIHwgc2VkICdzLy4qY29uZmlnX2V4Y2x1ZGUoXCguKlwpKS4qL1wxLydgCi0JaWYgdGVzdCAieCRuZXdfbGlzdF9leGNsIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgZXhjbHVkZXMgJG5ld19saXN0X2V4Y2wiKQotCSAgZm9yIGogaW4gJG5ld19saXN0X2V4Y2wKLQkgICAgZG8KLQkgICAgaWYgZWNobyAiICRtb2R1bGVfbGlzdCAkbmV3X21pYl9tb2R1bGVfbGlzdCAkbmV3X2xpc3RfdHdvICIgfCBncmVwICIgJGogIiA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgICBtaWJfY2ZnX21zZz0ibWliIG1vZHVsZSAnJGknIGV4Y2x1ZGVzIG1vZHVsZSAnJGonIGJ1dCBhbm90aGVyIG1vZHVsZSByZXF1aXJlcyBpdCIKLSAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQotICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCi0JICAgICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCi0gICAgICAgICAgICAgIGVsc2UKLQkgICAgICAgIEFDX01TR19XQVJOKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICAgIEFDX01TR19DQUNIRV9BREQoWyoqKiBNSUIgTW9kdWxlIHdhcm5pbmcgKioqICRtaWJfY2ZnX21zZ10pCi0gICAgICAgICAgICAgIGZpCi0JICAgIGVsc2UKLQkgICAgICBuZXdfd2l0aF9vdXRfbWliX21vZHVsZXM9IiRqICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMiCi0gICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaiBhZGRlZCB0byBleGNsdWRlZCBsaXN0IikKLQkgICAgZmkKLQkgIGRvbmUKLQlmaQotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIAkjIG1hY3JvOiBjb25maWdfYXJjaF9yZXF1aXJlKEFSQ0gsbW9kdWxlcykKLSAgICAgIAkjICAtIGxpc3RzIG1vZHVsZXMgcmVxdWlyZWQgZm9yIGEgZ2l2ZW4gQVJDSAotICAgICAgICAjCi0gICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgcmVxdWlyZW1lbnRzCi0gICAgICAgICMKLSAgICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IGdyZXAgY29uZmlnX2FyY2hfcmVxdWlyZSB8IHNlZCAncy8uKmNvbmZpZ19hcmNoX3JlcXVpcmUoICpcKFteIF0qXCkgKiwgKlwoW14gXSpcKSAqKS4qL1wxLXhhcmNoeC1cMi8nYAotICAgICAgICBjaGFuZ2VxdW90ZShbLCBdKQotCWlmIHRlc3QgIngkbmV3X2xpc3RfYXJjaCIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgZm9yIGogaW4gJG5ld19saXN0X2FyY2gKLQkgICAgZG8KLQkgICAgYXJjaHRlc3Q9YGVjaG8gJGogfCBzZWQgJ3MvLXhhcmNoeC0uKi8vJ2AKLQkgICAgIyB0YXJnZXRfb3MgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGEgI2RlZmluZSBvZiAxLi4uCi0JICAgIGlmIHRlc3QgIngkYXJjaHRlc3QiID0gIngxIiAtbyAieCR0YXJnZXRfb3MiID0gIngkYXJjaHRlc3QiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieCRhcmNodGVzdCI7IHRoZW4KLQkgICAgICBuZXdfbGlzdD0iJG5ld19saXN0IGBlY2hvICRqIHwgc2VkICdzLy4qLXhhcmNoeC0vLydgIgotICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHJlcXVpcmVkIGFkZGluZyBhcmNoIGZpbGVzOiBgZWNobyAkaiB8IHNlZCAncy8uKi14YXJjaHgtLy8nYCIpCi0JICAgIGZpCi0JICBkb25lCi0JZmkKLSAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSByZXF1aXJlZCBhcmNoIGZpbGVzOiAkbmV3X2xpc3QiKQotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIAkjIG1hY3JvOiBjb25maWdfcmVxdWlyZShtb2R1bGVzKQotICAgICAgCSMgIC0gbGlzdHMgbW9kdWxlcyByZXF1aXJlZCBmb3IgdGhpcyBtb2R1bGUKLSAgICAgICAgIwotICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgb3RoZXIgcmVxdWlyZWQgbW9kdWxlcwotICAgICAgICAjCi0JbmV3X2xpc3Q9IiRuZXdfbGlzdCBgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfcmVxdWlyZSB8IHNlZCAncy8uKmNvbmZpZ19yZXF1aXJlKFwoLipcKSkuKi9cMS8nYCIKLSAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSB3aWxsIHRlc3Q6ICRuZXdfbGlzdCIpCi0JaWYgdGVzdCAieCRuZXdfbGlzdCIgIT0gIngiOyB0aGVuCi0JICBmb3IgaiBpbiAkbmV3X2xpc3QKLQkgICAgZG8KLSAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKC1uICIgJGkgd2FudHMgdG8gYWRkICRqOiAiKQotCSAgICBpZiB0ZXN0ICEgLWYgJHNyY2Rpci8kbWliZGlyLyRqLmggLWEgISAtZiAkc3JjZGlyLyRtaWJkaXIvJGouYzsgdGhlbgotICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0JICAgICAgQUNfTVNHX0VSUk9SKFttaWIgbW9kdWxlICIkaSIgcmVxdWlyZXMgbW9kdWxlICIkaiIgYnV0ICRqLmggb3IgJGouYyBjb3VsZCBub3QgYmUgZm91bmQgaW4gJHNyY2Rpci8kbWliZGlyXSkKLQkgICAgZWxpZiBlY2hvICIgJG5ld193aXRoX291dF9taWJfbW9kdWxlcyAiIHwgZ3JlcCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgICBpZiB0ZXN0ICJ4JGkiICE9ICJ4ZGVmYXVsdF9tb2R1bGVzIiA7IHRoZW4KLSAgICAgICAgICAgICAgICBtaWJfY2ZnX21zZz0ibWliIG1vZHVsZSAnJGknIHJlcXVpcmVzIG1vZHVsZSAnJGonIGJ1dCBzb21lb25lIHRvbGQgbWUgdG8gY29tcGlsZSB3aXRob3V0IGl0IgotICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZ10pCi0gICAgICAgICAgICAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFsqKiogTUlCIE1vZHVsZSB3YXJuaW5nICoqKiAkbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICAgIGZpCi0jCSAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAkbmV3X21vZHVsZV9saXN0ICIgfCBncmVwICIgJGogIiA+IC9kZXYvbnVsbDsgdGhlbgotIyAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGogaW5jbHVkZWQgcHJldmlvdXNseSIpCi0gICAgICAgICAgICAgIGZpCi0JICAgIGVsc2UKLQkgICAgICBuZXdfbGlzdF90d289IiRuZXdfbGlzdF90d28gJGoiCi0gICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRqIGluY2x1ZGVkIikKLQkgICAgZmkKLQkgIGRvbmUKLQlmaQotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIAkjIG1hY3JvOiBjb25maWdfYWRkX21pYihTT01FLU1JQikKLSAgICAgIAkjICAtIGxpc3RzIE1JQnMgdG8gYmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgdG8tbG9hZCBsaXN0LgotICAgICAgICAjCi0gICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBtaWJzIHRvIGFkZAotICAgICAgICAjCi0JbmV3X21pYnM9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IGdyZXAgY29uZmlnX2FkZF9taWIgfCBzZWQgJ3MvLipjb25maWdfYWRkX21pYihcKC4qXCkpLiovXDEvJ2AKLQlpZiB0ZXN0ICJ4JG5ld19taWJzIiAhPSAieCI7IHRoZW4KLQkgICAgZm9yIGogaW4gJG5ld19taWJzCi0JCWRvCi0JCWlmIHRlc3QgInhgZWNobyA6JGRlZmF1bHRfbWliczogfCBncmVwIDokajpgIiA9ICJ4IjsgdGhlbgotCQkgICAgZGVmYXVsdF9taWJzPSIkZGVmYXVsdF9taWJzOiRqIgotCQlmaQotCQlpZiB0ZXN0IC1mICRzcmNkaXIvbWlicy8kai50eHQ7IHRoZW4KLQkJICAgIGlmIGVjaG8gJGRlZmF1bHRfbWlic19pbnN0YWxsIHwgZ3JlcCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KLQkJCSAgICA6Ci0JCSAgICBlbHNlCi0JCQkgICAgZGVmYXVsdF9taWJzX2luc3RhbGw9IiRkZWZhdWx0X21pYnNfaW5zdGFsbCAkai50eHQiCi0JCSAgICBmaQotCQlmaQotCSAgICBkb25lCi0JZmkgIyBuZXcgbWlicwotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICMgYWRkIHRoZSBjdXJyZW50IG1vZHVsZSB0byB0aGUgbGlzdCBvZiBzdHVmZiB0byBjb21waWxlLCBldGMuCi0gICAgICAgICMKLSAgICAgICAgIyBhZGQgJGkgdG8gbW9kdWxlIGxpc3QKLSAgICAgICAgIwotICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhZGRlZCAoYmFzZWQgb24gJGkuaCkiKQotICAgICAgICBtb2R1bGVfbGlzdD0iJG1vZHVsZV9saXN0ICRpIgotICAgICAgICBldmFsICR7bW9kdWxlX3R5cGV9X2xpc3Q9IlwiXCQke21vZHVsZV90eXBlfV9saXN0ICRpXCIiCi0KLQllY2hvICJyZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJG1vZHVsZV9saXN0X2RlcHMKLQlpZiB0ZXN0ICRtb2R1bGVfdHlwZSA9ICJhZ2VudF9tb2R1bGUiIDsgdGhlbgotIAkgICAgZWNobyAic25tcF92YXJzLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkYWdlbnRfbW9kdWxlX2xpc3RfZGVwcwotICAgICAgICBlbHNlCi0gCSAgICBlY2hvICJtaWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJG1pYl9tb2R1bGVfbGlzdF9kZXBzCi0gICAgICAgIGZpCi0KLSAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgIyBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgY29uZmlnX2xvYWRfbWliCi0gICAgICAgICMKLSAgICAgICAgaWYgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfbG9hZF9taWIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKLSAgICAgIAkgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlICIkaSIgdXNlcyB0aGUgImNvbmZpZ19sb2FkX21pYiIgZGlyZWN0aXZlLCB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgSXQgcHJvYmFibHkgd29uJ3Qgd29yay5dKQotICAgICAgICBmaSAjIGdyZXAgY29uZmlnX2xvYWRfbWliCi0KLSAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgIyBjaGVjayBmb3IgY29uZmlnX3BhcnNlX2RvdF9jb25mCi0gICAgICAgICMgIChnZW5lcmFsbHkgbm90IHVzZWQgYW55IGxvbmdlcjsgb2xkIGF1dG8tbG9hZCBhIC5jb25mIHRva2VuKQotICAgICAgICAjCi0gICAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgICAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19wYXJzZV9kb3RfY29uZiB8IHNlZCAnc0AuKmNvbmZpZ19wYXJzZV9kb3RfY29uZihcKFteKV0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCkpLipAcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXBkIixcMSwgXDIsIFwzLCBcNCk7QCcgPj4gJG1pYmRpci9taWJfbW9kdWxlX2RvdF9jb25mLmgKLQljaGFuZ2VxdW90ZShbLCBdKQotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIAkjIG1hY3JvOiBjb25maWdfZXJyb3IoZXJyb3IgdGV4dCkKLSAgICAgIAkjICAtIHVzZWQgdG8gc2lnbmFsIGEgY29uZmlndXJhdGlvbiBlcnJvciBmcm9tIGEgbW9kdWxlCi0gICAgICAgICMKLSAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGVycm9ycywgb3Igd2FybmluZ3MKLSAgICAgICAgIwotCWVycm9yPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19lcnJvciB8IHNlZCAncy8uKmNvbmZpZ19lcnJvcihcKC4qXCkpLiovXDEvJ2AKLQlpZiB0ZXN0ICJ4JGVycm9yIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICBlY2hvCi0gICAgICAgICAgZWNobwotICAgICAgICAgIEFDX01TR19FUlJPUihbJGk6ICoqKiAkZXJyb3IgKioqXSkKLSAgICAgICAgZmkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX3dhcm5pbmcod2FybmluZyB0ZXh0KQotICAgICAgCSMgIC0gdXNlZCB0byBzaWduYWwgYSBjb25maWd1cmF0aW9uICJ3YXJuaW5nIiB0byBiZSBwcmludGVkIHRvIHRoZSB1c2VyCi0gICAgICAgICMKLQl3YXJuaW5nPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ193YXJuaW5nIHwgc2VkICdzLy4qY29uZmlnX3dhcm5pbmcoXCguKlwpKS4qL1wxLydgCi0JaWYgdGVzdCAieCR3YXJuaW5nIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICBhbGxfd2FybmluZ3M9IiRhbGxfd2FybmluZ3MgJHdhcm5pbmcKLSIKLSAgICAgICAgZmkKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBDaGVjayBmb3IgYSAuYyBmaWxlIGlmIHRoZSAuaCBkaWRuJ3QgZXhpc3QKLSAgICAgICMKLSAgICAgIGVsaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuYzsgdGhlbgotICAgICAgICBpZiBlY2hvICIgJG1vZHVsZV9saXN0ICRuZXdfbGlzdF90d28gJG5ld19tb2R1bGVfbGlzdCAiIHwgZ3JlcCAiICRpICAgICAgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhbHJlYWR5IGluY2x1ZGVkIikKLSAgICAgICAgZWxzZQotICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhZGRlZCAoYmFzZWQgb24gJGkuYykiKQotCSAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCi0JICAgbWliX21vZHVsZV9saXN0PSIkbWliX21vZHVsZV9saXN0ICRpIgotICAgICAgICBmaQotCi0gICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIE5vIC5oIG9yIC5jID0gZXJyb3IhICAodHlwbz8pCi0gICAgICAjCi0gICAgICBlbHNlICMgbm8gJGkuaCBvciAkaS5jCi0gICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKLQlBQ19NU0dfRVJST1IoW21vZHVsZSBmaWxlcyAkaS5oIG9yICRpLmMgY291bGQgbm90IGJlIGZvdW5kIGluICRzcmNkaXIvJG1pYmRpcl0pCi0gICAgICBmaSAjIG5vICRpLmgKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgY2hlY2sgZm9yIGluaXQvc2h1dGRvd24gcm91dGluZXMgdG9vCi0gICAgICAjCi0gICAgICBoYXNfY19jb2RlPW5vCi0gICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jOyB0aGVuCi0gICAgICAgIGlmIHRlc3QgIngkb3V0cHV0X3RvIiA9ICJ4bm9ybWFsIiA7IHRoZW4KLQkgIGVjaG8gIgkkaSBcXCIgPj4gJG1vZHVsZV9saXN0X2NvZGUKLSAgCSAgZWNobyAkRUNIT19OICIgJGkiICRFQ0hPX0MgPj4gJE1PRFVMRV9MSVNUCi0gICAgICAgICAgZXZhbCB0bXBmaWxldmFyPVwkYGVjaG8gJHttb2R1bGVfdHlwZX1fbGlzdF9jb2RlYAotICAgICAgICAgIGVjaG8gIgkkaSBcXCIgPj4gJHRtcGZpbGV2YXIKLSAgICAgICAgZWxzZQotICAgICAgICAgIGV2YWwgImRsXyR7ZGxfbmFtZX1fZmlsZXM9XCJcJGRsXyR7ZGxfbmFtZX1fZmlsZXMgJGlcIiIKLSAgICAgICAgICBzYXZlZF9zdWJsaXN0X2NvZGU9IiRzYXZlZF9zdWJsaXN0X2NvZGUgJGkiCi0gICAgICAgIGZpCi0gICAgICAgIG1ubT1gZWNobyAkaSB8IHNlZCAncy8uKlwvLy87cy9cLmMkLy87J2AKLSAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoLWUgIlxuY2hlY2tpbmcgJyRzcmNkaXIvJG1pYmRpci8kaS5jJyAoJG1ubS9gYmFzZW5hbWUgJGlgKSBDIGZpbGUgZm9yIGluaXQvc2h1dGRvd24iKQotICAgICAgICBpZiB0ZXN0ICJ4JG1ubSIgIT0gInhgYmFzZW5hbWUgJGlgIjsgdGhlbgotICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0JICAgQUNfTVNHX0VSUk9SKFtjb25mbGljdGluZyBuYW1lczogJG1ubSAhPSBgYmFzZW5hbWUgJGlgXSkKLSAgICAgICAgZmkKLSAgICAgICAgdGVtcF9pbml0PWBncmVwIGluaXRfJG1ubSAkc3JjZGlyLyRtaWJkaXIvJGkuYyB8IGdyZXAgLXYgX2luaXRfJG1ubWAKLQlpZiB0ZXN0ICJ4JHRlbXBfaW5pdCIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygtZSAiYWRkaW5nIGluaXRfJG1ubSgpIHRvIGxpc3QiKQotICAgICAgICAgICAgbmVlZF9oZWFkZXI9MQotCSAgICBlY2hvICIgIGlmIChzaG91bGRfaW5pdChcIiRtbm1cIikpIGluaXRfJG1ubSgpOyIgPj4gJG91dHB1dF9pbml0cwotCWZpCi0JZ3JlcCBzaHV0ZG93bl8kbW5tICRzcmNkaXIvJG1pYmRpci8kaS5jID4gL2Rldi9udWxsCi0gICAgICAgIGlmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICRtb2R1bGVfZGVidWcgLWVxIDE7IHRoZW4KLSAgICAgICAgICAgICAgZWNobyAtZSAiXG5hZGRpbmcgc2h1dGRvd25fJG1ubSgpIHRvIGxpc3QiCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgbmVlZF9oZWFkZXI9MQotCSAgICBlY2hvICIgIGlmIChzaG91bGRfaW5pdChcIiRtbm1cIikpIHNodXRkb3duXyRtbm0oKTsiID4+ICRtaWJkaXIvJHttb2R1bGVfdHlwZX1fc2h1dGRvd24uaAotCWZpCi0gICAgICBmaSAjIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmMKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgaWYgdGhlcmUgaXMgYSBzaHV0ZG93bi9pbml0IGxpc3QsCi0gICAgICAjCi0gICAgICBpZiB0ZXN0ICRuZWVkX2hlYWRlciAtZXEgMSA7IHRoZW4KLSAgICAgICAgIGVjaG8gJyNpbmNsdWRlICInIm1pYmdyb3VwLyRpLmgiJyInID4+ICRvdXRwdXRfaGRycwotICAgICAgZWxzZQotICAgICAgICAgZWNobyAnLyojaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciKi8nID4+ICRvdXRwdXRfaGRycwotICAgICAgZmkKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgY2hlY2sgZm9yIG91dHB1dCBkaXJlY3RvcnkgKGZvciBidWlsZGluZyBvdXRzaWRlIG9mIHNvdXJjZSB0cmVlCi0gICAgICAjCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIGlmIHRlc3QgInhgZWNobyAkaSB8IHNlZCAncy9cLy8vZzsnYCIgIT0gIngkaSI7IHRoZW4KLQltbmQ9YGVjaG8gJGkgfCBzZWQgJ3MvXC9bXi9dKiQvLzsnYAotCWlmIHRlc3QgISAtZCAuLyRtaWJkaXIvJG1uZDsgdGhlbgotCSAgICBtb2R1bGVfZGlyZWN0b3JpZXM9IiRtb2R1bGVfZGlyZWN0b3JpZXMgLi8kbWliZGlyLyRtbmQiCi0JZmkKLSAgICAgIGZpICMgbW9kdWxlIGRpcmVjdG9yeSB0ZXN0Ci0gICAgICBjaGFuZ2VxdW90ZShbLCBdKQotCi0gICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBkZWZpbmUgVVNJTkdfKl9NT0RVTEUKLSAgICAgICMKLSAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgc3ltPSJgZWNobyAke2l9IHwgc2VkICdzL1teYS16QS1aMC05X10vXy9nJyB8IHRyICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJ2AiCi0gICAgICBjaGFuZ2VxdW90ZShbLCBdKQotICAgICAgZWNobyAiLyogRGVmaW5lIGlmIGNvbXBpbGluZyB3aXRoIHRoZSAke2l9IG1vZHVsZSBmaWxlcy4gICovIiA+PiBpbmNsdWRlL25ldC1zbm1wL2FnZW50LyR7bW9kdWxlX3R5cGV9X2NvbmZpZy5oCi0gICAgICBlY2hvICIjZGVmaW5lIFVTSU5HXyR7c3ltfV9NT0RVTEUgMSIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAotICAgICAgZWNobyAiICIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAotCi0gICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgZWNobyAkRUNIT19OICIgJGkkRUNIT19DIgotICAgIGZpICMKLSAgICBkb25lICMgZm9yIGkgaW4gJG1vZHVsZV9zdWJsaXN0Ci0KLSAgICBpZiB0ZXN0ICIkb3V0cHV0X3RvIiA9ICJzZXBhcmF0ZSIgOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JG5ld19saXN0X3R3byIgPSAieCIgOyB0aGVuCi0gICAgICAgICMgbm8gbmV3IHN1Yi1tb2R1bGVzIHRvIGFkZCB0byB0aGUgY3VycmVudCB0YXJnZXQKLSAgICAgICAgb3V0cHV0X3RvPSJub3JtYWwiCi0KLSAgICAgICAgZGxsY2xlYW5zPSIkc2F2ZWRfc3VibGlzdF9vICRkbGxjbGVhbnMiCi0gICAgICAgIG91dHB1dF9pbml0cz0iIgotICAgICAgICBtb2R1bGVfc3VibGlzdD0iIgotICAgICAgZWxzZQotICAgICAgICAjIGEgbW9kdWxlIGhhZCBzdWItbW9kdWxlcyByZXF1aXJlZDsga2VlcCBnb2luJwotICAgICAgICBzYXZlZF9zdWJsaXN0PSIkc2F2ZWRfc3VibGlzdCAkbW9kdWxlX3N1Ymxpc3QiCi0gICAgICAgIG1vZHVsZV9zdWJsaXN0PSIkbmV3X2xpc3RfdHdvIgotICAgICAgICBuZXdfbGlzdF90d289IiIKLSAgICAgIGZpCi0gICAgZWxzZQotICAgICAgbW9kdWxlX3N1Ymxpc3Q9IiIKLSAgICBmaQotCi0gICAgZG9uZSAjIHdoaWxlIG1vZHVsZV9zdWJsaXN0Ci0gIGRvbmUgIyBmb3IgaiBpbiAkbmV3X21vZHVsZV9saXN0Ci0KLSAgIyByZW1lbWJlciB0aGUgdG9wIGxldmVsIG1vZHVsZXMgZm9yIGxhdGVyIHJlcG9ydGluZwotICBpZiB0ZXN0ICRmaXJzdF9wYXNzID0gMSA7IHRoZW4KLSAgICAjIHJlbWVtYmVyIHRoaXMgbGlzdCBmb3IgbGF0ZXIgcmVwb3J0aW5nCi0gICAgdG9wX2xldmVsX21vZHVsZXM9IiRuZXdfbW9kdWxlX2xpc3QgPT4gJG5ld19saXN0X3R3byIKLSAgICBmaXJzdF9wYXNzPTAKLSAgZmkKLSAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIyBpZiAkaSBhZGRlZCBuZXcgbW9kdWxlcyB2aXMgY29uZmlnXyosCi0gICMgY2hlY2sgdGhvc2UgbW9kdWxlcyBmb3IgcmVxdWlyZW1lbnRzIHRvbwotICAjCi0gICMgdHJhbnNmZXIgdGhlIG5ldyBtb2R1bGUgdG8gY2hlY2sgbGlzdCB0byB0aGUgbm9ybWFsIHZhcmlhYmxlCi0gICMKLSAgaWYgdGVzdCAieCRuZXdfbGlzdF90d28iIDsgdGhlbgotICAgIG91dHB1dF90bz1ub3JtYWwKLSAgZmkKLSAgbmV3X21vZHVsZV9saXN0PSIkbmV3X2xpc3RfdHdvIgotICBuZXdfbGlzdF90d289IiIKLWRvbmUgIyB3aGlsZSB0ZXN0ICJ4JG5ld19tb2R1bGVfbGlzdCIgIT0gIngiOyBkbwotZWNobyAiIgotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgY29uc3RydWN0IHRoZSBkbGwgY29kZSBmaWxlcyBhbmQgbWFrZSBydWxlcy4gIFRoaXMgY2FuJ3QgYmUgZG9uZQotIyB1bnRpbCBub3cgYmVjYXVzZSBkdXBsaWNhdGUgdXNlIG9mIGEgbW9kdWxlIG1lYW5zIGl0IGdldHMgcmVtb3ZlZAotIyBmcm9tIHRoZSBkbGwgYW5kIHB1dCBpbnRvIHRoZSBtYWluIGFnZW50LgotIwotZm9yIGkgaW4gJGRsX25hbWVzIDsgZG8KLSAgZXZhbCBtb2RfZmlsZXM9IlwiXCRkbF8ke2l9X2ZpbGVzXCIiCi0gIGVjaG8gImNvbXBvbmVudHMgaW4gdGhlICRpIGRsbDogJG1vZF9maWxlcyIKLQotICBvdXRwdXRfaW5pdHM9ImFnZW50L21pYmdyb3VwLyR7aX0tZGxsLmMiCi0gIG91dHB1dF9oZHJzPSJhZ2VudC9taWJncm91cC8ke2l9LWhkcnMuaCIKLQotICBBQ19NU0dfTU9EVUxFX0RCRygiY3JlYXRpbmcgZGxsIGZpbGU6ICRvdXRwdXRfaW5pdHMiKQotICBmb3Igb2ZpbGUgaW4gJG91dHB1dF9pbml0cyAkb3V0cHV0X2hkcnMgOyBkbwotICAgIGlmIHRlc3QgLWYgJG9maWxlIDsgdGhlbgotICAgICAgaWYgZ3JlcCAidGhpcyBmaWxlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUiICRvZmlsZSA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbgotICAJOgotICAgICAgZWxzZQotICAJQUNfTVNHX0VSUk9SKFskb2ZpbGUgYWxyZWFkeSBleGlzdGVkIDsgY2FuJ3QgYnVpbGQgZGxsIG9iamVjdCAkaV0pCi0gICAgICBmaQotICAgIGZpCi0gICAgY2F0ID4gJG9maWxlIDw8IEVPRklGCi0vKiB4RG8gbm90IGVkaXQ7IHRoaXMgZmlsZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlICovCi1FT0ZJRgotICBkb25lCi0KLSAgY2F0ID4+ICRvdXRwdXRfaW5pdHMgPDwgRU9GT0MKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSAiJHtpfS1oZHJzLmgiCi12b2lkCi1pbml0XyRpKHZvaWQpIHsKLUVPRk9DCi0KLSAgIyBjcmVhdGUgdGhlIC5zbyBydWxlCi0gIHNhdmVkX3N1Ymxpc3Rfbz1gZWNobyAiJG1vZF9maWxlcyAiIHwgc2VkICdzL14gKi8vZztzLyAgKi8ubyAvZzsnYAotCi0gICMgY3JlYXRlIHRoZSBydWxlcyBmb3IgZWFjaCBvYmplY3QKLSAgZm9yIGogaW4gJG1vZF9maWxlcyA7IGRvCi0gICAgY2F0ID4+ICRtb2R1bGVfcnVsZXMgPDwgRU9GUgotJGoubzogJGouYwotCVwkKENDKSAtYyBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgXCQ8Ci0KLUVPRlIKLSAgICBtbm09YGVjaG8gJGogfCBzZWQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCi0gICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHMKLSAgZG9uZQotCi0gICMgY3JlYXRlIHRoZSBydWxlIGZvciB0aGUgLnNvIGFuZCB3cmFwcGVyIGNvZGUKLSAgY2F0ID4+ICRtb2R1bGVfcnVsZXMgPDwgRU9GTQotJHtpfS1kbGwubzogJHtpfS1kbGwuYwotCVwkKENDKSAtYyBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgXCQ8Ci0KLSR7aX0uc286ICRzYXZlZF9zdWJsaXN0X28gJHtpfS1kbGwubwotCVwkKENDKSBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgJHNhdmVkX3N1Ymxpc3RfbyAke2l9LWRsbC5vCi0KLUVPRk0KLSAgICAgICAgY2F0ID4+ICRvdXRwdXRfaW5pdHMgPDwgRU9GT0NGSU4KLX0KLUVPRk9DRklOCi0KLWRvbmUKLQotIyBjbGVhbnVwCi1ybSAtZiBtb2R1bGVfdG1wX2hlYWRlci5oCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGJ1aWxkIG1vZHVsZSBsaXN0cyBmb3IgTWFrZWZpbGVzCi0jCi1jaGFuZ2VxdW90ZSgsICkKLQotZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KLSAgZXZhbCAiJGk9bWsvJHtpfS5tayIKLWRvbmUKLQotc2VkICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9vCi1zZWQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfYy87cy9cKFtePV1cKSAgKlxcL1wxLmMgXFwvZycgIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X2MKLXNlZCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X2xvCi0KLXNlZCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRtaWJfbW9kdWxlX2xpc3RfY29kZSAgPiAkbWliX21vZHVsZV9saXN0X28KLXNlZCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtaWJfbW9kdWxlX2xpc3RfY29kZSAgPiAkbWliX21vZHVsZV9saXN0X2MKLXNlZCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9sbwotCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9vL21pYmdyb3VwX2xpc3Rfby87c0BcKFteIAldKlwpXC5vQG1pYmdyb3VwL1wxLm9AZycgPCAkbWliX21vZHVsZV9saXN0X28gPiAkbWliZ3JvdXBfbGlzdF9vCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9sby9taWJncm91cF9saXN0X2xvLztzQFwoW14gCV0qXClcLmxvQG1pYmdyb3VwL1wxLmxvQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9sbyA+ICRtaWJncm91cF9saXN0X2xvCi0KLXNlZCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3Rfbwotc2VkICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9jCi1zZWQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3RfbG8vO3MvXChbXj1dXCkgICpcXC9cMS5sbyBcXC9nJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9sbwotCi1zZWQgJ3MvXmFnZW50X21vZHVsZV9saXN0X28vYWdlbnRncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJGFnZW50X21vZHVsZV9saXN0X28gPiAkYWdlbnRncm91cF9saXN0X28KLXNlZCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfbG8vYWdlbnRncm91cF9saXN0X2xvLztzQFwoW14gCV0qXClcLmxvQG1pYmdyb3VwL1wxLmxvQGcnIDwgJGFnZW50X21vZHVsZV9saXN0X2xvID4gJGFnZW50Z3JvdXBfbGlzdF9sbwotCi1mb3IgaSBpbiBtb2R1bGVfbGlzdF9vIG1vZHVsZV9saXN0X2MgbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X28gbWliX21vZHVsZV9saXN0X2MgbWliX21vZHVsZV9saXN0X2xvIG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X28gYWdlbnRfbW9kdWxlX2xpc3RfYyBhZ2VudF9tb2R1bGVfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfbyBhZ2VudGdyb3VwX2xpc3RfbG8gOyBkbwotCSMgaHB1eCBtYWtlIChhdCBsZWFzdCkgZG9lc24ndCBsaWtlIGEgdHJhaWxpbmcgXCBvbiB0aGUgbGFzdAotCSMgbGluZSBldmVuIHdoZW4gdGhlIG5leHQgbGluZSBjb250YWlucyBub3RoaW5nIGJ1dAotCSMgd2hpdGVzcGFjZS4KLQlsYXN0dG9rZW49YHRhaWwgLTEgbWsvJGkubWsgfCBhd2sgJ3twcmludCAkMX0nYAotCXNlZCAicyMkbGFzdHRva2VuIFxcXFwjJGxhc3R0b2tlbiMiIDwgbWsvJGkubWsgPiBtay8kaS5tay50bXAKLQltdiBtay8kaS5tay50bXAgbWsvJGkubWsKLQotCSMgYWRkIGEgY2xvc2luZyBjb21tZW50Ci0JZWNobyAiIiA+PiBtay8kaS5tawotCWVjaG8gIiMgZW5kIGNvbmZpZ3VyZSBnZW5lcmF0ZWQgY29kZSIgPj4gbWsvJGkubWsKLWRvbmUKLQotY2hhbmdlcXVvdGUoWywgXSkKLQotaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCi0gICBlY2hvIC1lICJcbkZpbmFsIG1vZHVsZSBsaXN0OiAkbW9kdWxlX2xpc3RfY29kZSIKLSAgIGV4aXQKLWZpCi1pZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCi0gIEFDX01TR19DQUNIRV9BREQoW0FnZW50IE1vZHVsZSBsaXN0OiAkbW9kdWxlX2xpc3RfY29kZV0pCi1maQotQUNfU1VCU1RfRklMRShNT0RVTEVfTElTVCkKLUFDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfYykKLUFDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfbG8pCi1BQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9jKQotQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2xvKQotQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9jKQotQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9vKQotQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9vKQotQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X2xvKQotQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X2xvKQotQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdCkKLQotI0FDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0KQotI0FDX1NVQlNUKG1vZHVsZV9saXN0KQotQUNfU1VCU1QoZGVmYXVsdF9taWJzX2luc3RhbGwpCi1BQ19TVUJTVChkbGxjbGVhbnMpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9ydWxlcykKLUFDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfZGVwcykKLUFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2RlcHMpCi1BQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2RlcHMpCi0KLUFDX01TR19SRVNVTFQoLikKLQotaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCi1BQ19NU0dfQ0FDSEVfQUREKEFnZW50IE1JQiBjb2RlOiAgICAgICAgICAgICRtb2R1bGVfbGlzdCkKLWZpCi1BQ19NU0dfQ0FDSEVfQUREKEFnZW50IE1JQiBjb2RlOiAgICAgICAgICAgICR0b3BfbGV2ZWxfbW9kdWxlcykKLQotIyBlbmQgaGFpcnkgYWdlbnQgbW9kdWxlIHByb2Nlc3NpbmcKLQotQUNfTVNHX0NIRUNLSU5HKFtpZiBkaXJlY3RvcmllcyBuZWVkIHRvIGJlIGNyZWF0ZWRdKQotZm9yIGkgaW4gJG1vZHVsZV9kaXJlY3RvcmllczsgZG8KLSAgJHNyY2Rpci9ta2luc3RhbGxkaXJzICRpCi1kb25lCi1BQ19NU0dfUkVTVUxUKC4pCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tCi0jIERlZmluZSBkZWZhdWx0IG1pYnMKLSMKLUFDX01TR19DSEVDS0lORyhbZGVmYXVsdCBtaWIgZmlsZXMgdG8gcmVhZF0pCi1pZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJTIiA9ICJ4IjsgdGhlbgotICBORVRTTk1QX0RFRkFVTFRfTUlCUz0iJGRlZmF1bHRfbWlicyIKLWZpCi1pZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gICMgbWluZ3czMiBhbmQgY3lnd2luIHVzZSAnOycgYXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNlcGFyYXRvciBjaGFyCi0gIEVOVl9TRVBBUkFUT1I9IjsiCi0gIE5FVFNOTVBfREVGQVVMVF9NSUJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQlMiIHwgc2VkICdzLzovOy9nJ2AKLSAgZGVmYXVsdF9taWJzPWBlY2hvICIkZGVmYXVsdF9taWJzIiB8IHNlZCAncy86LzsvZydgCi1lbHNlCi0gIEVOVl9TRVBBUkFUT1I9IjoiCi1maQotQUNfU1VCU1QoRU5WX1NFUEFSQVRPUikKLUFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCUywiJE5FVFNOTVBfREVGQVVMVF9NSUJTIikKLUFDX1NVQlNUKE5FVFNOTVBfREVGQVVMVF9NSUJTKQotQUNfTVNHX1JFU1VMVCgkTkVUU05NUF9ERUZBVUxUX01JQlMpCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB3ZSBoYXZlIHRvIGJ1aWxkIFBJQyBjb2RlXSkKLWVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiB1Y2Qtc25tcC9kbG1vZCAiID4vZGV2L251bGwKLWlmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCi0gICAgICAgIExJQl9DRkxBR1M9IiRMSUJfQ0ZMQUdTICRTSExJQl9DRkxBR1MiCi0JQUNfTVNHX1JFU1VMVCh5ZXMpCi1lbHNlCi0JRExMSUJTPSIiCi0JQUNfTVNHX1JFU1VMVChubykKLWZpCi0KLSMKLSMgQ2hlY2sgZm9yIGtlcm5lbCBsb2NhdGlvbgotIwotCi1BQ19DQUNIRV9DSEVDSyhmb3IgbG9jYXRpb24gb2Ygc3lzdGVtIGtlcm5lbCxhY19jdl9LRVJORUxfTE9DLAotW2FjX2N2X0tFUk5FTF9MT0M9InVua25vd24iCi0jIEZpcnN0IGRldGVybWluZSBpZiB0ZXN0IGV4cGVjdHMgYSAtZiBvciBhIC1jIChjaGFyYWN0ZXIgZGV2aWNlIChTWVNWKSkKLQotaWYgdGVzdCAtYyAvZGV2L251bGw7IHRoZW4KLSAgQ0ZMQUc9Ii1jIgotZWxpZiB0ZXN0IC1mIC9kZXYvbnVsbDsgdGhlbgotICBDRkxBRz0iLWYiCi1lbHNlCi0gICMgZmFsbCBiYWNrCi0gIENGTEFHPSItZiIKLWZpCi1mb3IgaSBpbiAvdm11bml4IC9ocC11eCAvc3RhbmQvdm11bml4IC9kZXYva3N5bXMgL2tlcm5lbC91bml4IC9rZXJuZWwvZ2VudW5peCAvbmV0YnNkIC91bml4IC9rZXJuZWwgL2JzZCAvbWFjaF9rZXJuZWwgL2Jvb3Qva2VybmVsL2tlcm5lbAotICBkbwotICBpZiB0ZXN0IC1mICRpIC1vICRDRkxBRyAkaTsgdGhlbgotICAgIGFjX2N2X0tFUk5FTF9MT0M9IiRpIgotICAgIGJyZWFrOwotICBmaQotZG9uZQotaWYgdGVzdCAkaSA9ICJ1bmtub3duIjsgdGhlbgotICBBQ19NU0dfV0FSTihbQ2FuJ3QgZmluZCBzeXN0ZW0ga2VybmVsLi4uICBTZXR0aW5nIHRvIC92bXVuaXhdKQotICBhY19jdl9LRVJORUxfTE9DPSIvdm11bml4IgotZmkKLV0pCi0KLUFDX0RFRklORV9VTlFVT1RFRChLRVJORUxfTE9DLCIkYWNfY3ZfS0VSTkVMX0xPQyIpCi0KLSMKLSMgQ2hlY2sgZm9yIG1vdW50IHRhYmxlIGxvY2F0aW9uCi0jCi0KLUFDX0NBQ0hFX0NIRUNLKGZvciBtb3VudCB0YWJsZSBsb2NhdGlvbixhY19jdl9FVENfTU5UVEFCLAotW2FjX2N2X0VUQ19NTlRUQUI9InVua25vd24iCi1mb3IgaSBpbiAvZXRjL21udHRhYiAvZXRjL210YWIgL2V0Yy9maWxlc3lzdGVtcyAvZGV2L21udHRhYgotICBkbwotICBpZiB0ZXN0IC1mICRpIC1vIC1jICRpOyB0aGVuCi0gICAgYWNfY3ZfRVRDX01OVFRBQj0iJGkiCi0gICAgYnJlYWs7Ci0gIGZpCi1kb25lCi1dKQotCi1BQ19ERUZJTkVfVU5RVU9URUQoRVRDX01OVFRBQiwiJGFjX2N2X0VUQ19NTlRUQUIiKQotCi0jIENoZWNrIGZvciAvZGV2L2RtZW0gb3IgL2Rldi9kcnVtIGxvY2F0aW9uCi1BQ19DQUNIRV9DSEVDSyhmb3IgbG9jYXRpb24gb2Ygc3dhcCBkZXZpY2UsYWNfY3ZfRE1FTV9MT0MsCi1bCi0jIEZpcnN0IGRldGVybWluZSBpZiB0ZXN0IGV4cGVjdHMgYSAtZiBvciBhIC1jIChjaGFyYWN0ZXIgZGV2aWNlIChTWVNWKSkKLQotaWYgdGVzdCAtZiAvZGV2L2ttZW07IHRoZW4KLSAgQ1RFU1Q9InRlc3QgLWYiCi1lbGlmIHRlc3QgLWMgL2Rldi9rbWVtOyB0aGVuCi0gIENURVNUPSJ0ZXN0IC1jIgotZWxzZQotICAjIGZhbGwgYmFjawotICBDVEVTVD0idGVzdCAtZiIKLWZpCi0KLWlmICRDVEVTVCAvZGV2L2RtZW07IHRoZW4KLSAgYWNfY3ZfRE1FTV9MT0M9Ii9kZXYvZG1lbSIKLWVsaWYgJENURVNUIC9kZXYvZHJ1bTsgdGhlbgotICBhY19jdl9ETUVNX0xPQz0iL2Rldi9kcnVtIgotZWxzZQotICBhY19jdl9ETUVNX0xPQz0ibm9uZSIKLWZpCi1dKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X0RNRU1fTE9DIiAhPSAieG5vbmUiOyB0aGVuCi0gIEFDX0RFRklORV9VTlFVT1RFRChETUVNX0xPQywiJGFjX2N2X0RNRU1fTE9DIikKLWZpCi0KLSMgZm9yY2VkIGVmZW5jZSB0dXJuZWQgb2ZmLgotIyBpZiB0ZXN0ICJ4JGRldmVsb3BlciIgPSAieHllcyIgLWEgIngkdXNlX2VmZW5jZSIgIT0gInhubyI7IHRoZW4KLSMgICAgdXNlX2VmZW5jZT0ieWVzIgotIyBmaQotCi1pZiB0ZXN0ICJ4JHVzZV9lZmVuY2UiID0gInh5ZXMiOyB0aGVuCi0gICAgQUNfQ0hFQ0tfTElCKGVmZW5jZSwgRUZfRXhpdCkKLWZpCi0KLSMgQ2hlY2tzIGZvciBsaWJyYXJpZXMuCi0jIEFDX0NIRUNLX0xJQihkZXMsIG1haW4pCi1BQ19DSEVDS19MSUIobSwgcm91bmQpCi1BQ19DSEVDS19MSUIobSwgZXhwKQotCi1BQ19BUkdfV0lUSChlbGYsCi0JW0FTX0hFTFBfU1RSSU5HKC0td2l0aG91dC1lbGYsW3VzZSBlbGYgbGlicmFyaWVzXSldLCwKLQlbQUNfQVJHX0VOQUJMRShlbGYsLAotCQlbQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtZWxmLy0td2l0aG91dC1lbGYgaW5zdGVhZCBdKV0pXSkKLQotaWYgdGVzdCAieCR3aXRoX2VsZiIgIT0gInhubyI7IHRoZW4KLSMgbmxpc3QgaXMgbmVlZGVkIGZvciB1cHRpbWUgb24gc29tZSBzeXRlbXMgaW4gdGhlIGdlbmVyaWMgbGlicmFyeQotIyBhZGQgaG9zdHMgd2hpY2ggZG9uJ3QgdXNlIG5saXN0IHRvIHRoZSBibGFuayBmaXJzdCBsaW5lCi1jYXNlICR0YXJnZXRfb3MgaW4KLQlsaW51eCopIDs7Ci0JaXJpeCopICMgQ2hlY2sgZm9yIG5saXN0IGluIG1sZCAoaXJpeCkKLQkJQUNfQ0hFQ0tfTElCKGVsZiwgbmxpc3QpCi0JCUFDX0NIRUNLX0xJQihlbGYsIG5saXN0NjQpCi0JCUFDX0NIRUNLX0xJQihtbGQsIG5saXN0KQotCQk7OwotCSopICMgZGVmYXVsdAotCQlBQ19DSEVDS19MSUIoZWxmLCBubGlzdCkKLQkJOzsKLWVzYWMKLWZpCi0gCi0KLSMgT24gc29tZSBwbGF0Zm9ybXMgKElyaXgpIGxpYm5zbCBhbmQgbGlic29ja2V0IHNob3VsZCBub3QgYmUgdXNlZC4KLUFDX0NIRUNLX0ZVTkMoZ2V0aG9zdGJ5bmFtZSwgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRSksCi0JQUNfQ0hFQ0tfTElCKG5zbCwgZ2V0aG9zdGJ5bmFtZSwgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRSkKLQlMSUJTPSIke0xJQlN9IC1sbnNsIikpCi0KLSMgU0NPIFVuaXh3YXJlIDcuMS40IGZpbmRzIGdldGhvc3RieW5hbWUoKSBpbiAtbHNvY2tldAotQUNfQ0hFQ0tfRlVOQyhnZXRob3N0YnluYW1lLCBBQ19ERUZJTkUoSEFWRV9HRVRIT1NUQllOQU1FKSwKLQlBQ19DSEVDS19MSUIoc29ja2V0LCBnZXRob3N0YnluYW1lLCBBQ19ERUZJTkUoSEFWRV9HRVRIT1NUQllOQU1FKQotCUxJQlM9IiR7TElCU30gLWxzb2NrZXQiKSkKLQotIyBTb2xhcmlzIGtzdGF0Ci1BQ19DSEVDS19MSUIoa3N0YXQsIGtzdGF0X2xvb2t1cCwKLSAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCS1NUQVQsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtzdGF0JyBsaWJyYXJ5ICgtbGtzdGF0KS5dKQotICAgICAgICBMTkVUU05NUExJQlM9IiR7TE5FVFNOTVBMSUJTfSAtbGtzdGF0IikKLQotIyBDaGVjayBmb3IgbGlicmFyaWVzIHRoYXQgdGhlIGFnZW50IG5lZWRzCi0jIHNhdmluZyBvbGQgbGlicmFyaWVzCi1OT05BR0VOVExJQlM9JExJQlMKLQotIyBDaGVjayBmb3Igc2VjdXJpdHkgcmVsYXRlZCBmdW5jdGlvbnMKLWlmIHRlc3QgIngkdHJ5b3BlbnNzbCIgIT0gInhubyI7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGFza2Vkb3BlbnNzbCIgIT0gInh5ZXMiIC1hICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KLSAgICAgIEFDX0NIRUNLX0xJQihwa2NzMTEsIENfSW5pdGlhbGl6ZSwgQUNfREVGSU5FKEhBVkVfTElCUEtDUzExLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwa2NzMTEnIGxpYnJhcnkgKC1scGtjczExKS5dKQotICAgICAgICAgICAgICBMSUJQS0NTMTE9Ii1scGtjczExIikKLSAgICBlbHNlIAotICAgICAgaWYgdGVzdCAieCR0cnlyc2FyZWYiICE9ICJ4bm8iOyB0aGVuCi0gICAgICAgICBBQ19DSEVDS19MSUIocnNhcmVmLCBSU0FQcml2YXRlRGVjcnlwdCkKLSAgICAgICAgIEFDX0NIRUNLX0xJQihSU0FnbHVlLCBSU0FfUEtDUzFfUlNBcmVmKQotICAgICAgZmkKLQotICAgICAgQUNfQ0hFQ0tfTElCKGNyeXB0bywgRVZQX21kNSwgQUNfREVGSU5FKEhBVkVfTElCQ1JZUFRPLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjcnlwdG8nIGxpYnJhcnkgKC1sY3J5cHRvKS5dKQotICAgICAgICAgICAgICBMSUJDUllQVE89Ii1sY3J5cHRvIikKLSAgICAgIEFDX0NIRUNLX0xJQihjcnlwdG8sIEFFU19jZmIxMjhfZW5jcnlwdCwgCi0gICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0FFU19DRkIxMjhfRU5DUllQVCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgQUVTX2NmYjEyOF9lbmNyeXB0JyBmdW5jdGlvbi5dKSkKLSAgICAgIEFDX0NIRUNLX0xJQihjcnlwdG8sIEVWUF9NRF9DVFhfY3JlYXRlLAotICAgICAgICAgIEFDX0RFRklORShbSEFWRV9FVlBfTURfQ1RYX0NSRUFURV0sIFtdLAotICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2NyZWF0ZScgZnVuY3Rpb24uXSkKLSAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX01EX0NUWF9ERVNUUk9ZXSwgW10sCi0gICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYEVWUF9NRF9DVFhfZGVzdHJveScgZnVuY3Rpb24uXSkpCi0gICAgZmkKLWVsaWYgdGVzdCAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCi0gICAgQUNfQ0hFQ0tfTElCKHBrY3MxMSwgQ19Jbml0aWFsaXplLCBBQ19ERUZJTkUoSEFWRV9MSUJQS0NTMTEpCi0gICAgICAgICAgICBMSUJQS0NTMTE9Ii1scGtjczExIikKLWZpCi0KLUxJQlM9JE5PTkFHRU5UTElCUwotCi0jIGNoZWNrIGZvciB0Y3Agd3JhcHBlciBzdXBwb3J0Ci1fY3BwZmxhZ3M9IiR7Q1BQRkxBR1N9IgotX2xkZmxhZ3M9IiR7TERGTEFHU30iCi0KLUFDX0FSR19XSVRIKGxpYndyYXAsCi1bICAtLXdpdGgtbGlid3JhcFs9TElCUEFUSF0gIENvbXBpbGUgaW4gbGlid3JhcCAodGNwX3dyYXBwZXJzKSBzdXBwb3J0Ll0sWwotICBpZiB0ZXN0ICIkd2l0aF9saWJ3cmFwIiAhPSAibm8iOyB0aGVuCi0gICAgaWYgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gInllcyI7IHRoZW4KLSAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtSSR3aXRoX2xpYndyYXAvaW5jbHVkZSIKLSAgICAgIExERkxBR1M9IiR7TERGTEFHU30gLUwkd2l0aF9saWJ3cmFwL2xpYiIKLSAgICBmaQotCi0gICAgX2xpYnM9JHtMSUJTfQotICAgIEFDX0NIRUNLX0hFQURFUih0Y3BkLmgsICwKLQkgICAgQUNfTVNHX0VSUk9SKFtBc2tlZCB0byB1c2UgbGlid3JhcCBidXQgSSBjb3VsZG4ndCBmaW5kIHRjcGQuaC5dKSkKLQotICAgIExJQlM9IiRMSUJTIC1sd3JhcCIKLQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBUQ1Agd3JhcHBlcnMgbGlicmFyeSAtbHdyYXBdKQotCSMgWFhYOiBzaG91bGQgY2hlY2sgZm9yIGhvc3RzX2N0bAotCUFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0JCSAgICAgI2luY2x1ZGUgPHRjcGQuaD4KLQkJICAgICBpbnQgYWxsb3dfc2V2ZXJpdHkgPSAwOwotCQkgICAgIGludCBkZW55X3NldmVyaXR5ICA9IDA7Ci0JCSAgICBdLFtob3N0c19hY2Nlc3MoKHZvaWQgKikwKV0sWwotCi0JICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0JICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9MSUJXUkFQKQotCSAgICB0ZXN0ICIkd2l0aF9saWJ3cmFwIiAhPSBubyAtYSAiJHdpdGhfbGlid3JhcCIgIT0geWVzICYmIF93cmFwbGlicz0iLUwkd2l0aF9saWJ3cmFwL2xpYiIKLQkgICAgX3dyYXBsaWJzPSIkX3dyYXBsaWJzIC1sd3JhcCJdLAotICAgICAgICBbCi0JICAgIEFDX01TR19SRVNVTFQoW25vXSkKLQkgICAgIyBMaW51eCBSZWRIYXQgNi4xIHdvbid0IGxpbmsgbGlid3JhcCB3aXRob3V0IGxpYm5zbAotCSAgICBBQ19DSEVDS19GVU5DKHlwX2dldF9kZWZhdWx0X2RvbWFpbiwgLAotCQlBQ19DSEVDS19MSUIobnNsLCB5cF9nZXRfZGVmYXVsdF9kb21haW4pKQotCSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBUQ1Agd3JhcHBlcnMgbGlicmFyeSAtbHdyYXAgbGlua2VkIHdpdGggLWxuc2xdKQotCSAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCQkgICAgICAgICAjaW5jbHVkZSA8dGNwZC5oPgotCQkgICAgICAgICBpbnQgYWxsb3dfc2V2ZXJpdHkgPSAwOwotCSAgICAgICAgICAgICAgICAgaW50IGRlbnlfc2V2ZXJpdHkgID0gMDsKLQkgCQldLFtob3N0c19hY2Nlc3MoKHZvaWQgKikwKV0sCi0KLQkJCUFDX01TR19SRVNVTFQoeWVzKQotCQkJQUNfREVGSU5FKE5FVFNOTVBfVVNFX0xJQldSQVApCi0JCQl0ZXN0ICIkd2l0aF9saWJ3cmFwIiAhPSBubyAtYSAiJHdpdGhfbGlid3JhcCIgIT0geWVzICYmIF93cmFwbGlicz0iLUwkd2l0aF9saWJ3cmFwL2xpYiIKLQkJCV93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAgLWxuc2wiLAotCi0JCQlBQ19NU0dfUkVTVUxUKG5vKQotCQkJQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBsaWJ3cmFwIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKSldKQotICAgIExBR0VOVExJQlM9IiRfd3JhcGxpYnMiCi0gICAgQ1BQRkxBR1M9JHtfY3BwZmxhZ3N9Ci0gICAgTERGTEFHUz0ke19sZGZsYWdzfQotICAgIExJQlM9JHtfbGlic30KLSAgZmkKLV0pCi0KLUFDX0NIRUNLX0hFQURFUlMocnBtL3JwbWxpYi5oIHJwbS9oZWFkZXIuaCkKLQotQUNfQ0hFQ0tfSEVBREVSKHJwbS9ycG1saWIuaCxycG1saWJfaD15ZXMscnBtbGliX2g9bm8pCi1BQ19DSEVDS19IRUFERVIocnBtL2hlYWRlci5oLHJwbWhlYWRlcl9oPXllcyxycG1oZWFkZXJfaD1ubykKLQotaWYgdGVzdCAieCRycG1oZWFkZXJfaCIgPSAieG5vIiAtbyAieCRycG1saWJfaCIgPSAieG5vIiA7IHRoZW4KLSAgaWYgdGVzdCAieCR3aXRoX3JwbSIgPSAieHllcyIgOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBlaXRoZXIgdGhlIFJQTSBoZWFkZXIgZmlsZXMgbmVlZGVkIGFuZCB3YXMgc3BlY2lmaWNhbGx5IGFza2VkIHRvIHVzZSBSUE0gc3VwcG9ydF0pCi0gIGVsc2UKLSAgICB3aXRoX3JwbT1ubwotICBmaQotZmkKLQotIwotIyBycG0gbGlicmFyaWVzIG9ubHkgbmVlZGVkIGZvciB0aGUgaG9zdCByZXNvdXJjZXMgbWliIHNvZnR3YXJlCi0jIGluc3RhbGxlZCB0YWJsZXMgKG9uIGxpbnV4IGluIHBhcnRpY3VsYXIpCi0jCi1pZiB0ZXN0ICJ4JHdpdGhfcnBtIiAhPSAieG5vIiAmJiBcCi0gICAgICAgIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiBob3N0L2hyX3N3aW5zdCAiID4gL2Rldi9udWxsOyB0aGVuCi0gICMgQVJHLiAgUlBNIGlzIGEgcmVhbCBwYWluLgotICAjIEZXSVcgbGlicnBtLmxhLCBsaWJycG1pby5sYSwgYW5kIGxpYnBvcHQubGEgaGF2ZSBjb3JyZWN0IGRlcGVuZGVuY2llcy4KLSAgX3JwbWxpYnM9IiIKLQotICAjIHJwbS00LjAueCBuZWVkcyBycG1pby4KLSAgQUNfQ0hFQ0tfTElCKHJwbWlvLCBycG1HZXRQYXRoLCBbX3JwbWxpYnM9Ii1scnBtaW8gJF9ycG1saWJzIl0sLCRfcnBtbGlicykKLSAgCi0gICMgbm93IGNoZWNrIGZvciBycG0gdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGxpYnJhcmllcy4KLSAgQUNfQ0hFQ0tfTElCKHJwbSwgcnBtR2V0RmlsZXN5c3RlbUxpc3QsWwotICAgIEFDX0RFRklORShIQVZFX0xJQlJQTSkKLSAgICBMTUlCTElCUz0iLWxycG0gJF9ycG1saWJzICRMTUlCTElCUyIKLSAgICBDRkxBR1M9IiRDRkxBR1MgLUkvdXNyL2luY2x1ZGUvcnBtIgotICBdLFsKLSAgICAjIHJwbS00LjAuMyBsaWJycG1kYiBhY3R1YWxseSBjb250YWlucyB3aGF0IHdlIG5lZWQuCi0gICAgQUNfQ0hFQ0tfTElCKHJwbWRiLCBycG1kYk9wZW4sWwotICAgICAgQUNfREVGSU5FKEhBVkVfTElCUlBNKQotICAgICAgTE1JQkxJQlM9Ii1scnBtZGIgLWxycG0gJF9ycG1saWJzICRMTUlCTElCUyIKLSAgICAgIENGTEFHUz0iJENGTEFHUyAtSS91c3IvaW5jbHVkZS9ycG0iCi0gICAgXSwsLWxycG0gJF9ycG1saWJzKQotICBdKQotCi0gICMgcnBtIDQuNiBoYXMgaW5jb21wYXRpYmxlIEFQSSwgdHVybiBvbiB0aGUgbGVnYWN5IG9uZQotICBBQ19DSEVDS19ERUNMKFtoZWFkZXJHZXRFbnRyeV0sCi0gICAgOiAsCi0gICAgQUNfREVGSU5FKFtfUlBNXzRfNF9DT01QQVRdLCBbXSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBSUE0gNC42IG9yIG5ld2VyIHRvIHR1cm4gb24gbGVnYWN5IEFQSV0pLAotICAgIFtbI2luY2x1ZGUgPHJwbS9ycG1saWIuaD5dXQotICApCi1maQotCi0jIGxpYmt2bQotQUNfQ0hFQ0tfTElCKGt2bSwga3ZtX3JlYWQsIFtfbGlia3ZtPSItbGt2bSJdKQotQUNfQ0hFQ0tfRlVOQyhrdm1fb3BlbmZpbGVzLCBBQ19ERUZJTkUoSEFWRV9LVk1fT1BFTkZJTEVTLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fb3BlbmZpbGVzJyBmdW5jdGlvbi5dKSwKLQlBQ19DSEVDS19MSUIoa3ZtLCBrdm1fb3BlbmZpbGVzLCBBQ19ERUZJTkUoSEFWRV9LVk1fT1BFTkZJTEVTLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fb3BlbmZpbGVzJyBmdW5jdGlvbi5dKQotCV9saWJrdm09Ii1sa3ZtIikpCi1BQ19DSEVDS19GVU5DKGt2bV9nZXRwcm9jcywgQUNfREVGSU5FKEhBVkVfS1ZNX0dFVFBST0NTLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0cHJvY3MnIGZ1bmN0aW9uLl0pLAotCUFDX0NIRUNLX0xJQihrdm0sIGt2bV9nZXRwcm9jcywgQUNfREVGSU5FKEhBVkVfS1ZNX0dFVFBST0NTLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0cHJvY3MnIGZ1bmN0aW9uLl0pCi0JX2xpYmt2bT0iLWxrdm0iKSkKLUFDX0NIRUNLX0ZVTkMoa3ZtX2dldHN3YXBpbmZvLCBBQ19ERUZJTkUoSEFWRV9LVk1fR0VUU1dBUElORk8sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9nZXRzd2FwaW5mbycgZnVuY3Rpb24uXSksCi0JQUNfQ0hFQ0tfTElCKGt2bSwga3ZtX2dldHN3YXBpbmZvLCBBQ19ERUZJTkUoSEFWRV9LVk1fR0VUU1dBUElORk8sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9nZXRzd2FwaW5mbycgZnVuY3Rpb24uXSkKLQlfbGlia3ZtPSItbGt2bSIpKQotaWYgdGVzdCAieCR7X2xpYmt2bX0iICE9ICJ4IjsgdGhlbgotCUFDX0RFRklORShIQVZFX0xJQktWTSwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtJyBsaWJyYXJ5ICgtbGt2bSkuXSkKLQlMQUdFTlRMSUJTPSIkTEFHRU5UTElCUyAke19saWJrdm19IgotZmkKLQotIyBEWU5BTUlDIE1PRFVMRSBTVVBQT1JUCi1BQ19DSEVDS19GVU5DKGRsb3BlbiwgQUNfREVGSU5FKEhBVkVfRExPUEVOLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbG9wZW4nIGZ1bmN0aW9uLl0pLAotCUFDX0NIRUNLX0xJQihkbCwgZGxvcGVuLCBBQ19ERUZJTkUoSEFWRV9ETE9QRU4sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRsb3BlbicgZnVuY3Rpb24uXSkKLQlBQ19ERUZJTkUoSEFWRV9MSUJETCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGwnIGxpYnJhcnkgKC1sZGwpLl0pCi0JTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1sZGwiKSkKLQotIyBubGlzdAotQUNfQ0hFQ0tfRlVOQ1Mobmxpc3Qgbmxpc3Q2NCBrbmxpc3QpCi0KLSMgd2hldGhlciB3ZSBuZWVkIC1sZGV2c3RhdCBmb3IgZGlza2lvIE1JQgotZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiIHVjZC1zbm1wL2Rpc2tpbyAiID4vZGV2L251bGwKLWlmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCi0JQUNfQ0hFQ0tfRlVOQyhnZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9HRVRERVZTKSwKLQkJQUNfQ0hFQ0tfTElCKGRldnN0YXQsIGdldGRldnMsIEFDX0RFRklORShIQVZFX0dFVERFVlMpCi0JCUxNSUJMSUJTPSIke0xNSUJMSUJTfSAtbGRldnN0YXQiKSkKLQlBQ19DSEVDS19GVU5DKGdldGRldnMsIEFDX0RFRklORShIQVZFX0RFVlNUQVRfR0VUREVWUyksCi0JCUFDX0NIRUNLX0xJQihkZXZzdGF0LCBkZXZzdGF0X2dldGRldnMsIEFDX0RFRklORShIQVZFX0RFVlNUQVRfR0VUREVWUykKLQkJTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1sZGV2c3RhdCIpKQotZmkKLQotIyBMTS1TRU5TT1JTLU1JQiBzdXBwb3J0Ci1lY2hvICIgJG1vZHVsZV9saXN0ICIgfCBncmVwICIgdWNkLXNubXAvbG1TZW5zb3JzICIgPiAvZGV2L251bGwKLWlmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHNlbnNvcnMgc3VwcG9ydF0pCi0gICAgICAgIGNhc2UgJHRhcmdldF9vcyBpbgotICAgICAgICAgIHNvbGFyaXMqKQotICAgICAgICAgICAgQUNfQ0hFQ0tfSEVBREVSKHBpY2wuaCwgTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1scGljbCIsKQotICAgICAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhwaWNsLmgpCi0gICAgICAgICAgICA7OwotICAgICAgICAqKQotICAgICAgICAgICAgQUNfQ0hFQ0tfSEVBREVSKHNlbnNvcnMvc2Vuc29ycy5oLCwKLSAgICAgICAgICAgICAgICBbQUNfTVNHX0VSUk9SKFthc2tlZCB0byB1c2UgbG1fc2Vuc29ycyBidXQgSSBjb3VsZG4ndCBmaW5kIHNlbnNvcnMvc2Vuc29ycy5oXSldKQotICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKHNlbnNvcnMsIHNlbnNvcnNfZ2V0X2RldGVjdGVkX2NoaXBzLCBbCi0JCSAgIExNSUJMSUJTPSIke0xNSUJMSUJTfSAtbHNlbnNvcnMiIDsKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW2Fza2VkIHRvIHVzZSBsbV9zZW5zb3JzIGJ1dCBJIGNvdWxkbid0IGZpbmQgLWxzZW5zb3JzXSldKQotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotZmkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQRVJMIFNVUFBPUlQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIwotIyB0ZXN0IHRvIHNlZSBpZiB3ZSBjYW4gYXR0ZW1wdCB0byBidWlsZCBlbWJlZGRlZCBQZXJsIHNvIGZhcgotIwotaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCi0gICAgaW5zdGFsbF9wZXJsPSJ0cnkiCi0gIGZpCi0gIGlmIHRlc3QgIngkYWNfY3ZfcGF0aF9QRVJMUFJPRyIgPSAieCIgLW8gIngkYWNfY3ZfcGF0aF9QRVJMUFJPRyIgPSAieG5vIiA7IHRoZW4KLSAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgIGVtYmVkX3Blcmw9Im5vIgotICBmaQotZmkKLQotCi0jCi0jIEVtYmVkZGVkIFBlcmwgc3BlY2lmaWMgc3R1ZmYKLSMKLQotIyB0ZXN0IHBlcmwgcHJvZwotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgIG15cGVybD0kYWNfY3ZfcGF0aF9QRVJMUFJPRwotICAgIGlmIHRlc3QgJG15cGVybCA9ICJubyIgOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICBlbHNlCi0gICAgICAgIEFDX01TR19FUlJPUigtLWVuYWJsZS1lbWJlZGRlZC1wZXJsIHJlcXVlc3RlZCBidXQgbm8gcGVybCBleGVjdXRhYmxlIGZvdW5kKQotICAgICAgZmkKLSAgICBmaQotZmkKLQotIyB0ZXN0IGZvciBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQKLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICAjIGVtYmVkZGVkIFBlcmwgcmVxdWlyZXMgc2hhcmVkIGxpYnJhcmllcwotICAgIGlmIHRlc3QgIngkZW5hYmxlX3NoYXJlZCIgIT0gInh5ZXMiOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICBlbHNlCi0gICAgICAgIEFDX01TR19FUlJPUihQZXJsIHN1cHBvcnQgcmVxdWlyZXMgLS1lbmFibGUtc2hhcmVkKQotICAgICAgZmkKLSAgICBmaQotZmkKLQotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGFyZSBpbiB0aGUgc291cmNlIHRyZWUgc28gd2UgY2FuIGluc3RhbGwgUGVybCBtb2R1bGVzXSkKLSAgaWYgdGVzdCAieCRzcmNkaXIiID0gInguIiAtbyAtZCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUgOyB0aGVuCi0gICAgQUNfTVNHX1JFU1VMVChbWWVzXSkKLSAgZWxzZQotICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICBBQ19NU0dfUkVTVUxUKFtOb10pCi0gICAgZWxzZQotICAgICAgQUNfTVNHX0VSUk9SKFtQZXJsIG1vZHVsZXMgY2FuIG5vdCBiZSBidWlsdCBvdXRzaWRlIHRoZSBzb3VyY2UgZGlyZWN0b3J5XSkKLSAgICBmaQotICBmaQotZmkgICAgICAKLQotIyBjaGVjayB0aGUgUGVybCBjb21waWxlciBuYW1lCi1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgIwotICAgICMgUGVybCBjYyBjaGVja3MKLSAgICAjCi0gICAgaWYgdGVzdCAieGVuYWJsZV9wZXJsX2NjX2NoZWNrcyIgIT0gInhubyIgOyB0aGVuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIGNjXSkKLSAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgUEVSTENDPWAkbXlwZXJsIC1WOmNjIHwgJG15cGVybCAtbiAtZSAncHJpbnQgaWYgKHMvXlxzKmNjPS4oWy09XHdcc1wvXSspLjtccyovJDEvKTsnYAotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLSAgICAgIGlmIHRlc3QgIngkUEVSTENDIiAhPSAieCIgOyB0aGVuCi0gICAgICAgIEFDX01TR19SRVNVTFQoWyRQRVJMQ0NdKQotICAgICAgZWxzZQotICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICAgICAgZWxzZQotICAgICAgICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGRldGVybWluZSB0aGUgY29tcGlsZXIgdGhhdCB3YXMgdXNlZCB0byBidWlsZCAkbXlwZXJsLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBwZXJsIGJpbmFyeSBvciB1c2UgLS13aXRob3V0LXBlcmwtbW9kdWxlcyB0byBidWlsZCB3aXRob3V0IFBlcmwuXSkKLSAgICAgICAgZmkKLSAgICAgIGZpCi1maQotCi0jIGNoZWNrIHRoZSBQZXJsIGNvbXBpbGVyIGNvbXBhdGliaWxpdHkKLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciAkUEVSTENDIGlzIGEgR05VIEMgY29tcGlsZXJdKQotICAgICAgT0xEQ0M9JENDCi0gICAgICBDQz0iJFBFUkxDQyIKLSAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sIFtbCi0jaWZuZGVmIF9fR05VQ19fCi0gIGNob2tlIG1lCi0jZW5kaWYKLSAgICAgIF1dKV0sIFtwZXJsY2NfaXNfZ251PXllc10sIFtwZXJsY2NfaXNfZ251PW5vXSkKLSAgICAgIEFDX01TR19SRVNVTFQoWyRwZXJsY2NfaXNfZ251XSkKLSAgICAgIENDPSRPTERDQwotICAgICAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiIC1hICJ4JHBlcmxjY19pc19nbnUiID0gInhubyIgOyB0aGVuCi0gICAgICAJaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgCSAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICAgIAllbHNlCi0gICAgICAJICBBQ19NU0dfRVJST1IoW1RoaXMgYnVpbGQgaXMgdXNpbmcgYSBHTlUgQyBjb21waWxlciAoJENDKSB3aGlsZSBQZXJsIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggYSBub24tR05VIChvciBub24td29ya2luZykgY29tcGlsZXIgKCRQRVJMQ0MpLiBUaGlzIGxpa2VseSB3b24ndCB3b3JrIGZvciBidWlsZGluZyB3aXRoIFBlcmwgc3VwcG9ydC4gRWl0aGVyIHNwZWNpZnkgYSBkaWZmZXJlbnQgY29tcGlsZXIgKC0td2l0aC1jYz1QQVRIKSwgZGlzYWJsZSB0aGlzIGNoZWNrICgtLWRpc2FibGUtcGVybC1jYy1jaGVja3MpIG9yIGJ1aWxkIHdpdGhvdXQgUGVybCAoLS13aXRob3V0LXBlcmwtbW9kdWxlcykuXSkKLSAgICAgIAlmaQotICAgICAgZmkKLWZpCi0KLSMgY2hlY2sgaWYgdGhleSdyZSBib3RoIGdudQotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgICAgaWYgdGVzdCAieCRHQ0MiICE9ICJ4eWVzIiAtYSAieCRwZXJsY2NfaXNfZ251IiA9ICJ4eWVzIiA7IHRoZW4KLSAgICAgIAlpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAJICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgCWVsc2UKLSAgICAgICAgICBBQ19NU0dfRVJST1IoW1RoaXMgYnVpbGQgaXMgdXNpbmcgYSBub24tR05VIEMgY29tcGlsZXIgKCRDQykgd2hpbGUgUGVybCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGEgR05VIGNvbXBpbGVyICgkUEVSTENDKS4gVGhpcyBsaWtlbHkgd29uJ3Qgd29yayBmb3IgYnVpbGRpbmcgd2l0aCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzcGVjaWZ5IGEgZGlmZmVyZW50IGNvbXBpbGVyICgtLXdpdGgtY2M9UEFUSCksIGRpc2FibGUgdGhpcyBjaGVjayAoLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzKSBvciBidWlsZCB3aXRob3V0IFBlcmwgKC0td2l0aG91dC1wZXJsLW1vZHVsZXMpLl0pCi0gICAgICAJZmkKLSAgICAgIGZpCi1maQotCi0jIHdlIGhhdmUgZW5vdWdoIHN1cHBvcnQgZm9yIGluc3RhbGxpbmcgdGhlIG1vZHVsZXMgYXQgbGVhc3QuCi1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gIGluc3RhbGxfcGVybD0ieWVzIgotZWxzZQotICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieG5vIiA7IHRoZW4KLSAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgIGVtYmVkX3Blcmw9Im5vIgotICBmaQotZmkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgb24gdG8gZW1iZWRkaW5nLi4uCi0KLSMgY2hlY2sgdGhlIGNvbXBpbGVyIGZsYWdzIGZvciBpbGxlZ2FsIHRva2VucwotY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgc29sYXJpcyopCi0gICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgICAgICAgICMKLSAgICAgICAgICAjIFBlcmwgY2MgY2hlY2tzCi0gICAgICAgICAgIwotICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHByb2JsZW1hdGljIFBlcmwgY2MgZmxhZ3Mgb24gU3Vuc10pCi0gICAgICAgICAgaWYgJG15cGVybCAtVjpjY2ZsYWdzIHwgZ3JlcCBMQVJHRUZJTEUgPiAvZGV2L251bGwgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICAgICAgICBlbWJlZF9wZXJsPSJubyIKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtQZXJsIHdhcyBjb21waWxlZCB3aXRoIExBUkdFRklMRSBzdXBwb3J0IHdoaWNoIHdpbGwgYnJlYWsgTmV0LVNOTVAuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQotICAgICAgICAgICAgZmkKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtub25lIGtub3duXSkKLSAgICAgICAgICBmaQotICAgICAgZmkKLSAgICA7OwotCi0gICAgKikKLSAgICA7OwotZXNhYwotCi0KLSMgY2hlY2sgdGhlIGNmbGFncwotaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIENGTEFHU10pCi0gICAgcGVybGNmbGFncz1gJG15cGVybCAtTUV4dFV0aWxzOjpFbWJlZCAtZSBjY29wdHNgCi0gICAgaWYgdGVzdCAieCRwZXJsY2ZsYWdzIiAhPSAieCIgOyB0aGVuCi0gICAgICBBQ19NU0dfUkVTVUxUKFskcGVybGNmbGFnc10pCi0gICAgICBDRkxBR1M9IiRDRkxBR1MgJHBlcmxjZmxhZ3MiCi0gICAgZWxzZQotICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgICAgZW1iZWRfcGVybD0ibm8iCi0gICAgICBlbHNlCi0gICAgICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGRldGVybWluZSB0aGUgQyBjb21waWxlciBmbGFncyB0aGF0IHdlcmUgdXNlZCB0byBidWlsZCAkbXlwZXJsLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBQZXJsIGJpbmFyeSBvciB1c2UgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgdG8gdHVybiBvZmYgZW1iZWRkZWQgUGVybCBmdW5jdGlvbmFsaXR5IGFsdG9nZXRoZXIuXSkKLSAgICAgIGZpCi0gICAgZmkKLWZpCi0KLSMgY2hlY2sgdGhlIGxkZmxhZ3MKLWlmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBMREZMQUdTXSkKLSAgICBuZXRzbm1wX3BlcmxsZG9wdHM9YCRteXBlcmwgLU1FeHRVdGlsczo6RW1iZWQgLWUgbGRvcHRzYAotICAgIGlmIHRlc3QgIngkbmV0c25tcF9wZXJsbGRvcHRzIiAhPSAieCIgOyB0aGVuCi0gICAgICBBQ19NU0dfUkVTVUxUKFskbmV0c25tcF9wZXJsbGRvcHRzXSkKLSAgICBlbHNlCi0gICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBlbWJlZF9wZXJsPSJubyIKLSAgICAgIGVsc2UKLSAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBsaW5rZXIgb3B0aW9ucyB0aGF0IHdlcmUgdXNlZCB0byBidWlsZCAkbXlwZXJsLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBQZXJsIGJpbmFyeSBvciB1c2UgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgdG8gdHVybiBvZmYgZW1iZWRkZWQgUGVybCBmdW5jdGlvbmFsaXR5IGFsdG9nZXRoZXIuXSkKLSAgICAgIGZpCi0gICAgZmkKLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9hc19uZWVkZWQiID0gInh5ZXMiIDsgdGhlbgotICAgICAgIyBsaW5rICpsaWJyYXJpZXMqIHdpdGggbGlicGVybAotICAgICAgUEVSTExET1BUU19GT1JfTElCUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKLSAgICAgICMgUGVybCBjY2RsZmxhZ3MgKFJQQVRIIHRvIGxpYnBlcmwsIGhvcGVmdWxseSkKLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgQ0NETEZMQUdTXSkKLSAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgbmV0c25tcF9wZXJsY2NkbGZsYWdzPWAkbXlwZXJsIC1WOmNjZGxmbGFncyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50ICQxICciaWYgKC9eXHMqY2NkbGZsYWdzPScoW14nXSspJzsvKTsiYAotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLSAgICAgIEFDX01TR19SRVNVTFQoWyRuZXRzbm1wX3BlcmxjY2RsZmxhZ3NdKQotICAgICAgUEVSTExET1BUU19GT1JfQVBQUz0iJG5ldHNubXBfcGVybGNjZGxmbGFncyIKLSAgICBlbHNlCi0gICAgICAjIGxpbmsgKmFwcGxpY2F0aW9ucyogYWdhaW5zdCBsaWJwZXJsCi0gICAgICBQRVJMTERPUFRTX0ZPUl9BUFBTPSIkbmV0c25tcF9wZXJsbGRvcHRzIgotICAgIGZpCi1maQotCi0jIGNoZWNrIG5lZWRlZCBmdW5jdGlvbnMKLWlmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgT0xETElCUz0iJExJQlMiCi0gICAgTElCUz0iJExJQlMgJG5ldHNubXBfcGVybGxkb3B0cyIKLQotICAgICMgbmV3ZXIgcGVybCB2cyBvbGRlciBwZXJsIGNhbGwgZnVuY3Rpb25zCi0gICAgQUNfQ0hFQ0tfRlVOQ1MoZXZhbF9wdikKLQotICAgICMgc2lnaDogdGhpcyBoYXMgYSBDQVBJVEFMIFAgaW4gUGVybCwgd2hpY2ggZW5kcyB1cCBiZWluZyB0aGUgc2FtZQotICAgICMgYXV0b2NvbmYgZGVmaW5lIGFzIHRoZSBsb3dlciBjYXNlIHNvIHdlIGhhdmUgdG8gdHJlYXQgdGhlbSAqQk9USCoKLSAgICAjIHNwZWNpYWxseS4gIFdvbmRlcmZ1bC4KLSAgICBBQ19DSEVDS19GVU5DKHBlcmxfZXZhbF9wdiwgQUNfREVGSU5FKEhBVkVfUEVSTF9FVkFMX1BWX0xDKSkKLSAgICBBQ19DSEVDS19GVU5DKFBlcmxfZXZhbF9wdiwgQUNfREVGSU5FKEhBVkVfUEVSTF9FVkFMX1BWX1VDKSkKLQotICAgIExJQlM9IiRPTERMSUJTIgotCi0KLSAgICBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcGVybF9ldmFsX3B2IiAhPSAieHllcyIgLWEgIngkYWNfY3ZfZnVuY19QZXJsX2V2YWxfcHYiICE9ICJ4eWVzIiAtYSAieCRhY19jdl9mdW5jX2V2YWxfcHYiICE9ICJ4eWVzIiA7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAgIGVtYmVkX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIHRoZSBldmFsX3B2LCBwZXJsX2V2YWxfcHYgb3IgUGVybF9ldmFsX3B2IGZ1bmN0aW9ucyBuZWVkZWQgZm9yIGVtYmVkZGVkIFBlcmwgc3VwcG9ydC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCi0gICAgICBmaQotICAgIGVsc2UKLSAgICAgIEFDX0RFRklORShORVRTTk1QX0VNQkVEREVEX1BFUkwpCi0gICAgICBPVEhFUkFHRU5UTElCT0JKUz0ic25tcF9wZXJsLm8iCi0gICAgICBPVEhFUkFHRU5UTElCTE9CSlM9InNubXBfcGVybC5sbyIKLQotICAgICAgRU1CRURQRVJMSU5TVEFMTD0iZW1iZWRwZXJsaW5zdGFsbCIKLSAgICAgIEVNQkVEUEVSTFVOSU5TVEFMTD0iZW1iZWRwZXJsdW5pbnN0YWxsIgotICAgICAgIyB5YXksIHdlIGdvdCBoZXJlIQotICAgICAgZW1iZWRfcGVybD0ieWVzIgotICAgIGZpCi1lbHNlCi0gICAgICBFTUJFRFBFUkxJTlNUQUxMPSIiCi0gICAgICBFTUJFRFBFUkxVTklOU1RBTEw9IiIKLSAgICAgIGVtYmVkX3Blcmw9Im5vIgotICAgIGZpCi1maQotQUNfU1VCU1QoRU1CRURQRVJMSU5TVEFMTCkKLUFDX1NVQlNUKEVNQkVEUEVSTFVOSU5TVEFMTCkKLUFDX1NVQlNUKFBFUkxMRE9QVFNfRk9SX0xJQlMpCi1BQ19TVUJTVChQRVJMTERPUFRTX0ZPUl9BUFBTKQotCi0jIGVtYmVkZGVkIFBlcmwgcmVzdWx0cwotQUNfTVNHX0NIRUNLSU5HKFtmb3IgcG90ZW50aWFsIGVtYmVkZGVkIFBlcmwgc3VwcG9ydF0pCi1pZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4eWVzIiA7IHRoZW4KLSAgQUNfTVNHX0NBQ0hFX0FERChFbWJlZGRlZCBQZXJsIHN1cHBvcnQ6ICAgICAgZGlzYWJsZWQpCi0gIEFDX01TR19SRVNVTFQoW2Rpc2FibGVkXSkKLWVsc2UKLSAgQUNfTVNHX0NBQ0hFX0FERChFbWJlZGRlZCBQZXJsIHN1cHBvcnQ6ICAgICAgZW5hYmxlZCkKLSAgQUNfTVNHX1JFU1VMVChbZW5hYmxlZF0pCi1maQotCi0jIGluc3RhbGwgUGVybCBtb2R1bGUgcmVzdWx0cwotUEVSTFRBUkdTPSIiCi1QRVJMSU5TVEFMTFRBUkdTPSIiCi1QRVJMVU5JTlNUQUxMVEFSR1M9IiIKLUFDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc10pCi1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHllcyIgOyB0aGVuCi0gICAgUEVSTFRBUkdTPSJwZXJsbW9kdWxlcyIKLSAgICBQRVJMSU5TVEFMTFRBUkdTPSJwZXJsaW5zdGFsbCIKLSAgICBQRVJMVU5JTlNUQUxMVEFSR1M9InBlcmx1bmluc3RhbGwiCi0gICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4eWVzIiA7IHRoZW4KLSAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIGVtYmVkZGFibGUpCi0gICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgLS0gYW5kIGVtYmVkZGFibGVdKQotICAgIGVsc2UKLSAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIG5vdCBlbWJlZGRhYmxlKQotICAgICAgQUNfTVNHX1JFU1VMVChbeWVzIC0tIG5vdCBlbWJlZGRhYmxlXSkKLSAgICBmaQotZWxzZQotICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBkaXNhYmxlZCkKLWZpCi1BQ19TVUJTVChQRVJMVEFSR1MpCi1BQ19TVUJTVChQRVJMSU5TVEFMTFRBUkdTKQotQUNfU1VCU1QoUEVSTFVOSU5TVEFMTFRBUkdTKQotQUNfU1VCU1QoUEVSTEFSR1MpCi0KLQotCi0jIHJlc2V0IGxpYnMKLUFHRU5UTElCUz0kTElCUwotTElCUz0kTk9OQUdFTlRMSUJTCi0KLQotCi0jIHB5dGhvbiBzdXBwb3J0Ci1QWVRIT05UQVJHUz0iIgotUFlUSE9OSU5TVEFMTFRBUkdTPSIiCi1QWVRIT05VTklOU1RBTExUQVJHUz0iIgotUFlUSE9OQ0xFQU5UQVJHUz0iIgotQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBzaG91bGQgaW5zdGFsbCB0aGUgcHl0aG9uIGJpbmRpbmdzXSkKLWlmIHRlc3QgIngkaW5zdGFsbF9weXRob24iID0gInh5ZXMiIDsgdGhlbgotICAgIFBZVEhPTlRBUkdTPSJweXRob25tb2R1bGVzIgotICAgIFBZVEhPTklOU1RBTExUQVJHUz0icHl0aG9uaW5zdGFsbCIKLSAgICBQWVRIT05VTklOU1RBTExUQVJHUz0icHl0aG9udW5pbnN0YWxsIgotICAgIFBZVEhPTkNMRUFOVEFSR1M9InB5dGhvbmNsZWFuIgotICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQeXRob24gbW9kdWxlczogICAgICAgIGJ1aWxkaW5nIGZvciAkUFlUSE9OUFJPRykKLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotZWxzZQotICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQeXRob24gbW9kdWxlczogICAgICAgIGRpc2FibGVkKQotICAgIEFDX01TR19SRVNVTFQoW25vXSkKLWZpCi1BQ19TVUJTVChQWVRIT05UQVJHUykKLUFDX1NVQlNUKFBZVEhPTklOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBZVEhPTlVOSU5TVEFMTFRBUkdTKQotQUNfU1VCU1QoUFlUSE9OQ0xFQU5UQVJHUykKLUFDX1NVQlNUKFBZVEhPTkFSR1MpCi0KLQotCi0jIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgotQUNfSEVBREVSX1NUREMKLUFDX0hFQURFUl9ESVJFTlQKLUFDX0hFQURFUl9TWVNfV0FJVAotQUNfQ0hFQ0tfSEVBREVSUyhzdGRhcmcuaCBzdHJpbmcuaCBmY250bC5oIGxpbWl0cy5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggc3lzbG9nLmggdW5pc3RkLmggc3lzL2RtYXAuaCBtYWNoaW5lL3B0ZS5oIHh0aS5oIHN5cy9zb2NraW8uaCBzeXMvc29ja2V0Lmggc3lzL3BhcmFtLmggc3lzL3Vpby5oKQotIyBhdCBsZWFzdCBTb2xhcmlzIDkgbmVlZHMgc3lzL3NvY2tldC5oIHRvIGNvbXBpbGUgc3lzL3NvY2tldHZhci5oCi1BQ19DSEVDS19IRUFERVJTKHN5cy9zb2NrZXR2YXIuaCwsLAotQUNfSU5DTFVERVNfREVGQVVMVChbXSkKLVsKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgotXSkKLSMgYXQgbGVhc3QgT3BlbkJTRCAzLjQgbmVlZHMgc3lzL3BhcmFtLmggKE1BWFBBVEhMRU4pIHRvIGNvbXBpbGUgc3lzL3N3YXAuaAotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3dhcC5oLCwsCi1BQ19JTkNMVURFU19ERUZBVUxUKFtdKQotWwotI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotXSkKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3RpbWVvdXQuaCBzeXMvdW4uaCBmc3RhYi5oIHN5cy9mcy5oIG10YWIuaCB1ZnMvZnMuaCBzeXMvZml4cG9pbnQuaCBtYWNoaW5lL3BhcmFtLmggc3lzL3ZtLmggdm0vdm0uaCBzeXMvdm1tZXRlci5oIHN5cy92bXBhcmFtLmggc3lzL3ZtbWFjLmggc3lzL3Ztc3lzdG0uaCBzeXMvdGltZS5oIHN5cy90aW1lcy5oIHN5cy9zdGF0dmZzLmggc3lzL3Zmcy5oIHN5cy9tbnR0YWIuaCBzeXMvc2VsZWN0LmggbW50ZW50Lmggc3lzL21udGVudC5oIGtzdGF0LmggdXRzbmFtZS5oIHN5cy91dHNuYW1lLmggc3lzL2NkZWZzLmggZ2V0b3B0LmggbG9jYWxlLmggcHRocmVhZC5oIHN5cy9sb2FkYXZnLmggcmVnZXguaCBsaW51eC90YXNrcy5oIHB3ZC5oIGdycC5oIHV0bXB4LmgpCi0jIE5ldHdvcmsgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhhcnBhL2luZXQuaCBuZXRpbmV0L2luX3N5c3RtLmggbmV0aW5ldC9pbi5oIG5ldGluZXQvaXBfdmFyLmggbmV0aW5ldC90Y3AuaCBuZXRpbmV0L3RjcGlwLmggbmV0aW5ldC91ZHAuaCBuZXQvaWYuaCBuZXRpbmV0L2luX3Zhci5oIG5ldGluZXQvaXAuaCBuZXRpbmV0L2lwX2ljbXAuaCBuZXQvaWZfYXJwLmggbmV0L2lmX21pYi5oIG5ldC9pZl92YXIuaCBuZXRpbmV0L2lmX2V0aGVyLmggbmV0aW5ldC90Y3BfdGltZXIuaCBuZXRpbmV0L3RjcF92YXIuaCBuZXRpbmV0L3VkcF92YXIuaCBuZXRpbmV0L2ljbXBfdmFyLmggbmV0ZGIuaCBuZXQvcm91dGUuaCwsLAotW1sKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19USU1FT1VUX0gKLSNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRWQVJfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXR2YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfQVJQQV9JTkVUX0gKLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfSAotI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUX0lGX0gKLSNpbmNsdWRlIDxuZXQvaWYuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVENQX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAotI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+Ci0jZW5kaWYKLV1dKQotIyBVRlMgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyh1ZnMvdWZzL2Rpbm9kZS5oIHVmcy91ZnMvcXVvdGEuaCB1ZnMvdWZzL2lub2RlLmggdWZzL2Zmcy9mcy5oLCwsCi1bWwotI2lmIEhBVkVfU1lTX1RZUEVTX0gKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmIEhBVkVfVUZTX1VGU19ESU5PREVfSAotI2luY2x1ZGUgPHVmcy91ZnMvZGlub2RlLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1VGU19VRlNfUVVPVEFfSAotI2luY2x1ZGUgPHVmcy91ZnMvcXVvdGEuaD4KLSNlbmRpZgotXV0pCi0jIEZyZWVCU0QgcmVxdWlyZWQgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhtYWxsb2MuaCBuZXQvaWZfZGwuaCBzeXMvc3lzY3RsLmggc3RkbGliLmggbmV0L2lmX3R5cGVzLmggc3lzL3F1ZXVlLmggb3NyZWxkYXRlLmggbWFjaGluZS90eXBlcy5oIHN5cy91c2VyLmggc3lzL3Byb2MuaCBzeXMvbWJ1Zi5oIHN5cy9tb3VudC5oIHN5cy9ka3N0YXQuaCBzeXMvY29uZi5oLCwsCi1bWwotI2lmIEhBVkVfU1lTX1RZUEVTX0gKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotXV0pCi0jIExpbnV4Ci1BQ19DSEVDS19IRUFERVJTKG5ldGluZXQvdGNwX2ZzbS5oIHN5cy9wcm90b3N3Lmggbmxpc3QuaCBpb2N0bHMuaCBhc20vcGFnZS5oIGFzbS90eXBlcy5oIG5ldGlweC9pcHguaCBwY2kvcGNpLmgpCi0jIFNvbGFyaXMKLUFDX0NIRUNLX0hFQURFUlMoaW5ldC9taWIyLmgpCi0jIE5ldEJTRCByZXF1aXJlZCBoZWFkZXJzCi1BQ19DSEVDS19IRUFERVJTKGt2bS5oIHN5cy9wb29sLmggdXZtL3V2bV9wYXJhbS5oIHV2bS91dm1fZXh0ZXJuLmggdm0vdm1fcGFyYW0uaCB2bS92bV9leHRlcm4uaCkKLSMgQlNEaTIgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyh2bS9zd2FwX3BhZ2VyLmgsLCwKLVtbCi0jaWYgSEFWRV9WTV9WTV9ICi0jaW5jbHVkZSA8dm0vdm0uaD4KLSNlbmRpZgotXV0pCi0jIGxpbnV4IGV0aHRvb2wKLSMgcmVxdWlyZXMgc3BlY2lhbCBoYWNrcyB0byBnZXQgYXJvdW5kIHZhcmlvdXMgcHJvYmxlbXMgb24gb2xkZXIgbGludXgga2VybmVscy4KLSMgbWFqb3IgdWdoLi4uLgotQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvZXRodG9vbC5oXSwsLAotW1sKLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotdHlwZWRlZiBfX3U2NCB1NjQ7ICAgICAgICAgLyogaGFjaywgc28gd2UgbWF5IGluY2x1ZGUga2VybmVsJ3MgZXRodG9vbC5oICovCi10eXBlZGVmIF9fdTMyIHUzMjsgICAgICAgICAvKiBkaXR0byAqLwotdHlwZWRlZiBfX3UxNiB1MTY7ICAgICAgICAgLyogZGl0dG8gKi8KLXR5cGVkZWYgX191OCB1ODsgICAgICAgICAgIC8qIGRpdHRvICovCi1dXSkKLSMgQlNEaTMgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3RhdC5oKQotIyBCU0RpMy9JUklYIGhlYWRlcnMKLSMgYXQgbGVhc3QgSVJJWCA2LjUgbmVlZHMgX0tNRU1VU0VSIGFuZCBzeXMvdHlwZXMuaCAobXByb3RfdCkgdG8gY29tcGlsZSAKLSMgICBzeXMvdm5vZGUuaAotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvdm5vZGUuaCwsLAotWwotI2RlZmluZSBfS01FTVVTRVIgMQotI2lmIEhBVkVfU1lTX1RZUEVTX0gKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotXSkKLSMgYXQgbGVhc3QgSVJJWCA2LjUgbmVlZHMgc3lzL3NlbWEuaCAobXJsb2NrX3QpIHRvIGNvbXBpbGUgc3lzL2hhc2hpbmcuaAotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc2VtYS5oKQotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvaGFzaGluZy5oLCwsCi1BQ19JTkNMVURFU19ERUZBVUxUKFtdKQotWwotI2lmIEhBVkVfU1lTX1NFTUFfSAotI2luY2x1ZGUgPHN5cy9zZW1hLmg+Ci0jZW5kaWYKLV0pCi0jIG1vcmUgSVJJWCBoZWFkZXJzCi1BQ19DSEVDS19IRUFERVJTKHN5cy90Y3BpcHN0YXRzLmggc3lzL3N5c21wLmggc3lzL3N5c3RlbWluZm8uaCBzeXMvc3lzZ2V0LmgpCi0jIEFJWCBzeXN0ZW0gY29uZmlndXJhdGlvbgotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3lzdGVtY2ZnLmgpCi0jIGZyb20gc211eCBzdHVmZgotQUNfQ0hFQ0tfSEVBREVSUyhlcnIuaCBzeXMvZmlsaW8uaCBzZ3R0eS5oKQotIyBBSVggbmVlZHMgdGhpcyBmb3Igc3RhdGZzIGZ1bmMKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N0YXRmcy5oKQotIyBmb3IgSG9zdFJlcyAoSFAtVVggYXQgbGVhc3QpCi1BQ19DSEVDS19IRUFERVJTKHN5cy9ka2lvLmggc3lzL2Rpc2tpby5oIHN5cy9wc3RhdC5oIGxpbnV4L2hkcmVnLmggcGtnbG9jcy5oKQotIyBmb3IgSG9zdFJlcyAoU29sYXJpcyAyLnggYXQgbGVhc3QpCi1BQ19DSEVDS19IRUFERVJTKHBrZ2luZm8uaCwKLSAgICBBQ19DSEVDS19MSUIoYWRtLCBwa2dpbmZvLCBBQ19ERUZJTkUoSEFWRV9QS0dJTkZPKQotICAgIExNSUJMSUJTPSIke0xNSUJMSUJTfSAtbGFkbSIpKQotCi1jYXNlICR0YXJnZXRfb3MgaW4KLSAgICBhaXgqKSAjIEFJWCBwZXJmc3RhdCBsaWJyYXJ5LCBuZWVkZWQgZm9yIENQVS9tZW1vcnkgc3RhdGlzdGljcwotICAgICAgICBBQ19DSEVDS19IRUFERVJTKGxpYnBlcmZzdGF0LmgsCi0gICAgICAgICAgICBBQ19DSEVDS19MSUIocGVyZnN0YXQsIHBlcmZzdGF0X2NwdV90b3RhbCwgQUNfREVGSU5FKEhBVkVfUEVSRlNUQVQpCi0gICAgICAgICAgICBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxwZXJmc3RhdCIpLCBBQ19NU0dfRVJST1IoWwotCi0qKiogVG8gbW9uaXRvciBDUFUvbWVtb3J5IHZhbHVlcyBpbiBBSVggeW91IG5lZWQgdG8gaW5zdGFsbAotKioqIGxpYnBlcmZzdGF0IHdoaWNoIGNhbiBiZSBmb3VuZCBpbiBib3MucGVyZgotXSkpCi0gICAgICAgIDs7Ci0gICAgaHB1eCopICMgSFAtVVggYWdlbnQgbmVlZHMgb3Blbl9taWIKLSAgICAgICAgQUNfQ0hFQ0tfTElCKG5tLCBvcGVuX21pYiwgQUNfREVGSU5FKEhBVkVfTElCTk0pCi0gICAgICAgICAgICBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxubSIpCi0gICAgICAgIDs7Ci0gICAgKikKLSAgICAgICAgOzsKLWVzYWMKLSMgV0lOMzIKLSMgKG1pbmd3MzIgbXVzdCBsaW5rIHdpbnNvY2sgZXhwbGljaXRseSkKLUFDX0NIRUNLX0hFQURFUlMod2luc29jay5oLFsKLSAgICAgICAgQUdFTlRMSUJTPSIke0FHRU5UTElCU30gLWxpcGhscGFwaSIKLSAgICAgICAgY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgICAgICAgICAgICAgbWluZ3cqKQotICAgICAgICAgICAgICAgICAgICAgICAgTElCUz0iJHtMSUJTfSAtbHJlZ2V4IC1sd3MyXzMyIgotICAgICAgICAgICAgICAgICAgICAgICAgQUdFTlRMSUJTPSIke0FHRU5UTElCU30gLWxyZWdleCAtbHdzMl8zMiIKLSAgICAgICAgICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLV0pCi1BQ19DSEVDS19IRUFERVJTKGlvLmgpCi0jIFNDTwotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3RyZWFtLmgpCi0jIEtBTUUKLUFDX0NIRUNLX0hFQURFUlMobmV0aW5ldC9pcDYuaCBuZXRpbmV0Ni9pbjZfdmFyLmggbmV0aW5ldDYvaW42X3BjYi5oIG5ldGluZXQ2L2lwNl92YXIuaCBuZXRpbmV0Ni90Y3A2LmggbmV0aW5ldDYvdGNwNl9mc20uaCBuZXRpbmV0Ni9uZDYuaCBuZXRpbmV0Ni90Y3A2X3RpbWVyLmggbmV0aW5ldDYvdGNwNl92YXIuaCwsLAotW1sKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19RVUVVRV9ICi0jaW5jbHVkZSA8c3lzL3F1ZXVlLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUDZfSAotI2luY2x1ZGUgPG5ldGluZXQvaXA2Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVF9JRl9ICi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVF9ST1VURV9ICi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci0jZW5kaWYKLV1dKQotIyBEWU5BTUlDIE1PRFVMRSBTVVBQT1JUCi1BQ19DSEVDS19IRUFERVJTKGRsZmNuLmgpCi0jIHRhYmxlX2FycmF5IGhlbHBlciBzdXBwb3J0Ci1BQ19DSEVDS19IRUFERVJTKHNlYXJjaC5oKQotCi0jIFJQTSBzdWJkaXJlY3RvcnkgcGF0aCAoc2lnaCkKLWlmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iICYmIFwKLSAgICAgICAgZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiIGhvc3QvaHJfc3dpbnN0ICIgPiAvZGV2L251bGw7IHRoZW4KLSAgQUNfQ0hFQ0tfSEVBREVSUyhycG0vcnBtdHMuaCwgW10sIFtdLCBbWyNpbmNsdWRlIDxycG0vcnBtbGliLmg+XV0pCi1maQotCi0jIE9wZW5CU0QgMi42IG5lZWRzIG5ldGluZXQvaW4uaCBiZWZvcmUgbmV0aW5ldC9pbl9wY2IuaAotQUNfTVNHX0NIRUNLSU5HKFtbZm9yIG5ldGluZXQvaW5fcGNiLmhdXSkKLUFDX0NBQ0hFX1ZBTChjdl9oYXZlX25ldGluZXRfaW5fcGNiX2gsCi1bIEFDX1RSWV9DUFAoIFsKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9pbl9wY2IuaD4KLV0sIGN2X2hhdmVfbmV0aW5ldF9pbl9wY2JfaD15ZXMsIGN2X2hhdmVfbmV0aW5ldF9pbl9wY2JfaD1ubyldKQotQUNfTVNHX1JFU1VMVCgkY3ZfaGF2ZV9uZXRpbmV0X2luX3BjYl9oKQotaWYgdGVzdCAkY3ZfaGF2ZV9uZXRpbmV0X2luX3BjYl9oID0geWVzOyB0aGVuCi0gIEFDX0RFRklORShIQVZFX05FVElORVRfSU5fUENCX0gpCi1maQotCi0jIE5ldEJTRCBuZWVkcyBtYWNoaW5lL3R5cGVzLmggYmVmb3JlIHN5cy9kaXNrbGFiZWwuaAotQUNfTVNHX0NIRUNLSU5HKFtbZm9yIHN5cy9kaXNrbGFiZWwuaF1dKQotQUNfQ0FDSEVfVkFMKGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oLAotWyBBQ19UUllfQ1BQKCBbCi0jaW5jbHVkZSA8bWFjaGluZS90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9kaXNrbGFiZWwuaD4KLV0sIGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oPXllcywgY3ZfaGF2ZV9zeXNfZGlza2xhYmVsX2g9bm8pXSkKLUFDX01TR19SRVNVTFQoJGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oKQotaWYgdGVzdCAkY3ZfaGF2ZV9zeXNfZGlza2xhYmVsX2ggPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVfU1lTX0RJU0tMQUJFTF9IKQotZmkKLQotIyBPcGVuU1NMCi1BQ19DSEVDS19IRUFERVJTKG9wZW5zc2wvaG1hYy5oIG9wZW5zc2wvZXZwLmggb3BlbnNzbC9hZXMuaCBvcGVuc3NsL2Rlcy5oIG9wZW5zc2wvZGguaCkKLUFDX0NIRUNLX0hFQURFUlMoc2VjdXJpdHkvY3J5cHRva2kuaCkKLQotIyBQcmludGluZwotQUNfUEFUSF9QUk9HKFtMUFNUQVRfUEFUSF0sbHBzdGF0KQotaWYgdGVzdCB4JExQU1RBVF9QQVRIICE9IHg7IHRoZW4KLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoTFBTVEFUX1BBVEgsIiRMUFNUQVRfUEFUSCIpCi0gICAgQUNfREVGSU5FKEhBVkVfTFBTVEFUKQotZmkKLUFDX0NIRUNLX0ZVTkNTKGNnZXRuZXh0KQotaWYgdGVzdCAtciAvZXRjL3ByaW50Y2FwOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfUFJJTlRDQVApCi1maQotCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhdXRoZW50aWNhdGlvbiBzdXBwb3J0XSkKLXVzZW9wZW5zc2w9bm8KLXVzZXBrY3M9bm8KLWlmIHRlc3QgIngkYWNfY3ZfbGliX3BrY3MxMV9DX0luaXRpYWxpemUiICE9ICJ4eWVzIiAtbyAieCRhY19jdl9oZWFkZXJfc2VjdXJpdHlfY3J5cHRva2lfaCIgIT0gInh5ZXMiOyB0aGVuCi0gICAgaWYgdGVzdCAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBQS0NTMTEgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCi0gICAgZmkKLWVsc2UKLSAgICBpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgdXNlcGtjcz15ZXMKLSAgICBmaQotZmkKLQotaWYgdGVzdCAieCRhY19jdl9saWJfY3J5cHRvX0VWUF9tZDUiICE9ICJ4eWVzIiAtbyAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9obWFjX2giICE9ICJ4eWVzIiAtbyAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9obWFjX2giICE9ICJ4eWVzIjsgdGhlbgotICAgIGlmIHRlc3QgIngkYXNrZWRvcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIE9wZW5TU0wgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCi0gICAgZmkKLWVsc2UKLSAgICBpZiB0ZXN0ICJ4JGFza2Vkb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgdXNlb3BlbnNzbD15ZXMKLSAgICBlbGlmIHRlc3QgIngkdHJ5b3BlbnNzbCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgaWYgdGVzdCAieCR1c2Vwa2NzIiAhPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgIHVzZW9wZW5zc2w9eWVzCi0gICAgICAgIGZpCi0gICAgZmkKLWZpCi0KLWlmIHRlc3QgIngkdXNlb3BlbnNzbCIgIT0gInhubyIgOyB0aGVuCi0gICAgYXV0aG1vZGVzPSJNRDUgU0hBMSIKLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9wcml2YWN5IiAhPSAieG5vIiA7IHRoZW4KLSAgICAgICAgaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9hZXNfaCIgPSAieHllcyIgOyB0aGVuCi0gICAgICAgICAgICBlbmNybW9kZXM9IkRFUyBBRVMiCi0JZWxzZQotCSAgICBlbmNybW9kZXM9IkRFUyIKLQlmaQotICAgIGVsc2UKLSAgICAgICAgZW5jcm1vZGVzPSJbZGlzYWJsZWRdIgotICAgIGZpCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX09QRU5TU0wpCi0gICAgTE5FVFNOTVBMSUJTPSIkTE5FVFNOTVBMSUJTICRMSUJDUllQVE8iCi0gICAgQUNfTVNHX1JFU1VMVChPcGVuU1NMIFN1cHBvcnQpCi1lbGlmIHRlc3QgIngkdXNlcGtjcyIgIT0gInhubyIgOyB0aGVuCi0gICAgYXV0aG1vZGVzPSJNRDUgU0hBMSIKLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9wcml2YWN5IiAhPSAieG5vIiA7IHRoZW4KLSAgICAgICAgZW5jcm1vZGVzPSJERVMiCi0gICAgZWxzZQotICAgICAgICBlbmNybW9kZXM9IltkaXNhYmxlZF0iCi0gICAgZmkKLSAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfUEtDUzExKQotICAgIExORVRTTk1QTElCUz0iJExORVRTTk1QTElCUyAkTElCUEtDUzExIgotICAgIEFDX01TR19SRVNVTFQoUEtDUzExIFN1cHBvcnQpCi1lbGlmIHRlc3QgIngkZW5hYmxlX21kNSIgIT0gInhubyI7IHRoZW4KLSAgICBhdXRobW9kZXM9Ik1ENSIKLSAgICBlbmNybW9kZXM9IiIKLSAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1KQotICAgIEFDX01TR19SRVNVTFQoSW50ZXJuYWwgTUQ1IFN1cHBvcnQpCi1maQotaWYgdGVzdCAieCRlbmFibGVfbWQ1IiA9ICJ4bm8iOyB0aGVuCi0gICAgYXV0aG1vZGVzPWBlY2hvICRhdXRobW9kZXMgfCBzZWQgJ3MvTUQ1ICovLzsnYAotZmkKLUFDX1NVQlNUKExORVRTTk1QTElCUykKLUFDX1NVQlNUKExBR0VOVExJQlMpCi0KLUFDX01TR19DQUNIRV9BREQoQXV0aGVudGljYXRpb24gc3VwcG9ydDogICAgICRhdXRobW9kZXMpCi1BQ19NU0dfQ0FDSEVfQUREKEVuY3J5cHRpb24gc3VwcG9ydDogICAgICAgICAkZW5jcm1vZGVzKQotCi1pZiB0ZXN0ICJ4JGFsbF93YXJuaW5ncyIgIT0gIngiOyB0aGVuCi0gICAgQUNfTVNHX0NBQ0hFX0FERChXQVJOSU5HOiAkYWxsX3dhcm5pbmdzKQotZmkKLQotIyBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotQUNfVFlQRV9PRkZfVAotQUNfVFlQRV9QSURfVAotQUNfSEVBREVSX1RJTUUKLQotIyB0aGlzIHNob3VsZCB1c2UgQUNfQ0hFQ0tfVFlQRSwgYnV0IGl0J3MgYnJva2VuIGF0IGxlYXN0IGluIDIuMTMtMTQKLSMgc28gd2UgZG8gaXQgYnkgaGFuZC4KLUFDX01TR19DSEVDS0lORyhbZm9yIHNvY2tsZW5fdF0pCi1BQ19DQUNIRV9WQUwoYWNfY3ZfdHlwZV8kMSwKLVtBQ19FR1JFUF9DUFAoW3NvY2tsZW5fdEA8OkBeYS16QS1aXzAtOUA6PkBdLAotWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBTVERDX0hFQURFUlMKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2VuZGlmXSwgW2FjX2N2X3R5cGVfc29ja2xlbl90PXllc10sIFthY19jdl90eXBlX3NvY2tsZW5fdD1ub10pXSkKLQotQUNfTVNHX1JFU1VMVChbJGFjX2N2X3R5cGVfc29ja2xlbl90XSkKLWlmIHRlc3QgJGFjX2N2X3R5cGVfc29ja2xlbl90ID0geWVzOyB0aGVuCi0gIEFDX0RFRklORShIQVZFX1NPQ0tMRU5fVCkKLWZpCi0KLSMgQUlYIGtlZXBzIGluX2FkZHJfdCBpbiAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBpbl9hZGRyX3RdKQotQUNfQ0FDSEVfVkFMKGFjX2N2X3R5cGVfJDEsCi1bQUNfRUdSRVBfQ1BQKFtpbl9hZGRyX3RAPDpAXmEtekEtWl8wLTlAOj5AXSwKLVsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgU1REQ19IRUFERVJTCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZl0sIFthY19jdl90eXBlX2luX2FkZHJfdD15ZXNdLCBbYWNfY3ZfdHlwZV9pbl9hZGRyX3Q9bm9dKV0pCi0KLUFDX01TR19SRVNVTFQoWyRhY19jdl90eXBlX2luX2FkZHJfdF0pCi1pZiB0ZXN0ICRhY19jdl90eXBlX2luX2FkZHJfdCA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9JTl9BRERSX1QpCi1maQotCi0jIE9sZGVyIHZlcnNpb25zIG9mIE1pbkdXIGRvIG5vdCBkZWZpbmUgc3NpemVfdCBpbiBzeXMvdHlwZXMKLUFDX01TR19DSEVDS0lORyhbZm9yIHNzaXplX3RdKQotQUNfQ0FDSEVfVkFMKGFjX2N2X3R5cGVfJDEsCi1bQUNfRUdSRVBfQ1BQKFtzc2l6ZV90QDw6QF5hLXpBLVpfMC05QDo+QF0sCi1bI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIFNURENfSEVBREVSUwotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2VuZGlmXSwgW2FjX2N2X3R5cGVfc3NpemVfdD15ZXNdLCBbYWNfY3ZfdHlwZV9zc2l6ZV90PW5vXSldKQotCi1BQ19NU0dfUkVTVUxUKFskYWNfY3ZfdHlwZV9zc2l6ZV90XSkKLWlmIHRlc3QgJGFjX2N2X3R5cGVfc3NpemVfdCA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9TU0laRV9ULCAxLCBbRGVmaW5lIGlmIHR5cGUgc3NpemVfdCBpcyBhdmFpbGFibGVdKQotZmkKLQotIyBDaGVjayBwcyBhcmdzCi1BQ19DQUNIRV9DSEVDSyhbZm9yIGNvcnJlY3QgZmxhZ3MgdG8gcHNdLCBhY19jdl9wc19mbGFncywKLVtpZiB0ZXN0ICJgKCRQU1BST0cgLWUgMj4mMSkgfCAkRUdSRVAgJyAocHMpICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgotICBhY19jdl9wc19mbGFncz0iLWUiCi1lbGlmIHRlc3QgImAoJFBTUFJPRyAtZWwgMj4mMSkgfCAkRUdSRVAgJyAocHMpICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgotICBhY19jdl9wc19mbGFncz0iLWVsIgotZWxpZiB0ZXN0ICJgKCRQU1BST0cgYWN4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9ImFjeCIKLWVsaWYgdGVzdCAiYCgkUFNQUk9HIC1hY3ggMj4mMSkgfCAkRUdSRVAgJyAocHMpICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgotICBhY19jdl9wc19mbGFncz0iLWFjeCIKLWVsaWYgdGVzdCAiYCgkUFNQUk9HIC1vIHBpZCx0dCxzdGF0ZSx0aW1lLHVjb21tIDI+JjEpIHwgJEVHUkVQICcgcHMgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSItbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSIKLWVsaWYgdGVzdCAiYCgkUFNQUk9HIGF4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9ImF4IgotZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieGN5Z3dpbiI7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgotZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbiAKLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgotZWxzZQotICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIGRldGVybWluZSB2YWxpZCBwcyBmbGFncy4uLiAgZGVmYXVsdGluZy4uLl0pCi0gIGFjX2N2X3BzX2ZsYWdzPSItYWN4IgotZmkKLV0pCi0KLVBTQ01EPSIkUFNQUk9HICRhY19jdl9wc19mbGFncyIKLUFDX1NVQlNUKFBTQ01EKQotQUNfREVGSU5FX1VOUVVPVEVEKFBTQ01ELCAiJFBTUFJPRyAkYWNfY3ZfcHNfZmxhZ3MiKQotCi0jIENoZWNrcyBmb3IgYnl0ZSBvcmRlcgotaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0geWVzOyB0aGVuCi0gIGlmIHRlc3QgeCR3aXRoX2VuZGlhbm5lc3MgPSB4YmlnOyB0aGVuCi0gICAgQUNfREVGSU5FKFdPUkRTX0JJR0VORElBTikKLSAgZWxpZiB0ZXN0IC16ICR3aXRoX2VuZGlhbm5lc3M7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoW1lvdSBhcmUgY3Jvc3MtY29tcGlsaW5nLCBidXQgeW91IGhhdmUgbm90IHNwZWNpZmllZCB0aGUgdGFyZ2V0J3MgZW5kaWFubmVzc10pCi0gIGZpCi1lbHNlCi0gIGlmIHRlc3QgJHdpdGhfZW5kaWFubmVzczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbRW5kaWFubmVzcyBoYXMgYmVlbiBzcGVjaWZpZWQsIGJ1dCB5b3UgYXJlIG5vdCBjcm9zcy1jb21waWxpbmcuXSkKLSAgZmkKLSAgQUNfQ19CSUdFTkRJQU4KLWZpCi0KLSMgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4KLUFDX0ZVTkNfQUxMT0NBCi1BQ19QUk9HX0dDQ19UUkFESVRJT05BTAotQUNfRlVOQ19NRU1DTVAKLUFDX1RZUEVfU0lHTkFMCi1BQ19GVU5DX0dFVE1OVEVOVAotQUNfQ0hFQ0tfRlVOQ1Moc2V0bW50ZW50IGhhc21udG9wdCBnZXRob3N0bmFtZSB1bmFtZSBnZXR0aW1lb2ZkYXkgc2VsZWN0IHNvY2tldCkKLUFDX0NIRUNLX0ZVTkNTKHN0cmxjYXQgc3RybGNweSBzdHJ0b2wgc3RydG91bCkKLUFDX0NIRUNLX0ZVTkNTKHN0cmNociBzdHJ0b2tfciBzdHJkdXAgbWVtY3B5IG1lbW1vdmUgaW5kZXggYmNvcHkgc3RyY2FzZXN0ciByZWdjb21wKQotQUNfQ0hFQ0tfRlVOQ1Moc2lnbmFsIHNldHNpZCBzaWdzZXQgc2lnYmxvY2sgc2lnaG9sZCBzdHJlcnJvciBzZXRlbnYgdnNucHJpbnRmIHNucHJpbnRmKQotQUNfQ0hFQ0tfRlVOQ1Moc2lnYWN0aW9uKQotQUNfQ0hFQ0tfRlVOQ1MocmFuZG9tIGxyYW5kNDggcmFuZCkKLUFDX0NIRUNLX0ZVTkNTKGV4ZWN2IHN5c3RlbSBmb3JrIGdldHBpZCBzdHJuY2FzZWNtcCBzaWdhbHJtKQotQUNfQ0hFQ0tfRlVOQ1MobHNlZWs2NCBwcmVhZDY0KQotaWYgdGVzdCAieCR3aXRoX3JwbSIgIT0gInhubyIgJiYgXAotICAgICAgICBlY2hvICIgJG1vZHVsZV9saXN0ICIgfCBncmVwICIgaG9zdC9ocl9zd2luc3QgIiA+IC9kZXYvbnVsbDsgdGhlbgotICBPTERMSUJTPSRMSUJTCi0gIExJQlM9JExNSUJMSUJTCi0gIEFDX0NIRUNLX0ZVTkNTKHJwbUdldFBhdGgpCi0gIExJQlM9JE9MRExJQlMKLWZpCi0KLUFDX0NIRUNLX0ZVTkNTKGdldGxvYWRhdmcpCi1BQ19DSEVDS19GVU5DUyhnZXRhZGRyaW5mbyBnZXRpcG5vZGVieW5hbWUgZ2FpX3N0cmVycm9yKQotIyBCU0RpMiBmdW5jdGlvbnMgZGlmZmVyCi1BQ19DSEVDS19GVU5DUyhzdGF0dmZzIHN0YXRmcykKLUFDX0NIRUNLX0ZVTkNTKGdldGR0YWJsZXNpemUpCi0jIGZyZWVic2QyIGNoZWNrcwotQUNfQ0hFQ0tfRlVOQ1MoZ2V0ZnNzdGF0KQotQUNfQ0hFQ0tfRlVOQ1ModXNsZWVwKQotQUNfQ0hFQ0tfRlVOQ1Moc2V0bG9jYWxlKQotQUNfQ0hFQ0tfRlVOQ1ModGNnZXRhdHRyKQotQUNfQ0hFQ0tfRlVOQ1MoaWZfbmFtZWluZGV4IGlmX2ZyZWVuYW1laW5kZXgpCi1BQ19DSEVDS19GVU5DUyhraW5mb19nZXRfY3B1cykKLSMgc29sYXJpcyBjaGVja3MKLUFDX0NIRUNLX0ZVTkNTKGdldHBhZ2VzaXplKQotQUNfQ0hFQ0tfRlVOQ1MobWtzdGVtcCkKLUFDX0NIRUNLX0ZVTkNTKGdldHB3bmFtIGdldGdybmFtIHNldGdpZCBzZXR1aWQgc2V0Z3JvdXBzKQotIyBIaWdoIHJlc29sdXRpb24gYWxhcm0gc3VwcG9ydAotQUNfQ0hFQ0tfRlVOQ1Moc2V0aXRpbWVyKQotIyBmdW5jdGlvbnMgdG8gc3VwcG9ydCB0aGUgY2xvY2suCi1BQ19DSEVDS19GVU5DUyhta3RpbWUgc3RpbWUgdGltZXMgc3lzY29uZikKLSMgbWlzc2luZyBmcm9tIGhwLXV4Ci1BQ19DSEVDS19GVU5DUyhpZl9uYW1ldG9pbmRleCkKLSMgbWlzc2luZyBmcm9tIE1pbkdXCi1BQ19DSEVDS19GVU5DUyhjaG93biBsb2NhbHRpbWVfcikKLQotQUNfTVNHX0NIRUNLSU5HKFtbZm9yIFNJT0NHSUZBRERSIGluIHN5cy9pb2N0bC5oXV0pCi1BQ19DQUNIRV9WQUwoY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSLAotWyBBQ19FR1JFUF9DUFAoeHh4eWVzeHh4LAotWwotI2lmZGVmIEhBVkVfU1lTX0lPQ1RMX0gKLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSNlbmRpZgotI2lmZGVmIFNJT0NHSUZBRERSCi14eHh5ZXN4eHgKLSNlbmRpZgotXSwgY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSPXllcywgY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSPW5vKV0pCi1BQ19NU0dfUkVTVUxUKCRjdl9zeXNfaW9jdGxfaF9oYXNfU0lPQ0dJRkFERFIpCi1pZiB0ZXN0ICRjdl9zeXNfaW9jdGxfaF9oYXNfU0lPQ0dJRkFERFIgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKFNZU19JT0NUTF9IX0hBU19TSU9DR0lGQUREUikKLWZpCi0KLSMgdWx0cml4Ci1BQ19NU0dfQ0hFQ0tJTkcoW1tmb3IgdHdvLWFyZ3VtZW50IHN0YXRmcyB3aXRoIHN0cnVjdCBmc19kYXRhIChVbHRyaXgpXV0pCi1BQ19DQUNIRV9WQUwoZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSwKLVtBQ19UUllfUlVOKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICi0jaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19GU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL2ZzX3R5cGVzLmg+Ci0jZW5kaWYKLW1haW4gKCkKLXsKLXN0cnVjdCBmc19kYXRhIGZzZDsKLS8qIFVsdHJpeCdzIHN0YXRmcyByZXR1cm5zIDEgZm9yIHN1Y2Nlc3MsCi0gICAwIGZvciBub3QgbW91bnRlZCwgLTEgZm9yIGZhaWx1cmUuICAqLwotZXhpdCAoc3RhdGZzICgiLiIsICZmc2QpICE9IDEpOwotfV0sCi1mdV9jdl9zeXNfc3RhdF9mc19kYXRhPXllcywKLWZ1X2N2X3N5c19zdGF0X2ZzX2RhdGE9bm8sCi1mdV9jdl9zeXNfc3RhdF9mc19kYXRhPW5vKV0pCi1BQ19NU0dfUkVTVUxUKCRmdV9jdl9zeXNfc3RhdF9mc19kYXRhKQotaWYgdGVzdCAkZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoU1RBVF9TVEFURlNfRlNfREFUQSkKLWZpCi0KLSMgY2hlY2sgaWYgY29tcGlsZXIgcHJlLXByb2Nlc3NvciBkZWZpbmVzIF9fRlVOQ1RJT05fXwotQUNfQ0FDSEVfQ0hFQ0soaWYgX19GVU5DVElPTl9fIGlzIGRlZmluZWQsYWNfY3ZfSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRCwKLVsKLUFDX1RSWV9DT01QSUxFKCxbCi0gICAgY2hhciAqY3AgPSBfX0ZVTkNUSU9OX187Ci1dLCBhY19jdl9IQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVEPXllcywgYWNfY3ZfSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRD1ubyldKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X0hBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQiID0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVEKQotZmkKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIG9uIFNDTyBVbml4d2FyZSA3LjEuNCAoU0NPIGNvbXBpbGVyKSwgInN0YXRpYyBpbmxpbmUiIGZ1bmN0aW9ucwotIyBhcmUgbm90IHN1cHBvcnRlZCwgc28gdGhpcyBkaXNhYmxlcyB0aGUgd2hvbGUgaW5saW5lIHRoaW5nIGlmIGl0Ci0jIGRvZXNuJ3Qgd29yayBwcm9wZXJseS4gU2hvdWxkIGhhdmUgbm8gZWZmZWN0IG9uIG90aGVyIHBsYXRmb3Jtcy4KLUFDX0NBQ0hFX0NIRUNLKFtbd2hldGhlciBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBhcmUgYnJva2VuIChVbml4d2FyZSldXSwKLSAgICBbbmV0c25tcF9jdl9jX2Jyb2tlbl9pbmxpbmVdLAotQUNfQ09NUElMRV9JRkVMU0UoW1sKLXN0YXRpYyBpbmxpbmUgaW50IG5lc3RlZF9pbmxpbmVfZnVuY3Rpb24odm9pZCkgewotICByZXR1cm4gMDsKLX0KLWlubGluZSBpbnQgbWFpbl9pbmxpbmVfZnVuY3Rpb24oIHZvaWQgKSB7Ci0gIHJldHVybiBuZXN0ZWRfaW5saW5lX2Z1bmN0aW9uKCk7Ci19Ci1dXSwgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPW5vLCBuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmU9eWVzKSkKLQotIyBCdXQsIHNhZGx5LCB0aGUgdXNhZ2Ugb2YgaW5saW5lIGluIE5FVF9TTk1QIGRpc2FncmVlcyBzZXJpb3VzbHkgd2l0aCBhdCBsZWFzdAotIyBzb2xhcmlzMiwgc28gZGlzYWJsZSBpdCBmb3Igbm93LgotY2FzZSAiJHRhcmdldF9vcyIgaW4KLSAgICBzb2xhcmlzKikKLSAgICAgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcwotICAgICAgICA7OwotICAgICopCi0gICAgICAgIDs7Ci1lc2FjCi0KLWlmIHRlc3QgIiRuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmUiID0geWVzIDsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9CUk9LRU5fSU5MSU5FLCAxLAotICAgICAgICBbRGVmaW5lIGlmIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZF0pCi1maQotCi0jIG9wZW5ic2Qgc2VlbXMgdG8gaGF2ZSBkcm9wcGVkIG1fY2x1c3RlcnMgYW5kIG1fY2xmcmVlIGZyb20gbWJzdGF0Ci1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19NQlVGX0gKLSNpbmNsdWRlIDxzeXMvbWJ1Zi5oPgotI2VuZGlmCi1dLCBtYnN0YXQsIG1fY2x1c3RlcnMsIG5vKQotCi0jIG9wZW5ic2Qgc2VlbXMgdG8gaGF2ZSBkcm9wcGVkIG1fbWJ1ZnMgZnJvbSBtYnN0YXQgdG9vCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19NQlVGX0gKLSNpbmNsdWRlIDxzeXMvbWJ1Zi5oPgotI2VuZGlmCi1dLCBtYnN0YXQsIG1fbWJ1ZnMsIG5vKQotCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KLV0sIHNpZ2FjdGlvbiwgc2Ffc2lnYWN0aW9uLCBubykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGluY2x1ZGUgPHRpbWUuaD4KLSNlbHNlCi0jIGlmIEhBVkVfU1lTX1RJTUVfSAotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8dGltZS5oPgotIyBlbmRpZgotI2VuZGlmCi1dLCB0bSwgdG1fZ210b2ZmLCBubykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICi0jaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgotI2VuZGlmCi1dLCBpZm5ldCwgaWZfbXR1KQotCi1pZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9pZm5ldF9oYXNfaWZfbXR1IiA9ICJ4bm8iOyB0aGVuCi1BQ19DQUNIRV9DSEVDSyhpZiBfS0VSTkVMIG5lZWRzIHRvIGJlIGRlZmluZWQgZm9yIGlmX210dSwgYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMLAotWwotaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3RfaWZuZXRfaGFzX2lmX210dSIgPSAieHllcyI7IHRoZW4KLSAgYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPW5vCi1lbHNlCi1BQ19UUllfQ09NUElMRShbCi0jZGVmaW5lIF9LRVJORUwgMQotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpZmRlZiBIQVZFX1NZU19USU1FX0gKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKLSNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+Ci0jZW5kaWYKLV0sWwotc3RydWN0IGlmbmV0IHRlc3RpdDsKLXRlc3RpdC5pZl9tdHUgPSAwOwotXSwgYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPXllcywgYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPW5vKQotZmkKLV0pCi0KLWlmIHRlc3QgIngkYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoSUZORVRfTkVFRFNfS0VSTkVMKQotZmkKLWZpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotXSwgc29ja2FkZHIsIHNhX2xlbiwgbm8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotXSwgc29ja2FkZHIsIHNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5Miwgbm8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1RZUEVTX0gKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2VuZGlmCi1dLCBzb2NrYWRkcl9zdG9yYWdlLCBzc19mYW1pbHksIG5vKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgotXSwgc29ja2FkZHJfc3RvcmFnZSwgX19zc19mYW1pbHksIG5vKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF9kc3QsIG5vKQotCi0jIGNoZWNraW5nIGZvciA0LjMgdnMgNC40IHJ0ZW50cnkuCi1BQ19DQUNIRV9DSEVDSyh0eXBlIG9mIHJ0ZW50cnkgc3RydWN0dXJlLGFjX2N2X1JURU5UUllfVFlQRSwKLVsKLQotIyA0LjQgY29tcGF0Ci1BQ19UUllfQ09NUElMRShbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSxbCi0KLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0RTVAotI2RlZmluZSBydF9kc3QgcnRfbm9kZXMtPnJuX2tleQotI2VuZGlmCi0KLSAgc3RydWN0IHJ0ZW50cnkgcnQ7IAotICBydC5ydF9ub2Rlc1swXS5ybl9mbGFncyA9IDE7Ci0gIHJ0LnJ0X2RzdDsKLSAgXSwgYWNfY3ZfUlRFTlRSWV9UWVBFPSJCU0QtNC40IikKLQotIyA0LjMgY29tcGF0Ci1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieCI7IHRoZW4KLUFDX1RSWV9DT01QSUxFKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLFsKLXN0cnVjdCBydGVudHJ5IHJ0OyAKLXJ0LnJ0X2hhc2g7Ci1dLCBhY19jdl9SVEVOVFJZX1RZUEU9IkJTRC00LjMiKQotZmkKLQotIyBlbHNlIGFjay4KLWlmIHRlc3QgIngkYWNfY3ZfUlRFTlRSWV9UWVBFIiA9ICJ4IjsgdGhlbgotICBBQ19NU0dfUkVTVUxUKFVua25vd24pCi0gIGFjX2N2X1JURU5UUllfVFlQRT0idW5rbm93biIKLWZpCi0KLV0pCi0KLWlmIHRlc3QgIngkYWNfY3ZfUlRFTlRSWV9UWVBFIiA9ICJ4QlNELTQuNCI7IHRoZW4KLSAgQUNfREVGSU5FKFJURU5UUllfNF80KQotZmkKLQotIyBjaGVja2luZyBmb3IgYWxwaGEncyBvcnRlbnRyeSB2cyBydGVudHJ5Ci1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieHVua25vd24iOyB0aGVuCi1BQ19DQUNIRV9DSEVDSyhmb3Igc3RydWN0IHJ0ZW50cnksIGFjX2N2X3N0cnVjdF9ydGVudHJ5LAotW0FDX0VHUkVQX0NQUChvcnRlbnRyeSwgWyNkZWZpbmUgS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9b3J0ZW50cnksICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT1ydGVudHJ5ICkKLWlmIHRlc3QgIngkYWNfY3Zfc3RydWN0X3J0ZW50cnkiID0gInhydGVudHJ5IiA7IHRoZW4KLSAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9InJ0ZW50cnkiCi1lbHNlCi0gIGFjX2N2X3N0cnVjdF9ydGVudHJ5PSJvcnRlbnRyeSIKLWZpCi1dKQotZWxzZQotICBSVEVOVFJZX1RZUEU9InJ0ZW50cnkiCi0gIGFjX2N2X3N0cnVjdF9ydGVudHJ5PSJydGVudHJ5IgotZmkKLQotaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3RfcnRlbnRyeSIgIT0gIngiOyB0aGVuCi0gIEFDX0RFRklORV9VTlFVT1RFRChSVEVOVFJZLHN0cnVjdCAke2FjX2N2X3N0cnVjdF9ydGVudHJ5fSkKLWVsc2UKLSAgQUNfREVGSU5FKFJURU5UUlksc3RydWN0IHJ0ZW50cnkpCi1maQotCi0jIGNoZWNrIGZvciA0LjMncyBydGVudHJ5LT5ydF9uZXh0Ci1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieEJTRC00LjMiOyB0aGVuCi1BQ19DQUNIRV9DSEVDSyhmb3Igc3RydWN0IHJ0ZW50cnkgaGFzIGEgcnRfbmV4dCBub2RlLCAKLQlhY19jdl9zdHJ1Y3RfcnRlbnRyeV9ydF9uZXh0LAotWwotQUNfVFJZX0NPTVBJTEUoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI3VuZGVmIEtFUk5FTAotI3VuZGVmIF9LRVJORUwKLSNpbmNsdWRlIDxuZXQvcm91dGUuaD4KLV0sWwotc3RydWN0IHJ0ZW50cnkgcnQ7IAotcnQucnRfbmV4dDsKLV0sIGFjX2N2X3N0cnVjdF9ydGVudHJ5X3J0X25leHQ9eWVzLCAgYWNfY3Zfc3RydWN0X3J0ZW50cnlfcnRfbmV4dD1ubyApCi1dKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5X3J0X25leHQiID0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShSVEVOVFJZX1JUX05FWFQpCi1maQotCi1maQotCi0jIENoZWNrIHNpbjZfc2NvcGVfaWQgbWVtYmVyIHNwZWNpZmllZCBpbiBSRkMyNTUzIGFkZGl0aW9uYWxseQotQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHNvY2thZGRyX2luNi5zaW42X3Njb3BlX2lkXSwsLFsKLUFDX0lOQ0xVREVTX0RFRkFVTFQoKQotWyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi1dXSkKLQotIyBDaGVjayBzdHJ1Y3QgcnRlbnRyeSBmb3IgdmFyaW91cyB0aGluZ3MuCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF91bml0KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF9yZWZjbnQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI3VuZGVmIEtFUk5FTAotI3VuZGVmIF9LRVJORUwKLSNpbmNsdWRlIDxuZXQvcm91dGUuaD4KLV0sIHJ0ZW50cnksIHJ0X2hhc2gpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI3VuZGVmIEtFUk5FTAotI3VuZGVmIF9LRVJORUwKLSNpbmNsdWRlIDxuZXQvcm91dGUuaD4KLV0sIHJ0ZW50cnksIHJ0X3VzZSkKLQotIyBDaGVjayB0Y3BzdGF0IGZvciB0Y3BzdGF0LnRjcF9yY3ZtZW1kcm9wCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBIQVZFX1NZU19USU1FT1VUX0gKLSNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KLSNpZmRlZiBIQVZFX05FVElORVRfVENQX1RJTUVSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3RjcF90aW1lci5oPgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX05FVElORVRfVENQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC90Y3BfdmFyLmg+Ci0jZW5kaWYKLV0sIHRjcHN0YXQsIHRjcF9yY3ZtZW1kcm9wKQotCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZXQvaWYuaD4KLSNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAotI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KLSNlbmRpZgotXSwgaWZhZGRyLCBpZmFfbmV4dCkKLQotIyBDaGVjayBpZm5ldCBlbnRyaWVzIHVzaW5nIG1hY3JvIGRlZmluZWQgaW4gYWNsb2NhbC5tNC4KLSMKLSMgWFhYICBCcm9rZW4gb24gRnJlZUJTRCB3aGVyZSB0aGVzZSBhcmUgI2RlZmluZSdkIGluIDxuZXQvaWYuaD4KLSMKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9iYXVkcmF0ZSkKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9iYXVkcmF0ZS5pZnNfdmFsdWUpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfc3BlZWQpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfdHlwZSkKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9pbWNhc3RzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2lxZHJvcHMpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfbm9wcm90bykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9vbWNhc3RzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX3huYW1lLG5vKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2xhc3RjaGFuZ2UudHZfc2VjKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2xhc3RjaGFuZ2UudHZfbnNlYykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9vYnl0ZXMpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfaWJ5dGVzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2FkZHJsaXN0KQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2FkZHJoZWFkLnRxaF9maXJzdCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgotXSx1ZHBzdGF0LHVkcHNfZGlzY2FyZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgotXSx1ZHBzdGF0LHVkcHNfbm9wb3J0KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5oPgotI2VuZGlmCi1dLHVkcHN0YXQsdWRwc19ub3BvcnRiY2FzdCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgotXSx1ZHBzdGF0LHVkcHNfZnVsbHNvY2spCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpZmRlZiBIQVZFX1NZU19USU1FX0gKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSNlbmRpZgotXSxhcnBoZCxhdF9uZXh0KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19DT05GX0gKLSNpbmNsdWRlIDxzeXMvY29uZi5oPgotI2VuZGlmCi1dLHN3ZGV2dCxzd19uYmxrc2VuYWJsZWQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFURlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRWRlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jZW5kaWYKLV0sc3RhdHZmcyxtbnRfZGlyKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFUVkZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2VuZGlmCi1dLHN0YXR2ZnMsZl9mcnNpemUpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFURlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRWRlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+Ci0jZW5kaWYKLV0sc3RhdGZzLGZfZnJzaXplKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFUVkZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2VuZGlmCi1dLHN0YXR2ZnMsZl9maWxlcykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAotI2luY2x1ZGUgPHN5cy9tb3VudC5oPgotI2VuZGlmCi1dLHN0YXRmcyxmX2ZpbGVzKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICi0jaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0jZW5kaWYKLV0sc3RhdGZzLGZfZmZyZWUpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFURlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX01PVU5UX0gKLSNpbmNsdWRlIDxzeXMvbW91bnQuaD4KLSNlbmRpZgotXSxzdGF0ZnMsZl9mYXZhaWwpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmIEhBVkVfTkxJU1RfSAotI2luY2x1ZGUgPG5saXN0Lmg+Ci0jZW5kaWYKLV0sbmxpc3Qsbl92YWx1ZSkKLQotIyBzdHJ1Y3Qgbmxpc3Q2NCAoSVJJWCkKLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmIEhBVkVfU1lTX1RZUEVTX0gKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkxJU1RfSAotI2luY2x1ZGUgPG5saXN0Lmg+Ci0jZW5kaWYKLV0sbmxpc3Q2NCwgbl92YWx1ZSkKLQotIyBzdHJ1Y3QgZXRodG9vbF9jbWQKLUFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBldGh0b29sX2NtZC5zcGVlZF9oaV0sLCxbCi0gICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCi0gICAgWwotI2lmZGVmIEhBVkVfTElOVVhfRVRIVE9PTF9ICi0jaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgotI2VuZGlmCi0gICAgXV0pCi0KLSMgY2hlY2sgc3RydWN0IGlwc3RhdCBmb3IgdmFyaW91cyB0aGluZ3MKLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfY2FudGZvcndhcmQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfY2FudGZyYWcpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfZGVsaXZlcmVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2ZyYWdkcm9wcGVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2ZyYWd0aW1lb3V0KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2ZyYWdtZW50ZWQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfbG9jYWxvdXQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfbm9wcm90bykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19ub3JvdXRlKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX29kcm9wcGVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX29mcmFnbWVudHMpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfcmVhc3NlbWJsZWQpCi0KLSMgY2hlY2sgZm9yIHRoZSBkZXNfa3Nfc3RydWN0LndlYWtfa2V5IGF0dHJpYnV0ZSwgd2hpY2ggaW5kaWNhdGVzIHRoZSAKLSMgb2xkZXIgb3BlbnNzbCB2ZXJzaW9uIGlzIGJlaW5nIHVzZWQuCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2Rlc19oIiA9ICJ4eWVzIiA7IHRoZW4KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+Ci1dLCBkZXNfa3Nfc3RydWN0LCB3ZWFrX2tleSkKLWZpCi0KLSMgYXR0ZW1wdCB0byBmaWd1cmUgb3V0IGlmIHN5c2N0bCBpcyB1c2FibGUKLQotaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0geWVzOyB0aGVuCi0gIEFDX01TR19XQVJOKFtDYW4ndCBjaGVjayBzeXNjdGwsIG1hbnVhbGx5IGRlZmluZSBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMIGlmIHBsYXRmb3JtIHN1cHBvcnQgYXZhaWxhYmxlXSkKLWVsc2UKLSAgQUNfQ0FDSEVfQ0hFQ0soaWYgc3lzY3RsIGNhbiByZWFkIGtlcm5lbCBpbmZvcm1hdGlvbixhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMLAotICBbQUNfVFJZX1JVTihbCi0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGluY2x1ZGUgPHRpbWUuaD4KLSNlbHNlCi0jIGlmIEhBVkVfU1lTX1RJTUVfSAotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8dGltZS5oPgotIyBlbmRpZgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfUEFSQU1fSAotIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfU1lTX1NZU0NUTF9ICi0jIGluY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSNlbmRpZgotCi1tYWluKCkgewotICBpbnQgICAgICAgICAgICAgICAgIG1pYlsyXTsKLSAgc2l6ZV90ICAgICAgICAgICAgICBsZW47Ci0gIHN0cnVjdCB0aW1ldmFsIGJvb3R0aW1lOwotICAKLSAgbWliWzBdID0gQ1RMX0tFUk47Ci0gIG1pYlsxXSA9IEtFUk5fQk9PVFRJTUU7Ci0gIAotICBsZW4gPSBzaXplb2YoYm9vdHRpbWUpOwotICBzeXNjdGwobWliLCAyLCAmYm9vdHRpbWUsICZsZW4sIE5VTEwsIE5VTEwpOwotICBpZiAoYm9vdHRpbWUudHZfc2VjICE9IDApCi0gICAgZXhpdCgwKTsKLSAgZWxzZQotICAgIGV4aXQoMSk7Ci19Ci0gIF0sIGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEw9eWVzLCBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPW5vLCBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPW5vKV0pCi1maQotCi1pZiB0ZXN0ICJ4JGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEwiID0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKQotZmkKLQotIwotIyBJbiBGcmVlQlNEIDQueCwgdGhlIFRDUCB0aW1lciBjb25zdGFudHMgYXJlbid0LiAgVGhleSBhcmUgZGVmaW5lZAotIyBpbiB0ZXJtcyBvZiAnaHonLCB0aGUga2VybmVsIGNsb2NrIHRpY2suICBJbiB0aGlzIGNhc2UsCi0jIHdlIG5lZWQgdG8gaGF2ZSBhIGxvY2FsIHZhcmlhYmxlICdoeicgaW4gc2NvcGUgYW5kIHNldCB0byBhIHVzZWZ1bAotIyB2YWx1ZSB3aGVuZXZlciB3ZSB1c2Ugb25lIG9mIHRoZXNlIGNvbnN0YW50cy4KLSMKLUFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgVENQIHRpbWVycyBkZXBlbmQgb24gJ2h6JyxhY19jdl9UQ1BUVl9ORUVEU19IWiwKLVtBQ19FR1JFUF9DUFAoaHosCi1bI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+Ci1UQ1BUVl9TUlRUREZMVAotXSwgYWNfY3ZfVENQVFZfTkVFRFNfSFo9eWVzLCBhY19jdl9UQ1BUVl9ORUVEU19IWj1ubyldKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X1RDUFRWX05FRURTX0haIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoVENQVFZfTkVFRFNfSFopCi1maQotCi0jCi0jIGRlZmluZSB0aGUgYWdlbnQgbGlicmFyaWVzIHZhcmlhYmxlcwotIwotQUNfU1VCU1QoTE1JQkxJQlMpCi1BQ19TVUJTVChBR0VOVExJQlMpCi1BQ19TVUJTVChPVEhFUkFHRU5UTElCT0JKUykKLUFDX1NVQlNUKE9USEVSQUdFTlRMSUJMT0JKUykKLQotIwotIyBQcm9tcHQgZm9yIHZhcmlvdXMgYml0cyBvZiB1c2VyIGluZm9ybWF0aW9uCi0jCi0KLWlmIHRlc3QgIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19MT0MiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0NPTlRBQ1QiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iID0gIngiOyB0aGVuCi1BQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRvIHByb21wdCBmb3IgdmFsdWVzLCBhY19jdl9oYXZlX3dhcm5lZCwKLVsKLWlmIHRlc3QgIngkZGVmYXVsdHMiID0gInhubyI7IHRoZW4KLWNhdCA8PCBFT0YKLQotCSAqKioqKioqKioqKioqKiBDb25maWd1cmF0aW9uIFNlY3Rpb24gKioqKioqKioqKioqKioKLQotCVlvdSBhcmUgYWJvdXQgdG8gYmUgcHJvbXB0ZWQgd2l0aCBhIHNlcmllcyBvZiBxdWVzdGlvbnMuICBBbnN3ZXIKLXRoZW0gY2FyZWZ1bGx5LCBhcyB0aGV5IGRldGVybWluZSBob3cgdGhlIFNOTVAgYWdlbnQgYW5kIHJlbGF0ZWQKLWFwcGxpY2F0aW9ucyBhcmUgdG8gZnVuY3Rpb24uCi0KLQlBZnRlciB0aGUgY29uZmlndXJlIHNjcmlwdCBmaW5pc2hlcywgeW91IGNhbiBicm93c2UgdGhlIG5ld2x5Ci1jcmVhdGVkIG5ldC1zbm1wLWNvbmZpZy5oIGZpbGUgZm9yIGZ1cnRoZXIgLSBsZXNzIGltcG9ydGFudCAtIHBhcmFtZXRlcnMgdG8KLW1vZGlmeS4gIEJlIGNhcmVmdWwgaWYgeW91IHJlLXJ1biBjb25maWd1cmUgdGhvdWdoLCBzaW5jZSBuZXQtc25tcC1jb25maWcuaCAKLXdpbGwgYmUgb3ZlcndyaXR0ZW4uCi0KLS1QcmVzcyByZXR1cm4gdG8gY29udGludWUtCi1FT0YKLQotcmVhZCB0bXBpbnB1dAotYWNfY3ZfaGF2ZV93YXJuZWQ9InllcyIKLWVsc2UKLSAgYWNfY3ZfaGF2ZV93YXJuZWQ9Im5vIgotZmkKLV0pCi1lbHNlCi0gIGFjX2N2X2hhdmVfd2FybmVkPSJ5ZXMiCi1maQotCi1NRT1gJFdIT0FNSWAKLWlmIHRlc3QgLWYgL2V0Yy9yZXNvbHYuY29uZjsgdGhlbgotICBMT0M9YGNhdCAvZXRjL3Jlc29sdi5jb25mIHwgZ3JlcCAnXmRvbWFpbicgfCB0YWlsIC0xIHwgYXdrICd7cHJpbnQgJE5GfSdgCi1lbHNlCi0gIExPQz0iQG5vLndoZXJlIgotZmkKLQotQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTixbCi0KLSoqKiBEZWZhdWx0IFNOTVAgVmVyc2lvbjoKLQotCVN0YXJ0aW5nIHdpdGggTmV0LVNOTVAgNS4wLCB5b3UgY2FuIGNob29zZSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mCi10aGUgU05NUCBwcm90b2NvbCB0byB1c2Ugd2hlbiBubyB2ZXJzaW9uIGlzIGdpdmVuIGV4cGxpY2l0bHkgb24gdGhlCi1jb21tYW5kIGxpbmUsIG9yIHZpYSBhbiAnc25tcC5jb25mJyBmaWxlLiAgSW4gdGhlIHBhc3QgdGhpcyB3YXMgc2V0IHRvCi1TTk1QdjEsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHRvIHN3aXRjaCB0byBTTk1QdjMgaWYgZGVzaXJlZC4gIFNOTVB2Mwotd2lsbCBwcm92aWRlIGEgbW9yZSBzZWN1cmUgbWFuYWdlbWVudCBlbnZpcm9ubWVudCAoYW5kIHRodXMgeW91J3JlCi1lbmNvdXJhZ2VkIHRvIHN3aXRjaCB0byBTTk1QdjMpLCBidXQgbWF5IGJyZWFrIGV4aXN0aW5nIHNjcmlwdHMgdGhhdAotcmVseSBvbiB0aGUgb2xkIGJlaGF2aW91ci4gIChUaG91Z2ggc3VjaCBzY3JpcHRzIHdpbGwgcHJvYmFibHkgbmVlZCB0bwotYmUgY2hhbmdlZCB0byB1c2UgdGhlICctYycgY29tbXVuaXR5IGZsYWcgYW55d2F5LCBhcyB0aGUgU05NUHYxCi1jb21tYW5kIGxpbmUgdXNhZ2UgaGFzIGNoYW5nZWQgYXMgd2VsbC4pLgotICAgQXQgdGhpcyBwcm9tcHQgeW91IGNhbiBzZWxlY3QgXCIxXCIsIFwiMlwiIChmb3IgU05NUHYyYyksIG9yIFwiM1wiIGFzCi10aGUgZGVmYXVsdCB2ZXJzaW9uIGZvciB0aGUgY29tbWFuZCB0b29scyAoc25tcGdldCwgLi4uKSB0byB1c2UuICBUaGlzCi1jYW4gYWx3YXlzIGJlIG92ZXJyaWRkZW4gYXQgcnVudGltZSB1c2luZyB0aGUgLXYgZmxhZyB0byB0aGUgdG9vbHMsIG9yCi1ieSB1c2luZyB0aGUgXCJkZWZWZXJzaW9uXCIgdG9rZW4gaW4geW91ciBzbm1wLmNvbmYgZmlsZS4KLSAgIFByb3ZpZGluZyB0aGUgLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uPVwieFwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQotd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotRGVmYXVsdCB2ZXJzaW9uIG9mIFNOTVAgdG8gdXNlXSwzLHVucXVvdGVkKQotCi0jIHdlIHRlc3RlZCB0aGlzIGFib3ZlIGJlZm9yZSB0aGUgcHJvbXB0LCBidXQgdGhlIHByb21wdCBtYXkgZ2l2ZSBhIG5ldyB2YWx1ZS4KLWlmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiA9ICIyYyI7IHRoZW4KLSAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTj0iMiIKLWZpCi1pZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjEiIC1hICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjIiIC1hICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjMiOyB0aGVuCi0gIEFDX01TR19FUlJPUihbSWxsZWdhbCB2ZXJzaW9uIG51bWJlci4gIE9ubHkgMSwgMiAoZm9yIFNOTVB2MmMpIGFuZCAzIGFyZSBzdXBwb3J0ZWQuXSkKLWZpCi0KLUFDX1BST01QVF9VU0VSKE5FVFNOTVBfU1lTX0NPTlRBQ1QsWwotCi0qKiogU3lzdGVtIENvbnRhY3QgSW5mb3JtYXRpb246Ci0KLQlEZXNjcmliZXMgd2hvIHNob3VsZCBiZSBjb250YWN0ZWQgYWJvdXQgdGhlIGhvc3QgdGhlIGFnZW50IGlzCi1ydW5uaW5nIG9uLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIE1JQi1JSSB0cmVlLiAgVGhpcwotY2FuIGFsc28gYmUgb3Zlci1yaWRkZW4gdXNpbmcgdGhlIFwic3lzY29udGFjdFwiIHN5bnRheCBpbiB0aGUgYWdlbnQncwotY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtc3lzLWNvbnRhY3Q9XCJjb250YWN0XCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCi13aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgotCi1TeXN0ZW0gQ29udGFjdCBJbmZvcm1hdGlvbl0sJE1FQCRMT0MscXVvdGVkKQotCi1BQ19QUk9NUFRfVVNFUihORVRTTk1QX1NZU19MT0MsWwotCi0qKiogU3lzdGVtIExvY2F0aW9uOgotCi0JRGVzY3JpYmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3lzdGVtLiAgVGhpcyBpbmZvcm1hdGlvbiBpcwotYXZhaWxhYmxlIGluIHRoZSBNSUItSUkgdHJlZS4gIHRoaXMgY2FuIGFsc28gYmUgb3Zlci1yaWRkZW4gdXNpbmcgdGhlCi1cInN5c2xvY2F0aW9uXCIgc3ludGF4IGluIHRoZSBhZ2VudCdzIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLXN5cy1sb2NhdGlvbj1cImxvY2F0aW9uXCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCi13aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgotCi1TeXN0ZW0gTG9jYXRpb25dLFVua25vd24scXVvdGVkKQotCi1pZiB0ZXN0IC1kIC92YXIvbG9nOyB0aGVuCi0gIGRlZmF1bHRsb2c9Ii92YXIvbG9nL3NubXBkLmxvZyIKLWVsc2UKLSAgZGVmYXVsdGxvZz0iL3Vzci9hZG0vc25tcGQubG9nIgotZmkKLSAgCi1BQ19QUk9NUFRfVVNFUihORVRTTk1QX0xPR0ZJTEUsWwotCi0qKiogTG9nZmlsZSBsb2NhdGlvbjoKLQotCUVudGVyIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB0aGUgc25tcGQgYWdlbnQgdG8gZHVtcAotaW5mb3JtYXRpb24gJiBlcnJvcnMgdG8uICBJZiBub3QgZGVmaW5lZCAoZW50ZXIgdGhlIGtleXdvcmQgXCJub25lXCIKLWF0IHRoZSBwcm9tcHQgYmVsb3cpIHRoZSBhZ2VudCB3aWxsIHVzZSBzdGRvdXQgYW5kIHN0ZGVyciBpbnN0ZWFkLgotKE5vdGU6IFRoaXMgdmFsdWUgY2FuIGJlIG92ZXItcmlkZGVuIHVzaW5nIGNvbW1hbmQgbGluZSBvcHRpb25zLikKLSAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtbG9nZmlsZT1cInBhdGhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKLXdpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCi0KLUxvY2F0aW9uIHRvIHdyaXRlIGxvZ2ZpbGVdLCRkZWZhdWx0bG9nLHF1b3RlZCkKLQotaWYgdGVzdCAtZCAvdmFyOyB0aGVuCi0gIGRlZmF1bHRzdG9yZT0iL3Zhci9uZXQtc25tcCIKLSAgdWNkZGVmYXVsdHN0b3JlPSIvdmFyL3VjZC1zbm1wIgotZWxzZQotICBkZWZhdWx0c3RvcmU9Ii9ldGMvbmV0LXNubXAiCi0gIHVjZGRlZmF1bHRzdG9yZT0iL2V0Yy91Y2Qtc25tcCIKLWZpCi0gIAotQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9QRVJTSVNURU5UX0RJUkVDVE9SWSxbCi0KLSoqKiBzbm1wZCBwZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb246Ci0KLQlFbnRlciBhIGRpcmVjdG9yeSBmb3IgdGhlIFNOTVAgbGlicmFyeSB0byBzdG9yZSBwZXJzaXN0ZW50Ci1kYXRhIGluIHRoZSBmb3JtIG9mIGEgY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBkZWZhdWx0IGxvY2F0aW9uIGlzCi1kaWZmZXJlbnQgdGhhbiB0aGUgb2xkIGRlZmF1bHQgbG9jYXRpb24gKHdoaWNoIHdhcyBmb3IgdWNkLXNubXApLiAgSWYKLXlvdSBzdGF5IHdpdGggdGhlIG5ldyBwYXRoLCBJJ2xsIGFzayB5b3UgaW4gYSBzZWNvbmQgaWYgeW91IHdpc2ggdG8KLWNvcHkgeW91ciBmaWxlcyBvdmVyIHRvIHRoZSBuZXcgbG9jYXRpb24gKG9uY2Ugb25seSkuICBJZiB5b3UgcGljawotc29tZSBvdGhlciBwYXRoIHRoYW4gdGhlIGRlZmF1bHQsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlbSB5b3Vyc2VsZi4KLVRoZXJlIGlzIG5vdGhpbmcgd3Jvbmcgd2l0aCBwaWNraW5nIHRoZSBvbGQgcGF0aCAoJHVjZGRlZmF1bHRzdG9yZSkgaWYKLXlvdSdkIHJhdGhlci4KLSAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9XCJwYXRoXCIgcGFyYW1ldGVyIHRvCi0uL2NvbmZpZ3VyZSB3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgotCi1Mb2NhdGlvbiB0byB3cml0ZSBwZXJzaXN0ZW50IGluZm9ybWF0aW9uXSwkZGVmYXVsdHN0b3JlLHF1b3RlZCkKLQotUEVSU0lTVEVOVF9ESVJFQ1RPUlk9JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlkKLUFDX1NVQlNUKFBFUlNJU1RFTlRfRElSRUNUT1JZKQotVUNEUEVSU0lTVEVOVF9ESVJFQ1RPUlk9JHVjZGRlZmF1bHRzdG9yZQotQUNfU1VCU1QoVUNEUEVSU0lTVEVOVF9ESVJFQ1RPUlkpCi0KLWlmIHRlc3QgJFBFUlNJU1RFTlRfRElSRUNUT1JZID0gIiRkZWZhdWx0c3RvcmUiIC1hIC1kICIkdWNkZGVmYXVsdHN0b3JlIiAtYSAhIC1kICIkZGVmYXVsdHN0b3JlIiA7IHRoZW4KLUFDX0NBQ0hFX0NIRUNLKElmIHdlIHNob3VsZCBjb3B5IHRoZSBvbGQgcGVyc2lzdGVudCBkaXJlY3RvcnksIGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUywKLVsKLUFDX1BST01QVF9VU0VSX05PX0RFRklORShhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMsWwotCi0qKiogQ29weWluZyBvbGQgdWNkLXNubXAgcGVyc2lzdGVudCBmaWxlcyB0byBuZXQtc25tcCBwZXJzaXN0ZW50IGRpcmVjdG9yeToKLQotCVdvdWxkIHlvdSBsaWtlIHRvIGNvcHkgdGhlIG9sZGVyIHVjZC1zbm1wIHBlcnNpc3RlbnQgZmlsZXMKLWludG8geW91ciBuZXcgbmV0LXNubXAgcGVyc2lzdGVudCBmaWxlIHBhdGg/ICBUaGlzIHdpbGwgZnVuY3Rpb25hbGx5Ci1zYXZlIGFsbCB5b3VyIHVjZC1zbm1wIGRhdGEgYW5kIGxldCBpdCBiZSB1c2VkIHdpdGhpbiB0aGUgbmV0LXNubXAKLXRvb2xzLiAgVGhpcyB3aWxsIG9ubHkgYmUgZG9uZSBvbmNlIHdoZW4geW91IHJ1biBtYWtlIGluc3RhbGwuICBJZiB5b3UKLXdpc2ggdG8gZG8gdGhpcywgZW50ZXIgInllcyIgYXQgdGhlIHByb21wdC4KLSAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtY29weS1wZXJzaXN0ZW50LWZpbGVzPVwibm9cIiAob3IgXCJ5ZXNcIikKLXBhcmFtZXRlcnMgdG8gLi9jb25maWd1cmUgd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotQ29weSB1Y2Qtc25tcCBkYXRhIGludG8gdGhlIG5ldC1zbm1wIGRhdGEgZGlyZWN0b3J5XSwieWVzIikKLV0pCi1lbHNlCi1hY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVM9Im5vIgotZmkKLUNPUFlfUEVSU0lTVEVOVF9GSUxFUz0iJGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUyIKLUFDX1NVQlNUKENPUFlfUEVSU0lTVEVOVF9GSUxFUykKLQotQUNfU1VCU1QoRExMSUJTKQotCi1BQ19DT05GSUdfRklMRVMoW01ha2VmaWxlOk1ha2VmaWxlLnRvcDpNYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCi1BQ19DT05GSUdfRklMRVMoW3NubXBsaWIvTWFrZWZpbGU6TWFrZWZpbGUudG9wOnNubXBsaWIvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6c25tcGxpYi9NYWtlZmlsZS5kZXBlbmRdKQotQUNfQ09ORklHX0ZJTEVTKFthcHBzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphcHBzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFwcHMvTWFrZWZpbGUuZGVwZW5kXSkKLUFDX0NPTkZJR19GSUxFUyhbYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZF0pCi1BQ19DT05GSUdfRklMRVMoW2FnZW50L01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9NYWtlZmlsZS5kZXBlbmRdKQotQUNfQ09ORklHX0ZJTEVTKFthZ2VudC9oZWxwZXJzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kXSkKLUFDX0NPTkZJR19GSUxFUyhbYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZF0pCi1BQ19DT05GSUdfRklMRVMoW2xvY2FsL01ha2VmaWxlOk1ha2VmaWxlLnRvcDpsb2NhbC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCi1BQ19DT05GSUdfRklMRVMoW3Rlc3RpbmcvTWFrZWZpbGU6TWFrZWZpbGUudG9wOnRlc3RpbmcvTWFrZWZpbGUuaW5dKQotQUNfQ09ORklHX0ZJTEVTKFttYW4vTWFrZWZpbGU6TWFrZWZpbGUudG9wOm1hbi9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCi1BQ19DT05GSUdfRklMRVMoW21pYnMvTWFrZWZpbGU6TWFrZWZpbGUudG9wOm1pYnMvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFtuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluXSwKLQkJW2NobW9kICt4IG5ldC1zbm1wLWNvbmZpZ10pCi0KLUFDX0NPTkZJR19DT01NQU5EUyhbZGVmYXVsdF0sIGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaCkKLQotIwotIyBwcm90ZWN0IFBBQ0tBR0VfKiB2YXJpYWJsZXMKLSMKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX0JVR1JFUE9SVF0sWy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLwotI2lmbmRlZiBQQUNLQUdFX0JVR1JFUE9SVAotI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCi0jZW5kaWZdKQotQUhfVkVSQkFUSU0oW1BBQ0tBR0VfTkFNRV0sWy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNpZm5kZWYgUEFDS0FHRV9OQU1FCi0jdW5kZWYgUEFDS0FHRV9OQU1FCi0jZW5kaWZdKQotQUhfVkVSQkFUSU0oW1BBQ0tBR0VfU1RSSU5HXSxbLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI2lmbmRlZiBQQUNLQUdFX1NUUklORwotI3VuZGVmIFBBQ0tBR0VfU1RSSU5HCi0jZW5kaWZdKQotQUhfVkVSQkFUSU0oW1BBQ0tBR0VfVEFSTkFNRV0sWy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNpZm5kZWYgUEFDS0FHRV9UQVJOQU1FCi0jdW5kZWYgUEFDS0FHRV9UQVJOQU1FCi0jZW5kaWZdKQotQUhfVkVSQkFUSU0oW1BBQ0tBR0VfVkVSU0lPTl0sWy8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0jaWZuZGVmIFBBQ0tBR0VfVkVSU0lPTgotI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgotI2VuZGlmXSkKLQotQUNfT1VUUFVUCi0KLUFDX01TR19DQUNIRV9ESVNQTEFZKCkKLSMgTG9jYWwgVmFyaWFibGVzOgotIyBtb2RlOiBBdXRvY29uZgotIyBjb21tZW50LXN0YXJ0OiAiIyIKLSMgRW5kOgpkaWZmIC0tZ2l0IGEvZGlzdC9NYWtlZmlsZSBiL2Rpc3QvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjOGY4NAotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvTWFrZWZpbGUKQEAgLTAsMCArMSwxMzMgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAkU291cmNlJAorIyAkUmV2aXNpb24kCisjICREYXRlJAorIyAkQXV0aG9yJAorIyAkTmFtZSQKKyMgJFN0YXRlJAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgTWFrZWZpbGUgZm9yIGdlbmVyYXRpbmcgcnBtIHBhY2thZ2UgZmlsZXMgKC5ycG0pIGZvciBuZXQtc25tcC4KKworIyBHTlUgJ21ha2UnLXNwZWNpZmljIGZlYXR1cmVzIGFyZSB1c2VkIGluIHRoaXMgbWFrZWZpbGUuCisjIE90aGVyIG1ha2VzIG1heSBvciBtYXkgbm90IHdvcmsgd2l0aCBpdC4KKyMgU2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9tYW51YWwvbWFrZS9pbmRleC5odG1sIGZvciBkZXRhaWxzLgorCitTSEVMTCA9IC9iaW4vc2gKKworIyBEZWZpbmUgdGhlIFJQTSBwYWNrYWdlIG5hbWUKK05BTUUgPSBuZXQtc25tcAorCisjIERlZmluZSB0aGUgZGVmYXVsdCBSUE0gcmVsZWFzZSBudW1iZXIuIFNldCBieSBWZXJzaW9uLU11bmdlLnBsCitWRVJTSU9OID0gNS41LjIKKworVkVSU0lPTl9UQUc9YGVjaG8gRXh0LSQoVkVSU0lPTikgfCBzZWQgJ3MvXC4vLS9nOydgCisKK1dJVEhfUEVSTD0xCitFTUJFRF9QRVJMPTEKKworIyBEZWZpbmUgdGhlIFJQTSBhcmNoaXRlY3R1cmUsIGkuZS4sICdwcGMnLCAnaTM4NicsIGV0Yy4KK0FSQ0ggPSBgdW5hbWUgLWlgCisKKyMgRGlyZWN0b3J5IHN0cnVjdHVyZSBleHBlY3RlZCBieSAncnBtJyBwcm9ncmFtCitSUE1fQkFTRSA6PSAkKFBXRCkvcnBtCisKK1JQTV9UUkVFIDo9IFwKKyAgICAkKFJQTV9CQVNFKS9CVUlMRCBcCisgICAgJChSUE1fQkFTRSkvUlBNUyBcCisgICAgJChSUE1fQkFTRSkvU09VUkNFUyBcCisgICAgJChSUE1fQkFTRSkvU1BFQ1MgXAorICAgICQoUlBNX0JBU0UpL1NSUE1TCisKKy5QSE9OWToJYWxsIGNsZWFuIHJwbV9maWxlcyBiaW5hcnlfcnBtIHNvdXJjZV9ycG0gYWxsX3JwbQorCithbGw6CWFsbF9ycG1fZmlsZXMKKworIyBEZWxldGUgYWxsIGdlbmVyYXRlZCBmaWxlcy4KK2NsZWFuOgorCXJtIC1yZiAkKFJQTV9CQVNFKQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1hY3JvcyBhbmQgcnVsZXMgZm9yIHVwZGF0aW5nIG5ldC1zbm1wLXgueC54LnRhci5nei4KKyMgJ3JwbScgZXhwZWN0cyBhIGNvbXByZXNzZWQgYXJjaGl2ZSAoLnRhci5neikgb2YgdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyMgdG8gZXhpc3QgKGluIHRoZSBycG0vU09VUkNFUyBkaXJlY3RvcnkpIGJlZm9yZSBpdCBpcyBydW4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDVlNST09UID0gOnBzZXJ2ZXI6YW5vbnltb3VzQG5ldC1zbm1wLmN2cy5zb3VyY2Vmb3JnZS5uZXQ6L2N2c3Jvb3QvbmV0LXNubXAKKworUEtHX1ZFUiA6PSAkKE5BTUUpLSQoVkVSU0lPTikKKworR1pJUF9UQVIgOj0gJChSUE1fQkFTRSkvU09VUkNFUy8kKFBLR19WRVIpLnRhci5negorCitnemlwX3RhcjoJJChHWklQX1RBUikKKworJChHWklQX1RBUik6CisJQGVjaG8gIkNyZWF0aW5nIGEgY29tcHJlc3NlZCBhcmNoaXZlIG9mIHRoZSBwYWNrYWdlJ3Mgc291cmNlIGZpbGVzLi4uIgorCShjZCAkKFJQTV9CQVNFKS9TT1VSQ0VTOyBcCisJY3ZzIC1kJChDVlNST09UKSBsb2dpbjsgXAorCWN2cyAtejMgLWQkKENWU1JPT1QpIGV4cG9ydCAtciQoVkVSU0lPTl9UQUcpICQoTkFNRSk7IFwKKwltdiAkKE5BTUUpICQoUEtHX1ZFUik7IFwKKwl0YXIgY2YgJChQS0dfVkVSKS50YXIgJChQS0dfVkVSKTsgXAorCWd6aXAgJChQS0dfVkVSKS50YXIpCisJQGVjaG8gIkEgY29tcHJlc3NlZCBhcmNoaXZlIG9mIHRoZSBwYWNrYWdlJ3Mgc291cmNlLWZpbGUgdHJlZSBoYXMgYmVlbiBjcmVhdGVkLiIKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNYWNyb3MgYW5kIHJ1bGVzIGZvciB1cGRhdGluZyB0aGUgYmluYXJ5IGFuZCBzb3VyY2UgUlBNIHBhY2thZ2UgZmlsZXMuCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZGVmaW5lICclX3RvcGRpcicgdG8gYWxsb3cgYW4gUlBNIHBhY2thZ2UgZmlsZSB0byBiZSBidWlsdCBhbnl3aGVyZSwKKyMgaW5zdGVhZCBvZiBpbiB0aGUgL3Vzci9zcmMvcmVkaGF0IGRpcmVjdG9yeSB0cmVlLgorIworIyBEb24ndCB3YW50ICdycG1idWlsZCcgdG8gc3RyaXAgeW91ciBleGVjdXRhYmxlIHByb2dyYW1zPworIyBUaGVuIGFkZCB0aGlzIGxpbmU6CisjICAgLS1kZWZpbmU9J19vc19pbnN0YWxsX3Bvc3QgL3Vzci9saWIvcnBtL2JycC1jb21wcmVzcycgXAorIyB0byB0aGUgUlBNX09QVFMgbWFjcm8gZGVmaW5pdGlvbi4gIFRoaXMgd2lsbCBlbGltaW5hdGUgdGhlIAorIyBzdHJpcHBpbmcgb2YgYmluYXJpZXMsIGJ1dCBzdGlsbCByZXRhaW4gdGhlIGNvbXByZXNzaW9uIG9mCisjIG1hbnVhbCBwYWdlcy4KKyMKK2lmZXEgKCQoV0lUSF9QRVJMKSwwKQorUEVSTE9QVFMgPSAtLXdpdGhvdXQgcGVybF9tb2R1bGVzCitlbmRpZgoraWZlcSAoJChFTUJFRF9QRVJMKSwwKQorUEVSTE9QVFMgKz0gLS13aXRob3V0IGVtYmVkZGVkX3BlcmwKK2VuZGlmCisKK1JQTV9PUFRTIDo9IFwKKyAgICAtLWRlZmluZT0nX3RvcGRpciAkKFJQTV9CQVNFKScgXAorICAgIC0tZGVmaW5lPSdfaW5jbHVkZWRpciAvdXNyL2luY2x1ZGUvbmV0LXNubXAnIFwKKyAgICAtLXRhcmdldCAkKEFSQ0gpICQoUEVSTE9QVFMpCisKK1NQRUNfRklMRSAgOj0gJChOQU1FKS5zcGVjCitSUE1fU1BFQyAgIDo9ICQoUlBNX0JBU0UpL1NQRUNTLyQoU1BFQ19GSUxFKQorCitCSU5BUllfUlBNIDo9ICQoUlBNX0JBU0UpL1JQTVMvJChBUkNIKS8kKFBLR19WRVIpLSQoUkVMRUFTRSkuJChBUkNIKS5ycG0KK1NPVVJDRV9SUE0gOj0gJChSUE1fQkFTRSkvU1JQTVMvJChQS0dfVkVSKS0kKFJFTEVBU0UpLnNyYy5ycG0KKworcnBtX2ZpbGVzOgkkKEdaSVBfVEFSKSBhbGxfcnBtX2ZpbGVzCitiaW5hcnlfcnBtOgkkKEJJTkFSWV9SUE0pCitzb3VyY2VfcnBtOgkkKFNPVVJDRV9SUE0pCitycG1fdHJlZTogJChSUE1fVFJFRSkKKworYWxsX3JwbV9maWxlczoJJChSUE1fVFJFRSkgJChSUE1fU1BFQykKKwkoY2QgJChSUE1fQkFTRSkvU1BFQ1M7IFwKKwlycG1idWlsZCAtYmEgJChSUE1fT1BUUykgJChTUEVDX0ZJTEUpKQorCiskKEJJTkFSWV9SUE0pOgkkKFJQTV9UUkVFKSAkKFJQTV9TUEVDKQorCShjZCAkKFJQTV9CQVNFKS9TUEVDUzsgXAorCXJwbWJ1aWxkIC1iYiAkKFJQTV9PUFRTKSAkKFNQRUNfRklMRSkpCisKKyQoU09VUkNFX1JQTSk6CSQoUlBNX1RSRUUpICQoUlBNX1NQRUMpCisJKGNkICQoUlBNX0JBU0UpL1NQRUNTOyBcCisJcnBtYnVpbGQgLWJzICQoUlBNX09QVFMpICQoU1BFQ19GSUxFKSkKKworJChSUE1fU1BFQyk6CSQoUlBNX0JBU0UpL1NQRUNTICQoU1BFQ19GSUxFKQorCWNwICQoU1BFQ19GSUxFKSAkQAorCiskKFJQTV9UUkVFKToKKwlta2RpciAtcCAkQAorCiskKFNQRUNfRklMRSk6CisJQGVjaG8gIkVSUk9SOiBtaXNzaW5nICckKFNQRUNfRklMRSknIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSIKKwlAZXhpdCAxCisKK0ZPUkNFOgorCisjID09PSBFbmQgb2YgTWFrZWZpbGUgPT09ICMKZGlmZiAtLWdpdCBhL2Rpc3QvUkVBRE1FLmJ1aWxkLXNjcmlwdHMgYi9kaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDZkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzCkBAIC0wLDAgKzEsMTA4IEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogUkVBRE1FLmJ1aWxkLXNjcmlwdHMKKyoKKyogQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisqCisqICRJZCQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKK1RoZSBhdXRvbWF0ZWQgYnVpbGQgc2NyaXB0IHdpbGwgYXV0b21hdGljYWxseSBydW4gY29uZmlndXJlLCAnbWFrZSBhbGwnLAorJ21ha2UgdGVzdCcgYW5kICdtYWtlIGluc3RhbGwnLiBMb2cgZmlsZXMgYXJlIGtlcHQgZm9yIGVhY2ggc3RlcCwgYW5kIHRoZQorc2NyaXB0cyBzaG91bGQgYWJvcnQgd2hlbiBlcnJvcnMgb2NjdXIuCisKK1RoZSB1c2FnZSBvZiBuc2ItcGFja2FnZSBpczoKKworIFVzYWdlOiBuc2ItcGFja2FnZSBbLWNdIFstZF0gWy1wXSBbLXMgU1JDRF0gWy1iIEJVSUxERF0gWy1pIElOU1RBTExEXSBWRVJTSU9OCisgIAorICAgIFZFUlNJT04gICAgOiByZWxlYXNlIG51bWJlciAoZWcgNS4yLjIpCisgICAgLXMgU1JDRElSICA6IHNvdXJlIGRpcmVjdG9yeSBbJEhPTUUvc3JjL25ldC1zbm1wLVZFUlNJT05dCisgICAgLWIgQlVJTEREICA6IGJ1aWxkIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXQorICAgICAgICAgICAgICAgICBOT1RFLXBsYXRmb3JtIHdpbGwgYmUgYXBwZW5kZWQgdG8gYnVpbGQgZGlyZWN0b3J5CisgICAgLWkgSU5TVEFMTEQ6IGluc3RhbGwgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9cJFBMQVRGT1JNL3Vzci9sb2NhbF0KKyAgIAorICAgIC1jIDogc2tpcCBjb25maWd1cmUKKyAgICAtZCA6IGRpcnR5IGJ1aWxkIChkb24ndCBtYWtlIGRpc3RjbGVhbikKKyAgICAtbSA6IHNraXAgJ21ha2UgYWxsJworICAgIC1wIDogZG9uJ3QgcGF1c2UgYXQgcHJvbXB0cyBpbiBiZXR3ZWVuIHN0YWdlcworICAgIC10IDogc2tpcCAnbWFrZSB0ZXN0JworCisKK1RoZSBkZWZhdWx0cyBhc3N1bWUgeW91IGhhdmUgYSAnc3JjJywgJ2J1aWxkJyBhbmQgJ2JpbmFyaWVzJyBkaXJlY3RvcnkgaW4KK3lvdXIgaG9tZSBkaXJlY3RvcnkuCisKKworCitSZWNvbW1lbmRlZCBQcm9jZWR1cmUKKz09PT09PT09PT09PT09PT09PT09PQorCisxKSBMb2cgaW50byBTb3VyY2Vmb3JnZSBDb21waWxlIEZhcm0gU2VydmVyCisKKzIpIFVwZGF0ZSBzb3VyY2UgKHRoaXMgd2lsbCBsaWtlbHkgYmUgYXV0b21hdGVkIGluIHRoZSBmdXR1cmUpCisKKyAgIEZvciBleGFtcGxlLCBmb3IgcmVsZWFzZSA1LjAuMzoKKworICAgJCBjZCB+L3NyYworICAgJCBDVlNfUlNIPXNzaCBjdnMgLWQgJFVTRVJAY3ZzLm5ldC1zbm1wLm9yZzovY3Zzcm9vdC9uZXQtc25tcCBcCisgICAgICAgICAtcSBjbyAtciBFeHQtNS0wLTMgLWQgfi9zcmMvbmV0LXNubXAtRXh0LTUtMC0zIG5ldC1zbm1wCisKKzMpIFJ1biB0aGUgcGFja2FnZSBzY3JpcHQuIAorCisgICAkICRIT01FL3NyYy9uZXQtc25tcC1jdnMvZGlzdC9uc2ItcGFja2FnZSAtciBcCisgICAgICAgIC1zICRIT01FL3NyYy9uZXQtc25tcC01LjAuNSA1LjAuNQorCis0KSBDcmVhdGUgdGFyYmFsbCAoYXNzdW1pbmcgbm8gZXJyb3JzOyBzZWUgbmV4dCBzZWN0aW9uIGlmIHRoZXJlIGFyZSBlcnJvcnMpCisKKyAgICQgY2Qgfi9idWlsZC9gbnNiLXBsYXRmb3JtYAorICAgJCB0YXIgY3ZmIG5ldC1zbm1wLTUuMC4zLWBuc2ItcGxhdGZvcm1gLnRhciB1c3IKKyAgICQgZ3ppcCAtLWJlc3QgKi50YXIKKworNSkgQ29weSB0YXJiYWxsIHRvIFNvdXJjZWZvcmdlIHNoZWxsIHNldmVyCisKKyAgICQgc2NwICouZ3ogbmV0LXNubXAuc291cmNlZm9yZ2UubmV0On4vYmluYXJpZXMvCisKKzYpIExvZyBvdXQgb2YgY29tcGlsZSBmYXJtIHNlcnZlciwgbG9nIGludG8gc2hlbGwgc2VydmVyCisKKzcpIFVwbG9hZCB0byBTb3VyY2Vmb3JnZQorCisgICAkIGZ0cCB1cGxvYWQuc291cmNlZm9yZ2UubmV0CisgICAgID5iaW4KKyAgICAgPnB1dCAqLmd6CisKKzgpIFVwZGF0ZSBiaW5hcmllcyB2aWEgU291cmNlZm9yZ2UgYWRtaW4gcGFnZQorCisKKworQnVpbGRzIHdpdGggZXJyb3JzCis9PT09PT09PT09PT09PT09PT0KKworU2hvdWxkIHlvdSBlbmNvdW50ZXIgYSBidWlsZCBlcnJvciwgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byBza2lwIHRoZQorJ21ha2UgZGlzdGNsZWFuJyBhbmQgY29uZmlndXJlIHN0ZXAgKGFzc3VtaW5nIHRoZSBwcm9ibGVtIHdhc24ndCB3aXRoCitjb25maWd1cmUhKS4gVG8gZG8gdGhpcywgc3BlY2lmeSB0aGUgJ2RpcnR5JyBhbmQgJ3NraXAgY29uZmlndXJlJyBvcHRpb25zOgorCisgICAkIG5zYi1wYWNrYWdlIC1wIC1kIC1jIEV4dC01LTAtMworCisKK1Nob3VsZCB0aGUgYnVpbGQgc3VjY2VlZCwgYnV0IHNvbWUgdGVzdHMgZmFpbCBkdXJpbmcgJ21ha2UgdGVzdCcsIHlvdSBwcm9iYWJseQorY2FuIHRvIHNraXAgdGhlIHRlc3Qgc3RlcCB0byBnZXQgdG8gdGhlIGluc3RhbGwgc3RlcDoKKworICAgJCBuc2ItcGFja2FnZSAtcCAtZCAtYyAtdCBFeHQtNS0wLTMKKworCitPVEhFUiBQUk9CTEVNUworLS0tLS0tLS0tLS0tLS0KKyogIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMiCisgIAorICAgSXQncyBhIGhhY2ssIGJ1dCBzeW1saW5rIG5zYi1mdW5jdGlvbnMgYW5kIG5zYi1wYWNrYWdlIHRvIHlvdXIgbG9jYWwKKyAgIGJpbiBkaXJlY3RvcnkgKCRIT01FL2JpbikuICBJJ20gdHJ5aW5nIHRvIHRoaW5rIG9mIGEgYmV0dGVyIHNvbHV0aW9uLgorCisqICJnY2M6IHNubXBfdmVyc2lvbi5sbzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKworICAgVGhpcyBpcyBhIGdvb2QgaW5kaWNhdGlvbiB0aGF0IHlvdSBoYXZlIHByZXZpb3VzbHkgYnVpbGQgaW4geW91cgorICAgc291cmNlIGRpcmVjdG9yeS4gJ21ha2UgZGlzdGNsZWFuJyBpbiB5b3VyIHNvdXJjZSBkaXJlY3RvcnksIG9yCisgICBjaGVjayBvdXQgYSBmcmVzaCBuZXcgdmVyc2lvbiBmcm9tIENWUy4KZGlmZiAtLWdpdCBhL2Rpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlMgYi9kaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YTQxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TCkBAIC0wLDAgKzEsMTAwMSBAQAorVGhpcyBpcyBhIHN1bW1hcnkgb2YgdGhlIHN0ZXBzIHJlcXVpcmVkIHRvIG1ha2UgYSBuZXcgcmVsZWFzZS4gIERvIG5vdAorYXR0ZW1wdCB0byBydW4gdGhlc2UgbWFudWFsbHkgLSBpbnN0ZWFkIHVzZSB0aGUgJ21ha2VyZWxlYXNlJworYXBwbGljYXRpb24gYW5kIG1ha2VyZWxlYXNlLnhtbCBmaWxlLiAgR2V0ICdtYWtlcmVsZWFzZScgZnJvbSB0aGUKK21ha2VyZWxlYXNlIFNWTiByZXBvc2l0b3J5OgorCisgIHN2biBjbyBodHRwczovL21ha2VyZWxlYXNlLnN2bi5zb3VyY2Vmb3JnZS5uZXQvc3Zucm9vdC9tYWtlcmVsZWFzZS90cnVuay9tYWtlcmVsZWFzZQorICBjZCBtYWtlcmVsZWFzZQorICBwZXJsIE1ha2VmaWxlLlBMCisgIG1ha2UKKyAgc3VkbyBtYWtlIGluc3RhbGwKKworVGhlbiB0byBydW4gaXQgZnJvbSBhIGRpcmVjdG9yeSB0byByZWxlYXNlOgorCisgIG1ha2VyZWxlYXNlIC1jIE5FVFNOTVBUUlVOSy9kaXN0L21ha2VyZWxlYXNlLnhtbAorCitJdCB3aWxsIHByb21wdCB5b3UgZm9yIGFsbCBuZWVkZWQgaW5mb3JtYXRpb24gYW5kIHRhc2tzIHRvIGJlIGRvbmUuCisKK0lNUE9SVEFOVCBOT1RFOgorICAgIERvbid0ICpldmVyKiByZWxlYXNlIGEgc2Vjb25kIHRhciBiYWxsIHVuZGVyIHRoZSBzYW1lIG5hbWUgYXMgdGhlCisgICAgZmlyc3QuICBJdCdzIG11Y2ggbXVjaCBtdWNoIGJldHRlciB0byByZWxlYXNlIGFub3RoZXIgdmVyc2lvbgorICAgIGluc3RlYWQsIHNpbmNlIHlvdSBkb24ndCBoYXZlIHRvIGZpZ3VyZSBvdXQgZnJvbSB0aGUgYnVnIHJlcG9ydHMKKyAgICB0aGF0IGEgdXNlciByZWFsbHkgZ3JhYmJlZCB0aGUgZmlyc3Qgc25hcHNob3QgaW5zdGVhZCBvZiB0aGUKKyAgICBzZWNvbmQgd2hlbiB0aGV5IGNvbXBsYWluIGFib3V0IHZlcnNpb24gIlhYWCIgbm90IHdvcmtpbmcuCisKKz09PT09PSBtYWtlcmVsZWFzZSAtbiBvdXRwdXQgc2hvd2luZyBtYWtlcmVsZWFzZSBkb2N1bWVudGVkIHN0ZXBzID09PT09PQorCitTVEVQOiAxOiBTZXR1cCBTdGVwcworCisgIFRoaXMgc2V0IG9mIHN0ZXBzIHdpbGwgZG8gc29tZSBwcmVsaW1pbmFyeSAic2FmZXR5IiBjaGVja3MgdG8gZW5zdXJlIHRoZQorICBsb2NhbCBlbnZpcm9ubWVudCBpcyBvayBhbmQgc2V0dXAgc29tZSBpbXBvcnRhbnQgaW5mb3JtYXRpb24uCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogMSA9PT09PQorCitTVEVQOiAxLjE6IFNldHVwIENoZWNjaworCisgIFRoaXMgc2hvdWxkIHNob3cgdGhlIGxhc3QgdmVyc2lvbiBudW1iZXIgcHVibGlzaGVkIGluIHRoaXMgYnJhbmNoIGJ5CisgIGxvb2tpbmcgYXQgdGhlIHRpbWUgbGluZSBpbiB0aGUgUkVBRE1FIGZpbGU6CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGhlYWQgLTEgUkVBRE1FCisKK1NURVA6IDEuMjogUGljayBhIFZlcnNpb24gTnVtYmVyCisKKyAgUGxlYXNlIGVudGVyIHRoZSB2ZXJzaW9uIG51bWJlciB0byBwdWJsaXNoLiAgTmV0LVNOTVAgY29udmVudGlvbiBkaWN0YXRlcworICB0aGF0IHRoaXMgYmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIDUuNCBvciA1LjQuMS4gIFByZS1yZWxlYXNlcyB0aGF0IG9jY3VyCisgIGJlZm9yZSBhIGJyYW5jaCBmcmVlemVzIHNob3VsZCBiZSBhcHBlbmRlZCB3aXRoICIucHJlTiIgbGlrZSA1LjQuMS5wcmUyLiAKKyAgUmVsZWFzZS1jYW5kaWRhdGVzIHNob3VsZCBiZSBsYWJlbGVkICIucmNOIiBsaWtlIDUuNC4xLnJjMS4KKworICBEZWNpZGUgb24gYSB2YWx1ZSBmb3IgcGFyYW1ldGVyICdWRVJTSU9OJworCisgICAgcGFyYW1ldGVyOiBWRVJTSU9OCisKKyAgICBwcm9tcHQ6ICAgIEVudGVyIHRoZSBuZXcgdmVyc2lvbiBudW1iZXI6CisKK1NURVA6IDEuMzogRGVmaW5pbmcgYSBzZWNvbmQgaW50ZXJuYWwgdmVyc2lvbiBzdHJpbmcKKworICBJbnRlcm5hbCBwZXJsIGNvZGUgd2lsbCBiZSBleGVjdXRlZAorCitTVEVQOiAxLjQ6IFJlbGVhc2UgUGFyYW1ldGVyIEluZm9ybWF0aW9uCisKKyAgSGVyZSBpcyB0aGUgY29uZmlndXJlZCBpbmZvcm1hdGlvbiB3ZSdsbCBiZSB1c2luZzoKKworICBWRVJTSU9OOgkJICAge1ZFUlNJT059CisKKyAgVkVSU0lPTiB3aXRoIGRhc2hlczoJICAge1ZFUlNJT05EQVNIRVN9CisKKyAgRmxvYXRpbmcgcG9pbnQgVkVSU0lPTjogIHtWRVJTSU9ORkxPQVR9CisKKyAgU1ZOIEJyYW5jaCBVUkw6CSAgIHtCUkFOQ0hQQVRIfQorCitTVEVQOiAxLjU6IHVwZGF0ZQorCisgIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBpcyB1cCB0byBkYXRlIGFuZCBtYXRjaGVzIHRoZSBsYXRlc3QKKyAgc291cmNlcyBpbiB0aGlzIGJyYW5jaC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIHVwZGF0ZQorCitTVEVQOiAxLjY6IENoZWNrIGZvciBjaGFuZ2VzCisKKyAgVGhpcyBzdGVwcyBsb29rcyBmb3Igb3V0c3RhbmRpbmcgZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuICBUaGVyZQorICBzaG91bGQgYmUgbm8gb3V0c3RhbmRpbmcgbW9kaWZpY2F0aW9ucyEgIElmIHRoaXMgc3RlcCBmaW5kcyBvdXRzdGFuZGluZworICBtb2RpZmllZCBmaWxlcyB5b3UgbmVlZCB0byBjaGVjayB0aGVtIGluIG9yIHJldmVydCB0aGVtIGJlZm9yZQorICBjb250aW51aW5nIQorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gLXUgc3RhdHVzIHwgZWdyZXAgJ15bXlw/XScKKworICAoTGVhdmluZyBTdGVwOiAxKQorCitTVEVQOiAyOiBTb3VyY2UgQ29kZSBTZXR1cAorCisgIFRoaXMgc2V0IG9mIHN0ZXBzIHdpbGwgbW9kaWZ5IHZhcmlvdXMgcGxhY2VzIHdpdGhpbiB0aGUgc291cmNlIGNvZGUgdHJlZQorICB0byBicmluZyBpdCB1cCB0byBkYXRlIHdpdGggdGhlIG5ldyB2ZXJzaW9uIG51bWJlciBhYm91dCB0byBiZSBwdWJsaXNoZWQuCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogMiA9PT09PQorCitTVEVQOiAyLjE6IExpYnRvb2wgLyBMaWJyYXJ5IHZlcnNpb25pbmcgc2V0dXAKKworICBUaGVzZSBzdGVwcyB3aWxsIG1vZGlmeSB0aGUgdmFyaW91cyBmaWxlcyBpbiB0aGUgc291cmNlIHRyZWUgdGhhdCBjb250YWluCisgIHRoZSB2ZXJzaW9uIG51bWJlciwgc2hvdyB5b3UgdGhlIGNoYW5nZXMgdGhhdCB3aWxsIGJlIG1hZGUgYW5kIHRoZW4gY2hlY2sKKyAgaW4gdGhlIHJlc3VsdGluZyBjaGFuZ2VzIGlmIHlvdSBhcHByb3ZlIG9mIHRoZW0uCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogMi4xID09PT09CisKK1NURVA6IDIuMS4xOiB2ZXJzaW9uOmxpYnRvb2xtYW51YWxlZGl0CisKKyAgWW91IChtYXkpIG5lZWQgdG8gZWRpdCBNYWtlZmlsZS50b3AgdG8gdXBkYXRlIHRoZSBsaWJyYXJ5IHZlcnNpb24KKyAgbnVtYmVyaW5nICh1c3VhbGx5IGp1c3QgZm9yIHRoZSBmaXJzdCBwcmUtcmVsZWFzZSBvZiBhIGdpdmVuIHZlcnNpb24pLiAKKyAgU2VlIHRoZSBjb21tZW50cyBpbiBSRUxFQVNFLUlOU1RSVUNUSU9OUyBhYm91dCBMSUJDVVJSRU5ULCBMSUJBR0UgYW5kCisgIExJQlJFVklTSU9OLgorCisgIFRoaXMgc2NyaXB0IHdpbGwgY29tbWl0IHRoZSBmaWxlIGZvciB5b3UgYWZ0ZXIgeW91J3JlIGRvbmUuCisKK1NURVA6IDIuMS4yOiB2ZXJzaW9uOmNvbW1pdAorCisgIFdlJ2xsIG5vdyBjb21taXQgdGhlIE1ha2VmaWxlLnRvcCBmaWxlIGlmIHlvdSd2ZSBtb2RpZmllZCBpdC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAidmVyc2lvbiB1cGRhdGUiIE1ha2VmaWxlLnRvcAorCisgIChMZWF2aW5nIFN0ZXA6IDIuMSkKKworU1RFUDogMi4yOiBDaGFuZ2UgVGhlIFZlcnNpb24gTnVtYmVyCisKKyAgVGhlc2Ugc3RlcHMgd2lsbCBtb2RpZnkgdGhlIHZhcmlvdXMgZmlsZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHRoYXQgY29udGFpbgorICB0aGUgdmVyc2lvbiBudW1iZXIsIHNob3cgeW91IHRoZSBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBtYWRlIGFuZCB0aGVuIGNoZWNrCisgIGluIHRoZSByZXN1bHRpbmcgY2hhbmdlcyBpZiB5b3UgYXBwcm92ZSBvZiB0aGVtLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDIuMiA9PT09PQorCitTVEVQOiAyLjIuMTogTW9kaWZ5IHRoZSBzb3VyY2UgZmlsZXMKKworICBXZSB3aWxsIG5vdyBtb2RpZnkgZmlsZXMgdGhyb3VnaCB0aGUgY29kZSB0byByZXBsYWNlIHRoZSB2ZXJzaW9uIG51bWJlcgorICB3aXRoIHRoZSBuZXdlciBvbmUuCisKKyAgTW9kaWZ5aW5nIGZpbGVzOgorCisgICAgcmVwbGFjaW5nOiAnVkVSU0lPTiA9ICcoLiopJycgd2l0aDogJ1ZFUlNJT04gPSBcJ3tWRVJTSU9ORkxPQVR9XCcnCisKKworICAgIGZpbGVzOiAgZ2xvYj1BUlJBWSgweDhkYzkwNjQpCisKKyAgICAgIHBlcmwvU05NUC9TTk1QLnBtCisKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0KKworICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0KKworICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KKworICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KKworICAgICAgcGVybC9PSUQvT0lELnBtCisKKyAgICAgIHBlcmwvQVNOL0FTTi5wbQorCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCisKKyAgICAgIHBlcmwvQW55RGF0YV9TTk1QL0Zvcm1hdC5wbQorCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KKworCisKKyAgTW9kaWZ5aW5nIGZpbGVzOgorCisgICAgcmVwbGFjaW5nOiAnTmV0U25tcFZlcnNpb25JbmZvID0gIltcZFwuXSsiJyB3aXRoOiAnTmV0U25tcFZlcnNpb25JbmZvID0KKyAgIntWRVJTSU9OfSInCisKKworICAgIGZpbGVzOiAgZ2xvYj1BUlJBWSgweDhkYzhmZDQpCisKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmMKKworCisKKyAgTW9kaWZ5aW5nIGZpbGVzOgorCisgICAgcmVwbGFjaW5nOiAnVmVyc2lvbjogW1wuMC05YS16QS1aXSsnIHdpdGg6ICdWZXJzaW9uOiB7VkVSU0lPTn0nCisKKworICAgIGZpbGVzOiAgZ2xvYj1BUlJBWSgweDhkYzhmNDQpCisKKyAgICAgIFJFQURNRQorCisgICAgICBGQVEKKworICAgICAgZGlzdC9uZXQtc25tcC5zcGVjCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ1ZFUlNJT04gPSBbXC4wLTlhLXpBLVpdKycgd2l0aDogJ1ZFUlNJT04gPSB7VkVSU0lPTn0nCisKKworICAgIGZpbGVzOiAgZ2xvYj1BUlJBWSgweDhkYzhlZDQpCisKKyAgICAgIGRpc3QvTWFrZWZpbGUKKworCisKKyAgTW9kaWZ5aW5nIGZpbGVzOgorCisgICAgcmVwbGFjaW5nOiAnQUNfSU5JVFwoXFtOZXQtU05NUFxdLCBcWyhbXlxdXSspXF0nIHdpdGg6CisgICdBQ19JTklUKFtOZXQtU05NUF0sIFt7VkVSU0lPTn1dJworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZTY0KQorCisgICAgICBjb25maWd1cmUuaW4KKworCisKKyAgTW9kaWZ5aW5nIGZpbGVzOgorCisgICAgcmVwbGFjaW5nOiAnTmV0U25tcFZlcnNpb25JbmZvID0gIlteIl0rIicgd2l0aDogJ05ldFNubXBWZXJzaW9uSW5mbyA9CisgICJ7VkVSU0lPTn0iJworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZGY0KQorCisgICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jCisKKworCitTVEVQOiAyLjIuMjogUnVubmluZyBhdXRvY29uZiB0byByZWJ1aWxkIGNvbmZpZ3VyZQorCisgIFdlIG1vZGlmaWVkIGNvbmZpZ3VyZS5pbiwgc28gd2Ugbm93IG5lZWQgdG8gcnVuIGF1dG9jb25mIHRvIHJlYnVpbGQKKyAgY29uZmlndXJlLgorCisgIFhYWDogaW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgdmVyaWZ5IHRoZSBjb3JyZWN0IGF1dG9jb25mIHZlcnNpb24gbnVtYmVyCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGF1dG9jb25mCisKK1NURVA6IDIuMi4zOiBSdW5uaW5nIHN2biBkaWZmIHRvIGNoZWNrIGNoYW5nZXMKKworICBDaGVjayB0aGUgZm9sbG93aW5nIGNoYW5nZXMgZm9yIHByb3BlciB2ZXJzaW9uIG51bWJlciBkaWZmZXJlbmNlcyBiZWZvcmUKKyAgd2UgY29tbWl0IHRoZSBjaGFuY2VzLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gZGlmZgorCitTVEVQOiAyLjIuNDogUnVubmluZyBzdm4gY29tbWl0IHRvIGNvbW1pdCB0aGUgY2hhbmdlcworCisgIENoZWNrIHRoZSBjaGFuZ2VzIGluIHRoZSBhYm92ZSBkaWZmIGFuZCB0aGVuIHdlJ2xsIGNvbW1pdCB0aGUgcmVzdWx0cworICBoZXJlIGlmIHRoZXkgbG9vayBvay4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAiVmVyc2lvbiBudW1iZXIgdXBkYXRlIgorCisgIChMZWF2aW5nIFN0ZXA6IDIuMikKKworU1RFUDogMi4zOiBkb2NzOm1ha2UKKworICBUaGlzIHN0ZXAgd2lsbCBjcmVhdGUgbWFudWFsIHBhZ2VzIGZyb20gZG94eWdlbiBpbnN0cnVtZW50ZWQgY29kZSBmaWxlcy4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZSBkb2NzCisKKyAgICBtYWtlIG1hbmNwCisKK1NURVA6IDIuNDogZG9jczp1cGRhdGUKKworICBUaGlzIHdpbGwgcnVuIHN2biBzdGF0dXMgdG8gZmlndXJlIG91dCB3aGF0IGZpbGVzIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUKKyAgcHJldmlvdXMgbWFuIHBhZ2UgZ2VuZXJhdGlvbiBzdGVwcyB3ZXJlIGRvbmUuICBBZnRlciB0aGlzIHN0ZXAsIHdlJ2xsCisgIGNvbW1pdCBhbGwgdGhlIG1vZGlmaWVkIGZpbGVzLgorCisgIFlvdSBtYXkgZmluZCBhZGRpdGlvbmFsIGZpbGVzIChtYXJrZWQgd2l0aCBhID8pIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvCisgIHRoZSBzdm4gcmVwb3NpdG9yeSBhbmQgeW91J2xsIG5lZWQgdG8gZG8gdGhpcyBieSBoYW5kIGJlZm9yZSBnb2luZyBvbiB0bworICB0aGUgbmV4dCBzdGVwLgorCisgIE5vdGU6IGJhc2VkIG9uIGEgcmVjZW50IG5ldC1zbm1wLWFkbWluIGRpc2N1c3Npb24sIHdlJ3JlIG5vIGxvbmdlciBnb2luZworICB0byBiZSBhZGRpbmcgdGhlIGJhemlsbGlvbnMgb2YgbWFuIHBhZ2VzIHRoYXQgZG94eWdlbiBnZW5lcmF0ZXMgYnkKKyAgZGVmYXVsdC4gIE9ubHkgaW1wb3J0YW50IG9uZXMgc2hvdWxkIGJlIGFkZGVkLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gLXUgc3RhdHVzIG1hbgorCitTVEVQOiAyLjU6IGRvY3M6bWFudWFsYWRkbmV3bWFuCisKKyAgVXBkYXRlIG1hbi9NYWtlZmlsZS5pbiB3aXRoIGRldGFpbHMgb2YgYW55IG5ldyBtYW4gcGFnZXMsIGFuZCBydW4gJ3N2bgorICBhZGQnIG9uIHRoZW0uCisKKyAgSSdsbCBjb21taXQgdGhlc2UgY2hhbmdlcyBmb3IgeW91IGFmdGVyIHlvdSdyZSBkb25lLgorCitTVEVQOiAyLjY6IGRvY3M6Y29tbWl0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gImRvY3VtZW50YXRpb24gdXBkYXRlIiBtYW4KKworICAoTGVhdmluZyBTdGVwOiAyKQorCitTVEVQOiAzOiBUZXN0aW5nIFN0ZXBzCisKKyAgVGhlc2Ugc3RlcHMgd2lsbCBoZWxwIHlvdSB0ZXN0IHRoZSBzb3VyY2UgY29kZSB0byBlbnN1cmUgaXQgcGFzc2VzIHNvbWUKKyAgc2ltcGxlICJpdCB3b3JrcyIgdGVzdHMuCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogMyA9PT09PQorCitTVEVQOiAzLjE6IGJ1aWxkOmRpc3RjbGVhbgorCisgIEZpcnN0IHdlIG5lZWQgdG8gY2xlYW4gdGhlIGV4aXN0aW5nIGJ1aWxkIHRyZWUgYW5kIHN0YXJ0IGZyb20gc2NyYXRjaC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZSBkaXN0Y2xlYW4KKworU1RFUDogMy4yOiBidWlsZDpjb25maWd1cmUKKworICBXZSBuZWVkIHRvIHJ1biBjb25maWd1cmUgdG8gc2V0IHVwIHRoZSBidWlsZCB0cmVlLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICAuL2NvbmZpZ3VyZSAtLWNhY2hlPWNvbmZpZy5jYWNoZSAtLXdpdGgtZGVmYXVsdHMKKyAgLS13aXRoLW1pYi1tb2R1bGVzPSdob3N0IGV4YW1wbGVzIGV4YW1wbGVzL2V4YW1wbGUgdGVzdGhhbmRsZXIgc211eCBSbW9uCisgIGRpc21hbi9ldmVudC1taWInIC0td2l0aC10cmFuc3BvcnRzPUlQWCAtLWVuYWJsZS1pcHY2CisgIC0tZW5hYmxlLWVtYmVkZGVkLXBlcmwgLS1lbmFibGUtc2hhcmVkCisKK1NURVA6IDMuMzogYnVpbGQ6bWFrZQorCisgIFRoZW4gd2UgbmVlZCB0byBidWlsZCB0aGUgY29kZQorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBtYWtlCisKK1NURVA6IDMuNDogYnVpbGQ6dGVzdAorCisgIE5vdyB3ZSBydW4gIm1ha2UgdGVzdCIgd2hpY2ggc2hvdWxkIHByb2R1Y2UgYSBwZXJmZWN0IHNldCB1cCB0ZXN0CisgIHJlc3VsdHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgb3IgYXQgbGVhc3QgdW5kZXJzdG9vZCBhbmQKKyAgYWNjZXB0ZWQgYXMgaXMgZm9yIHNvbWUgb3RoZXIgcmVhc29uLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBtYWtlIHRlc3QgVEVTVE9QVFM9LW4KKworU1RFUDogMy41OiBjb2RlOmNoZWNrY29tbWVudHMKKworICBUaGlzIGNvbW1hbmQgbG9va3MgZm9yIHNvdXJjZSBjb2RlIG9kZGl0aWVzIGFuZCBwb2xpY3kgdmlvbGF0aW9ucy4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZSBjaGVja3MKKworICAoTGVhdmluZyBTdGVwOiAzKQorCitTVEVQOiA0OiBSZWxlYXNlIEZpbGUgU3RlcHMKKworICBDZXJ0YWluIGZpbGVzIGluIHRoZSBkaXN0cmlidXRpb24gYW5kIGJ1aWx0IG9uIGEgcGVyLXJlbGVhc2UgYmFzaXMuIAorICBUaGVzZSBzdGVwcyB3aWxsIGhlbHAgc2V0IHVwIHRoZXNlIGZpbGVzLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDQgPT09PT0KKworU1RFUDogNC4xOiBjb2RlOm1ha2VkZXBlbmQKKworICBUaGlzIHN0ZXAgY3JlYXRlcyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlICJkaXN0ZGVwZW5kIiBydWxlIGluCisgIHRoZSB0b3AgbGV2ZWwgTWFrZWZpbGUuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgZGlzdGRlcGVuZAorCitTVEVQOiA0LjI6IGNvZGU6Y29tbWl0ZGVwZW5kCisKKyAgVGhpcyBzdGVwIGNvbW1pdHMgdGhlIGRlcGVuZGVuY3kgY2hhbmdlcyBkb25lIGluIHRoZSBwcmV2aW91cyBzdGVwLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gY29tbWl0IC1tICJtYWtlIGRlcGVuZCIgYGZpbmQgLiAtbmFtZSBNYWtlZmlsZS5kZXBlbmRgCisKK1NURVA6IDQuMzogY2hhbmdlbG9nOnN2bjJjbAorCisgIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgcG9ydGlvbnMgb2YgdGhlIGNoYW5nZSBsb2dzIGNvbW1pdHRlZCB0byB0aGUKKyAgcmVwb3NpdG9yeS4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuMmNsIC1mIENoYW5nZUxvZy5hZGQgLS1icmVhay1iZWZvcmUtbXNnIC0tc3RvcC1vbi1jb3B5CisKKyAgICBwZXJsIGRpc3QvY2hhbmdlbG9nZml4ICA8IENoYW5nZUxvZy5hZGQgPiBDaGFuZ2VMb2cucmVhbGx5YWRkCisKK1NURVA6IDQuNDogY2hhbmdlbG9nOm1hbnVhbGVkaXQKKworICBZb3UgbmVlZCB0byBtYW51YWxseSBpbnNlcnQgdGhlICpyZWxldmVudCogcG9ydGlvbnMgb2YKKyAgJ0NoYW5nZUxvZy5yZWFsbHlhZGQnIGludG8gdGhlIENoYW5nZUxvZyBmaWxlLiBJJ2xsIGNvbW1pdCB0aGVzZSBjaGFuZ2VzCisgIGZvciB5b3UgYWZ0ZXIgeW91IGZpbmlzaCBjdXR0aW5nIG91dCB0aGUgcHJvcGVyIGNoYW5nZXMuCisKK1NURVA6IDQuNTogY2hhbmdlbG9nOmNvbW1pdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gY29tbWl0IC1tICJ2ZXJzaW9uIHVwZGF0ZSIgQ2hhbmdlTG9nCisKK1NURVA6IDQuNjogZG9jczpuZXduZXdzCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHBlcmwgZGlzdC9leHRyYWN0bmV3cyAtcyAtLS0tLSAtZSAtLS0tLSBDaGFuZ2VMb2cKKworU1RFUDogNC43OiBkb2NzOm5ld25ld3MKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgcGVybCBkaXN0L2V4dHJhY3RuZXdzIC1jIENIQU5HRVMubmV3MiAtbiBORVdTLm5ldzIgQ2hhbmdlTG9nLnJlYWxseWFkZAorCitTVEVQOiA0Ljg6IGRvY3M6UkVBRE1FCisKKyAgWW91IG5lZWQgdG8gbWFudWFsbHkgaW5zZXJ0IHRoZSByZWxldmVudCBwb3J0aW9ucyBvZiAnQ0hBTkdFUy5uZXcnIGFuZAorICAnTkVXUy5uZXcnIGludG8gdGhlIENIQU5HRVMgYW5kIE5FV1MgZmlsZS4gKFRoZXJlIGFyZSBhbHRlcm5hdGl2ZQorICB2ZXJzaW9ucyBpbiAnQ0hBTkdFUy5uZXcyJyBhbmQgJ05FV1MubmV3MicpIFlvdSBtYXkgd2lzaCB0byB1cGRhdGUgdGhlCisgIFJFQURNRSBmaWxlIGFzIHdlbGwuIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlcndhcmRzCisKK1NURVA6IDQuOTogZG9jczpjb21taXQKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAidmVyc2lvbiB1cGRhdGUiIFJFQURNRSBORVdTIENIQU5HRVMKKworU1RFUDogNC4xMDogcmVsZWFzZTp1cGRhdGUKKworICBPbmUgbW9yZSBzdm4gdXBkYXRlIGFuZCBzdGF0dXMgdG8gbWFrZSBzdXJlIG5vdGhpbmcgb2RkIGV4aXN0cyBpbiB5b3VyCisgIHNvdXJjZSB0cmVlLglQbGVhc2UgY2hlY2sgdGhlIHJlc3VsdHMhCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biAtdSBzdGF0dXMKKworICAoTGVhdmluZyBTdGVwOiA0KQorCitTVEVQOiA1OiBNYWtlIHRoZSBSZWxlYXNlCisKKyAgVGhpcyBpcyBpdCEgIEFmdGVyIHRoaXMgcG9pbnQgaXQncyBtdWNoIGhhcmRlciB0byB0dXJuIGJhY2suCUlmCisgIGV2ZXJ5dGhpbmcgaXMgb2sgdW50aWwgdGhpcyBwb2ludCBhbmQgeW91J3JlIHJlYWR5IHRvIGFjdHVhbGx5IHN0YW1wIHRoZQorICByZWxlYXNlIGluIFNWTiBhbmQgbWFrZSByZWxlYXNlIGZpbGVzLCB0aGVzZSBzdGVwcyB3aWxsIGRvIHRoYXQgZm9yIHlvdS4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiA1ID09PT09CisKK1NURVA6IDUuMTogcmVsZWFzZTp0YWcKKworICBUaGlzIHdpbGwgYWN0dWFsbHkgc3ZuIGNvcHkgdGhlIGN1cnJlbnQgY2hlY2tlZCBvdXQgYnJhbmNoIHRvIHRoZSBuZXcgdGFnCisgIG5hbWUuICBTcGVjaWZpY2FsbHk6CisKKyAgc3ZuIGNvcHkge0JSQU5DSFBBVEh9IC4uLi90YWdzL0V4dC17VkVSU0lPTkRBU0hFU30KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvcHkgLW0gIntWRVJTSU9OfSByZWxlYXNlIiB7QlJBTkNIUEFUSH0KKyAgaHR0cHM6Ly9uZXQtc25tcC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbmV0LXNubXAvdGFncy9FeHQte1ZFUlNJT05EQQorICBTSEVTfQorCitTVEVQOiA1LjI6IHJlbGVhc2U6bWFrZWRpc3QKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGV4cG9ydAorICBodHRwczovL25ldC1zbm1wLnN2bi5zb3VyY2Vmb3JnZS5uZXQvc3Zucm9vdC9uZXQtc25tcC90YWdzL0V4dC17VkVSU0lPTkRBCisgIFNIRVN9L25ldC1zbm1wIG5ldC1zbm1wLXtWRVJTSU9OfQorCitTVEVQOiA1LjM6IHJlbGVhc2U6cmVtb3ZlZmlsZXMKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbmV0LXNubXAte1ZFUlNJT059L3JlbW92ZS1maWxlcyBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS40OiByZWxlYXNlOm1ha2VkaXN0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN0YXIgYXJ0eXBlPXVzdGFyIC1jIC16IC1mIG5ldC1zbm1wLXtWRVJTSU9OfS50YXIuZ3ogCisgIG5ldC1zbm1wLXtWRVJTSU9OfQorCitTVEVQOiA1LjU6IHJlbGVhc2U6bWFrZXppcGNsZWFuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHJtIC1mIG5ldC1zbm1wLXtWRVJTSU9OfS56aXAKKworU1RFUDogNS42OiByZWxlYXNlOm1ha2V6aXAKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgemlwIC1yIG5ldC1zbm1wLXtWRVJTSU9OfS56aXAgIG5ldC1zbm1wLXtWRVJTSU9OfQorCitTVEVQOiA1Ljc6IHJlbGVhc2U6c2VhcmNoaW5nLWdwZy1rZXlzCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGdwZyAtLWxpc3Qtc2VjcmV0LWtleXMgbmV0LXNubXAtYWRtaW4KKworU1RFUDogNS44OiByZWxlYXNlOmdwZworCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBncGcgLXUgMzE3RjhGNjQgLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6CisKK1NURVA6IDUuOTogcmVsZWFzZTpncGcKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgZ3BnIC11IDMxN0Y4RjY0IC1hIC0tZGV0YWNoLXNpZ24gbmV0LXNubXAte1ZFUlNJT059LnppcAorCitTVEVQOiA1LjEwOiBSZWxlYXNlIEZpbGUgVGVzdAorCisgIFdlJ2xsIGFsc28gcmUtYnVpbGQgdGhlIHNvdXJjZSBhbmQgcmV0ZXN0IGEgZmV3IHRoaW5ncyB0byBlbnN1cmUgdGhlCisgIHBhY2thZ2VkIGZpbGUgY2FuIGFjdHVhbGx5IGJlIGJ1aWx0LgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDUuMTAgPT09PT0KKworU1RFUDogNS4xMC4xOiBwb3N0dGVzdDp1bnRhcgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBybSAtcmYgbmV0LXNubXAte1ZFUlNJT059CisKK1NURVA6IDUuMTAuMjogcG9zdHRlc3Q6dW50YXIKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgdGFyIHh6ZiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6CisKK1NURVA6IDUuMTAuMzogcG9zdHRlc3Q6Y29uZmlndXJlCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGNkIG5ldC1zbm1wLXtWRVJTSU9OfSAmJiAuL2NvbmZpZ3VyZSAtLWNhY2hlPWNvbmZpZy5jYWNoZQorICAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLW1pYi1tb2R1bGVzPSdob3N0IGV4YW1wbGVzIGV4YW1wbGVzL2V4YW1wbGUJCisgIHRlc3RoYW5kbGVyIHNtdXggUm1vbiBkaXNtYW4vZXZlbnQtbWliJyAtLXdpdGgtdHJhbnNwb3J0cz1JUFgKKyAgLS1lbmFibGUtaXB2NiAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsIC0tZW5hYmxlLXNoYXJlZAorCitTVEVQOiA1LjEwLjQ6IHBvc3R0ZXN0Om1ha2UKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgY2QgbmV0LXNubXAte1ZFUlNJT059ICYmIG1ha2UKKworU1RFUDogNS4xMC41OiBwb3N0dGVzdDp0ZXN0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGNkIG5ldC1zbm1wLXtWRVJTSU9OfSAmJiBtYWtlIHRlc3QKKworICAoTGVhdmluZyBTdGVwOiA1LjEwKQorCisgIChMZWF2aW5nIFN0ZXA6IDUpCisKK1NURVA6IDY6IFJlbGVhc2UgdGhlIHJlc3VsdHMKKworICBOb3cgd2UnbGwgcHVibGlzaCB0aGUgcmVzdWx0cyB0byB0aGUgU0Ygc2VydmVyCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogNiA9PT09PQorCitTVEVQOiA2LjE6IHJzeW5jIHRoZSBuZXcgZmlsZXMKKworICBUaGlzIHdpbGwgY29weSB0aGUgcmVzdWx0cyB0byB0aGUgU0YgdXBsb2FkcyBkaXJlY3RvcnkgaW4geW91ciBhY2NvdW50IG9uCisgIGZycy5zb3VyY2Vmb3JnZS5uZXQKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgcnN5bmMgLXYgbmV0LXNubXAte1ZFUlNJT059LnRhci5neiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6LmFzYworICBuZXQtc25tcC17VkVSU0lPTn0uemlwIG5ldC1zbm1wLXtWRVJTSU9OfS56aXAuYXNjCisgIGZycy5zb3VyY2Vmb3JnZS5uZXQ6dXBsb2Fkcy8KKworU1RFUDogNi4yOiBVcGRhdGUgdGhlIFNGIHJlbGVhc2Ugd2ViIHBhZ2UKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgZmlyZWZveAorICAnaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L2FkbWluL2VkaXRwYWNrYWdlcy5waHA/Z3JvdXBfaWQ9MTI2OTQnCisKKyAgKExlYXZpbmcgU3RlcDogNikKKworU1RFUDogNzogCisKKyAgQmluYXJpZXM6IGJ1aWxkIHJwbXMsIC50YXIuZ3pzLCBldGMuCisKK1NURVA6IDg6IEFkdmVydGlzZSBpdCEKKworICA9PT09PSBFbnRlcmluZyBTdGVwOiA4ID09PT09CisKK1NURVA6IDguMTogCisKKyAgQWRkIGEgbm90ZSB0byB0aGUgc291cmNlIGZvcmdlIG5ld3Mgc3lzdGVtOgorCisgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbmV3cy9zdWJtaXQucGhwP2dyb3VwX2lkPTEyNjk0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGZpcmVmb3ggJ2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbmV3cy9zdWJtaXQucGhwP2dyb3VwX2lkPTEyNjk0JworCitTVEVQOiA4LjI6IAorCisgIFNlbmQgYW4gYW5ub3VuY2VtZW50IG1lc3NhZ2UgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgbWFpbGluZyBsaXN0cyBiYXNlZAorICBvbiBpdCdzIHR5cGU6CisKKyAgcHJlOgkgIG5ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworICByYzoJICBuZXQtc25tcC11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworICBmaW5hbDogIG5ldC1zbm1wLWFubm91bmNlQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorCitTVEVQOiA4LjM6IAorCisgIFVwZGF0ZSB0aGUgdG9waWMgb24gdGhlICNOZXQtU05NUCBjaGFubmVsIGlmIHRoaXMgaXMgYSB0cnVuayBiYXNlZAorICByZWxlYXNlLgorCitTVEVQOiA4LjQ6IAorCisgIFVwZGF0ZSB0aGUgZnJlc2htZWF0IGxpc3RpbmcgKFdlcyBuZWVkcyB0byBkbyB0aGlzKToKKworICBodHRwOi8vZnJlc2htZWF0Lm5ldC9wcm9qZWN0cy9uZXQtc25tcC8KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgZmlyZWZveCBodHRwOi8vZnJlc2htZWF0Lm5ldC9wcm9qZWN0cy9uZXQtc25tcC8KKworICAoTGVhdmluZyBTdGVwOiA4KQorCitTVEVQOiA5OiAKKworICBBZHZlcnRpc2U6IE5FV1MgdXBsb2FkIHRvIHNmLCBwdWJsaXNoIG9uIC1hbm5vdW5jZSwgZnJlc2htZWF0LCBhbmQgdGhlCisgIEdOVSBGU0YgZGlyZWN0b3J5IChodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9uZXQtc25tcC8pLi4uIChzZW5kCisgIG1haWwgdG8gYnVnLWRpcmVjdG9yeUBnbnUub3JnKQorCisKKworCisKKz09PT09PSBCRUdJTiBPQlNPTEVURSAocHJlLW1ha2VyZWxlYXNlKSBET0NVTUVOVEFUSU9OID09PT09PQorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1RFU1RJTkc6CisKKyAgMSkgVXBkYXRlIHRoZSBzb3VyY2UgdHJlZSB0byBjYXRjaCBhbGwgcmVjZW50IGNvbW1pdHMsCisgICAgIGFuZCBjaGVjayB0aGF0IGFsbCBsb2NhbCBjaGFuZ2VzIGhhdmUgYmVlbiBjb21taXR0ZWQuCisKKyAgICAgJCBzdm4gLXUgc3RhdHVzCisgICAgICQgc3ZuICAgIHVwZGF0ZQorCisgIDIpIENoYW5nZSB0aGUgbGlidG9vbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIE1ha2VmaWxlLnRvcC4KKyAgICAgU2VlIE1BTlVBTCAtIFNURVAgMSBsYXRlciBpbiB0aGVzZSBpbnN0cnVjdGlvbnMuCisgICAgICdtYWtlcmVsZWFzZScgd2lsbCBjb21taXQgdGhpcyBmaWxlIGF1dG9tYXRpY2FsbHkuCisKKyAgMykgQ29uZmlndXJlIHRoZSBzdWl0ZSB3aXRoIGFzIG1hbnkgbW9kdWxlcyBhcyBwb3NzaWJsZSwKKyAgICAgYnVpbGQgYW5kIHRlc3QgaXQuICBUaGUgbWFrZXJlbGVhc2Ugc2NyaXB0IHdpbGwgdXNlCisgICAgIHRoZSBvcHRpb25zOgorCisgICAgICAkIC4vY29uZmlndXJlICAnLS13aXRoLW1pYi1tb2R1bGVzPWhvc3QgZXhhbXBsZXMgZXhhbXBsZXMvZXhhbXBsZSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGhhbmRsZXIgc211eCBSbW9uIGRpc21hbi9ldmVudC1taWInICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtdHJhbnNwb3J0cz1JUFggIC0tZW5hYmxlLWlwdjYgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZW1iZWRkZWQtcGVybCAtLWVuYWJsZS1zaGFyZWQKKworICAgICBJZGVhbGx5IHRoaXMgc2hvdWxkIGJlIHJlcGVhdGVkIG9uIGFzIG1hbnkgc3lzdGVtcyBhcyBwb3NzaWJsZQorICAgICAoaW5jbHVkaW5nIHJ1bm5pbmcgIm1ha2UgaW5zdGFsbCIpLiAgSG93ZXZlciB0aGUgbWFrZXJlbGVhc2UKKyAgICAgc2NyaXB0IHdpbGwgb25seSB0ZXN0IHRoaW5ncyBvbiB0aGUgY3VycmVudCBib3gsIGFuZCB3aWxsIG5vdAorICAgICB0cnkgdG8gaW5zdGFsbCB0aGUgc29mdHdhcmUuCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitET0NVTUVOVEFUSU9OOgorCisgIDQpICBVcGRhdGUgdGhlIHZlcnNpb24gbnVtYmVyIGluIHRoZSBkb3h5Z2VuLmNvbmYgZmlsZQorICAgICAgKGhhbmRsZWQgYXV0b21hdGljYWxseSBieSAnbWFrZXJlbGVhc2UnKSBhbmQgZ2VuZXJhdGUKKyAgICAgIHRoZSBkb3h5Z2VuIGV4dHJhY3RlZCBtYW51YWwgcGFnZXMuCisKKyAgICAgICAgJCBtYWtlIGRvY3MKKyAgICAgICAgJCBtYWtlIG1hbmNwCisKKyAgICAgJ21ha2VyZWxlYXNlJyB3aWxsIGNvbW1pdCB0aGlzIGZpbGUgYXV0b21hdGljYWxseS4KKyAgICAgTm90ZSB0aGF0IGFueSBuZXcgbWFuIHBhZ2VzIHNob3VsZCBiZSBhZGRlZCB0byBNYWtlZmlsZS5pbi4KKyAgICAgVGhpcyBpcyAqTk9UKiBjdXJyZW50bHkgaGFuZGxlZCBieSB0aGUgbWFrZXJlbGVhc2Ugc2NyaXB0LgorCisgIDUpIENoZWNrIHRoZSBjb2RlIGZvciBpbGxlZ2FsIGNvbnN0cnVjdHMgKGUuZy4gQysrIHN0eWxlIGNvbW1lbnRzCisgICAgIG9yIEdOVSBtYWtlIHNwZWNpZmljIGNvbnN0cnVjdHMgaW4gTWFrZWZpbGVzKToKKworICAgICAgICAkIG1ha2UgY2hlY2tzCisKKyAgNikgVXBkYXRlIE1ha2VmaWxlIGRlcGVuZGVuY2llczoKKworICAgICAgICAkIG1ha2UgZGlzdGRlcGVuZAorCisgICAgICdtYWtlcmVsZWFzZScgd2lsbCBjb21taXQgdGhlc2UgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuCisKKyAgNykgVXBkYXRlIHRoZSBDaGFuZ2VMb2cgZmlsZSB3aXRoIGRldGFpbHMgb2YgYWxsIChyZWNlbnQpIGNoYW5nZXMKKyAgICAgdG8gdGhlIHN1aXRlLiAgU2VlIE1BTlVBTCAtIFNURVAgMiBsYXRlciBpbiB0aGVzZSBpbnN0cnVjdGlvbnMuCisgICAgICdtYWtlcmVsZWFzZScgd2lsbCBjb21taXQgdGhpcyBmaWxlIGF1dG9tYXRpY2FsbHkuCisKKyAgOCkgVXBkYXRlIHRoZSBSRUFETUUsIE5FV1MsIGFuZCBDSEFOR0VTIGZpbGVzIHdpdGggZGV0YWlscyBvZgorICAgICBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBzdWl0ZS4gIFNlZSBNQU5VQUwgLSBTVEVQIDMgbGF0ZXIKKyAgICAgaW4gdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoZXNlIGZpbGVzIGF1dG9tYXRpY2FsbHkuCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitSRUxFQVNFOgorCisgIDkpIE1ha2Ugc3VyZSBhbGwgY2hhbmdlcyBhcmUgY2hlY2tlZCBpbjoKKworICAgICAgICQgc3ZuIC11IHN0YXR1cworICAgICAgICQgc3ZuICAgIHVwZGF0ZQorCisgICAgIFtOb3RlIHRoYXQgdGhpcyBzdGVwIGlzIG9taXR0ZWQgd2hlbiBydW5uaW5nICJtYWtlcmVsZWFzZSJdCisKKyAxMCkgQ2hhbmdlIHRoZSB2ZXJzaW9uIG51bWJlciBpbiB2YXJpb3VzIGZpbGVzCisgICAgICAgKFJFQURNRSwgRkFRLCBjb25maWd1cmUuaW4sIG5ldC1zbm1wLnNwZWMgYW5kIGFzc29ydGVkIFBlcmwgbW9kdWxlcykuCisgICAgICdtYWtlcmVsZWFzZScgd2lsbCB1cGRhdGUgYW5kIGNvbW1pdCB0aGVzZSBmaWxlcyBhdXRvbWF0aWNhbGx5LgorCisgMTEpIENyZWF0ZSBhIHRhZyBjaGVja3BvaW50IGZvciB0aGlzIHJlbGVhc2U6CisKKyAgICAgICAkIHN2biBjb3B5ICAvdHJ1bmsgICAgICAgICAgICAgICAgIC90YWdzL0V4dC01LXgKKyAgICAgb3IKKyAgICAgICAkIHN2biBjb3B5ICAvYnJhbmNoZXMvVjUteC1wYXRjaGVzIC90YWdzL0V4dC01LXgteQorCisgMTIpIENvbnN0cnVjdCB0aGUgc291cmNlIHBhY2thZ2VzOgorCisgICAgICAgICQgc3ZuIGV4cG9ydCAvdGFncy9FeHQtNS14LXkvbmV0LXNubXAgbmV0LXNubXAtNS54LnkKKyAgICAgICAgJCBuZXQtc25tcC01LngueS9yZW1vdmUtZmlsZXMgICAgICAgICBuZXQtc25tcC01LngueQorICAgICAgICAkIHN0YXIgYXJ0eXBlPXVzdGFyIC1jIC16IC1mIG5ldC1zbm1wLTUueC55LnRhci5neiAgICBuZXQtc25tcC01LngueQorICAgICAgICAkIHJtIC1mIG5ldC1zbm1wLTUueC55LnppcCIKKyAgICAgICAgJCB6aXAgLXIgbmV0LXNubXAtNS54LnkuemlwIG5ldC1zbm1wLTUueC55IgorCisKKyAxMykgU2lnbiAob3IgY2hlY2tzdW0pIHRoZSBwYWNrYWdlczoKKworICAgICBXZXMvUm9iZXJ0OgorICAgICAgICAkIGdwZyAtdSBuZXQtc25tcC1hZG1pbiAtYSAtLWRldGFjaC1zaWduIG5ldC1zbm1wLTUueC55LnRhci5negorICAgICAgICAkIGdwZyAtdSBuZXQtc25tcC1hZG1pbiAtYSAtLWRldGFjaC1zaWduIG5ldC1zbm1wLTUueC55LnppcAorICAgICBPdGhlcnM6CisgICAgICAgICQgbWQ1c3VtIG5ldC1zbm1wLTUueC55LnRhci5neiA+IG5ldC1zbm1wLTUueC55LnRhci5nei5tZDUKKyAgICAgICAgJCBtZDVzdW0gbmV0LXNubXAtNS54LnkuemlwICAgID4gbmV0LXNubXAtNS54LnkuemlwLm1kNQorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUkVMRUFTRSBURVNUSU5HOgorCisgMTQpIFVucGFjayBhIGNsZWFuIGNvcHkgb2YgdGhlIHRhcmJhbGwsIGNvbmZpZ3VyZSwgYnVpbGQgYW5kCisgICAgIHRlc3QgdGhlIHJlbGVhc2UgdGFyYmFsbC4KKworIDE1KSBEb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gb3V0c3RhbmRpbmcgY2hhbmdlcyB0aGF0IGhhdmUKKyAgICAgYmVlbiBtaXNzZWQgZnJvbSB0aGUgQ1ZTIGNoZWNraW46CisKKyAgICAgICAgJCBzdm4gc3RhdHVzCisKK05vdGU6ICBUaGlzIGlzIHRoZSBsYXN0IHN0YWdlIHRoYXQgaXMgaGFuZGxlZCBieSB0aGUgIm1ha2VyZWxlYXNlIiBzY3JpcHQKKyAgICAgICBFdmVyeXRoaW5nIGZvbGxvd2luZyB3aWxsIG5lZWQgdG8gYmUgZG9uZSBtYW51YWxseS4KKworIDE1KSBVcGxvYWQgdGhlIHBhY2thZ2VzIChhbmQgc2lnbmF0dXJlIGZpbGVzKSB0byB0aGUgU291cmNlRm9yZ2Ugc2VydmVyOgorIAorICAgICAgICAkIG5jZnRwcHV0IHVwbG9hZC5zZi5uZXQgaW5jb21pbmcgbmV0LXNubXAtNS54LnkudGFyLmd6CisgICAgICAgICQgbmNmdHBwdXQgdXBsb2FkLnNmLm5ldCBpbmNvbWluZyBuZXQtc25tcC01LngueS56aXAKKyAgICAgICAgKiBTRiBwYWdlczogICJBZG1pbiIgLT4gIkZpbGUgUmVsZWFzZXMiCisgICAgICAgICogbmV0LXNubXA6ICAiQWRkIFJlbGVhc2UiIChvciAiRWRpdCBSZWxlYXNlIikKKyAgICAgICAgKiBDcmVhdGUgKG9yIGNob29zZSkgYW4gYXBwcm9wcmlhdGUgcmVsZWFzZSBuYW1lCisgICAgICAgICAgICAgZS5nLiAgIjUueC55IHNvdXJjZSBjb2RlIiAgKG9yICI1LngueSBwcmUtcmVsZWFzZXMiKQorICAgICAgICAqICJFZGl0IFRoaXMgUmVsZWFzZSIKKyAgICAgICAgKiBTZWxlY3QgdGhlIHRhcmJhbGwgYW5kL29yIG90aGVyIHJlbGV2YW50IGZpbGVzCisKKyAxNikgQW5ub3VuY2UgdGhlIHJlbGVhc2Ugb24gdGhlIGFwcHJvcHJpYXRlIGxpc3QuCisgICAgIFByZS1yZWxlYXNlIGFubm91bmNlbWVudHMgKGFuZCBhIGNhbGwgZm9yIHRlc3RpbmcpIHNob3VsZCBiZQorICAgICBzZW50IHRvIG5ldC1zbm1wLWNvZGVycywgcmVsZWFzZS1jYW5kaWRhdGVzIHRvIG5ldC1zbm1wLXVzZXJzLgorCisgICAgIEZ1bGwgcmVsZWFzZXMgc2hvdWxkIGJlIGFubm91bmNlZCBvbiBuZXQtc25tcC11c2VycywgYW5kIGFzIGEKKyAgICAgbmV3cyBpdGVtIG9uIHRoZSBwcm9qZWN0IGhvbWUgcGFnZSAtIGluY2x1ZGluZyB0aGUgTkVXUyBzbmlwcGV0CisgICAgIG9mIHNpZ25pZmljYW50IGNoYW5nZXMgc2luY2UgdGhlIGxhc3QgcmVsZWFzZS4KKworIDE3KSBVcGRhdGUgdGhlIGZvbGxvd2luZyBodGRvY3MgZmlsZXMgKGluIHRoZSBtYWluIFNWTiB0cnVuayk6CisgICAgICAgICBodGRvY3MvZG93bmxvYWQuaHRtbAorICAgICAgICAgaHRkb2NzL2Rldi9zY2hlZHVsZS5odG1sCisKKyAgICAgW01ha2Ugc3VyZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyBzZXQgdXAgcHJvcGVybHkgb24gdGhlIHdlYgorICAgICAgc2VydmVyIHNvIHRoYXQgZmlsZXMgY3JlYXRlZCBiZWNvbWUgZ3JvdXAtd3JpdGFibGUhISFdCisKKyAgICAgVGhhdCBjb25jbHVkZXMgdGhlIHByb2Nlc3MgZm9yIHByZS1yZWxlYXNlcyBhbmQgcmVsZWFzZS1jYW5kaWRhdGVzLgorICAgICBGb3IgZnVsbCByZWxlYXNlcywgd2FpdCBhIHdlZWsgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG1ham9yCisgICAgIHByb2JsZW1zLCBiZWZvcmUgY29udGludWluZyB3aXRoIHRoZSByZW1haW5pbmcgc3RlcHMuCisKKyAgICAgICAgSWYgdGhlcmUgYXJlIGtub3duIHByb2JsZW1zIGFuZCBhbm90aGVyIHJlbGVhc2UgaXMgcGxhbm5lZCB0bworICAgICBmaXggdGhlbSwgZG9uJ3QgYW5ub3VuY2UgdGhlIGJyb2tlbiB2ZXJzaW9uIC0gd2FpdCBmb3IgdGhlIHVwZGF0ZWQKKyAgICAgb25lIGluc3RlYWQuCisKKyAxOCkgT25jZSB0aGlzIHdlZWsgaGFzIGVsYXBzZWQsIHN1Ym1pdCBhbiBhbm5vdW5lbWVudCBvZiB0aGUgbmV3CisgICAgIHJlbGVhc2UgdG8gbmV0LXNubXAtYW5ub3VuY2UuICBUaGlzIG1lc3NhZ2Ugd2lsbCBuZWVkIHRvIGJlCisgICAgIGV4cGxpY2l0bHkgYXV0aG9yaXplZCB2aWEgTWFpbE1hbi4KKworICAgICBBbHNvIHVwZGF0ZSB0aGUgSVJDIHRvcGljIHRvIGluY2x1ZGUgbWVudGlvbiBvZiB0aGlzIHJlbGVhc2UuCisKKyAxOSkgRm9yIGEgcmVsZWFzZSBvbiB0aGUgbW9zdCByZWNlbnQgZGV2ZWxvcG1lbnQgbGluZSwgc3RhcnQgYnVnZ2luZworICAgICBXZXMgdG8gdXBkYXRlIHRoZSBmcmVzaG1lYXQsIEZyZWUgU29mdHdhcmUgRGlyZWN0b3J5IGFuZAorICAgICBXaWtpcGVkaWEgZW50cmllcy4KKworIDIwKSBGb3IgYSByZWxlYXNlIG9uIHRoZSBtb3N0IHJlY2VudCBkZXZlbG9wbWVudCBsaW5lLCB1cGRhdGUgdGhlCisgICAgICdodGRvY3MvcGFnZS10b3AuaHRtbCcgZmlsZSAoaW4gdGhlIG1haW4gU1ZOIHRydW5rKSB0byByZWZlcmVuY2UKKyAgICAgdGhlIGxhdGVzdCB2ZXJzaW9uLgorCisgICAgIFVwZGF0ZSB0aGUgZm9sbG93aW5nIGZpbGVzIHdpdGggYW55IGNoYW5nZXM6CisKKyAgICAgICAgIGh0ZG9jcy9kb2NzL3JlYWRtZWZpbGVzL05FV1MKKyAgICAgICAgIGh0ZG9jcy9kb2NzL3JlYWRtZWZpbGVzL0NIQU5HRVMKKyAgICAgICAgIGh0ZG9jcy9kb2NzL3JlYWRtZWZpbGVzL1JFQURNRSoKKyAgICAgICAgIGh0ZG9jcy9DT1BZSU5HCisKKyAgICAgW01ha2Ugc3VyZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyBzZXQgdXAgcHJvcGVybHkgb24gdGhlIHdlYgorICAgICAgc2VydmVyIHNvIHRoYXQgZmlsZXMgY3JlYXRlZCBiZWNvbWUgZ3JvdXAtd3JpdGFibGUhISFdCisgICAgICAgICAKKworIDIxKSBGb3IgYSBtYWpvciBuZXctZmVhdHVyZSByZWxlYXNlIChpLmUuIDUueCksIGNyZWF0ZSB0aGUgcGF0Y2hlcworICAgICBicmFuY2g6CisKKyAgICAgICAgJCBzdm4gY29weSAgL3RhZ3MvRXh0LTUteCAgIC9icmFuY2hlcy9WNS14LXBhdGNoZXMKKworICAgICBhbmQgdXBkYXRlIHRoZSBTVk4gbWFpbiB0cnVuayB3aXRoIGEgbmV3IHZlcnNpb24gbnVtYmVyOgorCisgICAgICAgICQgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbCAtdiA1Lih4KzEpLmRldiAtTSAtUCAtQworCisgICAgIFRoZSAxIHdlZWsgZGVsYXkgKGFuZCBjb250aW51ZWQgY29kZSBmcmVlemUpIGlzIHRvIHRvIGVuc3VyZSB0aGF0CisgICAgIGRldmVsb3BlciBlZmZvcnQgaXMgY29uY2VudHJhdGVkIG9uIGltbWVkaWF0ZSBwcm9ibGVtcyBmb2xsb3dpbmcKKyAgICAgdGhlIHJlbGVhc2UuICBBbnkgbWFqb3IgcHJvYmxlbXMgc2hvdWxkIGhvcGVmdWxseSBjb21lIHRvIGxpZ2h0CisgICAgIGR1cmluZyB0aGlzIHBlcmlvZCwgc28gYWZ0ZXIgYSB3ZWVrIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNyZWF0ZQorICAgICB0aGUgcGF0Y2hlcyBicmFuY2ggYW5kIG9mZmljaWFsbHkgZW5kIHRoZSBjb2RlIGZyZWV6ZSBvbiBNQUlOLgorCisgMjIpIFVwZGF0ZSB0aGUgb2ZmaWNpYWwgcGF0Y2hlcyB0cmFja2VyIHNldDoKKworICAgICAtIGFueSBwYXRjaGVzIGZvciB0aGlzIG5ldyByZWxlYXNlIHRhcmJhbGwgc2hvdWxkIGJlIGdpdmVuCisgICAgICAgcHJpb3JpdHkgOQorICAgICAtIGFsbCBwYXRjaGVzIGZvciB0aGUgcHJldmlvdXMgcmVsZWFzZSBvbiB0aGlzIGxpbmUgc2hvdWxkCisgICAgICAgYmUgbWFya2VkIGF0IHByaW9yaXR5IDUKKyAgICAgLSBhbGwgcGF0Y2hlcyBmb3IgZWFybGllciByZWxlYXNlcyBvbiB0aGlzIGxpbmUgc2hvdWxkCisgICAgICAgYmUgbWFya2VkIGF0IHByaW9yaXR5IDEsIGFuZCBjbG9zZWQKKworICAgICBJZiBhIGxpbmUgaGFzIGJlZW4gZGVzaWduYXRlZCBjbG9zZWQsIHRoZW4gYWxsIG9mZmljaWFsCisgICAgIHBhdGNoZXMgZm9yIHRoYXQgbGluZSBzaG91bGQgYmUgbWFya2VkIGFzIGNsb3NlZCBhcyB3ZWxsLgorCisgMjMpIEhpZGUgdGhlIHByZS1yZWxlYXNlIHJlcG9zaXRvcnkgZnJvbSB0aGUgRmlsZSBSZWxlYXNlcworICAgICBhZG1pbiBwYWdlcy4KKworIDI0KSBDbGVhbiB1cCB0aGUgJ2Rpc3QnIGRpciBvZiB0aGUgcmVsZXZhbnQgVjUteC1wYXRjaGVzIGJyYW5jaC4KKyAgICAgT25seSBsZWF2ZSB0aGUgZm9sbG93aW5nIGZpbGVzOgorCisgICAgIGNoYW5nZWxvZ2ZpeCAgY3Zzc2hvdyAgY3ZzdXAgIGV4dHJhY3RuZXdzICBtYWtlcmVsZWFzZQorICAgICBuZXQtc25tcC5zcGVjICBzbm1wZC1pbml0LmQgIHNubXB0cmFwZC1pbml0LmQKKworICAgICBOb3RlIHRoYXQgYW55IGZpbGVzIHJlbW92ZWQgc2hvdWxkIGFsc28gYmUgZGVsZXRlZCBmcm9tCisgICAgIFNWTiByZXBvc2l0b3J5LgorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQ1JFQVRJTkcgQklOQVJZIERJU1RSSUJVVElPTlMKKworICAwKSBBbHdheXMgUkVNT1ZFIEFMTCBQUkVWSU9VUyBJTlNUQUxMUyBGSVJTVCwgdGhlbiBkbyBhIG1ha2UgaW5zdGFsbAorICAgICBmcm9tIHRoZSB0YXItYmFsbCBleHRyYWN0ZWQgc291cmNlcyBhbmQgKlRIRU4qIHJlYnVpbGQgYWxsCisgICAgIGJpbmFyaWVzIGFnYWluLiAgVGhpcyBlbnN1cmVzIHRoYXQgZXZlcnl0aGluZyAoZXNwZWNpYWxseSBwZXJsCisgICAgIG1vZHVsZXMpIGFyZSBwcm9wZXJseSBsaW5rZWQgYWdhaW5zdCB0aGUgcmlnaHQgbGlicmFyaWVzLgorCisgIDEpIGFsd2F5cyBidWlsZCByZWxlYXNlcyBmcm9tIGEgdGFyYmFsbCwgbm90IGZyb20gU1ZOLgorCisgIDIpIEFkZCBtaWIgbW9kdWxlcyB0aGF0IGFyZSBjb21tb24uICBCYXNpY2FsbHksIGFkZDoKKworICAgICAgIGhvc3QgICAgICAgICAgICAgICAgICAgICAgLS0gd2hlcmUgc3VwcG9ydGVkLgorICAgICAgIGRpc21hbi9ldmVudC1taWIKKyAgICAgICBzbXV4CisKKyAgMykgdXNlIC0td2l0aC1kZWZhdWx0cyAtLXdpdGgtc3lzY29udGFjdD0iVW5rbm93biIgCisgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXN5c2xvY2F0aW9uPSJVbmtub3duIgorCisgIDQpIHdoZW4gcnVubmluZyBtYWtlIGluc3RhbGwsIGRvIGl0IGxpa2U6CisKKyAgICAgJCBtYWtlIGluc3RhbGwgcHJlZml4PS9zb21lL3BhdGgvdG8vaG9tZS9BUkNIL3Vzci9sb2NhbCBcCisgICAgICAgICAgICBleGVjX3ByZWZpeD0vc29tZS9wYXRoL3RvL2hvbWUvQVJDSC91c3IvbG9jYWwKKyAgICAKKyAgNSkgVGFyIGl0IHVwOgorCisgICAgICQgY2QgL3NvbWUvcGF0aC90by9ob21lL0FSQ0gKKyAgICAgJCB0YXIgY3pmIG5ldC1zbm1wLTUuMC4zLUFSQ0gudGFyLmd6IHVzci9sb2NhbAorCisgIDYpIHVwbG9hZCBhbmQgcmVsZWFzZSwgbGlrZSB5b3UgZGlkIGZvciB0aGUgc291cmNlIGNvZGUgYnV0IHdpdGggYQorICAgICBkaWZmZXJlbnQgcGFja2FnZSBuYW1lIGZvciBiaW5hcmllcyAoNS4wLjMgYmluYXJpZXMpLgorCisgIDcpIFJQTXMgW2RvIHRoaXMgaW4gbWFpbiBsaW5lIGV2ZW4gaWYgaXRzIGZvciBhIHBhdGNoIGJyYW5jaF06CisgICAgICQgY2QgZGlzdAorICAgICAkIGNwIC4uL25ldC1zbm1wLTUuMC44LnRhci5neiBycG0vU09VUkNFUworICAgICAkIG1ha2UgUkVMRUFTRT0xCisgICAgIAorICAgICBUaGlzIHNob3VsZCBwdXQgbXVsdGlwbGUgYmluYXJ5IHJwbSBmaWxlcyBpbjoKKyAgICAgICBkaXN0L3JwbS9SUE1TL2kzODYvCisgICAgIEFuZCBvbmUgc291cmNlIFJQTSBpbjoKKyAgICAgICBkaXN0L3JwbS9TUlBNUy8KKworICAgICAqKiogVGhlc2UgZmlsZXMgbmVlZCB0byBiZSByZW5hbWVkIHRvIGluY2x1ZGUgdGhlIE9TIHZlcnNpb24uCisKKyAgICAgICAgIEVHOiAuLi5pMzg2LnJwbSBuZWVkcyB0byBiZWNvbWUgLi4uZmM1LmkzODYucnBtCisKKyAgOCkgUmVtb3ZlIChvciBoaWRlKSBiaW5hcmllcyBmcm9tIG9sZGVyIHJlbGVhc2VzIG9mIHRoZSBzYW1lIGxpbmUsCisgICAgIHdoZXJlIHlvdSBoYXZlIHN1Ym1pdHRlZCBhIG5ld2VyIGJpbmFyeSBmb3IgdGhlIHNhbWUgYXJjaGl0ZWN0dXJlLgorICAgICBPbmNlIHRoZSBsYXN0IGJpbmFyeSBmb3IgYSBwYXJ0aWN1bGFyIHJlbGVhc2UgdmVyc2lvbiBoYXMgYmVlbgorICAgICByZW1vdmVkLCBoaWRlIHRoYXQgcmVwb3NpdG9yeS4KKyAgICAgCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitNQU5VQUwgLSBTVEVQIDEKKworICBDaGFuZ2luZyB0aGUgbGlidG9vbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIE1ha2VmaWxlLnRvcC4KKworICAgICAgLSBJZiBhbnkgaW50ZXJmYWNlcy9zdHJ1Y3R1cmVzIGhhdmUgYmVlbiByZW1vdmVkIG9yIGNoYW5nZWQgc2luY2UgdGhlCisgICAgICAgIGxhc3QgdXBkYXRlLCBpbmNyZW1lbnQgY3VycmVudCAoKzUpLCBhbmQgc2V0IGFnZSBhbmQgcmV2aXNpb24gdG8gMC4KKyAgICAgICAgU3RvcCEKKworICAgICAgLSBJZiBhbnkgaW50ZXJmYWNlcyBoYXZlIGJlZW4gYWRkZWQgc2luY2UgdGhlIGxhc3QgcHVibGljIHJlbGVhc2UsCisgICAgICAgIHRoZW4gaW5jcmVtZW50IGN1cnJlbnQgYW5kIGFnZSwgYW5kIHNldCByZXZpc2lvbiB0byAwLgorICAgICAgICBTdG9wIQorCisgICAgICAtIElmIHRoZSBzb3VyY2UgY29kZSBoYXMgY2hhbmdlZCBhdCBhbGwgc2luY2UgdGhlIGxhc3QgdXBkYXRlLAorICAgICAgICB0aGVuIGluY3JlbWVudCByZXZpc2lvbiAoYzpyOmEgYmVjb21lcyBjOnIrMTphKS4KKworICAgICAgTm90ZTogbWFpbnRlbmFuY2UgcmVsZWFzZXMgKGVnIDUuMi54KSBzaG91bGQgbmV2ZXIgaGF2ZSBjaGFuZ2VzCisgICAgICAgICAgICB0aGF0IHdvdWxkIHJlcXVpcmUgY3VycmVudCB0byBiZSBpbmNyZW1lbnRlZC4KKworICBUaGUgY2hlY2stYXBpLWNoYW5nZXMgc2NyaXB0IGluIHRoZSBkaXN0IGRpcmVjdG9yeSB3aWxsIGNvbnN0cnVjdCBhCisgIGRpZmYgb2YgYWxsIGhlYWRlcnMsIHdoaWNoIGNhbiBiZSB1c2VmdWwgZm9yIGRldGVybWluaW5nIGlmIGFueXRoaW5nCisgIG5lZWRzIGJ1bXBpbmcuCisKKyAgICAgVXBkYXRlIHRoZXNlIHZhcmlhYmxlcyBub3csIHNvIHRoYXQgd2hlbiB5b3UgcnVuCisgICAgIG1ha2UgaW4gYSBzZWNvbmQgdG8gdGVzdCB0aGluZ3MgeW91IGNhbiBzcG90IGxpYnRvb2wgeWVsbGluZworICAgICBhYm91dCBpbXByb3BlciBudW1iZXJpbmcgYmVmb3JlIHlvdSBtYWtlIHRoZSByZWxlYXNlIGFuZCBub3QKKyAgICAgYWZ0ZXIgeW91J3ZlIHVwbG9hZGVkIHRoZSB0YXIgYmFsbCA6LS8KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK01BTlVBTCAtIFNURVAgMgorCisgIENoYW5naW5nIHRoZSBsaWJ0b29sIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gTWFrZWZpbGUudG9wLgorICBVcGRhdGluZyB0aGUgQ2hhbmdlTG9nIGZpbGUKKworICAgICAgLSBUaGUgQ2hhbmdlTG9nIGVudHJpZXMgYXJlIGV4dHJhY3RlZCAobm9ybWFsbHkgYXV0b21hdGljYWxseSkKKyAgICAgICAgdXNpbmcgdGhlIGNvbW1hbmQ6CisKKyAgICAgICAgICAkIHN2bjJjbCAtZiBDaGFuZ2VMb2cuYWRkIC0tYnJlYWstYmVmb3JlLW1zZyAtLXN0b3Atb24tY29weQorCisgICAgICAgIElmIHlvdSBkb24ndCBoYXZlIHN2bjJjbCBpbnN0YWxsZWQsIHlvdSBjYW4gdHJ5IGFuZCBmaW5kIGEKKyAgICAgICAgc3VpdGFibGUgYmluYXJ5IHBhY2thZ2UgZm9yIHlvdXIgYXJjaGl0ZWN0dXJlLCBvciB5b3UgY2FuCisgICAgICAgIGdldCBpdCBkaXJlY3RseSBmcm9tCisgICAgICAgICAgICAgIGh0dHA6Ly9jaC50dWRlbGZ0Lm5sL35hcnRodXIvc3ZuMmNsCisgICAgICAgIFlvdSBtYXkgbmVlZCB0byByZW5hbWUgdGhlIHNjcmlwdCBmcm9tICdzdm4yY2wuc2gnIHRvICdzdm4yY2wnCisKKyAgICAgIC0gSW4gZWl0aGVyIGNhc2UsIHRoZXkgYXJlIGZpeGVkIHVwIChhdXRvbWF0aWNhbGx5KSB1c2luZzoKKworICAgICAgICAgICQgcGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCA8IENoYW5nZUxvZy5hZGQgPiBDaGFuZ2VMb2cucmVhbGx5YWRkCisgICAgICAgIG9yCisgICAgICAgICAgJCBwZXJsIGRpc3QvY2hhbmdlbG9nZml4IFY1LXtOfS1wYXRjaGVzIDwgQ2hhbmdlTG9nLmFkZCA+IENoYW5nZUxvZy5yZWFsbHlhZGQKKworICAgICAgLSBUaGUgbWFudWFsIHByb2Nlc3Npbmcgc3RlcCBpcyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIHBvcnRpb24KKyAgICAgICAgb2YgdGhlIGZpbGUgJ0NoYW5nZUxvZy5yZWFsbHlhZGQnIGludG8gJ0NoYW5nZUxvZycuICBZb3UgY2FuCisgICAgICAgIHVzdWFsbHkgZmluZCB0aGUgcG9pbnQgd2hlcmUgdGhlIHByZXZpb3VzIHJlbGVhc2Ugc3RhcnRlZCBpbgorICAgICAgICB0aGUgZmlsZSBieSBzZWFyY2hpbmcgZm9yICJ2ZXJzaW9uIHRhZyIuCisKKyAgICAgIC0gUGxlYXNlIGtlZXAgdGhlIGxpbmUgb2YgZGFzaGVzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsIGFzIHRoaXMKKyAgICAgICAgbWFrZXMgaXQgZWFzaWVyIHRvIGNvcHkgZHVyaW5nIHRoZSBuZXh0IHJlbGVhc2UuCisKKyAgICAgIC0gSWYgdXNpbmcgZW1hY3MsIHN3aXRjaCBmcm9tIGNoYW5nZWxvZy1tb2RlIHRvIHRleHQtbW9kZS4KKworICAgICAgLSBDaGVjayBpbiB0aGUgbmV3IENoYW5nZUxvZzoKKworICAgICAgICAgICQgc3ZuIGNvbW1pdCAtbSAidXBkYXRlIGZvciByZWxlYXNlIFgiIENoYW5nZUxvZworCisgICAgICAgIFRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5ICJtYWtlcmVsZWFzZSIKKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK01BTlVBTCAtIFNURVAgMworCitVcGRhdGluZyBSRUFETUUsIE5FV1MsIGFuZCBDSEFOR0VTIGZpbGVzCisKKyAgWyBUaGlzIGluZm9ybWF0aW9uIGhhcyBiZWVuIG1vdmVkIHRvOgorCisgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL0NvbW1pdF9tZXNzYWdlX2F1dG8tZXh0cmFjdGlvbl9mb3JtYXRzCisKKyAgXQorCitIb3dldmVyLCBsZWF2aW5nIHNvbWUgZXhhbXBsZXMgaGVyZSBmb3IgcXVpY2sgcmVmZXJyYWw6CisKKyAgU1ZOIGNvbW1pdCBtZXNzYWdlcyB0aGF0IGdlbmVyYXRlIGF1dG8tTkVXUyBhbmQgYXV0by1DSEFOR0VTCisgIGV4dHJhY3Rpb25zIHNob3VsZCBiZSBmb3JtYXR0ZWQgbGlrZSB0aGUgZm9sbG93aW5nIGV4YW1wbGVzOgorCisgICAgTkVXUzogc25tcGQ6IEkgZGlkIHNvbWV0aGluZyByZWFsbHkgY29vbCB0byB0aGUgYWdlbnQKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IGZpeGVkIHNvbWV0aGluZyBtaW5vciBpbiBzbm1wdHJhcGQKKyAgICBORVdTOiBwZXJsOiBQQVRDSDogMTIzLDQ1NjogQXBwbGllZCBwYXRjaGVzIDEyMyBhbmQgNDU2IHRvIHN1cHBvcnQgcGVybDYKKyAgICBDSEFOR0VTOiBCVUc6IDEzOiBGaXhlZCBidWcgMTMgJiBzZWN1cmVkIHRoZSB3b3JsZCBhdCBsYXJnZSBhZ2FpbnN0IGhhY2tlcnMKKyAgICBORVdTOiBwZXJsOiBQQVRDSDogMTIzOiBmcm9tIFJvYmVydDogZGlkIHNvbWV0aGluZworICAgIE5FV1M6IHBlcmw6IFBBVENIOiAxMjM6IGZyb20gIlJvYmVydCBTdG9yeSI6IGRpZCBzb21ldGhpbmcgZWxzZQpkaWZmIC0tZ2l0IGEvZGlzdC9hdXRvY29uZi12ZXJzaW9uIGIvZGlzdC9hdXRvY29uZi12ZXJzaW9uCmluZGV4IGFjYzA3OTcuLmM5NWZlYTUgMTAwNjQ0Ci0tLSBhL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgorKysgYi9kaXN0L2F1dG9jb25mLXZlcnNpb24KQEAgLTEgKzEgQEAKLTIuNTkKKzIuNjMKZGlmZiAtLWdpdCBhL2Rpc3QvY2hlY2stYXBpLWNoYW5nZSBiL2Rpc3QvY2hlY2stYXBpLWNoYW5nZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZjYxZTQyCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9jaGVjay1hcGktY2hhbmdlCkBAIC0wLDAgKzEsNTQgQEAKKyMhL2Jpbi9zaAorIworIyBzaW1wbGlzdGljIHNjcmlwdCB0byBjaGVjayBhbGwgaGVhZGVyIGZpbGVzIGZvcgorIyBkaWZmZXJlbmNlcy4gSW50ZW5kZWQgdG8gaGVscCBkZXRlY3QgYXBpIGNoYW5nZXMKKyMgYmV0d2VlbiByZWxlYXNlcy4KKyMKKyMgaXQncyBub3QgcHJldHR5IG9yIGVmZmljaWVudCwgYW5kIGluc3BlY3Rpb24gb2YKKyMgdGhlIHJlc3VsdHMgbXVzdCBiZSBkb25lIG1hbnVhbGx5LgorIworIyBpdCdzIGFsc28gbm90IHNlY3VyZSAoZG9uJ3QgcnVuIGFzIHJvb3QpCisjIG9yIHBvcnRhYmxlLiBUZXN0ZWQgb24gTGludXguCisjCisKK2lmIFsgIngkMSIgPSAieCIgLW8gIngkMiIgPSAieCIgXTsgdGhlbgorICAgZWNobyAiVXNhZ2U6ICQwIDxvbGQtZGlyPiA8bmV3LWRpcj4iCisgICBleGl0IDEKK2ZpCisKK29kPSQxCituZD0kMgorRElSPS90bXAKK09VVFBVVD0kRElSL2FwaS1kaWZmLnBhdAorT0RUPSRESVIvYXBpLW9kCisKK2lmIFsgISAtZCAkb2QgXTsgdGhlbgorICAgZWNobyAib2xkIGRpciAkb2QgZG9lc24ndCBleGlzdCIKKyAgIGV4aXQgMQorZmkKKworaWYgWyAhIC1kICRuZCBdOyB0aGVuCisgICBlY2hvICJvbGQgZGlyICRuZCBkb2Vzbid0IGV4aXN0IgorICAgZXhpdCAxCitmaQorCisjIGZpbmQgaGVhZGVyIGluIG5kCitybSAtZiAkT1VUUFVUICRPRFQgMj4vZGV2L251bGwKKyhjZCAkb2QgJiYgZmluZCAuIC10eXBlIGYgLW5hbWUgIiouaCJ8c29ydCA+ICRPRFQpCisKK09IPWBjYXQgJE9EVGAKK2ZvciBoIGluICRPSAorZG8KKyAgIG5oPSRuZC8kaAorICAgb2g9JG9kLyRoCisgICBlY2hvICIqICRuaCIKKyAgIGlmIFsgLWYgIiRuaCIgXTsgdGhlbgorICAgICAgZWNobyAiKiBkaWZmOiAkaCB2cyAkbmgiID4+ICRPVVRQVVQKKyAgICAgIGRpZmYgLXUgJG9oICRuaCA+PiAkT1VUUFVUIDI+JjEKKyAgIGVsc2UKKyAgICAgIGVjaG8gIiogT2xkIGhlYWRlciAkaCBub3QgZm91bmQgaW4gbmV3IGhlYWRlcnMiID4+ICRPVVRQVVQKKyAgIGZpCitkb25lCisKK2VjaG8gIkluc3BlY3Qgb3V0cHV0IGluICRPVVRQVVQiCitlY2hvICJTZWUgTWFrZWZpbGUudG9wIGZvciBsaWJ0b29sIHZlcnNpb24gYnVtcGluZyBydWxlcy4iCmRpZmYgLS1naXQgYS9kaXN0L2N2c3Nob3cgYi9kaXN0L2N2c3Nob3cKaW5kZXggNjIzYjMyZC4uNzUzOTU5NSAxMDA3NTUKLS0tIGEvZGlzdC9jdnNzaG93CisrKyBiL2Rpc3QvY3Zzc2hvdwpAQCAtMSw0NiArMSw2OSBAQAotIyEvYmluL2Jhc2gKLSMKLSMgJElkJAorIyEvYmluL3NoCiAjCiBleHBvcnQgQ1ZTX1JTSD1zc2gKIFRBRz0KIAotaWYgWyAkIyAtZXEgMCBdOyB0aGVuCi0JRElSPS4KLWVsc2UKLQlpZiBbICQjIC1uZSAxIF07IHRoZW4KLQkJZWNobyAidXNhZ2U6ICQwIDx3b3JraW5nIGRpcmVjdG9yeT4iCi0JCWV4aXQKLQlmaQotCURJUj0kMQotZmkKLQotaWYgWyAhIC1kICRESVIgXTsgdGhlbgotCWVjaG8gIm5vIHN1Y2ggZGlyZWN0b3J5ICckRElSJyIKLQlleGl0Ci1maQotCi1pZiBbICEgLWQgJERJUi9DVlMgXTsgdGhlbgotCWVjaG8gIickRElSJyBoYXMgbm8gQ1ZTIGRpcmVjdG9yeSEiCi0JZXhpdAotZmkKLQotaWYgWyAhIC1mICRESVIvQ1ZTL1JlcG9zaXRvcnkgXTsgdGhlbgorZG9fY3ZzKCkKK3sKKyAgIERJUj0kMQorICAgaWYgWyAhIC1mICRESVIvQ1ZTL1JlcG9zaXRvcnkgXTsgdGhlbgogCWVjaG8gIickRElSJyBoYXMgbm8gQ1ZTL1JlcG9zaXRvcnkhIgogCWV4aXQKLWZpCisgICBmaQogCi1pZiBbICEgLWYgJERJUi9DVlMvUm9vdCBdOyB0aGVuCisgICBpZiBbICEgLWYgJERJUi9DVlMvUm9vdCBdOyB0aGVuCiAJZWNobyAiJyRESVInIGhhcyBubyBDVlMvUm9vdCEiCiAJZXhpdAotZmkKKyAgIGZpCiAKLWlmIFsgLWYgJERJUi9DVlMvVGFnIF07IHRoZW4KKyAgIGlmIFsgLWYgJERJUi9DVlMvVGFnIF07IHRoZW4KIAlUQUc9Ii1yIGBjYXQgJERJUi9DVlMvVGFnIHwgY3V0IC1jIDItYCIKKyAgIGZpCisKKyAgIFJFUD0iYGNhdCAkRElSL0NWUy9SZXBvc2l0b3J5YCIKKyAgIFJPT1Q9ImBjYXQgJERJUi9DVlMvUm9vdGAiCisKKyAgIGVjaG8gIkRpcmVjdG9yeSAkRElSIGlzIHJvb3RlZCBhdCAkUk9PVCwgJFRBRyAkUkVQLi4uIgorICAgZWNobyAiICAgdXBkYXRlIHdpdGggY3ZzIC16MyAtZCAkUk9PVCAtcSBjbyAkVEFHIC1kICRESVIgJFJFUCIKK30KKworZG9fc3ZuKCkKK3sKKyAgIERJUj0kMQorICAgaWYgWyAhIC1kICRESVIvLnN2biBdOyB0aGVuCisJZWNobyAiJyRESVInIGhhcyBubyAuc3ZuLyBzdWJkaXIhIgorCWV4aXQKKyAgIGZpCisKKyAgIFJPT1Q9YHN2biBpbmZvIHwgZ3JlcCBVUkx8Y3V0IC1mMiAtZCAiICJgCisgICBpZiBbIC16ICIkUk9PVCIgXTsgdGhlbgorICAgICAgZWNobyAiQ291bGRuJ3QgZmluZCByb290IGZyb20gJERJUi8uc3ZuL2VudHJpZXMiCisgICAgICBleGl0IDEKKyAgIGZpCisKKyAgIGVjaG8gIkRpcmVjdG9yeSAkRElSIGlzIHJvb3RlZCBhdCAkUk9PVC4uLiIKKyAgIGVjaG8gIiAgIHVwZGF0ZSB3aXRoIHN2biBjbyAkUk9PVCAkRElSIgorfQorCitpZiBbICQjIC1lcSAwIF07IHRoZW4KKwlESVJTPS4KK2Vsc2UKKwlESVJTPSRACiBmaQogCi1SRVA9ImBjYXQgJERJUi9DVlMvUmVwb3NpdG9yeWAiCi1ST09UPSJgY2F0ICRESVIvQ1ZTL1Jvb3RgIgorZm9yIGQgaW4gJERJUlMKK2RvCisgICBpZiBbICEgLWQgJGQgXTsgdGhlbgorCWVjaG8gIm5vIHN1Y2ggZGlyZWN0b3J5ICckZCciCisJZXhpdAorICAgZmkKIAotZWNobyAiRGlyZWN0b3J5ICRESVIgaXMgcm9vdGVkIGF0ICRST09ULCAkVEFHICRSRVAuLi4iCi1lY2hvICJ1cGRhdGUgd2l0aCBjdnMgLXozIC1kICRST09UIC1xIGNvICRUQUcgLWQgJERJUiAkUkVQIgorICAgaWYgWyAtZCAkZC9DVlMgXTsgdGhlbgorCWRvX2N2cyAkZAorICAgZWxpZiBbIC1kICRkLy5zdm4gXTsgdGhlbgorCWRvX3N2biAkZAorICAgZWxzZQorCWVjaG8gIickZCcgaGFzIG5laXRoZXIgQ1ZTIG5vciBTVk4gaW5mb3JtYXRpb24hIgorICAgZmkKK2RvbmUKKwpkaWZmIC0tZ2l0IGEvZGlzdC9jdnN1cCBiL2Rpc3QvY3ZzdXAKaW5kZXggMDhjOGE3NS4uY2EwN2IwZiAxMDA3NTUKLS0tIGEvZGlzdC9jdnN1cAorKysgYi9kaXN0L2N2c3VwCkBAIC0xLDggKzEsOCBAQAotIyEvdXNyL2Jpbi9lbnYgYmFzaAorIyEvYmluL3NoCiAjCiAjICRJZCQKICMKLWV4cG9ydCBDVlNfUlNIPXNzaAorQ1ZTX1JTSD1zc2g7IGV4cG9ydCBDVlNfUlNICiBUQUc9CiBXTz0wCiBERVNUPQpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICBUQVI9Jy91c3IvYmluL3N0YXIgLUh1c3RhciAtbm90IC1wYXQ9IiovQ1ZTLyoiIC1jIC1mJwogICAgIGVsaWYgWyAteCAvYmluL3RhciBdOyB0aGVuCiAgICAgICAgIFRBUj0iL2Jpbi90YXIgLS1leGNsdWRlPUNWUyAtYyAtZiIKKyAgICAgICAgZWNobyAid2FybmluZzogc3RhciBub3QgYXZhaWxhYmxlLCB1c2luZyAobGVzcyBwb3J0YWJsZSkgdGFyLi4uIgogICAgIGVsc2UKICAgICAgICAgZWNobyAibmVpdGhlciAvdXNyL2Jpbi9zdGFyIG5vciAvYmluL3RhciBmb3VuZC4iCiAgICAgICAgIGV4aXQKZGlmZiAtLWdpdCBhL2Rpc3QvbWFrZXJlbGVhc2UgYi9kaXN0L21ha2VyZWxlYXNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiNDZiOWY5Li4wMDAwMDAwCi0tLSBhL2Rpc3QvbWFrZXJlbGVhc2UKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0KLXVzZSBzdHJpY3Q7Ci11c2UgUG9kOjpVc2FnZTsKLQotCi1teSAlb3B0czsKLW15ICRkZXNjcjsKLQotTG9jYWxHZXRPcHRpb25zKFwlb3B0cywKLQkgICBbJ3J8cmVnZXhwLWlnbm9yZS1zdGVwcz1zJywnSWdub3JlIHRoZXNlIFJFR0VYUCBzdGVwcyddLAotCSAgIFsnc3xzdGFydC1hdD1zJywgICAgICAgICAgICdTa2lwIGFsbCBzdGVwcyB1bnRpbCBBUkcnXSwKLQkgICBbJ2l8aW50ZXJhY3RpdmUnLCAgICAgICAgICAnUHJvbXB0IHdoZXRoZXIgdG8gZG8gZWFjaCBzdGVwJ10sCi0JICAgWydufGRyeS1ydW4nLCAgICAgJ0RyeSBydW4gb25seS4gIERvblwndCBhY3R1YWxseSBkbyBhbnl0aGluZy4nXSwKLQkgICBbJ2h8aGVscCcsICdIZWxwJ10pOwotCi1wb2QydXNhZ2UoMSkgaWYgKCRvcHRzeydoJ30pOwotbXkgJHZlcnNpb24gPSBzaGlmdDsKLXBvZDJ1c2FnZSggIk5vIHZlcnNpb24gc3VwcGxpZWQiICkgaWYgKCEkdmVyc2lvbik7Ci1teSAkZXh0cmFqdW5rID0gc2hpZnQ7Ci1wb2QydXNhZ2UoICJVbmV4cGVjdGVkIGFyZ3VtZW50ICgkZXh0cmFqdW5rKSIgKSBpZiAoJGV4dHJhanVuayk7Ci1teSAkdnRhZyAgID0gJHZlcnNpb247Ci1teSAkYnJhbmNoID0gIiI7Ci0jIEVuc3VyZSB3ZSBoYXZlIGJvdGggbnVtZXJpYyBhbmQgdGFnLXN0eWxlIHZlcnNpb24gbGFiZWxzCi0jIHBsdXMgdGhlIGJyYW5jaCB0aGF0IHdlJ3JlIHdvcmtpbmcgZnJvbSAoaWYgcmVsZXZhbnQpCi1pZiAoICR2ZXJzaW9uID1+IC9eRXh0LykgewotICAgICR2ZXJzaW9uID1+IHMvXkV4dC0vL2c7Ci0gICAgJHZlcnNpb24gPX4gcy8tLy4vZzsKLX0gZWxzZSB7Ci0gICAgJHZ0YWcgPX4gcy9cLi8tL2c7Ci0gICAgJHZ0YWcgPSAiRXh0LSIgLiAkdnRhZzsKLX0KLWlmICggJHZlcnNpb24gPX4gL14oWzAtOV1cLlswLTldKVwuWzAtOV0vKSB7Ci0gICAgKCRicmFuY2ggPSAkdmVyc2lvbikgPX4gcy8oWzAtOV1cLlswLTldKVwuWzAtOV0uKi9cMS87Ci0gICAgJGJyYW5jaCA9fiBzL1wuLy0vOwotICAgICRicmFuY2ggPSAiViR7YnJhbmNofS1wYXRjaGVzIjsKLX0KLQotIyBNYWtlIHN1cmUgd2UncmUgYXQgdGhlIHJvb3Qgb2YgdGhlIGJ1aWxkIHRyZWUKLSMgIChpZiB3ZSdyZSBpbiB0aGUgZGlzdCBkaXJlY3RvcnksIHRoZW4gY2QgLi4pCi1jaGRpcigiLi4iKSBpZiAoLWYgJ21ha2VyZWxlYXNlJyk7Ci1kaWUgIk5vdCBhdCByb290IG9mIGJ1aWxkIHRyZWUiIGlmICghIC1mICdjb25maWd1cmUuaW4nKTsKLQotIwotIyAgVEVTVElORzoKLSMKLSMgU3RlcCAxKSBFbnN1cmUgdGhlIGJ1aWxkIHRyZWUgaXMgdXAgdG8gZGF0ZQotU3lzdGVtKCJ1cGRhdGUiLCJzdm4gLXUgc3RhdHVzIik7Ci1TeXN0ZW0oInVwZGF0ZSIsInN2biAtcSB1cGRhdGUiKTsKLQotIyBTdGVwIDIpIENoYW5nZSB0aGUgbGlidG9vbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIE1ha2VmaWxlLnRvcAotbWFudWFsc3RlcCgndmVyc2lvbjptYW51YWxlZGl0JywKLQkgICAiWW91IChtYXkpIG5lZWQgdG8gZWRpdCBNYWtlZmlsZS50b3AgdG8gdXBkYXRlIHRoZSBsaWJyYXJ5IHZlcnNpb24gbnVtYmVyaW5nCi0gICAgICh1c3VhbGx5IGp1c3QgZm9yIHRoZSBmaXJzdCBwcmUtcmVsZWFzZSBvZiBhIGdpdmVuIHZlcnNpb24pLgotICAgICAgICBTZWUgdGhlIGNvbW1lbnRzIGluIFJFTEVBU0UtSU5TVFJVQ1RJT05TCi0gICAgICAgIGFib3V0IExJQkNVUlJFTlQsIExJQkFHRSBhbmQgTElCUkVWSVNJT04uCi0KLSAgSSdsbCBjb21taXQgdGhlIGZpbGUgZm9yIHlvdSBhZnRlciB5b3UncmUgZG9uZQotIik7Ci1TeXN0ZW0oInZlcnNpb246Y29tbWl0IiwKLSAgICAgICAic3ZuIGNvbW1pdCAtbSBcInZlcnNpb24gdXBkYXRlXCIgTWFrZWZpbGUudG9wIik7Ci0KLSMgU3RlcCAzKSBjb25maWd1cmUgYW5kIGJ1aWxkIGFuZCB0ZXN0IGl0Ci1teSAkdHJhbnNwb3J0YXJncyA9ICIiOwotaWYgKCAkXk8gZXEgImxpbnV4IiApIHsKLSAgICAkdHJhbnNwb3J0YXJncyA9ICItLXdpdGgtdHJhbnNwb3J0cz1JUFgiOwotfQotbXkgJGNvbmZpZ3VyZWFyZ3MgPSAiLS1jYWNoZT1jb25maWcuY2FjaGUgLS13aXRoLWRlZmF1bHRzICIuCi0gICAgIi0td2l0aC1taWItbW9kdWxlcz0nICAgICBleGFtcGxlcyBleGFtcGxlcy9leGFtcGxlICAgIi4KLSAgICAiICB0ZXN0aGFuZGxlciBzbXV4IFJtb24nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLgotICAgICIgJHRyYW5zcG9ydGFyZ3MgICAgICAgIC0tZW5hYmxlLWlwdjYgICAgICAgICAgICAgICAgICIuCi0gICAgIi0tZW5hYmxlLWVtYmVkZGVkLXBlcmwgLS1lbmFibGUtc2hhcmVkIjsKLVN5c3RlbSgiYnVpbGQ6ZGlzdGNsZWFuIiwibWFrZSBkaXN0Y2xlYW4iKSBpZiAoLWYgJ01ha2VmaWxlJyk7Ci1TeXN0ZW0oImJ1aWxkOmNvbmZpZ3VyZSIsIi4vY29uZmlndXJlICRjb25maWd1cmVhcmdzIik7Ci1TeXN0ZW0oImJ1aWxkOm1ha2UiLCJtYWtlIik7Ci1TeXN0ZW0oImJ1aWxkOnRlc3QiLCJtYWtlIHRlc3QgVEVTVE9QVFM9LW4iKTsKLQotIwotIyBET0NVTUVOVEFUSU9OCi0jCi0jIFN0ZXAgNCkgVXBkYXRlIGRveHlnZW4gdmVyc2lvbiBudW1iZXIsIGFuZCBnZW5lcmF0ZSBtYW4gcGFnZXMKLVN5c3RlbSgiZG9jczpkb3h5Z2VuY29uZiIsCi0gICAgICAgInBlcmwgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbCAtdiAkdmVyc2lvbiAtTSAtUCAtQyAtdCBkb3h5Z2VuIik7Ci1TeXN0ZW0oImRvY3M6bWFrZSIsIm1ha2UgZG9jcyIpOwotU3lzdGVtKCJkb2NzOm1hbmNwIiwibWFrZSBtYW5jcCIpOwotU3lzdGVtKCJkb2NzOnVwZGF0ZSIsInN2biAtdSBzdGF0dXMgbWFuIik7Ci1tYW51YWxzdGVwKCdkb2NzOm1hbnVhbGFkZG5ld21hbicsCi0gICJVcGRhdGUgbWFuL01ha2VmaWxlLmluIHdpdGggZGV0YWlscyBvZiBhbnkgbmV3IG1hbiBwYWdlcywKLSAgYW5kIHJ1biAnc3ZuIGFkZCcgb24gdGhlbS4KLSAgSSdsbCBjb21taXQgdGhlc2UgY2hhbmdlcyBmb3IgeW91IGFmdGVyIHlvdSdyZSBkb25lCi0iKTsKLVN5c3RlbSgiZG9jczpjb21taXQiLCJzdm4gY29tbWl0IC1tIFwiZG9jdW1lbnRhdGlvbiB1cGRhdGVcIiBtYW4iKTsKLQotIyBTdGVwIDUpIENoZWNrIGNvZGUgZm9yIGlsbGVnYWwgY29uc3RydWN0cwotU3lzdGVtKCJjb2RlOmNoZWNrY29tbWVudHMiLCJtYWtlIGNoZWNrcyIpOwotCi0jIFN0ZXAgNikgVXBkYXRlIE1ha2VmaWxlIGRlcGVuZGVuY2llcwotU3lzdGVtKCJjb2RlOm1ha2VkZXBlbmQiLCJtYWtlIGRpc3RkZXBlbmQiKTsKLVN5c3RlbSgiY29kZTpjb21taXRkZXBlbmQiLCJzdm4gY29tbWl0IC1tIFwibWFrZSBkZXBlbmRcIiBgZmluZCAuIC1uYW1lIE1ha2VmaWxlLmRlcGVuZGAiKTsKLQotIyBTdGVwIDcpIFVwZGF0ZSBDaGFuZ2VMb2cKLSMgICBYWFg6IE1heSBuZWVkIHRvIGV4dGVuZCB0aGUgZm9sZGluZyBsaW5lLWxlbmd0aCwKLSMgICAgICAgIHRvIGF2b2lkIHN2bjJjbCBtYW5nbGluZyBDSEFOR0VTL05FV1MgZW50cmllcwotU3lzdGVtKCJjaGFuZ2Vsb2c6c3ZuMmNsIiwKLSAgICAgICAic3ZuMmNsIC1mIENoYW5nZUxvZy5hZGQgLS1icmVhay1iZWZvcmUtbXNnIC0tc3RvcC1vbi1jb3B5Iik7Ci1TeXN0ZW0oImNoYW5nZWxvZzpjaGFuZ2Vsb2dmaXgiLAotICAgICAgICJwZXJsIGRpc3QvY2hhbmdlbG9nZml4ICRicmFuY2ggPCBDaGFuZ2VMb2cuYWRkID4gQ2hhbmdlTG9nLnJlYWxseWFkZCIpOwotbWFudWFsc3RlcCgiY2hhbmdlbG9nOm1hbnVhbGVkaXQiLAotICAgICAgICAgICAiWW91IG5lZWQgdG8gbWFudWFsbHkgaW5zZXJ0IHRoZSAqcmVsZXZlbnQqIHBvcnRpb25zIG9mCi0gICdDaGFuZ2VMb2cucmVhbGx5YWRkJyBpbnRvIHRoZSBDaGFuZ2VMb2cgZmlsZS4KLSAgSSdsbCBjb21taXQgdGhlc2UgY2hhbmdlcyBmb3IgeW91IGFmdGVyd2FyZHMiKTsKLVN5c3RlbSgiY2hhbmdlbG9nOmNvbW1pdCIsInN2biBjb21taXQgLW0gXCJ2ZXJzaW9uIHVwZGF0ZVwiIENoYW5nZUxvZyIpOwotCi0jIFN0ZXAgOCkgVXBkYXRlIFJFQURNRS9ORVdTL0NIQU5HRVMKLVN5c3RlbSgiZG9jczpuZXduZXdzIiwKLSAgICAgICAicGVybCBkaXN0L2V4dHJhY3RuZXdzIC1zIC0tLS0tIC1lIC0tLS0tIENoYW5nZUxvZyIpOwotU3lzdGVtKCJkb2NzOm5ld25ld3MiLAotICAgICAgICJwZXJsIGRpc3QvZXh0cmFjdG5ld3MgLWMgQ0hBTkdFUy5uZXcyIC1uIE5FV1MubmV3MiBDaGFuZ2VMb2cucmVhbGx5YWRkIik7Ci1tYW51YWxzdGVwKCJkb2NzOlJFQURNRSIsCi0gICAgICAgICAgICJZb3UgbmVlZCB0byBtYW51YWxseSBpbnNlcnQgdGhlIHJlbGV2ZW50IHBvcnRpb25zIG9mCi0gICdDSEFOR0VTLm5ldycgYW5kICdORVdTLm5ldycgaW50byB0aGUgQ0hBTkdFUyBhbmQgTkVXUyBmaWxlLgotICAoVGhlcmUgYXJlIGFsdGVybmF0aXZlIHZlcnNpb25zIGluICdDSEFOR0VTLm5ldzInIGFuZCAnTkVXUy5uZXcyJykKLSAgWW91IG1heSB3aXNoIHRvIHVwZGF0ZSB0aGUgUkVBRE1FIGZpbGUgYXMgd2VsbC4KLSAgSSdsbCBjb21taXQgdGhlc2UgY2hhbmdlcyBmb3IgeW91IGFmdGVyd2FyZHMiKTsKLVN5c3RlbSgiZG9jczpjb21taXQiLAotICAgICAgICJzdm4gY29tbWl0IC1tIFwidmVyc2lvbiB1cGRhdGVcIiBSRUFETUUgTkVXUyBDSEFOR0VTIik7Ci0KLSMKLSMgUkVMRUFTRQotIwotIyBTdGVwICA5KSAgUmVzeW5jIGNvZGUgKG9taXR0ZWQpCi0jIFN0ZXAgMTApICBVcGRhdGUgdmVyc2lvbgotU3lzdGVtKCJyZWxlYXNlOnZlcnNpb25zdGFtcCIsCi0gICAgICAgInBlcmwgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbCAtdiAkdmVyc2lvbiAtTSAtUCAtQyIpOwotCi0jIFN0ZXAgMTEpICBDcmVhdGUgdGhlIHJlbGVhc2UgdGFnIGNoZWNrcG9pbnQKLW15ICRyb290PSJodHRwczovL25ldC1zbm1wLnN2bi5zb3VyY2Vmb3JnZS5uZXQvc3Zucm9vdC9uZXQtc25tcCI7Ci1pZiAoICRicmFuY2ggKSB7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOnRhZyIsCi0gICAgICAgInN2biBjb3B5IC1tIFwiJHZlcnNpb24gcmVsZWFzZVwiICRyb290L2JyYW5jaGVzLyRicmFuY2ggJHJvb3QvdGFncy8kdnRhZyIpOwotfSBlbHNlIHsKLSAgICBTeXN0ZW0oInJlbGVhc2U6dGFnIiwKLSAgICAgICAic3ZuIGNvcHkgLW0gXCIkdmVyc2lvbiByZWxlYXNlXCIgJHJvb3QvdHJ1bmsgJHJvb3QvdGFncy8kdnRhZyIpOwotfQotCi0jIFN0ZXAgMTIpICBDb25zdHJ1Y3QgdGhlIHRhcmJhbGwKLW15ICR0YXIgPSAic3RhciBhcnR5cGU9dXN0YXIiOyAgICAjIFhYWCAtIGNoZWNrIGZvciBzdGFyL2d0YXIvZXRjCi1TeXN0ZW0oInJlbGVhc2U6bWFrZWRpc3QiLAotICAgICAgICJzdm4gZXhwb3J0ICRyb290L3RhZ3MvJHt2dGFnfS9uZXQtc25tcCBuZXQtc25tcC0kdmVyc2lvbiIpOwotU3lzdGVtKCJyZWxlYXNlOnJlbW92ZWZpbGVzIiwKLSAgICAgICAibmV0LXNubXAtJHZlcnNpb24vcmVtb3ZlLWZpbGVzIG5ldC1zbm1wLSR2ZXJzaW9uIik7Ci1TeXN0ZW0oInJlbGVhc2U6bWFrZWRpc3QiLAotICAgICAgICIkdGFyIC1jIC16IC1mIG5ldC1zbm1wLSR7dmVyc2lvbn0udGFyLmd6ICBuZXQtc25tcC0kdmVyc2lvbiIpOwotU3lzdGVtKCJyZWxlYXNlOm1ha2V6aXBjbGVhbiIsCi0gICAgICAgInJtIC1mIG5ldC1zbm1wLSR7dmVyc2lvbn0uemlwIik7Ci1TeXN0ZW0oInJlbGVhc2U6bWFrZXppcCIsCi0gICAgICAgInppcCAtciBuZXQtc25tcC0ke3ZlcnNpb259LnppcCAgbmV0LXNubXAtJHZlcnNpb24iKTsKLQotCi0jIFN0ZXAgMTMpICBTaWduIChvciBjaGVja3N1bSkgdGhlIHBhY2thZ2UKLW15ICRzaWcxOwotbXkgJHNpZzI7Ci1teSAkcGtnMSA9ICJuZXQtc25tcC0ke3ZlcnNpb259LnRhci5neiI7Ci1teSAkcGtnMiA9ICJuZXQtc25tcC0ke3ZlcnNpb259LnppcCI7Ci0KLVN5c3RlbSgicmVsZWFzZTpzZWFyY2hpbmctZ3BnLWtleXMiLAotICAgICAgICJncGcgLS1saXN0LXNlY3JldC1rZXlzIG5ldC1zbm1wLWFkbWluIik7Ci1pZigkPyAhPSAwKSB7Ci0gICAgJHNpZzEgPSAiJHtwa2cxfS5tZDUiOwotICAgICRzaWcyID0gIiR7cGtnMn0ubWQ1IjsKLSAgICBTeXN0ZW0oInJlbGVhc2U6bWQ1IiwibWQ1c3VtICRwa2cxID4gJHNpZzEiKTsKLSAgICBTeXN0ZW0oInJlbGVhc2U6bWQ1IiwibWQ1c3VtICRwa2cyID4gJHNpZzIiKTsKLX0gZWxzZSB7Ci0gICAgIyBjdXJyZW50bHkgb25seSByc3RvcnkgYW5kIGhhcmRha2VyIGhhdmUgdGhlIGdwZyBrZXlzIHRpbGwgV2VzCi0gICAgIyBzZWVzIHNvbWVvbmUgZWxzZSBpbiBwZXJzb24gOy0pCi0gICAgJHNpZzEgPSAiJHtwa2cxfS5hc2MiOwotICAgIFN5c3RlbSgicmVsZWFzZTpncGciLCJncGcgLXUgbmV0LXNubXAtYWRtaW4gLWEgLS1kZXRhY2gtc2lnbiAkcGtnMSIpOwotICAgICRzaWcyID0gIiR7cGtnMn0uYXNjIjsKLSAgICBTeXN0ZW0oInJlbGVhc2U6Z3BnIiwiZ3BnIC11IG5ldC1zbm1wLWFkbWluIC1hIC0tZGV0YWNoLXNpZ24gJHBrZzIiKTsKLX0KLQotIwotIyAgUkVMRUFTRSBURVNUSU5HOgotIwotIyBTdGVwIDE0KSAgVW5wYWNrLCBidWlsZCBhbmQgdGVzdCB0aGUgcmVsZWFzZSB0YXJiYWxsCi1TeXN0ZW0oInBvc3R0ZXN0OnVudGFyIiwgInJtIC1yZiBuZXQtc25tcC0ke3ZlcnNpb259Iik7Ci1TeXN0ZW0oInBvc3R0ZXN0OnVudGFyIiwgInRhciB4emYgbmV0LXNubXAtJHt2ZXJzaW9ufS50YXIuZ3oiKTsKLWNoZGlyKCJuZXQtc25tcC0ke3ZlcnNpb259Iik7Ci1TeXN0ZW0oInBvc3R0ZXN0OmNvbmZpZ3VyZSIsIi4vY29uZmlndXJlICRjb25maWd1cmVhcmdzIik7Ci1TeXN0ZW0oInBvc3R0ZXN0Om1ha2UiLCJtYWtlIik7Ci1TeXN0ZW0oInBvc3R0ZXN0OnRlc3QiLCJtYWtlIHRlc3QiKTsKLWNoZGlyKCIuLiIpOwotCi0jIFN0ZXAgMTUpICBEb3VibGUtY2hlY2sgdGhlcmUgYXJlIG5vIG91dHN0YW5kaW5nIGNoYW5nZXMKLVN5c3RlbSgicmVsZWFzZTp1cGRhdGUiLCJzdm4gLXUgc3RhdHVzIik7Ci0KLSMKLSMgU3RlcHMgMTYgYW5kIGZvbGxvd2luZyBhcmUgTk9UIGhhbmRsZWQgYXV0b21hdGljYWxseS4KLSMgU2VlIHRoZSBSRUxFQVNFLUlOU1RSVUNUSU9OUyBmb3IgZnVsbCBkZXRhaWxzLgotIwotcHJpbnQgU1RERVJSICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEZJTklTSEVEICoqKioqKioqKioqKioqKioqKioqXG4iOwotcHJpbnQgU1RERVJSICJcbkRvdWJsZSBjaGVjayB0aGUgU1ZOIHN0YXR1cyBvdXRwdXQgYWJvdmUgZm9yIGFueSBvdXRzdGFuZGluZyBjaGFuZ2VzXG5cbiI7Ci1wcmludCBTVERFUlIgIlJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gdXBsb2FkIHRoZSByZWxhc2UgdG8gU0Y6XG4iOwotcHJpbnQgU1RERVJSICIgIHJzeW5jIC12ICAkcGtnMSAkcGtnMiAkc2lnMSAkc2lnMiBmcnMuc291cmNlZm9yZ2UubmV0OnVwbG9hZHMvXG4iOwotcHJpbnQgU1RERVJSICJTZWUgUkVMRUFTRS1JTlNUUlVDVElPTlMgZm9yIGFueSBhZGRpdGlvbmFsIHN0ZXBzXG4iOwotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXN1YiBTeXN0ZW0gewotICAgIG15ICRuYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGNtZCA9ICRkZXNjciA9IGpvaW4oIiAiLCBAXyk7Ci0gICAgbXkgJHJjOwotICAgIHdoaWxlIChkb3N0ZXAoJG5hbWUpKSB7Ci0JcHJpbnQgU1RERVJSICIgIHJ1bm5pbmc6ICIsJGNtZCwiXG4iOwotCWxhc3QgaWYgKCRvcHRzeyduJ30pOwotCXN5c3RlbShAXyk7Ci0JJHJjID0gY2hlY2tyZXN1bHQoKTsKLSAgICAgICAgbGFzdCBpZiAoJHJjID09IDApOwotICAgIH0KLX0KLQotc3ViIGNoZWNrcmVzdWx0IHsKLSAgICBpZiAoJD8pIHsKLQlwcmludCBTVERFUlIgIlRoZSBhYm92ZSBTVEVQIGZhaWxlZC4gIENvbnRpbnVlIGFueXdheSAoeS9uL3IpPyAgIjsKLQlteSAkYW5zID0gPFNURElOPjsKLSAgICAgICAgcmV0dXJuIDEgaWYgKCRhbnMgPX4gL15yLyk7Ci0JaWYgKCRhbnMgPX4gL15uLykgewotCSAgICBwcmludCBTVERFUlIgIiAgRVhJVElOR1xuIjsKLQkgICAgZXhpdDsKLQl9Ci0gICAgfQotICAgcmV0dXJuIDA7Ci19Ci0KLXN1YiBkb3N0ZXAgewotICAgIG15ICRuYW1lID0gc2hpZnQ7Ci0gICAgcHJpbnQgU1RERVJSICJcbioqKioqKioqKiogU1RFUDogJG5hbWUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iOwotICAgIGlmICgkZGVzY3IpIHsKLQlwcmludCBTVERFUlIgIiAgWyRkZXNjcl1cbiI7Ci0JJGRlc2NyID0gdW5kZWY7Ci0gICAgfQotICAgIHByaW50ICJcbiI7Ci0gICAgaWYgKCRvcHRzeydzJ30gJiYgJG5hbWUgbmUgJG9wdHN7J3MnfSkgewotCXByaW50IFNUREVSUiAiICAgICAgW3NraXBwaW5nXVxuIjsKLQlyZXR1cm4gMDsKLSAgICB9Ci0gICAgJG9wdHN7J3MnfSA9ICcnOwotICAgIGlmICgkb3B0c3tyfSAmJiAkbmFtZSA9fiAvJG9wdHN7cn0vKSB7Ci0JcHJpbnQgU1RERVJSICIgICAgICBbc2tpcHBpbmddXG4iOwotCXJldHVybiAwOwotICAgIH0gZWxzaWYgKCRvcHRzeydpJ30pIHsKLQlwcmludCBTVERFUlIgIiAgRG8gdGhpcyBzdGVwICh5L24vcSk/ICAiOwotCW15ICRhbnMgPSA8U1RESU4+OwotCWlmICgkYW5zID1+IC9ebi8pIHsKLQkgICAgcHJpbnQgU1RERVJSICIgICAgICBbc2tpcHBpbmddXG4iOwotCSAgICByZXR1cm4gMDsKLQl9Ci0JaWYgKCRhbnMgPX4gL15xLykgewotCSAgICBwcmludCBTVERFUlIgIiAgICAgIFFVSVRUSU5HXG4iOwotCSAgICBleGl0OwotCX0KLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLXN1YiBtYW51YWxzdGVwIHsKLSAgICBteSAkdGFnID0gc2hpZnQ7Ci0KLSAgICBpZiAoZG9zdGVwKCR0YWcpKSB7Ci0JcHJpbnQgU1RERVJSICJcblxuIixqb2luKCIgIixAXyk7Ci0KLQlwcmludCBTVERFUlIgIlxuXG4gIEhpdCByZXR1cm4gd2hlbiBkb25lOiAgIjsKLQotCXJldHVybiAxIGlmICgkb3B0c3snbid9KTsKLQotCW15ICRib2d1cyA9IDxTVERJTj47Ci0JcmV0dXJuIDE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBnZXRvcHQgbG9uZyBndWkgcG9ydGFiaWxpdHkgY29kZQotIwotc3ViIExvY2FsR2V0T3B0aW9ucyB7Ci0gICAgaWYgKGV2YWwge3JlcXVpcmUgR2V0b3B0OjpHVUk6Okxvbmc7fSkgewotCWltcG9ydCBHZXRvcHQ6OkdVSTo6TG9uZzsKLQlHZXRvcHQ6OkdVSTo6TG9uZzo6Q29uZmlndXJlKHF3KGRpc3BsYXlfaGVscCBub19pZ25vcmVfY2FzZSkpOwotCXJldHVybiBHZXRPcHRpb25zKEBfKTsKLSAgICB9IGVsc2UgewotCXJlcXVpcmUgR2V0b3B0OjpMb25nOwotCUdldG9wdDo6TG9uZzo6Q29uZmlndXJlKHF3KGF1dG9faGVscCBub19pZ25vcmVfY2FzZSkpOwotCWltcG9ydCBHZXRvcHQ6Okxvbmc7Ci0gICAgfQotICAgIEdldE9wdGlvbnMoTG9jYWxPcHRpb25zTWFwKEBfKSk7Ci19Ci0KLXN1YiBMb2NhbE9wdGlvbnNNYXAgewotICAgIG15ICgkc3QsICRjYiwgQG9wdHMpID0gKChyZWYoJF9bMF0pIGVxICdIQVNIJykKLQkJCSAgICA/ICgxLCAxLCAkX1swXSkgOiAoMCwgMikpOwotICAgIGZvciAobXkgJGkgPSAkc3Q7ICRpIDw9ICQjXzsgJGkgKz0gJGNiKSB7Ci0JaWYgKCRfWyRpXSkgewotCSAgICBuZXh0IGlmIChyZWYoJF9bJGldKSBlcSAnQVJSQVknICYmICRfWyRpXVswXSA9fiAvXkdVSTovKTsKLQkgICAgcHVzaCBAb3B0cywgKChyZWYoJF9bJGldKSBlcSAnQVJSQVknKSA/ICRfWyRpXVswXSA6ICRfWyRpXSk7Ci0JICAgIHB1c2ggQG9wdHMsICRfWyRpKzFdIGlmICgkY2IgPT0gMik7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gQG9wdHM7Ci19Ci0KLV9fRU5EX18KLQotPWhlYWQxIE5BTUUKLQotbWFrZXJlbGVhc2UgLSBzb2Z0d2FyZSBwYWNrYWdlIHJlbGVhc2Ugc2NyaXB0Ci0KLT1oZWFkMSBTWU5PUFNJUwotCi1tYWtlcmVsZWFzZSBbb3B0aW9uc10gdmVyc2lvbgotCi09aGVhZDEgQVJHVU1FTlRTCi0KLUZvciBmdWxsIHJlbGVhc2VzLCB0aGUgdmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtICBJPDUueC55PgotCi1Gb3IgcHJlLXJlbGVhc2VzLCB0aGUgdmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtICBJPDUueC55LnByZU4+Ci0KLUZvciByZWxlYXNlIGNhbmRpZGF0ZXMsIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIGZvcm0gIEk8NS54LnkucmNOPgotCi1BbHRlcm5hdGl2ZWx5LCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgdmVyc2lvbnMgaW4gdGhlIGZvcm0gIEV4dC01LXgteQotCi09aGVhZDEgT1BUSU9OUwotCi09b3ZlciA4Ci0KLT1pdGVtIEI8LXIge3N0ZXB9fCAtLXJlZ2V4cC1pZ25vcmUtc3RlcHM9e3N0ZXB9PgotCi1JZ25vcmUgc3RlcHMgbWF0Y2hpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB7c3RlcH0KLQotPWl0ZW0gQjwtcyB7c3RlcH18IC0tc3RhcnQtYXQ9e3N0ZXB9PgotCi1Ta2lwIGFsbCBzdGVwcyBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCAoZXhhY3QpIHtzdGVwfQotCi09aXRlbSBCPC1pIHwgLS1pbnRlcmFjdGl2ZT4KLQotUHJvbXB0IHdoZXRoZXIgb3Igbm90IHRvIGV4ZWN1dGUgZWFjaCBzdGVwCi0KLT1pdGVtIEI8LW4gfCAtLWRyeS1ydW4+Ci0KLVByaW50IHRoZSBjb21tYW5kcyB0aGF0IHdvdWxkIGJlIGV4ZWN1dGVkLCBidXQgZG8gbm90IGV4ZWN1dGUgdGhlbS4KLQotPWl0ZW0gQjwtaCB8IC0taGVscD4KLQotRGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZS4KLQotPWJhY2sKZGlmZiAtLWdpdCBhL2Rpc3QvbWFrZXJlbGVhc2UueG1sIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKaW5kZXggOTY3YzViZS4uZjBmYjgwMyAxMDA2NDQKLS0tIGEvZGlzdC9tYWtlcmVsZWFzZS54bWwKKysrIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKQEAgLTI3OSw3ICsyNzksNyBAQAogCSAgICAgIDwvdGV4dD4KIAkgICAgICA8Y29tbWFuZHM+CiAJICAgICAgICA8Y29tbWFuZD5naXQgY2hlY2tvdXQgVjUtNC1wYXRjaGVzPC9jb21tYW5kPgotCSAgICAgICAgPGNvbW1hbmQ+ZWNobyB7QlJBTkNIUEFUSH0gPj4gZGlzdC9yZWxlYXNlIDwvY29tbWFuZD4KKwkgICAgICAgIDxjb21tYW5kPmVjaG8ge0JSQU5DSFBBVEh9IHJjID4+IGRpc3QvcmVsZWFzZSA8L2NvbW1hbmQ+CiAJICAgICAgICA8Y29tbWFuZCBpZ25vcmVlcnJvcj0iMSI+Z2l0IGNvbW1pdCAtbSAiUmVsZWFzZSBDYW5kaWRhdGUgZm9yIHtCUkFOQ0hQQVRIfSIgZGlzdC9yZWxlYXNlPC9jb21tYW5kPgogCSAgICAgICAgPGNvbW1hbmQ+Z2l0IGNoZWNrb3V0IHtCUkFOQ0hQQVRIfSA8L2NvbW1hbmQ+CiAJICAgICAgICA8Y29tbWFuZD5naXQgbWVyZ2UgVjUtNC1wYXRjaGVzICAgIDwvY29tbWFuZD4KZGlmZiAtLWdpdCBhL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9ERVZFTlYgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvREVWRU5WCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MDVjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvREVWRU5WCkBAIC0wLDAgKzEsNDQgQEAKK1BSRUZJWD0vb3B0L09TUworZXhwb3J0IFBSRUZJWAorCitQQVRIPSRQUkVGSVgvYmluOi91c3IvYmluOi91c3IvZHQvYmluOi91c3Ivb3Blbndpbi9iaW46L3Vzci9zYmluOi91c3IvY2NzL2JpbjovdXNyL3VjYgorZXhwb3J0IFBBVEgKKworTERfTElCUkFSWV9QQVRIPSRQUkVGSVgvbGliIAorTERfUlVOX1BBVEg9JExEX0xJQlJBUllfUEFUSAorZXhwb3J0IExEX0xJQlJBUllfUEFUSCBMRF9SVU5fUEFUSAorCitDQz1nY2MKK2V4cG9ydCBDQworCitDUFBGTEFHUz0iLUkkUFJFRklYL2luY2x1ZGUiCitDRkxBR1M9Ii1tdjggLW10dW5lPXVsdHJhc3BhcmMiCitMREZMQUdTPSItTCRQUkVGSVgvbGliIC1SJFBSRUZJWC9saWIiCitleHBvcnQgQ1BQRkxBR1MgQ0ZMQUdTIExERkxBR1MKKworVE1QPS90bXAKK2V4cG9ydCBUTVAKKworVE9QPS9jdGJ0by9pZGMvY2ljbi9zb3VyY2UvYnVpbGQvYGJhc2VuYW1lICRQUkVGSVhgCitleHBvcnQgVE9QCisKK1NSQz0kVE9QL2Rpc3QKK2V4cG9ydCBTUkMKKworV09SSz0kVE9QL3dvcmsKK2V4cG9ydCBXT1JLCisKKworIyBmb3Igc3VwZXJwYWNrOgorCitDSEVDS0xJU1Q9JFRPUC9DaGVja2xpc3Q7IGV4cG9ydCBDSEVDS0xJU1QKK01BS0U9JFBSRUZJWC9iaW4vbWFrZQorZXhwb3J0IE1BS0UKKworI0NBVEVHT1JZPU9wZW5Tb3VyY2U7IGV4cG9ydCBDQVRFR09SWQorI1ZFTkRPUj0iRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIjsgZXhwb3J0IFZFTkRPUgorQkFTRURJUj0vb3B0OyBleHBvcnQgQkFTRURJUgorUFJFRklYPSRCQVNFRElSL2BiYXNlbmFtZSAkVE9QYDsgZXhwb3J0IFBSRUZJWAorUkVMRUFTRV9BUkVBPSRUT1AvLi4vcGFja2FnZXMvYC9iaW4vdW5hbWUgLXBgL2AvYmluL3VuYW1lIC1yYDsgZXhwb3J0IFJFTEVBU0VfQVJFQQorCit1bWFzayAwMjIKZGlmZiAtLWdpdCBhL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9SRUFETUUgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTI1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvUkVBRE1FCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSAiYnVpbGRwYWNrYWdlLXNvbGFyaXMiIHNjcmlwdCBkb2VzIGEgIm9uZS1zaG90IiBidWlsZCAKK2FuZCBwYWNrYWdpbmcgb2YgYW4gdW50YXJyZWQgbmV0LXNubXAgZGlzdHJpYnV0aW9uIAorb24gU29sYXJpcyB3aXRob3V0IHJlcXVpcmluZyByb290IGFjY2Vzcy4gCisgCitUaGUgcmVzdWx0aW5nIG5hdGl2ZSBTb2xhcmlzIHBhY2thZ2UgY2FuIHRoZW4gYmUgCisoYXV0b21hdGljYWxseSkgaW5zdGFsbGVkL3JlbW92ZWQgdXNpbmcgdGhlIFNvbGFyaXMgCitwa2dhZGQoMSkvcGtncm0oMSkgY29tbWFuZHMuIAorIAorVGhlIHNjcmlwdCByZXF1aXJlcyBjdXN0b21pemF0aW9uIG9mIHlvdXIgCitkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAtIHNlZSBhdHRhY2hlZCBmaWxlIAorREVWRU5WIC0gYmVmb3JlIGl0IGNhbiBiZSB1c2VkLiAKKyAKKyBCYXNpYyB1c2FnZTogLi9idWlsZHBhY2thZ2Utc29sYXJpcyBkaXN0Y2xlYW4gCisgCitUaGUgc2NyaXB0ICJlbGZkZXBlbmQuc2giIGlzIHJlcXVpcmVkIHRvIAorZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgYWxsIGJ1aWx0IEVMRiBiaW5hcmllcyAKK2FuZCBsaWJyYXJpZXMgdG8gY3JlYXRlIGEgInBhY2thZ2UgZGVwZW5kZW5jeSBmaWxlIiAtIAorc2VlIGRlcGVuZCg0KS4gCisgCmRpZmYgLS1naXQgYS9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvYnVpbGRwYWNrYWdlLXNvbGFyaXMgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvYnVpbGRwYWNrYWdlLXNvbGFyaXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmNGYwYwotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9idWlsZHBhY2thZ2Utc29sYXJpcwpAQCAtMCwwICsxLDE4MiBAQAorIyEvYmluL2tzaAorIworIyBhdXRvbWF0aWMgYnVpbGQgKGNvbmZpZ3VyZS9tYWtlL3BhY2thZ2UpIHNjcmlwdCAKKyMgZm9yIE5FVC1TTk1QIG9uIFNvbGFyaXMKKyMKKyMgMjAwNC8xMSBSZXdyaXRlIHRvIHN0cmljdGx5IGJ1aWxkIHRoZSBwYWNrYWdlIGpmcmFua0BmYXN0cmlldmUuY29tCisjIDIwMDIvMTEgU3RlZmFuLlJhZG1hbkBDVEJUTy5PUkcKKworCisjIElmIHlvdSBkZWZpbmUgREVCVUcsIHRoZSBzY3JpcHQgd2lsbCBiZSB2ZXJib3NlLCBhbmQgd2Ugd29uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcworCisjREVCVUc9WQoraWYgWyAhIC16ICRERUJVRyBdOyB0aGVuCisgICBzZXQgLXggIyBiZSB2ZXJib3NlCitmaQorCisjIFRNUCBpcyB3aGVyZSB3ZSBhcmUgdGVtcG9yYXJpbHkgaW5zdGFsbGluZyB0aGUgcGFja2FnZSB0bworVE1QPWBwd2RgL3BrZ3Jvb3QKKworIyBQS0cgaXMgdGhlIGludGVybmFsIGFuZCBleHRlcm5hbCBuYW1lIGZvciB0aGUgcGFja2FnZQorUEtHPU9TU25ldC1zbm1wCisKKyNQUkVGSVggaXMgdGhlIHRvcCBsZXZlbCBhcmNoaXRlY3R1cmUgZGVwZW5kZW50IGRpcmVjdG9yeS4KKyMgVGhpcyBzaG91bGQgYmUgbm9ybWFsbHkgZGV0ZXJtaW5lZCBieSBjb25maWd1cmUKKyNwcmVmaXg9L29wdC8ke1BLR30KK3ByZWZpeD0vdXNyL2xvY2FsCisKKyMgVkFSRElSIGlzIHRoZSBwZXJzaXN0ZW50IGRpciBmcm9tIGNvbmZpZ3VyZQorVkFSRElSPS92YXIvbmV0LXNubXAKKworZXhwYW5kZWRwcmVmaXg9JHtUTVB9LyR7cHJlZml4fQorCitQRVJMPSR7UEVSTDo9YHdoaWNoIHBlcmxgfQorTUFLRT0ke01BS0U6PWB3aGljaCBtYWtlYH0KKworaWYgWyAtZCAke1RNUH0gXTsgdGhlbgorICAgcm0gLXJmICR7VE1QfTsKK2ZpCisKKyMgaW5zdGFsbCB0byB0ZW1wb3JhcnkgcGFja2FnZSBidWlsZCByb290CitjZCAuLi8uLgorCiskTUFLRSBpbnN0YWxsIHByZWZpeD0ke2V4cGFuZGVkcHJlZml4fSBleGVjX3ByZWZpeD0ke2V4cGFuZGVkcHJlZml4fSB8fCBleGl0IDEKKworIyBXZSBub3cgaGF2ZSB0aGUgbWFpbiBzb2Z0d2FyZSBpbnN0YWxsZWQsIGNvcHkgb3ZlciB0aGUgYXV4aWxsYXJ5IGZpbGVzCitjZCAtCisKK2F3ayAvXl9fX3NubXBkLWluaXQuZC8sL19fX0VPRi8gJDAgfCBncmVwIC12IF5fX18gfCBzZWQgInMsQHByZWZpeEAsJHByZWZpeCxnIiA+fHNubXBkLWluaXQuZAorCisjIGNyZWF0ZSBwZXJzaXN0ZW50IGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdAorWyAtZCAkVE1QLyRWQVJESVIgXSB8fCBpbnN0YWxsIC1kIC1tIDA3NTUgJFRNUC8kVkFSRElSIAorCisjIHBvc3RpbnN0YWxsCitMRF9MSUJSQVJZX1BBVEg9JFRNUCRwcmVmaXgvbGliOiRMRF9MSUJSQVJZX1BBVEggJFRNUC8kcHJlZml4L2Jpbi9zbm1wdHJhbnNsYXRlXAorICAtTSRUTVAvJHByZWZpeC9zaGFyZS9zbm1wL21pYnMgLW0gU05NUHYyLVNNSSAuMSA+Ji0gfHwgZXhpdCAkPyAjIGNyZWF0ZSBNSUIgaW5kZXgKKworIyBwYWNrYWdlCit2ZXJzaW9uPWAuLi8uLi9uZXQtc25tcC1jb25maWcgLS12ZXJzaW9uYAorb3M9YHVuYW1lIC1zYAorcmVsPWB1bmFtZSAtcmAKK2NsYXNzPXNubXAKK293bmVyPSRMT0dOQU1FCitncm91cHMgfCBhd2sgJ3twcmludCAkMX0nIHwgcmVhZCBncm91cAorY2F0IDw8PT0gPnxwa2dpbmZvCitQS0c9IiR7UEtHfSIKK05BTUU9Im5ldC1zbm1wLSR2ZXJzaW9uIgorQVJDSD0iYHVuYW1lIC1wYCIKK1ZFUlNJT049IiR2ZXJzaW9uLCAkb3MgJHJlbCwgYGRhdGUgKyVZLiVtLiVkLiVILiVNLiVTYCIKK0NBVEVHT1JZPSJPcGVuU291cmNlIgorREVTQz0iVGhlIE5FVC1TTk1QIFRvb2xzIGFuZCBMaWJyYXJ5IgorVkVORE9SPSJodHRwOi8vbmV0LXNubXAuc291cmNlZm9yZ2UubmV0IgorQ0xBU1NFUz0iJGNsYXNzIgorQkFTRURJUj0iJHByZWZpeCIKKz09CisuIC4vcGtnaW5mbworCitlY2hvICdjaGVja2luZyBkZXBlbmRlbmNpZXMnCit1bnNldCBMRF9MSUJSQVJZX1BBVEggIyBiaW5hcmllcyBhbmQgbGlicmFyaWVzIHNob3VsZCBoYXZlIFJQQVRIIG5vdworLi9lbGZkZXBlbmQuc2ggJFRNUCB8IGdyZXAgLXYgIlAgICokUEtHICIgPnxkZXBlbmQgIyBpZ25vcmUgb3duIHBhY2thZ2UKKworZWNobyAnY3JlYXRpbmcgcHJvdG90eXBlIGZpbGUnCitjYXQgPDw9PSA+fHByb3RvdHlwZQoraSBwa2dpbmZvCitpIGNvcHlyaWdodD0uLi8uLi9DT1BZSU5HCisjaSBwcmVpbnN0YWxsPS4vcHJlaW5zdGFsbC1wb3N0cmVtb3ZlCisjaSBwb3N0aW5zdGFsbD0uL3ByZWluc3RhbGwtcG9zdHJlbW92ZQoraSBkZXBlbmQKKyMgc2V0IGRlZmF1bHQgbW9kZSwgb3duZXIgYW5kIGdyb3VwCishIGRlZmF1bHQgMDc3NSByb290IHN5cworZCBzbm1wIC9ldGMgMDc1NSByb290IHN5cworZCBzbm1wIC9ldGMvaW5pdC5kIDA3NTUgcm9vdCBzeXMKK2Ygc25tcCAvZXRjL2luaXQuZC9zbm1wZD0uL3NubXBkLWluaXQuZCAwNzU1IHJvb3Qgc3lzCisjbCBzbm1wIC9ldGMvcmMyLmQvUzc2c25tcGQ9L2V0Yy9pbml0LmQvc25tcGQgIyBub3QgeWV0Cis9PQorCitwa2dwcm90byAtYyBzbm1wICRUTVA9LyB8XAorZWdyZXAgLXYgJ15kIC4qIC8gfF5kIC4qIC92YXIgfF5kIC4qIC9vcHQgfF4gLipwZXJsbG9jYWwucG9kPScgfFwKK3NlZCAtZSAicy8gJG93bmVyICRncm91cFwkLy8iID4+IHByb3RvdHlwZSB8fCBleGl0ICQ/CisjIGFuZCBpZ25vcmUgdG9wIGxldmVsIGRpcmVjdG9yaWVzIChtdXN0IHByZS1leGlzdCkKKworZWNobyAnY3JlYXRpbmcgcGFja2FnZScKK3BrZ21rIC1vZCAuIHx8IGV4aXQgJD8KK3BrZ3RyYW5zIC4gJFBLRy0kdmVyc2lvbi0kQVJDSC0kb3MkcmVsLnBrZyAkUEtHIHx8IGV4aXQgJD8KKworIyBXZSBzaG91bGQgcmVhbGx5IGRvIHNvbWUgY2xlYW51cCBoZXJlCitpZiBbIC16ICRERUJVRyBdOyB0aGVuCisgICBybSAtcmYgc25tcGQtaW5pdC5kICRQS0cgJFRNUCBwa2dpbmZvIHByb3RvdHlwZSBkZXBlbmQgCitmaQorCitlY2hvICJidWlsZCB3YXMgc3VjY2Vzc2Z1bGwiCitleGl0IDAKKworIyAvZXRjL2luaXQvc25tcGQKKyMgVGhpcyBpcyBwYWNrYWdlZCBpbnNpZGUgb2YgYnVpbGRwYWNrYWdlLXNvbGFyaXMgYmVjYXVzZSB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUKKyMgaW4gdGhlIGFjdHVhbCBzZXJ2ZXIgbmFtZS4KKworX19fc25tcGQtaW5pdC5kX19fCisjISAvYmluL3NoCisjCisjIHN0YXJ0L3N0b3AgdGhlIE5FVC1TTk1QIG1hc3RlciBhZ2VudCAoc25tcGQpCisjCisjIExvY2F0aW9uOiAgICAgIC9ldGMvaW5pdC5kL3NubXBkCisjICAgICAgICAgICAgICAgIC9ldGMvcmMzLmQvUz8/c25tcGQKKyMKK25hbWU9Ik5FVC1TTk1QIGFnZW50IgorZGFlbW9uPUBwcmVmaXhAL3NiaW4vc25tcGQKKworY2FzZSAiJDEiIGluCitzdGFydCkKKyAgICAgICAgWyAhIC14ICRkYWVtb24gXSAmJiBlY2hvICJFUlJPUjogY2Fubm90IHN0YXJ0ICRuYW1lICgkZGFlbW9uKSIgJiYgZXhpdCAxCisgICAgICAgIGVjaG8gIlN0YXJ0aW5nICRuYW1lIC4uLiBcYyIKKyAgICAgICAgUEdSRVA9YHdoaWNoIHBncmVwYAorICAgICAgICBpZiBbIC16ICRQR1JFUCBdOyB0aGVuCisgICAgICAgICAgIHBpZD1gcGdyZXAgLWZ4ICRkYWVtb25gCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgcGlkPWBwcyAtZWYgfCBncmVwICRkYWVtb24gfCBncmVwIC12IGdyZXAgfCBhd2sgJ3twcmludCAkMn0nYAorICAgICAgICBmaQorCisgICAgICAgIFsgISAteiAiJHBpZCIgXSAmJiBlY2hvICJhbHJlYWR5IHJ1bm5pbmcgd2l0aCBwaWQgJHBpZC4iICYmIGV4aXQgMAorICAgICAgICAkZGFlbW9uICYmIGVjaG8gImRvbmUuIgorICAgICAgICA7Oworc3RvcCkKKyAgICAgICAgZWNobyAiU3RvcHBpbmcgJG5hbWUgLi4uIFxjIgorICAgICAgICBQR1JFUD1gd2hpY2ggcGdyZXBgCisgICAgICAgIGlmIFsgLXogJFBHUkVQIF07IHRoZW4KKyAgICAgICAgICAgcGlkPWBwZ3JlcCAtZnggJGRhZW1vbmAKKyAgICAgICAgZWxzZQorICAgICAgICAgICBwaWQ9YHBzIC1lZiB8IGdyZXAgJGRhZW1vbiB8IGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQyfSdgCisgICAgICAgIGZpCisgICAgICAgIFsgISAteiAiJHBpZCIgXSAmJiAoa2lsbCAkcGlkICYmIGVjaG8gImRvbmUiICkgfHwgZWNobyAibm90IHJ1bm5pbmciCisKKyAgICAgICAgOzsKK3N0YXR1cykKKyAgICAgICAgZWNobyAiJG5hbWUgaXMgXGMiCisgICAgICAgIFBHUkVQPWB3aGljaCBwZ3JlcGAKKyAgICAgICAgaWYgWyAteiAkUEdSRVAgXTsgdGhlbgorICAgICAgICAgICBwaWQ9YHBncmVwIC1meCAkZGFlbW9uYAorICAgICAgICBlbHNlCisgICAgICAgICAgIHBpZD1gcHMgLWVmIHwgZ3JlcCAkZGFlbW9uIHwgZ3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDJ9J2AKKyAgICAgICAgZmkKKyAgICAgICAgWyAteiAiJHBpZCIgXSAmJiBlY2hvICJub3QgcnVubmluZyIgfHwgZWNobyAicnVubmluZyB3aXRoIHBpZCAkcGlkIgorICAgICAgICA7OworcmVzdGFydCkKKyAgICAgICAgJDAgc3RvcCAmJiAkMCBzdGFydAorICAgICAgICA7OworcmVsb2FkKQorICAgICAgICBlY2hvICJSZS1pbml0aWFsaXppbmcgJG5hbWUgLi4uXGMiCisgICAgICAgIFBHUkVQPWB3aGljaCBwZ3JlcGAKKyAgICAgICAgaWYgWyAteiAkUEdSRVAgXTsgdGhlbgorICAgICAgICAgICBwaWQ9YHBncmVwIC1meCAkZGFlbW9uYAorICAgICAgICBlbHNlCisgICAgICAgICAgIHBpZD1gcHMgLWVmIHwgZ3JlcCAkZGFlbW9uIHwgZ3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDJ9J2AKKyAgICAgICAgZmkKKyAgICAgICAgWyAhIC16ICIkcGlkIiBdICYmIChraWxsIC1IVVAgJHBpZCAmJiBlY2hvICJkb25lIiApIHx8IGVjaG8gIm5vdCBydW5uaW5nIgorICAgICAgICA7OworKikKKyAgICAgICAgZWNobyAiVXNhZ2U6ICQwIHsgc3RhcnQgfCBzdG9wIHwgc3RhdHVzIHwgcmVzdGFydCB8IHJlbG9hZCB9IgorICAgICAgICA7OworZXNhYworCitleGl0IDAKK19fX0VPRl9fXwpkaWZmIC0tZ2l0IGEvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL2VsZmRlcGVuZC5zaCBiL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9lbGZkZXBlbmQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTQ3YzRjYwotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9lbGZkZXBlbmQuc2gKQEAgLTAsMCArMSw4NyBAQAorIyEvYmluL2tzaAorIworIyBlbGZkZXBlbmQuc2gKKyMKKyMgZ2l2ZW4gYSBwYXRoLCB0aGlzIHNjcmlwdHMgc2VhcmNoZXMgZm9yIEVMRiBiaW5hcmllcyBhbmQgbGlicmFyaWVzCisjIGFuZCBnZW5lcmF0ZXMgcGFja2FnZSBkZXBlbmRlbmN5IGZpbGUgZW50cmllcyBhY2NvcmRpbmcgdG8gdGhlciBkZXBlbmRlbmNpZXMKKyMKKyMgVXNhZ2U6IGVsZmRlcGVuZCA8RUxGLWJpbmFyeT58PGRpcmVjdG9yeT4KKyMKKyMgMjAwMi8xMSBTdGVmYW4uUmFkbWFuQENUQlRPLk9SRworIworIyAvdmFyL3NhZG0vaW5zdGFsbC9jb250ZW50cyBmb3JtYXQ6CisjCisjIC9kZXYgZCBub25lIDA3NzUgcm9vdCBzeXMgU1VOV2NzciBTVU5XY3NkCisjIHBhdGggdHlwZSBjbGFzcyBtb2RlIG93bmVyIGdyb3VwIHBhY2thZ2VzCisjIC9ldGMvLmxvZ2luIGYgcmVuYW1lbmV3IDA2NDQgcm9vdCBzeXMgNTE2IDM3OTU2IDkwNDY0NzY5NSBTVU5XY3NyCisjIC9ldGMvYWNjdC9ob2xpZGF5cyBlIHByZXNlcnZlIDA2NjQgYmluIGJpbiAyODkgMjIwOTAgOTA0NjQ3NjAzIFNVTldhY2NyCisjIHBhdGggdHlwZSBjbGFzcyBtb2RlIG93bmVyIGdyb3VwIHggeCB4IHBhY2thZ2VzCisjIC9iaW49Li91c3IvYmluIHMgbm9uZSBTVU5XY3NyCisjIHBhdGg9bGluayB0eXBlIGNsYXNzIHBhY2thZ2VzCisjIC9kZXZpY2VzL3BzZXVkby9jbG9uZUAwOmhtZSBjIG5vbmUgMTEgNyAwNjAwIHJvb3Qgc3lzIFNVTldjc2QKKyMgcGF0aCB0eXBlIGNsYXNzIHggeCBvd25lciBtb2RlIHBhY2thZ2VzCisjCisjIHR5cGVzIGUgKHNlZCksIHYgKHZvbGF0aWxlKSBoYXZlIHNhbWUgZm9ybWF0IGxpa2UgdHlwZSBmIChmaWxlKQorIyB0eXBlIGwgKGhhcmRsaW5rKSBoYXMgc2FtZSBmb3JtYXQgbGlrZSB0eXBlIHMgKHN5bWxpbmspCisjCitwcm9nPWBiYXNlbmFtZSAkMGAKK0xBU1RfQ0hBTkNFPS9vcHQvT1NTL2xpYgorCitpZiBbIC1kICIkMSIgXSA7IHRoZW4KKyAgZmluZCAkMSAtdHlwZSBmIC1leGVjIGZpbGUge30gXDsKK2VsaWYgWyAteCAiJDEiIF0gOyB0aGVuCisgIGZpbGUgJDEKK2Vsc2UKKyAgZWNobyAxPiYyICJ1c2FnZTogJDAgPGRpcmVjdG9yeT58PEVMRiBleGVjdXRhYmxlPiIKKyAgZXhpdCAxCitmaSB8IGF3ayAnJDIgPT0gIkVMRiIgeyBwcmludCB9JyB8IGN1dCAtZDogLWYxIHxcCit3aGlsZSByZWFkIGVsZgorZG8KKyAgbGRkICIkZWxmIiB8IHdoaWxlIHJlYWQgbGliIHggcGF0aAorICBkbworICAgIFsgLXogIiRwYXRoIiBdICYmIGNvbnRpbnVlCisgICAgaWYgWyAiJHBhdGgiID0gJyhmaWxlIG5vdCBmb3VuZCknIF0KKyAgICB0aGVuCisgICAgICBpZiBbIC14ICRMQVNUX0NIQU5DRS8kbGliIF0KKyAgICAgIHRoZW4KKyAgICAgICAgcGF0aD0iJExBU1RfQ0hBTkNFLyRsaWIiCisgICAgICBlbHNlCisgICAgICAgIGVjaG8gIiMgJHByb2c6ICRsaWIgJHggJHBhdGgiCisgICAgICAgIGNvbnRpbnVlICMgbm90IGZvdW5kCisgICAgICBmaQorICAgIGZpCisgICAgZWNobyAiJHBhdGgiCisgICAgIyBuZWVkIHN5bWxpbmsgaGFuZGxpbmcgaGVyZSAtIHNlZSAvdXNyL3BsYXRmb3JtL1NVTlcsKi9saWIvKgorICBkb25lCitkb25lIHwgc29ydCAtdSB8IHdoaWxlIHJlYWQgbGlicGF0aCBvdGhlcgorZG8KKyAgWyAiJGxpYnBhdGgiID0gIiMiIF0gJiYgZWNobyAiJGxpYnBhdGggJG90aGVyIiAmJiBjb250aW51ZSAjIGVycm9yIG1lc3NhZ2UKKyAgc2V0IC0tIGBncmVwICJeJGxpYnBhdGhbID1dIiAgL3Zhci9zYWRtL2luc3RhbGwvY29udGVudHMgfCBoZWFkIC0xYAorICBwYXRoPSQxOyB0eXBlPSQyCisgIGNhc2UgJHR5cGUgaW4KKyAgICBmKSAjIGZpbGUKKyAgICAgIHNoaWZ0IDkgIyBmaXJzdCBwYWNrYWdlCisgICAgICA7OworICAgIHN8bCkgIyBsaW5rCisgICAgICBzaGlmdCAzICMgZmlyc3QgcGFja2FnZQorICAgICAgOzsKKyAgICAnJykgIyBub3QgZm91bmQKKyAgICAgIGVjaG8gIiMgJHByb2c6ICRsaWJwYXRoIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IHBhY2thZ2UiCisgICAgICBjb250aW51ZQorICAgICAgOzsKKyAgICAqKSAjIGR1YmlvdXMgZmlsZSB0eXBlCisgICAgICBlY2hvICIjICRwcm9nOiBwYXRoICQxIGhhcyBkdWJpb3VzIGZpbGUgdHlwZSAkMiIKKyAgICAgIGNvbnRpbnVlCisgICAgICA7OworICBlc2FjCisgIHNldCAtLSBgZWNobyAkMSB8IHRyIDogJyAnYAorICBlY2hvICQxICMgc3RyaXAgb2ZmIGNsYXNzZXMKK2RvbmUgfCBzb3J0IC11IHwgd2hpbGUgcmVhZCBwa2cgb3RoZXIKK2RvCisgIGlmIFsgIiRwa2ciID0gIiMiIF0gOyB0aGVuICMgZXJyb3IgbWVzc2FnZQorICAgIGVjaG8gMT4mMiAiJG90aGVyIiAjIGdvZXMgdG8gc3RkZXJyCisgICAgY29udGludWUKKyAgZmkKKyAgZXZhbCBgcGtncGFyYW0gLXYgJHBrZyBQS0cgTkFNRWAKKyAgcHJpbnRmICJQICAlLTE1cyVzXG4iICIkUEtHIiAiJE5BTUUiCitkb25lCmRpZmYgLS1naXQgYS9kaXN0L25ldC1zbm1wLnNwZWMgYi9kaXN0L25ldC1zbm1wLnNwZWMKaW5kZXggNmFjNGE5Zi4uYWMxZmUyMCAxMDA2NDQKLS0tIGEvZGlzdC9uZXQtc25tcC5zcGVjCisrKyBiL2Rpc3QvbmV0LXNubXAuc3BlYwpAQCAtMzcsNyArMzcsNyBAQAogJWVuZGlmCiBTdW1tYXJ5OiBUb29scyBhbmQgc2VydmVycyBmb3IgdGhlIFNOTVAgcHJvdG9jb2wKIE5hbWU6IG5ldC1zbm1wCi1WZXJzaW9uOiA1LjQuNAorVmVyc2lvbjogNS41LjIKICMgdXBkYXRlIHJlbGVhc2UgZm9yIHZlbmRvciByZWxlYXNlLiAoZWcgMS5mYzYsIDEucmg3MiwgMS55ZGwzLCAxLnlkbDIzKQogUmVsZWFzZTogMQogVVJMOiBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy8KQEAgLTEzMyw3ICsxMzMsNyBAQAogCS0tZW5hYmxlLXNoYXJlZCBcCiAJJXs/bmV0c25tcF9wZXJsX21vZHVsZXM6IC0td2l0aC1wZXJsLW1vZHVsZXM9IklOU1RBTExESVJTPXZlbmRvciJ9IFwKIAkleyE/bmV0c25tcF9wZXJsX21vZHVsZXM6IC0td2l0aG91dC1wZXJsLW1vZHVsZXN9IFwKLQklez9uZXRzbm1wX2VtYmVkZGVkX3Blcmw6IC0tZW5hYmxlLWFzLW5lZWRlZCAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsfSBcCisJJXs/bmV0c25tcF9lbWJlZGRlZF9wZXJsOiAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsfSBcCiAJJXshP25ldHNubXBfZW1iZWRkZWRfcGVybDogLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmx9IFwKIAktLXdpdGgtY2ZsYWdzPSIkUlBNX09QVF9GTEFHUyAle25ldHNubXBfY2ZsYWdzfSIKIApAQCAtMjUyLDEyICsyNTIsMTIgQEAKIAogKiBUdWUgTWF5ICA2IDIwMDggSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc2YubmV0PgogLSByZW1vdmUgJXtsaWJjdXJyZW50fQotLSBkb24ndCB1c2UgUHJvdmlkZXM6IHVubGVzcyBuZWNlc3NhcnksIGxldCBycG1idWlsZCBjb21wdXRlIHRoZSBwcm92aWRlZAorLSBhZGQgb3BlbnNzbC1kZXZlbCB0byBidWlsZCByZXF1aXJlbWVudHMKKy0gZG9uJ3QgdXNlIFByb3ZpZGVzOiB1bmxlc3MgbmVjZXNzYXJ5LCBsZXQgcnBtYnVpbGQgY29tcHV0ZSB0aGUgcHJvdmlkZWQgCiAgIGxpYnJhcmllcwogCi0qIFR1ZSBKdW4gMzAgMjAwNyBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNmLm5ldD4KKyogVHVlIEp1biAxOSAyMDA3IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc2YubmV0PgogLSBhZGQgIkJ1aWxkUmVxdWlyZXM6IHBlcmwtRXh0VXRpbHMtRW1iZWQiLCBlLmcuIGZvciBGZWRvcmEgNwotLSBhZGQgLS1lbmFibGUtYXMtbmVlZGVkIGlmIGJ1aWxkaW5nIHdpdGggZW1iZWRkZWQgUGVybCBzdXBwb3J0CiAKICogV2VkIE5vdiAyMyAyMDA2IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc2YubmV0PgogLSBmaXhlcyBmb3IgNS40IGFuZCA2NC1iaXQgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9kaXN0L25zYi1jb25maWcgYi9kaXN0L25zYi1jb25maWcKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDk0NGZlNgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbnNiLWNvbmZpZwpAQCAtMCwwICsxLDgyIEBACisjIS9iaW4vc2gKKyMKKyMgJElkJAorIyBBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGZyZWVzbm1wLmNvbT4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3VzYWdlKCkKK3sKKyAgIGVjaG8gIlVzYWdlOiAkMCAgWy1kfC14XSBbLXMgU1JDRF0iCisgICBlY2hvICIiCisgICBlY2hvICIgLXMgU1JDRElSICA6IHNvdXJlIGRpcmVjdG9yeSBbJEhPTUUvc3JjL25ldC1zbm1wLVZFUlNJT05dIgorICAgZWNobyAiIgorICAgZWNobyAiIC14IDogY29uZmlndXJlIGV4dHJhIGZlYXR1cmVzIGZvciBwcmUtcmVsZWFzZSB0ZXN0aW5nIgorICAgZWNobyAiIC1kIDogY29uZmlndXJlIGZvciBiaW5hcnkgZGlzdHJpYnV0aW9uIgorICAgZXhpdCAxCit9CisKKyNzZXQgLXgKKworCisjCisjIGZpbmQgbnNiLXBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoaXMgc2NyaXB0CisjCitFWEVfUEFUSD1gZGlybmFtZSAkMGAKK2lmIFsgLWYgJEVYRV9QQVRIL25zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAuICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zCitlbGlmIFsgLWYgJEhPTUUvYmluL25zYi1mdW5jdGlvbnMgXTsgdGhlbgorICAgLiAkSE9NRS9iaW4vbnNiLWZ1bmN0aW9ucworZWxpZiBbIC1mIG5zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAuIG5zYi1mdW5jdGlvbnMKK2Vsc2UKKyAgIGVjaG8gIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMgaW4gJEVYRV9QQVRILCAkSE9NRS9iaW4gb3IgJFBXRCIKKyAgIGV4aXQgMQorZmkKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTlNCX0NPTkZJR19BTEw9MgorCisjICAgICAgeCkgIHg9JE9QVEFSRyA7Oword2hpbGUgZ2V0b3B0cyBkczp4IG9wdAorZG8KKyAgICBjYXNlICIkb3B0IiBpbgorICAgICAgZCkgIE5TQl9DT05GSUdfQUxMPTA7OworICAgICAgcykgIFNSQ0Q9JE9QVEFSRyA7OworICAgICAgeCkgIE5TQl9DT05GSUdfQUxMPTE7OworICAgICAgXD8pIyB1bmtub3duIGZsYWcKKyAgICAgICAgdXNhZ2U7OworICAgIGVzYWMKK2RvbmUKK3NoaWZ0IGBleHByICRPUFRJTkQgLSAxYAorCitpZiBbICROU0JfQ09ORklHX0FMTCAtZXEgMiBdOyB0aGVuCisgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IC1kIG9yIC14IgorICAgdXNhZ2UKK2ZpCisKK2lmIFsgIngkU1JDRCIgPSAieCIgXTsgdGhlbgorICAgZm9yIHggaW4gLiAkSE9NRS9zcmMvbmV0LXNubXAKKyAgIGRvCisgICAgICBpZiBbIC1mICR4L2NvbmZpZ3VyZSBdOyB0aGVuCisgICAgICAgICBTUkNEPSR4CisgICAgICAgICBicmVhaworICAgICAgZmkKKyAgIGRvbmUKKyAgIGlmIFsgIngkU1JDRCIgPSAieCIgXTsgdGhlbgorICAgICAgZWNobyAiQ291bGRuJ3QgZmluZCBhIHNvdXJjZSBkaXJlY3RvcnkuIFBsZWFzZSBzcGVjaWZ5IG9uZSBmb3IgbWUuIgorICAgICAgdXNhZ2UKKyAgIGZpCitmaQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpZiBbICROU0JfQ09ORklHX0FMTCAtZXEgMCBdO3RoZW4KKyAgICBuc2JfY29uZmlnX2Rpc3QgJFNSQ0QKK2Vsc2UKKyAgICBuc2JfY29uZmlnX2FsbCAkU1JDRAorZmkKZGlmZiAtLWdpdCBhL2Rpc3QvbnNiLWZ1bmN0aW9ucyBiL2Rpc3QvbnNiLWZ1bmN0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODY1Y2MyCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uc2ItZnVuY3Rpb25zCkBAIC0wLDAgKzEsNTA4IEBACisjIS9iaW4vc2gKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRJZCQKKyMgQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIHNvdXJjZSB1c2VyIGNvbmZpZworaWYgWyAtZiAkSE9NRS8uc25tcC9uc2ItcmMgXTsgdGhlbgorICAgLiAkSE9NRS8uc25tcC9uc2ItcmMKK2ZpCisKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKK25zYl9zeXNuYW1lKCkKK3sKKyAgIGVjaG8gYHVuYW1lIC1tcnMgfCB0ciAnIC8nICdfXydgCit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFV0aWxpdHkgdmFycworIworTlNCX1ZFUlNJT049JHtOU0JfVkVSU0lPTjo9IiJ9CitOU0JfQlVJTERfRElSPSR7TlNCX0JVSUxEX0RJUjo9IiJ9CitOU0JfQlVJTERfU1VGRklYPSR7TlNCX0JVSUxEX1NVRkZJWDo9IiJ9CitOU0JfU1JDX0RJUj0ke05TQl9TUkNfRElSOj0iIn0KK05TQl9JTlNUQUxMX0RJUj0ke05TQl9JTlNUQUxMX0RJUjo9IiJ9CitOU0JfSU5TVEFMTF9ESVJfREVGQVVMVD0ke05TQl9JTlNUQUxMX0RJUl9ERUZBVUxUOj0iJE5TQl9CVUlMRF9ESVIvdXNyIn0KK05TQl9QTEFURk9STT0ke05TQl9QTEFURk9STTo9YG5zYl9zeXNuYW1lYH0KKyMgc3VuIGRvZXNuJ3Qgc3VwcG9ydCBob3N0bmFtZSAtcworTlNCX0hPU1Q9JHtOU0JfSE9TVDo9YGhvc3RuYW1lIHwgY3V0IC1mMSAtZC5gfQorTlNCX1FVSUVUPSR7TlNCX1FVSUVUOj0wfQorTlNCX1BST01QVD0ke05TQl9QUk9NUFQ6PTB9CitOU0JfQ0xFQU49JHtOU0JfQ0xFQU46PTF9CitOU0JfQ09ORklHX0FMTD0ke05TQl9DT05GSUdfQUxMOj0wfQorTlNCX1NLSVBfQ09ORklHPSR7TlNCX1NLSVBfQ09ORklHOj0wfQorTlNCX1NLSVBfQlVJTEQ9JHtOU0JfU0tJUF9CVUlMRDo9MH0KK05TQl9TS0lQX1RFU1Q9JHtOU0JfU0tJUF9URVNUOj0wfQorTlNCX1NLSVBfSU5TVEFMTD0ke05TQl9TS0lQX0lOU1RBTEw6PTB9CitOU0JfRVJSX0NUWF9MSU5FUz0ke05TQl9FUlJfQ1RYX0xJTkVTOj0yNX0KK05TQl9ESVNUX1RSQU5TUE9SVFM9IlVEUCBUQ1AgVW5peCBDYWxsYmFjayIKK05TQl9FWFRSQV9UUkFOU1BPUlRTPSIiCitOU0JfRElTVF9NT0RVTEVTPSR7TlNCX0RJU1RfTU9EVUxFUzo9Imhvc3QgZGlzbWFuL2V2ZW50LW1pYiBzbXV4In0KK05TQl9FWFRSQV9NT0RVTEVTPSR7TlNCX0VYVFJBX01PRFVMRVM6PSJleGFtcGxlcyBleGFtcGxlcy9leGFtcGxlIHNtdXggUm1vbiJ9CisjdGVzdGhhbmRsZXIKK05TQl9FWFRSQV9DT05GSUc9JHtOU0JfRVhUUkFfQ09ORklHOj0iIn0KK05TQl9QUkVGSVg9JHtOU0JfUFJFRklYOj0iL3VzciJ9CitOU0JfRVhUUkFfSU5TVEFMTD0ke05TQl9FWFRSQV9JTlNUQUxMOj0iIn0KK05TQl9TSEFSRUQ9JHtOU0JfU0hBUkVEOj0iLS1lbmFibGUtc2hhcmVkIn0KK05TQl9WSUVXPWNhdAorTlNCX0ZMT1c9CitOU0JfREFURT0ke05TQl9EQVRFOj1gZGF0ZSArJXklbSVkXyVIJU1gfQorCisjIyBlbWJlZGRlZCBwZXJsCitOU0JfRElSTElOS19ESVJTPSJwZXJsIG1pYnMgaW5jbHVkZSBweXRob24iCitOU0JfUEVSTD0ke05TQl9QRVJMOj0iIn0KKyNOU0JfUEVSTD0ke05TQl9QRVJMOj0iLS1lbmFibGUtZW1iZWRkZWQtcGVybCJ9CitpZiBbICJ4JE5TQl9QRVJMIiAhPSAieCIgXTsgdGhlbgorICBOU0JfU0tJUF9ESVJMSU5LPSR7TlNCX1NLSVBfRElSTElOSzo9MH0KK2Vsc2UKKyAgTlNCX1NLSVBfRElSTElOSz0ke05TQl9TS0lQX0RJUkxJTks6PTF9CitmaQorCisjCisjIFN5c3RlbSBzcGVjaWZpYyBhZGRpdGlvbnMKKyMKK2Nhc2UgYHVuYW1lIC1zYCBpbgorCisgICBTdW5PUykKKyAgICAgIE5TQl9UQUlMX0FSR1M9Ii0kTlNCX0VSUl9DVFhfTElORVMiCisgICAgICA7OworCisgICAqKQorICAgICAgTlNCX1RBSUxfQVJHUz0iLW4gJE5TQl9FUlJfQ1RYX0xJTkVTIgorICAgICAgOzsKK2VzYWMKKworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBVdGlsaXR5IGZ1bmN0aW9ucworIworCituc2JfYWJvcnQoKQoreworICAgZWNobworICAgZWNobyAiQUJPUlRJTkc6ICRAIiA+JjIKKyAgIGV4aXQgMjU1Cit9CisKK25zYl9pbmZvKCkKK3sKKyAgIGlmIFsgJE5TQl9RVUlFVCAtbmUgMSBdOyB0aGVuCisgICAgICBlY2hvICRACisgICBmaQorfQorCituc2JfcHJvbXB0KCkKK3sKKyAgIGlmIFsgIngkMSIgPSAieC1mIiBdOyB0aGVuCisgICAgICBzaGlmdCAxCisgICAgICB0bXBfbnNiX3Byb21wdD0xCisgICBlbHNlCisgICAgICB0bXBfbnNiX3Byb21wdD0kTlNCX1BST01QVAorICAgZmkKKyAgIGlmIFsgJHRtcF9uc2JfcHJvbXB0IC1lcSAxIF07IHRoZW4KKyAgICAgIGVjaG8gJEAKKyAgICAgIHJlYWQgbnNiX3Byb21wdF9kdW1teQorICAgZWxzZQorICAgICAgZWNobyAiJEAgKFBST01QVCBTS0lQUEVEKSIKKyAgIGZpCit9CisKK25zYl9mbG93KCkKK3sKKyAgICBOU0JfRkxPVz0kTlNCX0ZMT1c6JEAKKyAgICBlY2hvICJSdW5uaW5nICRAIiA+JjIKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKK25zYl9jb25maWdfZGlzdCgpCit7CisgICBuc2JfZmxvdyBjb25maWdfZGlzdAorICAgaWYgWyAkIyAtbHQgMSBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgInVzYWdlOiBuc2JfY29uZmlnX2Rpc3Qgc3JjX2RpciIKKyAgIGZpCisgICBuZ2Nfc3JjPSQxCisgICBpZiBbICEgLWQgJG5nY19zcmMgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICIkbmdjX3NyYyBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorICAgaWYgWyAhIC1kICRuZ2Nfc3JjL2FnZW50L21pYmdyb3VwIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiYWdlbnQvbWliZ3JvdXAgZGlyZWN0b3J5IGluICRuZ2Nfc3JjIGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisgICBuZ2NfZGVzdD0kMgorICAgaWYgWyAiWCRuZ2NfZGVzdCIgIT0gIlgiIC1hICEgLWQgJG5nY19kZXN0IF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJG5nY19kZXN0IGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisKKyAgICMKKyAgICMgc29tZSBtb2R1bGVzIG1pZ2h0IGJlIHJlbGVhc2Ugc3BlY2lmaWMsIHNvIG1ha2Ugc3VyZSB0aGV5CisgICAjIGV4aXN0IGJlZm9yZSB3ZSBzZW5kIHRoZW0gb2ZmIHRvIGNvbmZpZ3VyZQorICAgIworICAgTlNCX0ZJTkFMX01PRFVMRVM9CisgICBmb3IgbmNkX3ggaW4gJE5TQl9ESVNUX01PRFVMRVMKKyAgIGRvCisJaWYgWyAtciAkbmdjX3NyYy9hZ2VudC9taWJncm91cC8kbmNkX3guaCBdOyB0aGVuCisJCU5TQl9GSU5BTF9NT0RVTEVTPSIkTlNCX0ZJTkFMX01PRFVMRVMgJG5jZF94IgorCWZpCisgICBkb25lCisKKyAgICMKKyAgICMgTk9URTogZm9yIHNvbWUgcmVhc29uLCBiYXNoIGRvZXMgbm90IGV4cGFuZCB2YXJpYWJsZXMKKyAgICMgaW5zaWRlIG9mIHNpbmdsZSBxdW90ZXMsIHNvIHVzZSBkb3VibGUgcXVvdGVzCisgICAjCisgICBlY2hvICRuZ2Nfc3JjL2NvbmZpZ3VyZSAtLXdpdGgtc3lzLWxvY2F0aW9uPVVua25vd24gXAorICAgICAgLS1wcmVmaXg9IiROU0JfUFJFRklYIiBcCisgICAgICAtLWRpc2FibGUtZGV2ZWxvcGVyICROU0JfRVhUUkFfQ09ORklHIFwKKyAgICAgIC0td2l0aC1zeXMtY29udGFjdD0nU3lzdGVtIEFkbWluaXN0cmF0b3InIFwKKyAgICAgIC0td2l0aC1kZWZhdWx0cyAtLXdpdGgtbWliLW1vZHVsZXM9IiROU0JfRklOQUxfTU9EVUxFUyIKKyAgICRuZ2Nfc3JjL2NvbmZpZ3VyZSAtLXdpdGgtc3lzLWxvY2F0aW9uPVVua25vd24gXAorICAgICAgLS1wcmVmaXg9IiROU0JfUFJFRklYIiBcCisgICAgICAtLWRpc2FibGUtZGV2ZWxvcGVyICROU0JfRVhUUkFfQ09ORklHIFwKKyAgICAgIC0td2l0aC1zeXMtY29udGFjdD0nU3lzdGVtIEFkbWluaXN0cmF0b3InIFwKKyAgICAgIC0td2l0aC1kZWZhdWx0cyAtLXdpdGgtbWliLW1vZHVsZXM9IiROU0JfRklOQUxfTU9EVUxFUyIKKyAgICMgSSdkIGxpa2UgdG8gYWRkICcgfCB0ZWUgbnNiX2NvbmZpZy4kTlNCX0RBVEUnIHRvIHNhdmUgb3V0cHV0LCBidXQgdGhlbgorICAgIyBJJ2QgbG9zZSB0aGUgcmMgZnJvbSBjb25maWd1cmUsIHdoaWNoIEkgbmVlZC4uLiBzaWdoCisgICBuZ2NfcmM9JD8KKyAgIGlmIFsgJG5nY19yYyAtbmUgMCBdO3RoZW4KKyAgICAgIG5zYl9hYm9ydCAiRXJyb3IgZHVyaW5nIGNvbmZpZ3VyZSBkaXN0IChyYz0kbmdjX3JjKSIKKyAgIGZpCit9CisKK25zYl9jb25maWdfYWxsKCkKK3sKKyAgIG5zYl9mbG93IGNvbmZpZ19hbGwKKyAgIGlmIFsgJCMgLWx0IDEgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogbnNiX2NvbmZpZ19hbGwgc3JjX2RpciIKKyAgIGZpCisgICBuZ2Nfc3JjPSQxCisgICBpZiBbICEgLWQgJG5nY19zcmMgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICIkbmdjX3NyYyBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorICAgaWYgWyAhIC1kICRuZ2Nfc3JjL2FnZW50L21pYmdyb3VwIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiYWdlbnQvbWliZ3JvdXAgZGlyZWN0b3J5IGluICRuZ2Nfc3JjIGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisgICBuZ2NfZGVzdD0kMgorICAgaWYgWyAiWCRuZ2NfZGVzdCIgIT0gIlgiIC1hICEgLWQgJG5nY19kZXN0IF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJG5nY19kZXN0IGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisKKyAgICMKKyAgICMgU3lzdGVtIHNwZWNpZmljIGFkZGl0aW9ucworICAgIworICAgY2FzZSBgdW5hbWUgLXNgIGluCisKKyAgIExpbnV4KQorICAgICAgTlNCX0lQVjY9JHtOU0JfSVBWNjo9Ii0tZW5hYmxlLWlwdjYifQorICAgICAgTlNCX0VYVFJBX1RSQU5TUE9SVFM9IklQWCIKKyAgICAgIDs7CisKKyAgICNEYXJ3aW4pCisgICAjICAgOzsKKworICAgKikKKyAgICAgIE5TQl9JUFY2PSR7TlNCX0lQVjY6PSItLWVuYWJsZS1pcHY2In0KKyAgICAgIDs7CisgICBlc2FjCisKKyAgICMKKyAgICMgdXNlIGxpYndyYXAgaWYgd2UgY2FuIGZpbmQgdGhlIGhlYWRlcgorICAgIworICAgaWYgWyAtZiAvdXNyL2luY2x1ZGUvdGNwZC5oIF07IHRoZW4KKyAgICAgIE5TQl9MSUJXUkFQPSR7TlNCX0xJQldSQVA6PSItLXdpdGgtbGlid3JhcCJ9CisgICAgICBOU0JfRVhUUkFfQ09ORklHPSIkTlNCX0VYVFJBX0NPTkZJRyAkTlNCX0xJQldSQVAiCisgICBmaQorCisgICAjCisgICAjIHNvbWUgbW9kdWxlcyBtaWdodCBiZSByZWxlYXNlIHNwZWNpZmljLCBzbyBtYWtlIHN1cmUgdGhleQorICAgIyBleGlzdCBiZWZvcmUgd2Ugc2VuZCB0aGVtIG9mZiB0byBjb25maWd1cmUKKyAgICMKKyAgIE5TQl9GSU5BTF9NT0RVTEVTPQorICAgZm9yIG5jZF94IGluICROU0JfRElTVF9NT0RVTEVTICROU0JfRVhUUkFfTU9EVUxFUworICAgZG8KKwlpZiBbIC1yICRuZ2Nfc3JjL2FnZW50L21pYmdyb3VwLyRuY2RfeC5oIF07IHRoZW4KKwkJTlNCX0ZJTkFMX01PRFVMRVM9IiROU0JfRklOQUxfTU9EVUxFUyAkbmNkX3giCisJZmkKKyAgIGRvbmUKKworICAgIworICAgIyBjb25maWd1cmUKKyAgICMKKyAgICMgTk9URTogZm9yIHNvbWUgcmVhc29uLCBiYXNoIGRvZXMgbm90IGV4cGFuZCB2YXJpYWJsZXMKKyAgICMgaW5zaWRlIG9mIHNpbmdsZSBxdW90ZXMsIHNvIHVzZSBkb3VibGUgcXVvdGVzCisgICAjCisgICBlY2hvICRuZ2Nfc3JjL2NvbmZpZ3VyZSAgLS13aXRoLWRlZmF1bHRzIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAiLS13aXRoLW1pYi1tb2R1bGVzPSROU0JfRklOQUxfTU9EVUxFUyIgXAorICAgICAgIi0td2l0aC10cmFuc3BvcnRzPSROU0JfRElTVF9UUkFOU1BPUlRTICROU0JfRVhUUkFfVFJBTlNQT1JUUyIgXAorICAgICAgJE5TQl9TSEFSRUQgJE5TQl9JUFY2ICROU0JfUEVSTAorICAgJG5nY19zcmMvY29uZmlndXJlICAtLXdpdGgtZGVmYXVsdHMgXAorICAgICAgLS1wcmVmaXg9IiROU0JfUFJFRklYIiBcCisgICAgICAtLWRpc2FibGUtZGV2ZWxvcGVyICROU0JfRVhUUkFfQ09ORklHIFwKKyAgICAgICItLXdpdGgtbWliLW1vZHVsZXM9JE5TQl9GSU5BTF9NT0RVTEVTIiBcCisgICAgICAiLS13aXRoLXRyYW5zcG9ydHM9JE5TQl9ESVNUX1RSQU5TUE9SVFMgJE5TQl9FWFRSQV9UUkFOU1BPUlRTIiBcCisgICAgICAkTlNCX1NIQVJFRCAkTlNCX0lQVjYgJE5TQl9QRVJMCisgICAjIEknZCBsaWtlIHRvIGFkZCAnIHwgdGVlIG5zYl9jb25maWcuJE5TQl9EQVRFJyB0byBzYXZlIG91dHB1dCwgYnV0IHRoZW4KKyAgICMgSSdkIGxvc2UgdGhlIHJjIGZyb20gY29uZmlndXJlLCB3aGljaCBJIG5lZWQuLi4gc2lnaAorICAgbmdjX3JjPSQ/CisgICBpZiBbICRuZ2NfcmMgLW5lIDAgXTt0aGVuCisgICAgICBuc2JfYWJvcnQgIkVycm9yIGR1cmluZyBjb25maWd1cmUgYWxsIChyYz0kbmdjX3JjKSIKKyAgIGZpCit9CisKK25zYl96aXAoKQoreworICAgaWYgWyAkIyAtbmUgMyBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgInVzYWdlOiAkMCByZWxlYXNlIGJ1aWxkX2RpcmVjdG9yeSBkZXN0X2RpciIKKyAgIGZpCisKKyAgIHJlbGVhc2U9JDEKKyAgIGJ1aWxkX2Rpcj0kMgorICAgZGVzdF9kaXI9JDMKKworICAgYnVpbGQ9JGJ1aWxkX2Rpci8kTlNCX1BMQVRGT1JNCisKKyAgIGlmIFsgISAtZCAkYnVpbGQgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICIkYnVpbGQgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisKKyAgIGlmIFsgISAtZCAkYnVpbGQvdXNyIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiaW5zdGFsbCBkaXJlY3RvcnkgJGJ1aWxkL3VzciBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QhIgorICAgZmkKKworICAgY2QgJGJ1aWxkCisKKyAgIHJtIC1mICRkZXN0X2Rpci8kcmVsZWFzZS0kTlNCX1BMQVRGT1JNLnRhcgorICAgbnNiX2luZm8gInRhciBjZiAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIgdXNyIgorICAgdGFyIGNmICRkZXN0X2Rpci8kcmVsZWFzZS0kTlNCX1BMQVRGT1JNLnRhciB1c3IKKworICAgbnNiX2luZm8gImd6aXAgLS1iZXN0ICRkZXN0X2Rpci8kcmVsZWFzZS0kTlNCX1BMQVRGT1JNLnRhciIKKyAgIGd6aXAgLS1iZXN0ICRkZXN0X2Rpci8kcmVsZWFzZS0kTlNCX1BMQVRGT1JNLnRhcgorCisgICBpZiBbICROU0JfUVVJRVQgLW5lIDEgXTsgdGhlbgorICAgICAgbHMgLWx0ICRkZXN0X2RpcgorICAgZmkKK30KKworbnNiX3VwbG9hZCgpCit7CisgICBidWlsZF9kaXI9JDEKKyAgIHRhcmdldD0kMgorICAgbnNiX2Zsb3cgdXBsb2FkIHRvICR0YXJnZXQ6IGNvbmZpZy5sb2cgY29uZmlndXJlLXN1bW1hcnkgbnNiX21ha2UtYWxsLiROU0JfREFURSBuc2JfbWFrZS10ZXN0LiROU0JfREFURQorICAgZGlyPSRQV0QKKyAgIGNkICRidWlsZF9kaXIKKyAgIC91c3IvYmluL3NjcCBjb25maWcubG9nIGNvbmZpZ3VyZS1zdW1tYXJ5IG5zYl9tYWtlLWFsbC4kTlNCX0RBVEUgbnNiX21ha2UtdGVzdC4kTlNCX0RBVEVcCisgICAgICAgICAgICAgICAgICR0YXJnZXQKKyAgIGNkICRkaXIKK30KKworbnNiX2Rpcl9saW5rKCkKK3sKKyAgaWYgWyAkIyAtbHQgMiBdOyB0aGVuCisgICAgbnNiX2Fib3J0ICJ1c2FnZTogbnNiX2Rpcl9saW5rIHNyY19kaXIgZHN0X2RpciIKKyAgZmkKKyAgbGlua19zcmNfZGlyPSQxCisgIGxpbmtfZHN0X2Rpcj0kMgorICBpZiBbIC1kICRsaW5rX3NyY19kaXIgXTsgdGhlbgorICAgIG5zYl9mbG93IHNldCB1cCBzaGFkb3cgZGlyZWN0b3J5ICRsaW5rX2RzdF9kaXIKKyAgICAkTlNCX0RJUkxJTksgJGxpbmtfc3JjX2RpciAkbGlua19kc3RfZGlyCisgICAgcmM9JD8KKyAgICBpZiBbICRyYyAtbmUgMCBdO3RoZW4KKyAgICAgIG5zYl9hYm9ydCAiRXJyb3IgZHVyaW5nIG5zYl9kaXJfbGluayAocmM9JHJjKSIKKyAgICBmaQorICBlbHNlCisgICAgbnNiX2luZm8gIlNraXBwaW5nICRsaW5rX3NyY19kaXIiCisgIGZpCisgIH0KKworbnNiX21ha2UoKQoreworICAgbnNiX2Zsb3cgbWFrZSAkMQorICAgdGFyZ2V0PSQxCisgICBzaGlmdCAxCisgICBwYXJtcz0kQAorCisgICBpZiBbICJ4JE5TQl9NQUtFIiA9ICJ4IiBdO3RoZW4KKyAgICAgICNuc2JfaW5mbyAiU2VhcmNoaW5nIGZvciBHTlUgbWFrZSAoc2V0IE5TQl9NQUtFIHRvIHNraXAgdGhpcyBzdGVwKSIKKyAgICAgIGZvciBwIGluIGBlY2hvICRQQVRIIHwgdHIgJzonICcgJ2AKKyAgICAgIGRvCisgICAgICAgICAjZWNobyAkcAorICAgICAgICAgaWYgWyAteCAkcC9tYWtlIF07dGhlbgorICAgICAgICAgICAgZHVtbXk9YCRwL21ha2UgLS12ZXJzaW9uIDI+JjEgfCBncmVwIEdOVWAKKyAgICAgICAgICAgIGlmIFsgJD8gLWVxIDAgXTt0aGVuCisJICAgICAgICNuc2JfaW5mbyAidXNpbmcgJHAvbWFrZSAoJGR1bW15KSIKKyAgICAgICAgICAgICAgIE5TQl9NQUtFPSRwL21ha2UKKyAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgZmkKKyAgICAgICAgIGlmIFsgLXggJHAvZ21ha2UgXTt0aGVuCisgICAgICAgICAgICBkdW1teT1gJHAvZ21ha2UgLS12ZXJzaW9uIDI+JjEgfCBncmVwIEdOVWAKKyAgICAgICAgICAgIGlmIFsgJD8gLWVxIDAgXTt0aGVuCisJICAgICAgICNuc2JfaW5mbyAidXNpbmcgJHAvZ21ha2UgKCRkdW1teSkiCisgICAgICAgICAgICAgICBOU0JfTUFLRT0kcC9nbWFrZQorICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgWyAieCROU0JfTUFLRSIgPSAieCIgXTt0aGVuCisgICAgICAgICBuc2JfYWJvcnQgIkdOVSBtYWtlIG5vdCBmb3VuZC4gU2V0IE5TQl9NQUtFIHRvIHlvdXIgbWFrZSBleGVjdXRhYmxlLiIKKyAgICAgIGZpCisgICBmaQorCisgICBuc2JfbWFrZV9PVVRQVVQ9bnNiX21ha2UtJHRhcmdldC4kTlNCX0RBVEUKKyAgIG5zYl9pbmZvICJNYWtpbmcgJHRhcmdldC4uLiAobG9nIGlzICRuc2JfbWFrZV9PVVRQVVQpIgorICAgIworICAgaWYgWyAieCR0YXJnZXQiID0gInhhbGwiIF07IHRoZW4KKyAgICAgICROU0JfTUFLRSBOT0FVVE9ERVBTPXkgdG91Y2hpdCAyPiYxIHwgdGVlICRuc2JfbWFrZV9PVVRQVVQKKyAgIGZpCisgICAkTlNCX01BS0UgJE5TQl9NQUtFX0VYVFJBIE5PQVVUT0RFUFM9eSBzdGFydC1mbGFnICR0YXJnZXQgJHBhcm1zIGVuZC1mbGFnIDI+JjEgfCB0ZWUgLWEgJG5zYl9tYWtlX09VVFBVVAorICAgIyBjaGVja2luZyAkPyB3b3VsZCBvbmx5IGdldCB1cyB0aGUgcmMgZnJvbSB0ZWUsIHdoaWNoIGlzIHVzZWxlc3MKKworICAgbnNiX2luZm8gIkNoZWNraW5nIGZvciBlcnJvcnMuLi4iCisgICBlZ3JlcCAtaSAiZXJyb3J8ZmFpbHx3YXJufG5vIHN1Y2h8ZXhpc3RzfHQgZmluZCB8ZXJtaXNzaW9uIGRlbmllZCIgJG5zYl9tYWtlX09VVFBVVCBcCisgICAgICAgICA+IG5zYl9tYWtlLSR0YXJnZXQtYWxsZXJycy4kTlNCX0RBVEUKKyAgICMgYWxsb3cgZm9yIGEgZmV3IGV4Y2VwdGlvbnMKKyAgIGVncmVwIC12IC1pICJeb2t8dGVzdGluZyAuKmZhaWx1cmV8W2EteiZfXShmYWlsfGVycm9yKXx3YXJufGVycm9yKG1pYnxcLjMpfChMT0d8U05NUClfRVJSfEluIGZ1bmN0aW9ufD0gRkFJTFVSRXxERUJVR01TR3wvXCp8c3RhdGljIGxpYnJhcnkgLiogaXMgbm90IHBvcnRhYmxlIiBuc2JfbWFrZS0kdGFyZ2V0LWFsbGVycnMuJE5TQl9EQVRFIFwKKyAgICAgICAgID4gbnNiX21ha2UtJHRhcmdldC1lcnJzLiROU0JfREFURQorICAgaWYgWyAtcyBuc2JfbWFrZS0kdGFyZ2V0LWVycnMuJE5TQl9EQVRFIF07IHRoZW4KKyAgICAgIG5zYl9wcm9tcHQgInByZXNzIGVudGVyIHRvIHZpZXcgZXJyb3JzIgorIyAgICAgIGdyZXAgJzonICRuc2JfbWFrZV9PVVRQVVQgPiBuc2JfbWFrZS0kdGFyZ2V0LWVycnMyLiROU0JfREFURQorIyAgICAgIHRhaWwgLW4gJE5TQl9FUlJfQ1RYX0xJTkVTIG5zYl9tYWtlLSR0YXJnZXQtZXJyczIuJE5TQl9EQVRFID4mMgorICAgICAgdGFpbCAkTlNCX1RBSUxfQVJHUyBuc2JfbWFrZS0kdGFyZ2V0LWVycnMuJE5TQl9EQVRFID4mMgorICAgICAgbnNiX2Fib3J0ICJFcnJvcihzKSBkdXJpbmcgbWFrZSAkdGFyZ2V0IgorICAgZmkKKworICAgaWYgWyAtZiBidWlsZC1pbi1wcm9ncmVzcy1mbGFnIF07dGhlbgorICAgICBuc2JfYWJvcnQgIm1ha2UgJHRhcmdldCBpbmNvbXBsZXRlIgorICAgZmkKK30KKworbnNiX2RlZmF1bHRfcGF0aHMoKQoreworICAgaWYgWyAieCROU0JfVkVSU0lPTiIgPSAieCIgXTsgdGhlbgorICAgICAgTlNCX1ZFUlNJT049InVua25vd24tdmVyc2lvbiIKKyAgIGZpCisgICBpZiBbICJ4JE5TQl9TUkNfRElSIiA9ICJ4IiBdOyB0aGVuCisgICAgICBOU0JfU1JDX0RJUj0kSE9NRS9zcmMvbmV0LXNubXAtJE5TQl9WRVJTSU9OCisgICBmaQorICAgaWYgWyAieCROU0JfQlVJTERfRElSIiA9ICJ4IiBdOyB0aGVuCisgICAgICBOU0JfQlVJTERfRElSPSRIT01FL2J1aWxkLyROU0JfVkVSU0lPTgorICAgICAgaWYgWyAieCROU0JfU1VGRklYIiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgTlNCX0JVSUxEX0RJUj0kTlNCX0JVSUxEX0RJUi8kTlNCX1NVRkZJWAorICAgICAgZmkKKyAgIGZpCisgICBpZiBbICJ4JE5TQl9JTlNUQUxMX0RJUiIgPSAieCIgXTsgdGhlbgorICAgICAgTlNCX0lOU1RBTExfRElSPSIkTlNCX0lOU1RBTExfRElSX0RFRkFVTFQiCisgICBmaQorfQorCituc2JfYnVpbGQoKQoreworICAgaWYgWyAkIyAtbHQgNSBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgInVzYWdlOiAkMCByZWxlYXNlIHNyY19kaXIgYnVpbGRfZGlyZWN0b3J5IGRlc3RfZGlyIGNvbmZpZ19hbGxfZmxhZyAoJEApIgorICAgZmkKKworICAgbnNiX2NvbmZpZ19hbGxfZmxhZz0wCisgICByZWxlYXNlPSQxCisgICBzcmNfZGlyPSQyCisgICBidWlsZF9kaXI9JDMKKyAgIGRlc3RfZGlyPSQ0CisgICBuc2JfY29uZmlnX2FsbF9mbGFnPSQ1CisgICBzaGlmdCA1CisKKyAgIG5zYl9mbG93IGJ1aWxkIGluICRidWlsZF9kaXIKKyAgIG5zYl9mbG93IGhvc3QgJE5TQl9IT1NUCisgICBuc2JfZmxvdyBwbGF0Zm9ybSAkTlNCX1BMQVRGT1JNCisKKyAgIGlmIFsgISAtZCAkc3JjX2RpciBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgIiRzcmNfZGlyIGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisKKyAgIGlmIFsgISAtZCAkYnVpbGRfZGlyIF07IHRoZW4KKyAgICAgIG1rZGlyICRidWlsZF9kaXIKKyAgICAgIGlmIFsgISAtZCAkYnVpbGRfZGlyIF07IHRoZW4KKyAgICAgICAgIG5zYl9hYm9ydCAiJGJ1aWxkX2RpciBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QhIgorICAgICAgZmkKKyAgIGZpCisKKyAgIG5zYl9pbmZvICJDaGFuZ2luZyBkaXJlY3RvcmllcyB0byAkYnVpbGRfZGlyIgorICAgY2QgJGJ1aWxkX2RpcgorCisgICBpZiBbICROU0JfQ0xFQU4gLWd0IDAgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIkNsZWFuaW5nIHVwLi4uIgorICAgICAgaWYgWyAkTlNCX0NMRUFOIC1lcSAyIF07dGhlbgorICAgICAgICBpZiBbICJ4JFBXRCIgPSAieC8iIF07IHRoZW4KKyAgICAgICAgICAgbnNiX2Fib3J0ICJOb3QgcnVubmluZyBybSAtZlIgZnJvbSAvIgorICAgICAgICBmaQorICAgICAgICBuc2JfaW5mbyAicm0gLWZSICogLlthLXpBLVpdKiA+IC9kZXYvbnVsbCAyPiYxIgorICAgICAgICBybSAtZlIgKiAuW2EtekEtWl0qID4gL2Rldi9udWxsIDI+JjEKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgWyAieCRkZXN0X2RpciIgIT0gIngiIC1hICJ4JGRlc3RfZGlyIiAhPSAieC8iIF07IHRoZW4KKyAgICAgICAgICBuc2JfaW5mbyAicm0gLWZSIG5zYl8qICRkZXN0X2RpciA+IC9kZXYvbnVsbCAyPiYxIgorICAgICAgICAgICNybSAtZlIgbnNiXyogJGRlc3RfZGlyID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgZmkKKyAgICAgICAgaWYgWyAtZiBNYWtlZmlsZSBdOyB0aGVuCisgICAgICAgICAgICBuc2JfbWFrZSBOT0FVVE9ERVBTPXkgZGlzdGNsZWFuCisgICAgICAgICAgICBuc2JfYnVpbGRfcmM9JD8KKyAgICAgICAgICAgIGlmIFsgJG5zYl9idWlsZF9yYyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgbnNiX2Fib3J0ICJFcnJvciBkdXJpbmcgbWFrZSBkaXN0Y2xlYW4gKHJjPSRuc2JfYnVpbGRfcmMpIgorICAgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICBmaQorCisgICBpZiBbICJYJGRlc3RfZGlyIiAhPSAiWCIgLWEgISAtZCAkZGVzdF9kaXIgXTsgdGhlbgorICAgICAgbWtkaXIgLXAgJGRlc3RfZGlyCisgICAgICBpZiBbICEgLWQgJGRlc3RfZGlyIF07IHRoZW4KKyAgICAgICAgIG5zYl9hYm9ydCAiJGRlc3RfZGlyIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCEiCisgICAgICBmaQorICAgZmkKKworICAgaWYgWyAkTlNCX1NLSVBfRElSTElOSyAtZXEgMSBdOyB0aGVuCisgICAgICBuc2JfaW5mbyAiU2tpcHBpbmcgbnNiX2Rpcl9saW5rIgorICAgZWxzZQorICAgICAgZm9yIGQgaW4gJE5TQl9ESVJMSU5LX0RJUlM7IGRvCisgICAgICAgIG5zYl9kaXJfbGluayAkc3JjX2Rpci8kZCAkYnVpbGRfZGlyLyRkCisgICAgICBkb25lCisgICBmaQorCisgICBpZiBbICROU0JfU0tJUF9DT05GSUcgLW5lIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIkNvbmZpZ3VyaW5nLi4uIChsb2cgaXMgbnNiX2NvbmZpZy4kTlNCX0RBVEUpIgorICAgICAgaWYgWyAieCRuc2JfY29uZmlnX2FsbF9mbGFnIiA9ICJ4MCIgXTsgdGhlbgorICAgICAgICAgIG5zYl9jb25maWdfZGlzdCAkc3JjX2RpciAiJGRlc3RfZGlyIgorICAgICAgZWxzZQorICAgICAgICAgIG5zYl9jb25maWdfYWxsICRzcmNfZGlyICIkZGVzdF9kaXIiCisgICAgICBmaQorICAgICAgbnNiX3Byb21wdCAicHJlc3MgZW50ZXIgdG8gY29udGludWUiCisgICBmaQorCisgICBpZiBbICROU0JfU0tJUF9CVUlMRCAtZXEgMSBdOyB0aGVuCisgICAgICBuc2JfaW5mbyAiU2tpcHBpbmcgJ21ha2UgYWxsJyIKKyAgIGVsc2UKKyAgICAgIG5zYl9tYWtlIGFsbAorICAgZmkKKworICAgaWYgWyAkTlNCX1NLSVBfVEVTVCAtZXEgMSBdOyB0aGVuCisgICAgICBuc2JfaW5mbyAiU2tpcHBpbmcgJ21ha2UgdGVzdCciCisgICBlbHNlCisgICAgICBuc2JfcHJvbXB0ICJObyBlcnJvcnMgZm91bmQsIHByZXNzIGVudGVyIHRvIHJ1biB0ZXN0cyIKKyAgICAgIFNOTVBfVE1QRElSX0JBU0U9JGJ1aWxkX2Rpci90ZXN0cworICAgICAgZXhwb3J0IFNOTVBfVE1QRElSX0JBU0UKKyAgICAgIG5zYl9tYWtlIHRlc3QKKyAgIGZpCisKKyAgIGlmIFsgJE5TQl9TS0lQX0lOU1RBTEwgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nICdtYWtlIGluc3RhbGwnIgorICAgZWxzZQorICAgICAgbnNiX3Byb21wdCAiTm8gZXJyb3JzIGZvdW5kLCBwcmVzcyBlbnRlciB0byBpbnN0YWxsIgorICAgICAgIyBERVNURElSIG1ha2VzIHN1cmUgdGhlIHBlcmwgc3R1ZmYgZ29lcyBpbnRvICRkZXN0X2RpciwgdG9vCisgICAgICBuc2JfbWFrZSBpbnN0YWxsIERFU1RESVI9IiRkZXN0X2RpciIgJE5TQl9FWFRSQV9JTlNUQUxMCisgICBmaQorCisgICByZXR1cm4gMAorfQpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItbmlnaHRseSBiL2Rpc3QvbnNiLW5pZ2h0bHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzI5OGEyNgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbnNiLW5pZ2h0bHkKQEAgLTAsMCArMSwxODggQEAKKyMhL2Jpbi9zaAorIworIyAkSWQkCisjIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwordXNhZ2UoKQoreworICAgZWNobyAiVXNhZ2U6ICQwICBbb3B0aW9uYWwgcGFyYW1zXSBWRVJTSU9OIgorICAgZWNobyAiIgorICAgZWNobyAiIG9wdGlvbmFsIHBhcmFtczogWy14XSBbLXMgU1JDRF0gWy1iIEJVSUxERF0gWy1pIElOU1RBTExEXSIKKyAgIGVjaG8gIiAgICAgICAgICAgICAgICAgIFstaCBob3N0XSBbLXAgcGF0aF0iCisgICBlY2hvICIgVkVSU0lPTiAgICA6IHJlbGVhc2UgbnVtYmVyIChlZyA1LjIuMikiCisgICBlY2hvICIgLXMgU1JDRElSICA6IHNvdXJlIGRpcmVjdG9yeSBbJEhPTUUvc3JjL25ldC1zbm1wLVZFUlNJT05dIgorICAgZWNobyAiIC1iIEJVSUxERCAgOiBidWlsZCBkaXJlY3RvcnkgWyRIT01FL2J1aWxkL10iCisgICBlY2hvICIgICAgICAgICAgICAgIE5PVEUtcGxhdGZvcm0gd2lsbCBiZSBhcHBlbmRlZCB0byBidWlsZCBkaXJlY3RvcnkiCisgICBlY2hvICIgLWkgSU5TVEFMTEQ6IGluc3RhbGwgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9cJFBMQVRGT1JNL3Vzcl0iCisgICBlY2hvICIiCisgICBlY2hvICIgLXggOiBjb25maWd1cmUgZXh0cmEgZmVhdHVyZXMgZm9yIHByZS1yZWxlYXNlIHRlc3RpbmciCisgICBlY2hvICIgLUMgOiBkb24ndCBzb3VyY2UgJEhPTUUvLnNubXAvbnNiLW5pZ2h0bHkiCisgICBlY2hvICIiCisgICBlY2hvICIgLWYgOiBmcm9tIGFkZHJlc3MgZm9yIGVtYWlsIHJlc3VsdHMiCisgICBlY2hvICIgLWUgOiBhZGRyZXNzIHRvIGVtYWlsIGVycm9yIHJlc3VsdHMgdG8iCisgICBlY2hvICIgLW8gOiBhZGRyZXNzIHRvIGVtYWlsIHN1Y2Nlc3MgcmVzdWx0cyB0byIKKyAgIGVjaG8gIiAtaCA6IGhvc3QgdG8gdXBsb2FkIHJlc3VsdHMgdG8iCisgICBlY2hvICIgLXAgOiBwYXRoIHRvIHVwbG9hZCByZXN1bHRzIHRvIgorICAgZXhpdCAxCit9CisKKyNzZXQgLXgKKworIyBtYWtlIGdldG9wdHMgd29yayBvbiBUcnU2NCBieSByZXNwYXduaW5nIGluIFBvc2l4IG1vZGUKK2lmIFsgImB1bmFtZWAiID0gIk9TRjEiIC1hICIkQklOX1NIIiAhPSAieHBnNCIgXTsgdGhlbgorICAgIEJJTl9TSD14cGc0CisgICAgZXhwb3J0IEJJTl9TSAorICAgIGV4ZWMgJDAgJCoKK2ZpCisKKyMKKyMgZmluZCBuc2ItcGxhdGZvcm0gYmFzZWQgb24gdGhlIHBhdGggdG8gdGhpcyBzY3JpcHQKKyMKK0VYRV9QQVRIPWBkaXJuYW1lICQwYAoraWYgWyAhIC1mICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zIF07dGhlbgorICAgaWYgWyAtZiAkSE9NRS9iaW4vbnNiLWZ1bmN0aW9ucyBdOyB0aGVuCisgICAgICBFWEVfUEFUSD0kSE9NRS9iaW4KKyAgIGVsaWYgWyAtZiBuc2ItZnVuY3Rpb25zIF07dGhlbgorICAgICAgRVhFX1BBVEg9JFBXRAorICAgZWxzZQorICAgICAgZWNobyAiQ2Fubm90IGZpbmQgbnNiLWZ1bmN0aW9ucyBpbiAkRVhFX1BBVEgsICRIT01FL2JpbiBvciAkUFdEIgorICAgICAgZXhpdCAxCisgICBmaQorZmkKKworaWYgWyAieCQxIiA9ICJ4LUMiIF07IHRoZW4KKyAgICBzaGlmdAorZWxzZQorICAgIGlmIFsgLWYgJEhPTUUvLnNubXAvbnNiLW5pZ2h0bHkgXTt0aGVuCisgICAgICAgIC4gJEhPTUUvLnNubXAvbnNiLW5pZ2h0bHkKKyAgICBmaQorZmkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyAtciA6IHJlbW92ZSBidWlsZCBkaXIgYmVmb3JlCisjIC1SIDogcmVtb3ZlIGJ1aWxkIGRpciBhZnRlcgorUEFSTVM9IiRQQVJNUyAtciIKK05JR0hUTFlfVkVSQk9TRT0wCitOU0JfRVJSX1JFU1VMVFNfVE89IiIKK05TQl9PS19SRVNVTFRTX1RPPSIiCisKK3doaWxlIGdldG9wdHMgYjplOmY6aTpvOnM6eGg6cDp2IG9wdAorZG8KKyAgICBjYXNlICIkb3B0IiBpbgorICAgICAgYikgIE5TQl9CVUlMRF9ESVI9JE9QVEFSRzs7CisgICAgICBlKSAgTlNCX0VSUl9SRVNVTFRTX1RPPSRPUFRBUkc7OworICAgICAgZikgIE5TQl9GUk9NPSRPUFRBUkc7OworICAgICAgbykgIE5TQl9PS19SRVNVTFRTX1RPPSRPUFRBUkc7OworICAgICAgaSkgIFBBUk1TPSItaSAkT1BUQVJHICRQQVJNUyI7OworICAgICAgcykgIE5TQl9TUkNfRElSPSRPUFRBUkc7OworICAgICAgaCkgIE5TQl9TQ1BfSE9TVD0kT1BUQVJHCisgICAgICAgICAgUEFSTVM9Ii1oICROU0JfU0NQX0hPU1QgJFBBUk1TIgorICAgICAgICAgIDs7CisgICAgICBwKSAgTlNCX1NDUF9ERVNUPSRPUFRBUkcKKyAgICAgICAgICBQQVJNUz0iLXAgJE5TQl9TQ1BfREVTVCAkUEFSTVMiCisgICAgICAgICAgOzsKKyAgICAgIHgpICBQQVJNUz0iLXggJFBBUk1TIjs7CisgICAgICB2KSAgTklHSFRMWV9WRVJCT1NFPTE7OworICAgICAgXD8pIyB1bmtub3duIGZsYWcKKyAgICAgICAgdXNhZ2U7OworICAgIGVzYWMKK2RvbmUKK3NoaWZ0IGBleHByICRPUFRJTkQgLSAxYAorCitpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgIGVjaG8gImV4cGVjdGluZyAxIGFyZ3VtZW50LCBnb3QgJCMgKCRAKSIKKyAgIHVzYWdlCitmaQorCitOU0JfVkVSU0lPTj0kMQorCisuICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zCisKK25zYl9kZWZhdWx0X3BhdGhzCisKK1BBUk1TPSIkUEFSTVMgLWIgJE5TQl9CVUlMRF9ESVIgLXMgJE5TQl9TUkNfRElSIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZWNobyAiU3RhcnQ6IGBkYXRlYCIKK2VjaG8gIlJ1bm5pbmcgbnNiLXBhY2thZ2UgJFBBUk1TICROU0JfVkVSU0lPTiIKK2lmIFsgJE5JR0hUTFlfVkVSQk9TRSA9IDEgXTsgdGhlbgorICAgICRFWEVfUEFUSC9uc2ItcGFja2FnZSAkUEFSTVMgJE5TQl9WRVJTSU9OCitlbHNlCisgICAgJEVYRV9QQVRIL25zYi1wYWNrYWdlICRQQVJNUyAkTlNCX1ZFUlNJT04gPiAvZGV2L251bGwKK2ZpCitSQz0kPworZWNobyAiRmluaXNoOiBgZGF0ZWAiCitjZCAkTlNCX0JVSUxEX0RJUgorY2FzZSAkUkMgaW4KKyAgICAwKSAgUkVTVUxUPSJTdWNjZXNzIgorICAgICAgICBOU0JfUkVTVUxUU19UTz0kTlNCX09LX1JFU1VMVFNfVE8KKyAgICAgICAgRklMRVM9IiIKKyAgICAgICAgOzsKKyAgICAqKSBSRVNVTFQ9IkVycm9yIChyYyAkUkMpIgorICAgICAgIE5TQl9SRVNVTFRTX1RPPSROU0JfRVJSX1JFU1VMVFNfVE8KKyAgICAgICBGSUxFUz1gbHMgbnNiLW1ha2UtKi1lcnJzLiogMj4vZGV2L251bGxgCisgICAgICAgaWYgWyAieCROU0JfU0NQX0hPU1QiICE9ICJ4IiBdOyB0aGVuCisgICAgICAgICAgbnNiX3VwbG9hZCAkTlNCX0JVSUxEX0RJUiAkTlNCX1NDUF9IT1NUOiROU0JfU0NQX0RFU1QvJE5TQl9WRVJTSU9OLyROU0JfU1VGRklYCisgICAgICAgZmkKKyAgICAgICAgOzsKK2VzYWMKK2VjaG8gIlJlc3VsdDogJFJFU1VMVCIKKworaWYgWyAieCROU0JfUkVTVUxUU19UTyIgIT0gIngiIF07IHRoZW4KKyAgIFNVQkpFQ1Q9IiROU0JfVkVSU0lPTiAkUkVTVUxUIG9uICROU0JfSE9TVCAoJE5TQl9QTEFURk9STSkiCisgICBlY2hvICJTZW5kaW5nIG1haWwgdG8gJE5TQl9SRVNVTFRTX1RPOiAkU1VCSkVDVCIKKyAgIGNhc2UgYHVuYW1lIC1zYCBpbgorICAgICAgT3BlbkJTRHxGcmVlQlNEKSAjIG1haWwgZG9lc24ndCBhbGxvdyBzZXR0aW5nIEZyb20KKyAgICAgICAgICMgc2VlbXMgdG8gYmUgaW4gL3Vzci9zYmluLCB3aGljaCBpc24ndCBpbiBhbGwgcGF0aHMKKwkgUEFUSD0vdXNyL3NiaW4vOiRQQVRICisgICAgICAgICBlY2hvICJGcm9tOiAkTlNCX0ZST00iID4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJUbzogJE5TQl9SRVNVTFRTX1RPIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgICMgbWFpbC1yZWxhdGVkIGVycm9ycyB0byBPSyBhZGRyZXNzICh1c3VsbHkgYnVpbGRtYXN0ZXIpCisgICAgICAgICBlY2hvICJFcnJvcnMtVG86ICROU0JfT0tfUkVTVUxUU19UTyIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJTdWJqZWN0OiAkU1VCSkVDVCIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICIiID4+IG1haWwucmVzdWx0cworICAgICAgICAgZ3JlcCBDT05GSUdVUkVfT1BUSU9OUyBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5ofHNlZCAnczovaG9tZS9bXiBdKi9idWlsZDokSE9NRTpnJyA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGVjaG8gIlJlc3VsdDogJFJFU1VMVCIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBpZiBbICJ4JEZJTEVTIiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgICAgY2F0ICRGSUxFUyA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGZpCisgICAgICAgICBzZW5kbWFpbCAtdCA8IG1haWwucmVzdWx0cworICAgICAgICAgOzsKKyAgICAgIFN1bk9TKSAjIG5vIHNlbmRtYWlsLCBubyBtYWlsIC1zLCBuZWVkIC10IGZvciBUbyAKKyAgICAgICAgIGVjaG8gIkZyb206ICROU0JfRlJPTSIgPiBtYWlsLnJlc3VsdHMKKyAgICAgICAgICMgbWFpbC1yZWxhdGVkIGVycm9ycyB0byBPSyBhZGRyZXNzICh1c3VsbHkgYnVpbGRtYXN0ZXIpCisgICAgICAgICBlY2hvICJFcnJvcnMtVG86ICROU0JfT0tfUkVTVUxUU19UTyIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJTdWJqZWN0OiAkU1VCSkVDVCIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICIiID4+IG1haWwucmVzdWx0cworICAgICAgICAgZ3JlcCBDT05GSUdVUkVfT1BUSU9OUyBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5ofHNlZCAnczovaG9tZS9bXiBdKi9idWlsZDokSE9NRTpnJyA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGVjaG8gIlJlc3VsdDogJFJFU1VMVCIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBpZiBbICJ4JEZJTEVTIiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgICAgY2F0ICRGSUxFUyA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGZpCisgICAgICAgICBtYWlsIC10ICROU0JfUkVTVUxUU19UTyA8IG1haWwucmVzdWx0cworICAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgICBlY2hvICJSZXN1bHQ6ICRSRVNVTFQiID4+IG1haWwucmVzdWx0cworICAgICAgICAgaWYgWyAieCRGSUxFUyIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgICAgIGNhdCAkRklMRVMgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBmaQorICAgICAgICAgbWFpbCAtcyAiJFNVQkpFQ1QiICROU0JfUkVTVUxUU19UTyA8IG1haWwucmVzdWx0cworICAgICAgICAgOzsKKyAgIGVzYWMKK2ZpCisKK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKyAgICAgICAgaWYgWyAieCROU0JfQlVJTERfRElSIiA9ICIvIiBdOyB0aGVuCisgICAgICAgICAgICBuc2JfYWJvcnQgIk5vdCBydW5uaW5nIHJtIC1mUiBmcm9tIC8iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC9iaW4vcm0gLWZSICROU0JfQlVJTERfRElSID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgZmkKK2ZpCisKK2V4aXQgJFJDCmRpZmYgLS1naXQgYS9kaXN0L25zYi1wYWNrYWdlIGIvZGlzdC9uc2ItcGFja2FnZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNTFjMTUwCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uc2ItcGFja2FnZQpAQCAtMCwwICsxLDEzNyBAQAorIyEvYmluL3NoCisjCisjICRJZCQKKyMgQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCit1c2FnZSgpCit7CisgICBlY2hvICJVc2FnZTogJDAgIFtwYXJhbXNdIFZFUlNJT04iCisgICBlY2hvICIiCisgICBlY2hvICIgIHBhcmFtczogWy1jXSBbLWRdIFstUF0gWy1zIE5TQl9TUkNfRElSXSBbLWIgQlVJTEREXSBbLWkgTlNCX0lOU1RBTExfRElSXSIKKyAgIGVjaG8gIiAgICAgICAgICBbLWggaG9zdF0gWy1wIHBhdGhdIgorICAgZWNobyAiIgorICAgZWNobyAiIFZFUlNJT04gICAgOiByZWxlYXNlIG51bWJlciAoZWcgNS4yLjIpIgorICAgZWNobyAiIC1zIE5TQl9TUkNfRElSICA6IHNvdXJjZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXSIKKyAgIGVjaG8gIiAtYiBCVUlMREQgIDogYnVpbGQgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9dIgorICAgZWNobyAiICAgICAgICAgICAgICBOT1RFLXBsYXRmb3JtIHdpbGwgYmUgYXBwZW5kZWQgdG8gYnVpbGQgZGlyZWN0b3J5IgorICAgZWNobyAiIC1pIE5TQl9JTlNUQUxMX0RJUjogaW5zdGFsbCBkaXJlY3RvcnkgWyRIT01FL2J1aWxkL1wkUExBVEZPUk0vdXNyXSIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiAteCA6IGNvbmZpZ3VyZSBleHRyYSBmZWF0dXJlcyBmb3IgcHJlLXJlbGVhc2UgdGVzdGluZyIKKyAgIGVjaG8gIiAtYyA6IHNraXAgY29uZmlndXJlIgorICAgZWNobyAiIC1kIDogZGlydHkgYnVpbGQgKGRvbid0IG1ha2UgZGlzdGNsZWFuKSIKKyAgIGVjaG8gIiAtbSA6IHNraXAgJ21ha2UgYWxsJyIKKyAgIGVjaG8gIiAtUCA6IHBhdXNlIGF0IHByb21wdHMgaW4gYmV0d2VlbiBzdGFnZXMiCisgICBlY2hvICIgLXIgOiByZW1vdmUgYnVpbGQgZGlyIChybSAtZlIpIGJlZm9yZSBidWlsZCIKKyAgIGVjaG8gIiAtUiA6IHJlbW92ZSBidWlsZCBkaXIgKHJtIC1mUikgYWZ0ZXIgc3VjY2Vzc2Z1bCBidWlsZCIKKyAgIGVjaG8gIiAtdCA6IHNraXAgJ21ha2UgdGVzdCciCisgICBlY2hvICIgLUMgOiBkb24ndCBzb3VyY2UgJEhPTUUvLnNubXAvbnNiLXBhY2thZ2UiCisgICBlY2hvICIiCisgICBlY2hvICIgLWggOiBob3N0IHRvIHVwbG9hZCByZXN1bHRzIHRvIgorICAgZWNobyAiIC1wIDogcGF0aCB0byB1cGxvYWQgcmVzdWx0cyB0byIKKyAgIGV4aXQgMQorfQorCisjdHJhcCBleGl0IFNJR0lOVAorCisjc2V0IC14CisKKyMgbWFrZSBnZXRvcHRzIHdvcmsgb24gVHJ1NjQgYnkgcmVzcGF3bmluZyBpbiBQb3NpeCBtb2RlCitpZiBbICJgdW5hbWVgIiA9ICJPU0YxIiAtYSAiJEJJTl9TSCIgIT0gInhwZzQiIF07IHRoZW4KKyAgICBCSU5fU0g9eHBnNAorICAgIGV4cG9ydCBCSU5fU0gKKyAgICBleGVjICQwICQqCitmaQorCisjCisjIGZpbmQgbnNiLXBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoaXMgc2NyaXB0CisjCitFWEVfUEFUSD1gZGlybmFtZSAkMGAKK2lmIFsgISAtZiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgIGlmIFsgLWYgJEhPTUUvYmluL25zYi1mdW5jdGlvbnMgXTsgdGhlbgorICAgICAgRVhFX1BBVEg9JEhPTUUvYmluCisgICBlbGlmIFsgLWYgbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgICAgIEVYRV9QQVRIPSRQV0QKKyAgIGVsc2UKKyAgICAgIGVjaG8gIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMgaW4gJEVYRV9QQVRILCAkSE9NRS9iaW4gb3IgJFBXRCIKKyAgICAgIGV4aXQgMQorICAgZmkKK2ZpCisKK2lmIFsgIngkMSIgPSAieC1DIiBdOyB0aGVuCisgICAgc2hpZnQKK2Vsc2UKKyAgICBpZiBbIC1mICRIT01FLy5zbm1wL25zYi1wYWNrYWdlIF07dGhlbgorICAgICAgICAuICRIT01FLy5zbm1wL25zYi1wYWNrYWdlCisgICAgZmkKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1JFTU9WRV9TVUNDRVNTPTAKKworIyAgICAgIHgpICB4PSRPUFRBUkcgOzsKK3doaWxlIGdldG9wdHMgYjpjZGg6aTptUHA6clJzOnR4IG9wdAorZG8KKyAgICBjYXNlICIkb3B0IiBpbgorICAgICAgYikgIE5TQl9CVUlMRF9ESVI9JE9QVEFSRyA7OworICAgICAgYykgIE5TQl9TS0lQX0NPTkZJRz0xIDs7CisgICAgICBkKSAgTlNCX0NMRUFOPTAgOzsKKyAgICAgIGgpICBOU0JfU0NQX0hPU1Q9JE9QVEFSRyA7OworICAgICAgaSkgIE5TQl9JTlNUQUxMX0RJUj0kT1BUQVJHIDs7CisgICAgICBtKSAgTlNCX1NLSVBfQlVJTEQ9MSA7OworICAgICAgUCkgIE5TQl9QUk9NUFQ9MSA7OworICAgICAgcCkgIE5TQl9TQ1BfREVTVD0kT1BUQVJHIDs7CisgICAgICByKSAgTlNCX0NMRUFOPTIgOzsKKyAgICAgIFIpICBSRU1PVkVfU1VDQ0VTUz0xIDs7CisgICAgICBzKSAgTlNCX1NSQ19ESVI9JE9QVEFSRyA7OworICAgICAgdCkgIE5TQl9TS0lQX1RFU1Q9MSA7OworICAgICAgeCkgIE5TQl9DT05GSUdfQUxMPTE7OworICAgICAgXD8pIyB1bmtub3duIGZsYWcKKyAgICAgICAgdXNhZ2U7OworICAgIGVzYWMKK2RvbmUKK3NoaWZ0IGBleHByICRPUFRJTkQgLSAxYAorCitpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgIGVjaG8gImV4cGVjdGluZyAxIGFyZ3VtZW50LCBnb3QgJCMgKCRAKSIKKyAgIHVzYWdlCitmaQorCitOU0JfVkVSU0lPTj0kMQorCisuICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zCisKK25zYl9kZWZhdWx0X3BhdGhzCisKK2lmIFsgJE5TQl9DTEVBTiAtZXEgMSBdOyB0aGVuCisgICBpZiBbICROU0JfU0tJUF9DT05GSUcgLWVxIDEgXTsgdGhlbgorICAgICAgZWNobyAiQSBjbGVhbiBidWlsZCBhbHNvIHJlcXVpcmVzIGNvbmZpZ3VyYXRpb24gKC1kIGFuZCAtYyIKKyAgICAgIGVjaG8gImNhbm5vdCBib3RoIGJlIHNwZWNpZmllZCkuIgorICAgICAgdXNhZ2UKKyAgIGZpCitmaQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCituc2JfcHJvbXB0ICJwcmVzcyBlbnRlciB0byBidWlsZCAkTlNCX1NSQ19ESVIgaW4gJE5TQl9CVUlMRF9ESVIsIGFuZCBpbnN0YWxsIGluICROU0JfSU5TVEFMTF9ESVIiCituc2JfYnVpbGQgJE5TQl9WRVJTSU9OICROU0JfU1JDX0RJUiAkTlNCX0JVSUxEX0RJUiAkTlNCX0lOU1RBTExfRElSICROU0JfQ09ORklHX0FMTAorcmM9JD8KK2lmIFsgIngkTlNCX1NDUF9IT1NUIiAhPSAieCIgXTsgdGhlbgorICAgbnNiX3VwbG9hZCAkTlNCX0JVSUxEX0RJUiAkTlNCX1NDUF9IT1NUOiROU0JfU0NQX0RFU1QvJE5TQl9WRVJTSU9OLyROU0JfSE9TVC8KK2ZpCitpZiBbICRyYyAtZXEgMCBdICYmIFsgJFJFTU9WRV9TVUNDRVNTIC1lcSAxIF07dGhlbgorICAgIG5zYl9wcm9tcHQgInByZXNzIGVudGVyIHRvIHJlbW92ZSAkTlNCX0JVSUxEX0RJUiIKKyAgICBpZiBbICJ4JE5TQl9CVUlMRF9ESVIiID0gIi8iIF07IHRoZW4KKyAgICAgICBuc2JfYWJvcnQgIk5vdCBydW5uaW5nIHJtIC1mUiBmcm9tIC8iCisgICAgZWxzZQorICAgICAgIC9iaW4vcm0gLWZSICROU0JfQlVJTERfRElSID4gL2Rldi9udWxsIDI+JjEKKyAgICBmaQorZmkKKworbnNiX3Byb21wdCAicHJlc3MgZW50ZXIgdG8gZXhpdCB3aXRoIHJjICRSQyIKK2V4aXQgJHJjCmRpZmYgLS1naXQgYS9kaXN0L25zYi1wbGF0Zm9ybSBiL2Rpc3QvbnNiLXBsYXRmb3JtCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE3NTUwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25zYi1wbGF0Zm9ybQpAQCAtMCwwICsxLDI3IEBACisjIS9iaW4vc2gKKyMKKyMgJElkJAorIyBBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGZyZWVzbm1wLmNvbT4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMKKyMgZmluZCBuc2ItcGxhdGZvcm0gYmFzZWQgb24gdGhlIHBhdGggdG8gdGhpcyBzY3JpcHQKKyMKK0VYRV9QQVRIPWBkaXJuYW1lICQwYAoraWYgWyAtZiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgIC4gJEVYRV9QQVRIL25zYi1mdW5jdGlvbnMKK2VsaWYgWyAtZiAkSE9NRS9iaW4vbnNiLWZ1bmN0aW9ucyBdOyB0aGVuCisgICAuICRIT01FL2Jpbi9uc2ItZnVuY3Rpb25zCitlbGlmIFsgLWYgbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgIC4gbnNiLWZ1bmN0aW9ucworZWxzZQorICAgZWNobyAiQ2Fubm90IGZpbmQgbnNiLWZ1bmN0aW9ucyBpbiAkRVhFX1BBVEgsICRIT01FL2JpbiBvciAkUFdEIgorICAgZXhpdCAxCitmaQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCituc2Jfc3lzbmFtZQpkaWZmIC0tZ2l0IGEvZGlzdC9wYXRtZSBiL2Rpc3QvcGF0bWUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmI3MTA4MgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvcGF0bWUKQEAgLTAsMCArMSwzNDcgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2UgR2V0b3B0OjpHVUk6Okxvbmc7Cit1c2UgUVdpemFyZDsKK3VzZSBRV2l6YXJkOjpBUEk7Cit1c2UgRGF0YTo6RHVtcGVyOwordXNlIEN3ZDsKKwordXNlIEdldG9wdDo6U3RkOworR2V0b3B0OjpHVUk6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UpKTsKKwordXNlIHN0cmljdDsKKworb3VyICVvcHRzID0KKygKKyAnZCcgPT4gJEVOVnsnSE9NRSd9IC4gIi9zcmMvc25tcC9wYXRtZS8iLAorICdiJyA9PiAnbWFpbiw1LjQsNS4zLDUuMicsCisgJ3AnID0+ICctcDAnLAorKTsKKworIyBzZXRzIHRoZSBvcmRlciBzaG93bgorb3VyIEBjb2RldHJlZXMgPSAoJ21haW4nLAorCQkgICc1LjQnLAorCQkgICc1LjMnLAorCQkgICc1LjInLAorCQkgICc1LjEnLAorCQkgICc1LjAnLAorCQkgICdVQ0QnKTsKKworb3VyICVjb2RldHJlZXMgPSAoJzUuMCcgPT4gJ1Y1LTAtcGF0Y2hlcycsCisJCSAgJzUuMScgPT4gJ1Y1LTEtcGF0Y2hlcycsCisJCSAgJzUuMicgPT4gJ1Y1LTItcGF0Y2hlcycsCisJCSAgJzUuMycgPT4gJ1Y1LTMtcGF0Y2hlcycsCisJCSAgJzUuNCcgPT4gJ1Y1LTQtcGF0Y2hlcycsCisJCSAgJ21haW4nID0+ICduZXQtc25tcCcsCisJCSAgJ1VDRCcgPT4gJ1Y0LTItcGF0Y2hlcycpOworCitvdXIgKEBjYXB0dXJlcywgJGNhcGZpbHQsICRyZXN1bHQsICVjYXB0dXJlcywgJGNhcHR1cmVudW0pOworCitHZXRPcHRpb25zKFwlb3B0cywKKwkgICBbJ2Z8ZmlsZT1zJywgICAgICAgICAgICdQYXRjaCBmaWxlJ10sCisJICAgWydkfGJhc2UtZGlyZWN0b3J5PXMnLCAnQmFzZSBkaXJlY3Rvcnkgb2YgY2hlY2tvdXRzJ10sCisJICAgWydwfHBhdGNoLWFyZ3M9cycsICAgICAnRGVmYXVsdCBwYXRjaCBhcmd1bWVudHMgKC1wMSknXSwKKworCSAgIFsnR1VJOnNlcGFyYXRvcicsICAgJ1BhdGNoIGFwcGxpY2F0aW9uIHNwZWNpZmljczsnXSwKKwkgICBbJ2J8YnJhY2hlcz1zJywgICAgICdCcmFuY2hlcyB0byBhcHBseSB0byAoZWcgNS4xLDUuMiwuLi4pJ10sCisJICAgWydtfGNvbW1pdC1tc2c9cycsICAnRGVmYXVsdCBjb21taXQgbWVzc2FnZSB0byB1c2UnXSwKKwkgICBbJ0R8c3ViZGlyPXMnLCAgICAgICdBcHBseSBwYXRjaGVzIHRvIGEgc3ViZGlyZWN0b3J5J10sCisJICAgWyd1fG5vLXVwZGF0ZScsICAgICAnRG8gbm90IHJ1biBzdm4gc3RhdHVzL3VwZGF0ZSBpbiB0aGUgZGlyZWN0b3J5IGZpcnN0LiAgT25seSB1c2UgdGhpcyBpZiBpdFwncyBrbm93biBjbGVhbi4nXSwKKwkgICk7CisKK215ICViczsKK2lmICgkb3B0c3snYid9KSB7CisgICAgbWFwIHsgJGJzeyRffSA9IDE7IH0gc3BsaXQoLyxccyovLCRvcHRzeydiJ30pOyAKK30KKyRvcHRzeydkJ30gLj0gIi8iIGlmICgkb3B0c3snZCd9ICF+IC9cLyQvKTsKKworbXkgJHF3ID0gbmV3IFFXaXphcmQoKTsKK215ICRwcmlzID0gbG9hZF9wcmltYXJpZXMoKTsKKyRxdy0+eydwcmltYXJpZXMnfSA9ICRwcmlzOworCiskcXctPnF3cGFyYW0oJ3N2bmNvbW1pdCcsJG9wdHN7J20nfSkgaWYgKCRvcHRzeydtJ30pOworCiskcXctPm1hZ2ljKCd0b3AnKTsKKworc3ViIG1ha2VfdG9wcyB7CisgICAgbXkgQHRvcHM7CisgICAgZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCXB1c2ggQHRvcHMsIAorCSAgcXdfY2hlY2tib3goJGssICJBcHBseSB0byAkayIsIDEsIDAsIAorCQkgICAgICBkZWZhdWx0ID0+ICRxdy0+cXdwYXJhbSgkaykgfHwgJGJzeyRrfSwKKwkJICAgICAgb3ZlcnJpZGUgPT4gMSk7CisgICAgfQorICAgIHJldHVybiBAdG9wczsKK30KKworc3ViIGxvYWRfcHJpbWFyaWVzIHsKKyAgICBteSBAdG9wcyA9IG1ha2VfdG9wcygpOworICAgIHJldHVybgorICAgICAgeworICAgICAgIHRvcCA9PgorICAgICAgIHF3X3ByaW1hcnkoJ3RvcCcsJ1NlbGVjdCBwYWNrYWdlcyB0byBhcHBseSB0aGUgcGF0Y2ggdG86JywgJycsIAorCQkgIFtAdG9wcywKKwkJICBxd190ZXh0KCdiYXNlZGlyJywgJ0Jhc2UgY29kZSBkaXJlY3Rvcnk6JywgCisJCQkgIGRlZmF1bHQgPT4gJG9wdHN7J2QnfSksCisJCSAgcXdfaGlkZGVuKCdub19jb25maXJtJywxKSwKKwkJICBxd190ZXh0KCdwYXRjaGZpbGUnLCdQYXRjaCBmaWxlOicsIGRlZmF1bHQgPT4gJG9wdHN7Zn0sCisJCQkgY2hlY2tfdmFsdWUgPT4gc3ViIHsgCisJCQkgICAgIHJldHVybiAicGF0Y2ggZmlsZSBkb2Vzbid0IGV4aXN0IiBpZiAoISAtZiBxd3BhcmFtKCdwYXRjaGZpbGUnKSkKKwkJCSB9KSwKKwkJICBxd19jaGVja2JveCgnbm91cGRhdGUnLCdEb25cJ3QgcnVuIHN2biB1cGRhdGUvcmV2ZXJ0IGZpcnN0OicsIAorCQkJICAgICAgMSwgMCwgZGVmYXVsdCA9PiAkb3B0c3sndSd9IHx8IDApXSwKKwkJICBbXSxbXSxzdWJfbW9kdWxlcyA9PiBbJ2NvbW1pdCcsICdjb21taXRtc2cnLCAnbWFrZXRlc3QnLAorCQkJCQknZWRpdCcsICdhcHBseWluZycsICdjaGVjaycsCisJCQkJCSdwYXRjaF9pbmZvJ10pLAorCisgICAgICAgcGF0Y2hfaW5mbyA9PgorICAgICAgIHF3X3ByaW1hcnkoJ2NoZWNrJywnQ2hlY2tpbmcgY29kZSBkaXJlY3Rvcnkgc3RhdHVzOicsICcnLAorCQkgIFtxd19wYXJhZ3JhcGgoJ3BhdGNoIHBpZWNlczonLAorCQkJCXN1YiB7IGNhcHR1cmUoImVncmVwICdeKC0tLXxcXCtcXCtcXCspJyAiIC4gCisJCQkJCSAgICAgIHF3cGFyYW0oJ3BhdGNoZmlsZScpKX0sCisJCQkJd2lkdGggPT4gODAsCisJCQkJaGVpZ2h0ID0+IDMwKSwKKwkJICAgcXdfdGV4dCgncGF0Y2hhcmdzJywnUGF0Y2ggYXJndW1lbnRzJywKKwkJCSAgIGRlZmF1bHQgPT4gJG9wdHN7J3AnfSksCisJCSAgIHF3X3RleHQoJ3N1YmRpcicsICdBcHBseSBpbiBwYWNrYWdlIHN1YmRpcjonLAorCQkJICAgZGVmYXVsdCA9PiAkb3B0c3snRCd9KSwKKwkJICAgcXdfcGFyYWdyYXBoKCdOb3RlOicsJ0hpdHRpbmcgbmV4dCBiZWxvdyB3aWxsIGZpcnN0IGNsZWFuIHlvdXIgbG9jYWwgcmVwb3NpdG9yaWVzIHdoaWNoIGNvdWxkIHRha2UgYSBiaXQgKHdhdGNoIHRoZSBjb25zb2xlIGZvciBkZWFpbHMgb24gd2hhdCBpdFwncyBkb2luZyBhdCBhbnkgbW9tZW50KScsIGRvaWYgPT4gc3ViIHshcXdwYXJhbSgnbm91cGRhdGUnKX0pLAorXSksCisKKworICAgICAgIGNoZWNrID0+CisgICAgICAgcXdfcHJpbWFyeSgnY2hlY2snLCdDaGVja2luZyBjb2RlIGRpcmVjdG9yeSBzdGF0dXM6JywgJycsCisJCSAgW3F3X3BhcmFncmFwaCgncmVtb3ZlZCAucmVqIGZpbGVzOicsCisJCQkgICAgICAgc3ViIHsgbXkgJGl0ID0gY2FwdHVyZWVhY2hkaXIoJ2ZpbmQgLiAtbmFtZSBcKi5yZWonKTsKKwkJCQkgICAgIGNhcHR1cmVlYWNoZGlyKCdmaW5kIC4gLW5hbWUgXCoucmVqIHwgeGFyZ3Mgcm0gLWYnKTsKKwkJCQkgICAgIHJldHVybiAkaXQ7CisJCQkJIH0sCisJCQkJcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJd2lkdGggPT4gODAsCisJCQkJaGVpZ2h0ID0+IDYwLAorCQkJICAgICAgICksCisJCSAgIHF3X3BhcmFncmFwaCgnc3ZuIHVwZGF0ZTonLAorCQkJCXN1YiB7CisJCQkJICAgIG15ICgkcmVzLCAkb25lKTsKKwkJCQkgICAgZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCQkJCQluZXh0IGlmICghcXdwYXJhbSgkaykpOworCQkJCQkkcmVzIC49ICIkazpcbiI7CisJCQkJCSRvbmUgPSBjYXB0dXJlZGlyKCRjb2RldHJlZXN7JGt9LCAKKwkJCQkJCQkgICJzdm4gdXBkYXRlIik7CisJCQkJCSRyZXMgLj0gJG9uZTsKKwkJCQkJJG9uZSA9IGNhcHR1cmVkaXIoJGNvZGV0cmVlc3ska30sIAorCQkJCQkJCSAgInN2biByZXZlcnQgLVIgLiIpOworCQkJCQkkcmVzIC49ICRvbmU7CisJCQkJICAgIH0KKwkJCQkgICAgcmV0dXJuICRyZXM7CisJCQkJICB9LAorCQkJCXByZWZvcm1hdHRlZCA9PiAxLAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiA2MCwKKwkJCQlkb2lmID0+IHN1YnshcXdwYXJhbSgnbm91cGRhdGUnKX0KKwkJCSAgICAgICApCQkgIF0sCisJCSApLAorCisgICAgICAgYXBwbHlpbmcgPT4KKyAgICAgICBxd19wcmltYXJ5KCJhcHBseWluZyIsICdBcHBseWluZyBwYXRjaGVzIHRvIHRoZSBjb2RlIGJhc2VzJywgJycsCisJCSAgW3t0eXBlID0+ICd0YWJsZScsCisJCSAgICB0ZXh0ID0+ICdSZXN1bHRzOicsCisJCSAgICB2YWx1ZXMgPT4gc3ViIHsKKwkJCW15IEB0YWI7CisJCQlmb3JlYWNoIG15ICRrIChAY29kZXRyZWVzKSB7CisJCQkgICAgbmV4dCBpZiAoIXF3cGFyYW0oJGspKTsKKwkJCSAgICBwdXNoIEB0YWIsIFskaywKKwkJCQkJcXdfcGFyYWdyYXBoKCJyJGsiLCIiLCAKKwkJCQkJCSAgICAgcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJCQkgICAgIHdpZHRoID0+IDgwLAorCQkJCQkJICAgICBoZWlnaHQgPT4gMjAsCisJCQkJCQkgICAgIHZhbHVlcyA9PiAKKwkJCQkJCSAgICAgc3ViIHsgbXkgJGNtZCA9ICJwYXRjaCAiIC4gcXdwYXJhbSgncGF0Y2hhcmdzJykgLiAiIDwgIiAuIHF3cGFyYW0oJ3BhdGNoZmlsZScpOworCQkJCQkJCSAgIG15ICRyZXN1bHRzID0gIlJ1bm5pbmcgb24gJGs6ICRjbWQiIC4gIlxuIiAuIGNhcHR1cmVkaXIoJGNvZGV0cmVlc3ska30sJGNtZCk7CisJCQkJCQkJICAgcmV0dXJuICRyZXN1bHRzfSldOworCQkJfQorCQkJcmV0dXJuIFtcQHRhYl07CisJCSAgICB9fV0sW10sW10pLAorCisgICAgICAgZWRpdCA9PgorICAgICAgIHF3X3ByaW1hcnkoJ2VkaXQnLCdGaXggdGhlIGZvbGxvd2luZyBmaWxlczonLCcnLAorCQkgIFtxd19wYXJhZ3JhcGgoJ0ZpeCB0aGVzZSAobWF5YmUpOicsCisJCQkgICAgICAgc3ViIHsKKwkJCQkgICAkY2FwZmlsdCA9ICcoLioucmVqKSc7CisJCQkJICAgbXkgJHJlcyA9IAorCQkJCSAgICAgY2FwdHVyZWVhY2hkaXIoJ2ZpbmQgLiAtbmFtZSBcKi5yZWonKTsKKwkJCQkgICBwcmludCBEdW1wZXIoXCVjYXB0dXJlcyk7CisJCQkJICAgJGNhcGZpbHQgPSB1bmRlZjsKKwkJCQkgICByZXR1cm4gJHJlczsKKwkJCQkgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gNjAsCisJCQkgICAgICAgKSwKKwkJICAgcXdfbGFiZWwoJ2ZhaWxlZCBmaWxlczonLAorCQkJICAgIHN1YiB7ICRjYXB0dXJlbnVtID0gMDsKKwkJCQkgIG1hcCB7ICRjYXB0dXJlbnVtICs9ICQjeyRjYXB0dXJlc3skX319ICsgMTsKKwkJCQkgICAgfSAoa2V5cyglY2FwdHVyZXMpKTsKKwkJCQkgIHJldHVybiAkY2FwdHVyZW51bTsKKwkJCSAgICAgIH0pLAorCQkgIHF3X2NoZWNrYm94KCdlZGl0aGVtJywnT3BlbiBhbiBlZGl0b3Igb24gdGhlIGZhaWxlZCBmaWxlcz8nLAorCQkJICAgICAgMSwgMCwgZG9pZiA9PiBzdWIgeyByZXR1cm4gJGNhcHR1cmVudW0gPiAwIH0pLAorCQkgIHF3X3RleHQoJ2VkaXRvcicsJ0VkaXRvcjonLGRlZmF1bHQgPT4gJEVOVnsnRURJVE9SJ30gfHwgJ3ZpJywKKwkJCSAgZG9pZiA9PiBzdWIgeyByZXR1cm4gJGNhcHR1cmVudW0gPiAwIH0pXSwKKwkJICBbc3ViIHsKKwkJICAgICAgIGlmIChxd3BhcmFtKCdlZGl0aGVtJykpIHsKKwkJCSAgIGZvcmVhY2ggbXkgJGsgKGtleXMoJWNhcHR1cmVzKSkgeworCQkJICAgICAgIGZvcmVhY2ggbXkgJGYgKEB7JGNhcHR1cmVzeyRrfX0pIHsKKwkJCQkgICBteSAkZmlsZSA9IHF3cGFyYW0oJ2Jhc2VkaXInKSAuCisJCQkJICAgICAkY29kZXRyZWVzeyRrfSAuCisJCQkJICAgICAgIHF3cGFyYW0oJ3N1YmRpcicpIC4gJy8nIC4gJGYtPlswXTsKKwkJCQkgICBwcmludCBTVERFUlIgImVkaXRpbmc6ICRmaWxlXG4iOworCQkJCSAgIHN5c3RlbShxd3BhcmFtKCdlZGl0b3InKSAuICIgIiAuICRmaWxlKTsKKwkJCSAgICAgICB9CisJCQkgICB9CisJCSAgICAgICB9CisJCSAgIH1dCisJCSApLAorCisgICAgICAgbWFrZXRlc3QgPT4KKyAgICAgICBxd19wcmltYXJ5KCJtYWtldGVzdCIsICJSdW4gbWFrZT8iLCcnLAorCQkgW3F3X2NoZWNrYm94KCdtYWtlaXQnLCdSdW4gbWFrZT8nLCAxLCAwKSwKKwkJICBxd19jaGVja2JveCgnbWFrZXRlc3QnLCAnUnVuIG1ha2UgdGVzdD8nLCAxLCAwKQorCQkgXSwKKyAJCSBbc3ViIHsKKyAJCSAgICAgIGlmIChxd3BhcmFtKCdtYWtlaXQnKSB8fCBxd3BhcmFtKCdtYWtldGVzdCcpKSB7CisgCQkJICAkX1swXS0+YWRkX3RvZG9zKC1lYXJseSwgJ2RvbWFrZScpOworIAkJICAgICAgfQorIAkJICB9XQorCQkgKSwKKworICAgICAgIGRvbWFrZSA9PgorICAgICAgIHF3X3ByaW1hcnkoImRvbWFrZSIsICJNYWtlIHJlc3VsdHMiLCcnLAorCQkgIFtxd19wYXJhZ3JhcGgoJ01ha2UgcmVzdWx0czonLAorCQkJCXN1YiB7IHJldHVybiBjYXB0dXJlZWFjaGRpcignbWFrZScpOyB9LAorCQkJCXByZWZvcm1hdHRlZCA9PiAxLAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiAyMCwKKwkJCQlkb2lmID0+IHN1YiB7IHF3cGFyYW0oJ21ha2VpdCcpIH0KKwkJCSAgICAgICApLAorCQkgICBxd19wYXJhZ3JhcGgoJ01ha2UgdGVzdCByZXN1bHRzOicsCisJCQkJc3ViIHsgcmV0dXJuIGNhcHR1cmVlYWNoZGlyKCdtYWtlIHRlc3QnKTsgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gMjAsCisJCQkJZG9pZiA9PiBzdWIgeyBxd3BhcmFtKCdtYWtldGVzdCcpIH0KKwkJCSAgICAgICApXQorCQkgICksCisKKyAgICAgICBjb21taXRtc2cgPT4KKyAgICAgICBxd19wcmltYXJ5KCJjb21taXRtc2ciLCAnQ29tbWl0IGluZm86JywgJycsCisJCSAgW3F3X3RleHQoJ3N2bmNvbW1pdCcsJ0NvbW1pdCBtZXNzYWdlJywKKwkJCSAgIGRlZmF1bHQgPT4gcXdwYXJhbSgnc3ZuY29tbWl0JykgfHwgJG9wdHN7J20nfSksCisJCSAge3R5cGUgPT4gJ2R5bmFtaWMnLAorCQkgICB2YWx1ZXMgPT4gc3ViIHsgbXkgQHRvcHMgPSBtYWtlX3RvcHMoMSk7IHJldHVybiBcQHRvcHN9fV0pLAorCisgICAgICAgY29tbWl0ID0+CisgICAgICAgcXdfcHJpbWFyeSgiY29tbWl0IiwgJ3J1bm5pbmcgY29tbWl0OicsICcnLAorCQkgIFtxd19wYXJhZ3JhcGgoJ2NvbW1pdHRpbmcgZmlsZXM6JywKKwkJCSAgICAgICBzdWIgeyBteSAkbXNnID0gcXdwYXJhbSgnc3ZuY29tbWl0Jyk7CisJCQkJICAgICAkbXNnID1+IHMvXCcvXCdcIlwnXCJcJy9nOyAjIGVzY2FwZSAncworCQkJCSAgICAgcmV0dXJuIGNhcHR1cmVkaXIoJG9wdHN7J2QnfSwKKwkJCQkJCSAgICAgICAnc3ZuIGNvbW1pdCAtbSBcJycgLiAkbXNnIC4gJ1wnICcgLiBnZXRfY29kZWRpcnNfc3RyKCkpOyB9LAorCQkJCXByZWZvcm1hdHRlZCA9PiAxLAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiAyMCwKKwkJCSAgICAgICApXSksCisKKyAgICAgICBlZGl0aW5nID0+CisgICAgICAgcXdfcHJpbWFyeSgiYXBwbHlpbmciLCAnRWRpdCB0aGUgZm9sbG93aW5nIGZpbGVzOicsICcnLAorCQkgIFt7dHlwZSA9PiAndGFibGUnLAorCQkgICAgdGV4dCA9PiAnUmVzdWx0czonLAorCQkgICAgdmFsdWVzID0+IHN1YiB7IHJldHVybiBbXEBjYXB0dXJlc119LAorCQkgICB9XSxbXSxbXSkKKyAgICAgIH0KK30KKworc3ViIGNhcHR1cmUgeworICAgIG15ICRjbWQgPSBqb2luKCIgIixAXyk7CisgICAgbXkgJHJlc3VsdHMgPSAiUnVubmluZzogJGNtZFxuIjsKKyAgICBteSBAYTsKKyAgICBwcmludCAkcmVzdWx0czsKKyAgICBvcGVuKEksIiRjbWQgMj4mMXwiKTsKKyAgICB3aGlsZSAoPEk+KSB7CisJJHJlc3VsdHMgLj0gJF87CisJcHJpbnQgJF87CisJaWYgKCRjYXBmaWx0KSB7CisJICAgIHByaW50ICJjYXBmaWx0OiAkY2FwZmlsdFxuIjsKKwkgICAgQGEgPSAvJGNhcGZpbHQvOworCSAgICBwcmludCAiICBjYXBmaWx0OiBAYVxuIjsKKwkgICAgcHVzaCBAY2FwdHVyZXMsIFtAYV07CisJfQorICAgIH0KKyAgICBjbG9zZShJKTsKKyAgICAkcmVzdWx0ID0gJD8gPj4gODsKKyAgICAkcmVzdWx0cyAuPSAiUkVTVUxUOiAiIC4gKCgkcmVzdWx0KSA/ICJGQUlMIiA6ICJTVUNDRVNTIikgLiAiKCRyZXN1bHQpXG4iOworICAgIHJldHVybiAkcmVzdWx0czsKK30KKworc3ViIGNhcHR1cmVkaXIgeworICAgIG15ICRkaXIgPSBzaGlmdDsKKyAgICAkZGlyIC49ICIvIiBpZiAoJGRpciAhfiAvXC8kLyk7CisgICAgbXkgJGJhc2VkaXIgPSBxd3BhcmFtKCdiYXNlZGlyJyk7CisgICAgJGJhc2VkaXIgLj0gIi8iIGlmICgkYmFzZWRpciAhfiAvXC8kLyk7CisgICAgbXkgJG9sZGRpciA9IGdldGN3ZCgpOworICAgIG15ICRuZXdkaXIgPSAiJGJhc2VkaXIkZGlyIiAuIHF3cGFyYW0oJ3N1YmRpcicpOworICAgIG15ICRyZXMgPSAiY2hhbmdpbmcgdG86ICRuZXdkaXJcbiI7CisgICAgcHJpbnQgJHJlczsKKyAgICBjaGRpcigkbmV3ZGlyKTsKKyAgICAkcmVzIC49IGNhcHR1cmUoQF8pOworICAgIGNoZGlyKCRvbGRkaXIpOworICAgIHJldHVybiAkcmVzOworfQorCitzdWIgZ2V0X2NvZGVkaXJzX3N0cigpIHsKKyAgICBteSAkcmVzID0gIiI7CisgICAgZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCW5leHQgaWYgKCFxd3BhcmFtKCRrKSk7CisJJHJlcyAuPSAiICRvcHRzeydkJ30kY29kZXRyZWVzeyRrfSI7CisgICAgfQorICAgICRyZXMgPX4gcy9eIC8vOworICAgIHJldHVybiAkcmVzOworfQorCitzdWIgY2FwdHVyZWVhY2hkaXIgeworICAgIG15ICRvdXQ7CisgICAgJWNhcHR1cmVzID0gKCk7CisgICAgZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCW5leHQgaWYgKCFxd3BhcmFtKCRrKSk7CisJJG91dCAuPSAiJGs6XG4iOworCSRvdXQgLj0gY2FwdHVyZWRpcigkY29kZXRyZWVzeyRrfSwgQF8pIC4gIlxuIjsKKwlpZiAoJCNjYXB0dXJlcyA+IC0xKSB7CisJICAgIEB7JGNhcHR1cmVzeyRrfX0gPSBAY2FwdHVyZXM7CisJICAgIEBjYXB0dXJlcyA9ICgpOworCX0KKyAgICB9CisgICAgcmV0dXJuICRvdXQ7Cit9CisKK3N1YiBkb2RpciB7CisgICAgbXkgJHRleHQgPSBzaGlmdDsKKyAgICByZXR1cm4KKyAgICAgIFt7dHlwZSA9PiAndGFibGUnLAorCXRleHQgPT4gJHRleHQsCisJdmFsdWVzID0+IFtbc3ViIHsKKwkJCW15IEB0YWI7CisJCQlmb3JlYWNoIG15ICRrIChAY29kZXRyZWVzKSB7CisJCQkgICAgbmV4dCBpZiAoIXF3cGFyYW0oJGspKTsKKwkJCSAgICBwdXNoIEB0YWIsIFskaywKKwkJCQkJcXdfcGFyYWdyYXBoKCJyJGsiLCIiLCAKKwkJCQkJCSAgICAgcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJCQkgICAgIHdpZHRoID0+IDgwLAorCQkJCQkJICAgICBoZWlnaHQgPT4gMjAsCisJCQkJCQkgICAgIHZhbHVlcyA9PiAKKwkJCQkJCSAgICAgW1tzdWIgeyAkXy0+WzBdKCRrKX0sIAorCQkJCQkJICAgICAgIEBfXV0pXTsKKwkJCX0KKwkJCXJldHVybiBbXEB0YWJdOworCQkgICAgfSwgQF9dXQorICAgICAgIH1dOworfQpkaWZmIC0tZ2l0IGEvZGlzdC9zY2hlbWEtc25tcHRyYXBkLnNxbCBiL2Rpc3Qvc2NoZW1hLXNubXB0cmFwZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5NmYxNwotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3Qvc2NoZW1hLXNubXB0cmFwZC5zcWwKQEAgLTAsMCArMSwzMSBAQAorVVNFIG5ldF9zbm1wOworRFJPUCBUQUJMRSBJRiBFWElTVFMgbm90aWZpY2F0aW9uczsKK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBub3RpZmljYXRpb25zYCAoCisgIGB0cmFwX2lkYCBpbnQoMTEpIHVuc2lnbmVkIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULAorICBgZGF0ZV90aW1lYCBkYXRldGltZSBOT1QgTlVMTCwKKyAgYGhvc3RgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCwKKyAgYGF1dGhgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCwKKyAgYHR5cGVgIEVOVU0oJ2dldCcsJ2dldG5leHQnLCdyZXNwb25zZScsJ3NldCcsJ3RyYXAnLCdnZXRidWxrJywnaW5mb3JtJywndHJhcDInLCdyZXBvcnQnKSBOT1QgTlVMTCwKKyAgYHZlcnNpb25gIEVOVU0oJ3YxJywndjJjJywgJ3Vuc3VwcG9ydGVkKHYydSknLCd2MycpIE5PVCBOVUxMLAorICBgcmVxdWVzdF9pZGAgaW50KDExKSB1bnNpZ25lZCBOT1QgTlVMTCwKKyAgYHNubXBUcmFwT0lEYCB2YXJjaGFyKDEwMjQpIE5PVCBOVUxMLAorICBgdHJhbnNwb3J0YCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwsCisgIGBzZWN1cml0eV9tb2RlbGAgRU5VTSgnc25tcFYxJywnc25tcFYyYycsJ1VTTScpIE5PVCBOVUxMLAorICBgdjNtc2dpZGAgaW50KDExKSB1bnNpZ25lZCwKKyAgYHYzc2VjdXJpdHlfbGV2ZWxgIEVOVU0oJ25vQXV0aE5vUHJpdicsJ2F1dGhOb1ByaXYnLCdhdXRoUHJpdicpLAorICBgdjNjb250ZXh0X25hbWVgIHZhcmNoYXIoMzIpLAorICBgdjNjb250ZXh0X2VuZ2luZWAgdmFyY2hhcig2NCksCisgIGB2M3NlY3VyaXR5X25hbWVgIHZhcmNoYXIoMzIpLAorICBgdjNzZWN1cml0eV9lbmdpbmVgIHZhcmNoYXIoNjQpLAorICBQUklNQVJZIEtFWSAgKGB0cmFwX2lkYCkKKykgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9bGF0aW4xOworCisKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHZhcmJpbmRzOworQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYHZhcmJpbmRzYCAoCisgIGB0cmFwX2lkYCBpbnQoMTEpIHVuc2lnbmVkIE5PVCBOVUxMIGRlZmF1bHQgJzAnLAorICBgb2lkYCB2YXJjaGFyKDEwMjQpIE5PVCBOVUxMLAorICBgdHlwZWAgRU5VTSgnYm9vbGVhbicsJ2ludGVnZXInLCdiaXQnLCdvY3RldCcsJ251bGwnLCdvaWQnLCdpcGFkZHJlc3MnLCdjb3VudGVyJywndW5zaWduZWQnLCd0aW1ldGlja3MnLCdvcGFxdWUnLCd1bnVzZWQxJywnY291bnRlcjY0JywndW51c2VkMicpIE5PVCBOVUxMLAorICBgdmFsdWVgIGJsb2IgTk9UIE5VTEwsCisgIEtFWSBgdHJhcF9pZGAgKGB0cmFwX2lkYCkKKykgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9bGF0aW4xOwpkaWZmIC0tZ2l0IGEvZGlzdC9zdm51cCBiL2Rpc3Qvc3ZudXAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDAzNTNmMAotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3Qvc3ZudXAKQEAgLTAsMCArMSwxMzAgQEAKKyMhL2Jpbi9zaAorIworIyAkSWQ6IGN2c3VwIDE1Nzg4IDIwMDctMDEtMjQgMTM6NDk6MzhaIGR0czEyICQKKyMKK1RBRz0KK1dPPTAKK0RFU1Q9CitUTVBESVI9L3RtcAorCitpZiBbICJ4JDEiID0gIngtdSIgXTsgdGhlbgorICAgIERFU1Q9JDIKKyAgICBzaGlmdCAyCisKKyAgICAjIGdudSB0YXIgKGFzIG9mIDEuMTUuMSkgaXMgdW5hYmxlIHRvIGNyZWF0ZSBwb3J0YWJsZSB0YXIgYXJjaGl2ZXMsIAorICAgICMgZXNwZWNpYWxseSBpZiBsb25nIGZpbGUgbmFtZXMgKD4xMDAgY2hhcikgYXJlIHByZXNlbnQuCisgICAgIyBzdGFyIGlzIGEgYmV0dGVyIHJlcGxhY2VtZW50LgorICAgIGlmIFsgLXggL3Vzci9iaW4vc3RhciBdOyB0aGVuCisgICAgICAgIFRBUj0nL3Vzci9iaW4vc3RhciAtSHVzdGFyIC1ub3QgLXBhdD0qLy5zdm4vKiAtYyAtZicKKyAgICBlbGlmIFsgLXggL2Jpbi90YXIgXTsgdGhlbgorICAgICAgICBUQVI9Ii9iaW4vdGFyIC0tZXhjbHVkZT0uc3ZuIC1jIC1mIgorICAgICAgICBlY2hvICJ3YXJuaW5nOiBzdGFyIG5vdCBhdmFpbGFibGUsIHVzaW5nIChsZXNzIHBvcnRhYmxlKSB0YXIuLi4iCisgICAgZWxzZQorICAgICAgICBlY2hvICJuZWl0aGVyIC91c3IvYmluL3N0YXIgbm9yIC9iaW4vdGFyIGZvdW5kLiIKKyAgICAgICAgZXhpdAorICAgIGZpCitmaQorCitpZiBbICQjIC1lcSAwIF07IHRoZW4KKyAgICBESVI9JFBXRAorZWxzZQorICAgIGlmIFsgJCMgLW5lIDEgXTsgdGhlbgorICAgICAgICBlY2hvICJ1c2FnZTogJDAgPHdvcmtpbmcgZGlyZWN0b3J5PiIKKyAgICAgICAgZXhpdAorICAgIGZpCisgICAgRElSPSQxCitmaQorCitpZiBbIC16ICR7RElSIyMqL30gXTt0aGVuCisgICBESVI9JHtESVIlLyp9CitmaQorU1VCRD0ke0RJUiMjKi99CitQQVJFTlQ9JHtESVIlKiRTVUJEfQorI2VjaG8gIiRESVIgPSAkUEFSRU5UICsgJFNVQkQiCisKK2lmIFsgISAtZCAkRElSIF07IHRoZW4KKyAgICBlY2hvICJubyBzdWNoIGRpcmVjdG9yeSAnJERJUiciCisgICAgZXhpdAorZmkKKworaWYgWyAhIC1kICRESVIvLnN2biBdOyB0aGVuCisgICAgZWNobyAiJyRESVInIGhhcyBubyAuc3ZuIGRpcmVjdG9yeSEiCisgICAgZXhpdAorZmkKKworaWYgWyAhIC1mICRESVIvLnN2bi9lbnRyaWVzIF07IHRoZW4KKyAgICBlY2hvICInJERJUicgaGFzIG5vIC5zdm4vZW50cmllcyEiCisgICAgZXhpdAorZmkKKworU1ZOVVJMPWBzdm4gaW5mbyAkRElSfCBncmVwIFVSTHxjdXQgLWYyIC1kICIgImAKK1NWTlRMRD1gZWNobyAkU1ZOVVJMIHwgc2VkICdzOi4qc3Zucm9vdC9uZXQtc25tcC9cKFteL10qXCkuKjpcMTonYAoraWYgWyAieCRTVk5UTEQiID0gInh0cnVuayIgXTsgdGhlbgorICAgVEFHPSJtYWluIgorZWxzZQorICAgVEFHPWBlY2hvICRTVk5VUkwgfCBzZWQgJ3M6Lipzdm5yb290L25ldC1zbm1wL1teL10qL1woW14vXSpcKS4qOlwxOidgCitmaQorCitpZiBbICEgLXogJERFU1QgXTsgdGhlbgorICAgIGlmIFsgLXogJFRBRyBdOyB0aGVuCisgICAgICAgIGVjaG8gIm5vIFRBRyBmb3VuZCBpbiAkRElSISIKKyAgICAgICAgZXhpdCAxCisgICAgZmkKK2ZpCisKK0NPTU1BTkQ9InN2biB1cGRhdGUgLXEgJFNWTlVSTCAkRElSIgorCitpZiBbICEgLXcgJERJUi8uc3ZuIF07IHRoZW4KKyAgICBpZiBbIC1PICRESVIvLnN2biBdOyB0aGVuCisgICAgICAgIFdPPTEKKyAgICAgICAgZWNobyAiTWFraW5nICRESVIgd3JpdGFibGUiCisgICAgICAgIGNobW9kIC1SIHUrdyAkRElSCisgICAgZmkKK2ZpCisKK2VjaG8gIlVwZGF0aW5nIGRpcmVjdG9yeSAkRElSIGZyb20gJFRBRy4uLiIKK2VjaG8gIiRDT01NQU5EIgorCiskQ09NTUFORAorcmM9JD8KK2lmIFsgJHJjIC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJzdm4gY29tbWFuZCByZXR1cm5lZCAkPyIKK2ZpCisKK2lmIFsgJFdPIC1lcSAxIF07IHRoZW4KKyAgICBlY2hvICJNYWtpbmcgJERJUiByZWFkLW9ubHkiCisgICAgY2htb2QgLVIgYS13ICRESVIKK2ZpCisKK2lmIFsgISAteiAkREVTVCBdOyB0aGVuCisgIGlmIFsgJHJjIC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJza2lwcGluZyB1cGxvYWQgZHVlIHRvIHJjICRyYyBmcm9tIHN2biBjb21tYW5kIgorICAgIGV4aXQgJHJjCisgIGVsc2UKKyAgICBjZCAkRElSLy4uCisgICAgI2VjaG8gJFBXRAorICAgIERBVEU9YGRhdGUgKyVZJW0lZF8lSCVNYAorICAgIFNPVVJDRT1uZXQtc25tcC1zdm4tJFRBRyJfJERBVEUiCisgICAgJFRBUiAkVE1QRElSLyRTT1VSQ0UudGFyICRTVUJECisgICAgcmM9JD8KKyAgICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgICBlY2hvICJza2lwcGluZyB1cGxvYWQgZHVlIHRvIHJjICRyYyBmcm9tIHRhciBjb21tYW5kIgorICAgICAgcm0gLWYgJFRNUERJUi8kU09VUkNFLnRhci5negorICAgICAgZXhpdCAkcmMKKyAgICBmaQorICAgIGd6aXAgLWYgLS1iZXN0ICRUTVBESVIvJFNPVVJDRS50YXIKKyAgICByYz0kPworICAgIGlmIFsgJHJjIC1uZSAwIF07IHRoZW4KKyAgICAgIGVjaG8gInNraXBwaW5nIHVwbG9hZCBkdWUgdG8gcmMgJHJjIGZyb20gZ3ppcCBjb21tYW5kIgorICAgICAgcm0gLWYgJFRNUERJUi8kU09VUkNFLnRhci5negorICAgICAgZXhpdCAkcmMKKyAgICBmaQorICAgIHNjcCAkVE1QRElSLyRTT1VSQ0UudGFyLmd6ICRERVNUCisgICAgcmM9JD8KKyAgICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgICBlY2hvICJ3YXJuaW5nOiByYyAkcmMgZnJvbSBzY3AgY29tbWFuZCAodGFyYmFsbCBpbiAkVE1QRElSKSIKKyAgICBlbHNlCisgICAgICBybSAtZiAkVE1QRElSLyRTT1VSQ0UudGFyLmd6CisgICAgZmkKKyAgZmkKK2ZpCmRpZmYgLS1naXQgYS9kb3h5Z2VuLmNvbmYgYi9kb3h5Z2VuLmNvbmYKaW5kZXggOWUwZWY0NS4uMjk4MjRiMSAxMDA2NDQKLS0tIGEvZG94eWdlbi5jb25mCisrKyBiL2RveHlnZW4uY29uZgpAQCAtMjMsNyArMjMsNyBAQAogIyBUaGlzIGNvdWxkIGJlIGhhbmR5IGZvciBhcmNoaXZpbmcgdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9yIAogIyBpZiBzb21lIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gaXMgdXNlZC4KIAotUFJPSkVDVF9OVU1CRVIgICAgICAgICA9IDUuNC4zLnByZTEKK1BST0pFQ1RfTlVNQkVSICAgICAgICAgPSAkKFZFUlNJT04pCiAKICMgVGhlIE9VVFBVVF9ESVJFQ1RPUlkgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgKHJlbGF0aXZlIG9yIGFic29sdXRlKSAKICMgYmFzZSBwYXRoIHdoZXJlIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiB3aWxsIGJlIHB1dC4gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCmluZGV4IDY5MTUxYTguLjg2ZmExYzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC0yMDcsMTIgKzIwNywxMyBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKgogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2Rlcyk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqCiAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oY29uc3QgY2hhciAqbmFtZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBvaWQgKnJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfYWNjZXNzX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZXMpOwogCiAgICAgbmV0c25tcF9kZWxlZ2F0ZWRfY2FjaGUKICAgICAgICAgKm5ldHNubXBfY3JlYXRlX2RlbGVnYXRlZF9jYWNoZShuZXRzbm1wX21pYl9oYW5kbGVyICosCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKaW5kZXggZTllMjg0NS4uNDRmZTQyZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaApAQCAtMzUsMTQgKzM1LDE2IEBACiB9OwogCiBzdHJ1Y3QgcmVnaXN0ZXJfcGFyYW1ldGVycyB7Ci0gICAgb2lkICAgICAgICAgICAgKm5hbWU7Ci0gICAgc2l6ZV90ICAgICAgICAgIG5hbWVsZW47Ci0gICAgaW50ICAgICAgICAgICAgIHByaW9yaXR5OwotICAgIGludCAgICAgICAgICAgICByYW5nZV9zdWJpZDsKLSAgICBvaWQgICAgICAgICAgICAgcmFuZ2VfdWJvdW5kOwotICAgIGludCAgICAgICAgICAgICB0aW1lb3V0OwotICAgIHVfY2hhciAgICAgICAgICBmbGFnczsKLSAgICBjb25zdCBjaGFyICAgICAqY29udGV4dE5hbWU7CisgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICAgICAqbmFtZTsKKyAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICBuYW1lbGVuOworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX3N1YmlkOworICAgIG9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX3Vib3VuZDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OworICAgIHVfY2hhciAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOworICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgKmNvbnRleHROYW1lOworICAgIG5ldHNubXBfc2Vzc2lvbiAgICAgICAgICAgICAgKnNlc3Npb247CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKIH07CiAKIHR5cGVkZWYgc3RydWN0IHN1YnRyZWVfY29udGV4dF9jYWNoZV9zIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYyNmU0YQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCkBAIC0wLDAgKzEsMjggQEAKKyNpZm5kZWYgQUdFTlRfU1lTT1JUQUJMRV9ICisjZGVmaW5lIEFHRU5UX1NZU09SVEFCTEVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKK3N0cnVjdCBzeXNPUlRhYmxlOworCitleHRlcm4gdm9pZCAgICAgaW5pdF9hZ2VudF9zeXNPUlRhYmxlKHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIHNodXRkb3duX2FnZW50X3N5c09SVGFibGUodm9pZCk7CisKK2V4dGVybiB2b2lkICAgICBuZXRzbm1wX3N5c09SVGFibGVfZm9yZWFjaCh2b2lkICgqKShjb25zdCBzdHJ1Y3Qgc3lzT1JUYWJsZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKTsKKworZXh0ZXJuIGludCAgICAgIHJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCwgY29uc3QgY2hhciAqKTsKK2V4dGVybiBpbnQgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCk7CitleHRlcm4gaW50ICAgICAgcmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICopOworZXh0ZXJuIGludCAgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZCAqLCBzaXplX3QsIG5ldHNubXBfc2Vzc2lvbiAqKTsKK2V4dGVybiB2b2lkICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBBR0VOVF9TWVNPUlRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKaW5kZXggZWJjMmIwNi4uM2VmNGM2ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKQEAgLTE0LDcgKzE0LDExIEBACiB2b2lkICAgICAgICAgICAgc2VuZF9lYXN5X3RyYXAoaW50LCBpbnQpOwogdm9pZCAgICAgICAgICAgIHNlbmRfdHJhcF9wZHUobmV0c25tcF9wZHUgKik7CiB2b2lkICAgICAgICAgICAgc2VuZF92MnRyYXAobmV0c25tcF92YXJpYWJsZV9saXN0ICopOwordm9pZCAgICAgICAgICAgIHNlbmRfdjN0cmFwKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY2hhciAqY29udGV4dCk7CiB2b2lkICAgICAgICAgICAgc2VuZF90cmFwX3ZhcnMoaW50LCBpbnQsIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsKK3ZvaWQgICAgICAgICAgICBzZW5kX3RyYXBfdmFyc193aXRoX2NvbnRleHQoaW50IHRyYXAsIGludCBzcGVjaWZpYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsIAorCQkJCQkJCQkJCSAgY2hhciAqY29udGV4dCk7CiB2b2lkICAgICAgICAgICAgc2VuZF9lbnRlcnByaXNlX3RyYXBfdmFycyhpbnQgdHJhcCwgaW50IHNwZWNpZmljLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogZW50ZXJwcmlzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRlcnByaXNlX2xlbmd0aCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKaW5kZXggZTVhYzY1My4uYjAwMjE1OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKQEAgLTEsMyArMSwxMyBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCiAjaWZuZGVmIE5FVFNOTVBfQ0FDSEVfSEFORExFUl9ICiAjZGVmaW5lIE5FVFNOTVBfQ0FDSEVfSEFORExFUl9ICiAKQEAgLTc0LDcgKzg0LDcgQEAKICAgICBpbnQgICAgICAgICAgICBuZXRzbm1wX2lzX2NhY2hlX3ZhbGlkKCAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqKTsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKGludCwgTmV0c25tcENhY2hlTG9hZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQ2FjaGVGcmVlICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCosIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCosIGludCk7CiAgICAgaW50ICAgbmV0c25tcF9yZWdpc3Rlcl9jYWNoZV9oYW5kbGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgTmV0c25tcENhY2hlTG9hZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBDYWNoZUZyZWUgKik7CkBAIC04NCwxMSArOTQsMTMgQEAKICAgICBuZXRzbm1wX2NhY2hlICoKICAgICBuZXRzbm1wX2NhY2hlX2NyZWF0ZShpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywKICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQ2FjaGVGcmVlICogZnJlZV9ob29rLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKTsKKyAgICBpbnQgbmV0c25tcF9jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKmNhY2hlKTsKKwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKgogICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQobmV0c25tcF9jYWNoZSogY2FjaGUpOwogCi0gICAgbmV0c25tcF9jYWNoZSAqIG5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQob2lkICogcm9vdG9pZCwKKyAgICBuZXRzbm1wX2NhY2hlICogbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZChjb25zdCBvaWQgKiByb290b2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByb290b2lkX2xlbik7CiAKICAgICB1bnNpZ25lZCBpbnQgbmV0c25tcF9jYWNoZV90aW1lcl9zdGFydChuZXRzbm1wX2NhY2hlICpjYWNoZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKaW5kZXggYWFiYjc5Mi4uODZjNzRkNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2RlZmluZSBORVRTTk1QX0RTX0FHRU5UX1BFUkxfSU5JVF9GSUxFICAgIDQgICAgLyogdXNlZCBieSBlbWJlZGRlZCBwZXJsICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfU01VWF9TT0NLRVQgICAgNSAgICAgLyogaXA6cG9ydCBzb2NrZXQgYWRkciAqLwogI2RlZmluZSBORVRTTk1QX0RTX05PVElGX0xPR19DVFggIDYgICAgIC8qICIiIHwgInNubXB0cmFwZCIgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19BR0VOVF9UUkFQX0FERFIgICAgICA3ICAgICAvKiB1c2VkIGFzIHYxIHRyYXAgYWdlbnQgYWRkcmVzcyAqLwogCiAvKgogICogaW50ZWdlcnMgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNzg4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaApAQCAtMCwwICsxLDkzIEBACit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2ZzeXNfaW5mb19zIG5ldHNubXBfZnN5c19pbmZvOworCisjZGVmaW5lIF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQgICAweDIwMDAKKyNkZWZpbmUgX05FVFNOTVBfRlNfVFlQRV9MT0NBTCAgICAgIDB4MTAwMAorCisgICAvKgorICAgICogRW51bWVyYXRpb24gZnJvbSBIT1NULVJFU09VUkNFUy1UWVBFUyBtaWIKKyAgICAqLworI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfT1RIRVIJICAgMQorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfVU5LTk9XTgkgICAyCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9CRVJLRUxFWSAgIDMKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1NZU1YJICAgNAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfRkFUCSAgIDUKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0hQRlMJICAgNgorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfSEZTCSAgIDcKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX01GUwkgICA4CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9OVEZTCSAgIDkKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1ZOT0RFCSAgIDEwCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9KRlMJICAgMTEKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0lTTzk2NjAJICAgMTIKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1JPQ0tSSURHRSAgMTMKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX05GUwkgICAxNAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfTkVUV0FSRQkgICAxNQorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfQUZTCSAgIDE2CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ERlMJICAgMTcKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0FQUExFU0hBUkUgMTgKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1JGUwkgICAxOQorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfREdDUwkgICAyMAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfQk9PVEZTCSAgIDIxCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9GQVQzMgkgICAyMgorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfRVhUMgkgICAyMworCisgICAvKgorICAgICogQWRkaXRpb25hbCBlbnVtZXJhdGlvbmlzIC0gbm90IGxpc3RlZCBpbiB0aGF0IE1JQgorICAgICovCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9JR05PUkUJICAgMSB8IF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwgfCBfTkVUU05NUF9GU19UWVBFX1NLSVBfQklUCisKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1BST0MJICAgMiB8IF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwgfCBfTkVUU05NUF9GU19UWVBFX1NLSVBfQklUCisKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0RFVlBUUwkgICAzIHwgX05FVFNOTVBfRlNfVFlQRV9MT0NBTCB8IF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1NZU0ZTCSAgIDQgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMIHwgX05FVFNOTVBfRlNfVFlQRV9TS0lQX0JJVAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfVE1QRlMJICAgNSB8IF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1VTQkZTCSAgIDYgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMCisKKyNkZWZpbmUgTkVUU05NUF9GU19GTEFHX0FDVElWRSAgIDB4MDEKKyNkZWZpbmUgTkVUU05NUF9GU19GTEFHX1JFTU9URSAgIDB4MDIKKyNkZWZpbmUgTkVUU05NUF9GU19GTEFHX1JPTkxZICAgIDB4MDQKKyNkZWZpbmUgTkVUU05NUF9GU19GTEFHX0JPT1RBQkxFIDB4MDgKKyNkZWZpbmUgTkVUU05NUF9GU19GTEFHX1JFTU9WRSAgIDB4MTAKKworI2RlZmluZSBORVRTTk1QX0ZTX0ZJTkRfQ1JFQVRFICAgICAxICAgLyogb3IgdXNlIG9uZSBvZiB0aGUgdHlwZSB2YWx1ZXMgKi8KKyNkZWZpbmUgTkVUU05NUF9GU19GSU5EX0VYSVNUICAgICAgMAorCitzdHJ1Y3QgbmV0c25tcF9mc3lzX2luZm9fcyB7CisgICAgIG5ldHNubXBfaW5kZXggIGlkeDsKKyAgLyogaW50ICBpZHg7ICovCisgCisgICAgIGNoYXIgcGF0aFsgIFNOTVBfTUFYUEFUSCsxXTsKKyAgICAgY2hhciBkZXZpY2VbU05NUF9NQVhQQVRIKzFdOworICAgICBpbnQgIHR5cGU7CisKKyAgICAgbG9uZyBzaXplOworICAgICBsb25nIHVzZWQ7CisgICAgIGxvbmcgYXZhaWw7CisgICAgIGxvbmcgdW5pdHM7CisKKyAgICAgbG9uZyBpbnVtc190b3RhbDsKKyAgICAgbG9uZyBpbnVtc19hdmFpbDsKKworICAgICBsb25nIGZsYWdzOworCisgICAgIG5ldHNubXBfZnN5c19pbmZvICpuZXh0OworfTsKKworCisgICAgLyoKKyAgICAgKiBQb3NzaWJseSBub3QgYWxsIG5lZWRlZCA/PworICAgICAqLworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19nZXRfZmlyc3QoIHZvaWQgKTsKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X25leHQoIG5ldHNubXBfZnN5c19pbmZvKiApOworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19nZXRfYnlJZHgoICBpbnQsICAgaW50ICk7CituZXRzbm1wX2ZzeXNfaW5mbyAqbmV0c25tcF9mc3lzX2dldF9uZXh0X2J5SWR4KGludCxpbnQgKTsKKworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19ieV9kZXZpY2UoICBjaGFyKiwgaW50ICk7CituZXRzbm1wX2ZzeXNfaW5mbyAqbmV0c25tcF9mc3lzX2J5X3BhdGgoICAgIGNoYXIqLCBpbnQgKTsKKworbmV0c25tcF9jYWNoZSAqbmV0c25tcF9mc3lzX2dldF9jYWNoZSggdm9pZCApOworaW50ICBuZXRzbm1wX2ZzeXNfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKTsKK3ZvaWQgbmV0c25tcF9mc3lzX2ZyZWUoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICpkYXRhICk7CisKK3Vuc2lnbmVkIGludCBuZXRzbm1wX2ZzeXNfc2l6ZSggbmV0c25tcF9mc3lzX2luZm8qICk7Cit1bnNpZ25lZCBpbnQgbmV0c25tcF9mc3lzX3VzZWQoIG5ldHNubXBfZnN5c19pbmZvKiApOwordW5zaWduZWQgaW50IG5ldHNubXBfZnN5c19hdmFpbChuZXRzbm1wX2ZzeXNfaW5mbyogKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhMTBiZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciAtIFNlbnNvcnMgbW9kdWxlCisgKgorICogUHVibGljIGludGVyZmFjZQorICovCisKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUiAgICAgICAxCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9BQyAgMworI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfREMgIDQKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9DVVJSRU5UICAgICA1CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfUE9XRVIgICAgICAgNgorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX0ZSRVFVRU5DWSAgIDcKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSA4CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfSFVNSURJVFkgICAgOQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSAgICAgICAgMTAKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xVTUUgICAgIDExCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfQk9PTEVBTiAgICAxMgorCisKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkUgICAgIDB4MDEKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfRkxBR19OQVZBSUwgICAgIDB4MDIKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfRkxBR19CUk9LRU4gICAgIDB4MDQKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfRkxBR19ESVNBQkxFICAgIDB4MDgKKworI2RlZmluZSBORVRTTk1QX1NFTlNPUl9NQVNLX1NUQVRVUyAgICAgMHgwNiAgLyogTkFWQUlMfEJST0tFTiAqLworCisKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfRklORF9DUkVBVEUgICAgIDEgICAvKiBvciB1c2Ugb25lIG9mIHRoZSBzZW5zb3IgdHlwZSB2YWx1ZXMgKi8KKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfRklORF9FWElTVCAgICAgIDAKKwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9zZW5zb3JfaW5mb19zIG5ldHNubXBfc2Vuc29yX2luZm87CitzdHJ1Y3QgbmV0c25tcF9zZW5zb3JfaW5mb19zIHsKKworICAgIG5ldHNubXBfaW5kZXggIGlkeDsKKyAgICAvKiBpbnQgIGlkeDsgKi8KKyAgICBjaGFyICBuYW1lWzI1Nl07CisgICAgCisgICAgaW50ICAgdHlwZTsKKyAgICBmbG9hdCB2YWx1ZTsKKyAgICBjaGFyICBkZXNjclsyNTZdOworICAgIGxvbmcgIGZsYWdzOworfTsKKworbmV0c25tcF9jb250YWluZXIgICAqZ2V0X3NlbnNvcl9jb250YWluZXIoIHZvaWQgKTsKK25ldHNubXBfY2FjaGUgICAgICAgKmdldF9zZW5zb3JfY2FjaGUoIHZvaWQgKTsKK25ldHNubXBfc2Vuc29yX2luZm8gKnNlbnNvcl9ieV9uYW1lKCBjaGFyICosIGludCApOworTmV0c25tcENhY2hlTG9hZCAgICAgbmV0c25tcF9zZW5zb3JfbG9hZDsKK05ldHNubXBDYWNoZUZyZWUgICAgIG5ldHNubXBfc2Vuc29yX2ZyZWU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKaW5kZXggMGEwMmMyMS4uZWZjOGRkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaApAQCAtMjAsOCArMjAsOSBAQAogICogKiBoYXZlIHRvIGNoZWNrIHRoZSBvaWQgYXQgYWxsLiAgSnVzdCBhbnN3ZXIuCiAgKi8KIAotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8pOworaW50CituZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKiByZWdpbmZvKTsKKwogaW50ICAgICAgICAgICAgCiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKTsKIApAQCAtMjksMTExICszMCwxMDMgQEAKIAogbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfaW5zdGFuY2VfaGFuZGxlcih2b2lkKTsKIAotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3ViaGFuZGxlcik7Ci1pbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcik7Ci1pbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlKGNvbnN0IGNoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcik7Ci1pbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogCi1pbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogCi1pbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcik7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIAogLyogaWRlbnRpY2FsIGZ1bmN0aW9ucyB0aGF0IHJlZ2lzdGVyIGEgaW4gYSBwYXJ0aWN1bGFyIGNvbnRleHQgKi8KLWludCAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7Ci1pbnQgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1YmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwogCi1pbnQgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLApAQCAtMTQzLDExICsxMzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwogCiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2hlbHBlcl9oYW5kbGVyOworI2lmbmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXI7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlcjsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfaW50X2hhbmRsZXI7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX3VpbnRfaGFuZGxlcjsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXI7CisjZW5kaWYKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfbnVtX2ZpbGVfaGFuZGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKaW5kZXggY2ZhODVlZi4uMzcwOWEyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaApAQCAtMjAsNiArMjAsNyBAQAogfSBuZXRzbm1wX3N0YXNoX2NhY2hlX2RhdGE7CiAKIC8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KK3ZvaWQgbmV0c25tcF9pbml0X3N0YXNoX2NhY2hlX2hlbHBlcih2b2lkKTsKIG5ldHNubXBfbWliX2hhbmRsZXIgKm5ldHNubXBfZ2V0X2JhcmVfc3Rhc2hfY2FjaGVfaGFuZGxlcih2b2lkKTsKIG5ldHNubXBfbWliX2hhbmRsZXIgKm5ldHNubXBfZ2V0X3N0YXNoX2NhY2hlX2hhbmRsZXIodm9pZCk7CiBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF90aW1lZF9iYXJlX3N0YXNoX2NhY2hlX2hhbmRsZXIoaW50IHRpbWVvdXQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MDg1OTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaApAQCAtMCwwICsxLDYyIEBACisjaWZuZGVmIE5FVFNOTVBfU1lTT1JUQUJMRV9ICisjZGVmaW5lIE5FVFNOTVBfU1lTT1JUQUJMRV9ICisKK3N0cnVjdCBzeXNPUlRhYmxlIHsKKyAgICBjaGFyICAgICAgICAgICAgKk9SX2Rlc2NyOworICAgIG9pZCAgICAgICAgICAgICAqT1Jfb2lkOworICAgIHNpemVfdCAgICAgICAgICAgT1Jfb2lkbGVuOworICAgIG5ldHNubXBfc2Vzc2lvbiAqT1Jfc2VzczsKKyAgICB1X2xvbmcgICAgICAgICAgIE9SX3VwdGltZTsKK307CisKK3N0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzIHsKKyAgICBjaGFyICAgICAgICAgICAgKmRlc2NyOworICAgIG9pZCAgICAgICAgICAgICAqbmFtZTsKKyAgICBzaXplX3QgICAgICAgICAgIG5hbWVsZW47Cit9OworCisjZGVmaW5lIFNZU19PUlRBQkxFX1JFR0lTVEVSRURfT0sgICAgICAgICAgICAgIDAKKyNkZWZpbmUgU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRCAgICAgICAtMQorI2RlZmluZSBTWVNfT1JUQUJMRV9VTlJFR0lTVEVSRURfT0sgICAgICAgICAgICAwCisjZGVmaW5lIFNZU19PUlRBQkxFX05PX1NVQ0hfUkVHSVNUUkFUSU9OICAgICAgLTEKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgorCisjZGVmaW5lIFJFR0lTVEVSX1NZU09SX1RBQkxFKHRoZW9pZCwgbGVuLCBkZXNjcikgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0cnVjdCBzeXNPUlRhYmxlIHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9kZXNjciA9IGRlc2NyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX29pZCA9IHRoZW9pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1Jfb2lkbGVuID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9zZXNzID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX3VwdGltZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfUkVHX1NZU09SLCAmdCk7IFwKKyAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9FTlRSWSh0aGVvaWQsIGRlc2NyKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgUkVHSVNURVJfU1lTT1JfVEFCTEUodGhlb2lkLCBzaXplb2YodGhlb2lkKSAvIHNpemVvZihvaWQpLCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyKQorCisjZGVmaW5lIFVOUkVHSVNURVJfU1lTT1JfVEFCTEUodGhlb2lkLCBsZW4pICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSB0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9kZXNjciA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1Jfb2lkID0gdGhlb2lkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX29pZGxlbiA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9zZXNzID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1JfdXB0aW1lID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfVU5SRUdfU1lTT1IsICZ0KTsgICAgXAorICB9IHdoaWxlKDApOworCisjZGVmaW5lIFVOUkVHSVNURVJfU1lTT1JfRU5UUlkodGhlb2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBVTlJFR0lTVEVSX1NZU09SX1RBQkxFKHRoZW9pZCwgc2l6ZW9mKHRoZW9pZCkgLyBzaXplb2Yob2lkKSkKKworI2RlZmluZSBVTlJFR0lTVEVSX1NZU09SX1NFU1Moc2VzcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SX1NFU1MsICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIHNlc3MpOworCisKKyNlbmRpZiAvKiBORVRTTk1QX1NZU09SVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCmluZGV4IDNiOGJiYzIuLjgyNDk1ZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKQEAgLTksNiArOSwxMiBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKy8qCiAgKiBAZmlsZSB0YWJsZS5oCiAgKgogICogQGFkZHRvZ3JvdXAgdGFibGUKQEAgLTExNSwxNSArMTIxLDEyIEBACiAgICAgbmV0c25tcF9taWJfaGFuZGxlcgogICAgICAgICAqbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJyZXEpOwotICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRhYnJlcSk7Ci0gICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfYnVpbGRfb2lkKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFibGVfaW5mbyk7CisgICAgaW50ICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSggIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlcSk7CisgICAgaW50ICAgbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8pOworICAgIGludCAgIG5ldHNubXBfdGFibGVfYnVpbGRfb2lkKCBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAgICp0YWJsZV9pbmZvKTsKICAgICBpbnQgICAgICAgICAgICAKICAgICAgICAgbmV0c25tcF90YWJsZV9idWlsZF9vaWRfZnJvbV9pbmRleChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCkBAIC0xNDcsNiArMTUwLDggQEAKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvCiAgICAgICAgICpuZXRzbm1wX2ZpbmRfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8obmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvKTsKKyAgICB2b2lkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZShuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICopOworCiAgICAgbmV0c25tcF9pbmRleCAqIG5ldHNubXBfdGFibGVfaW5kZXhfZmluZF9uZXh0X3JvdyhuZXRzbm1wX2NvbnRhaW5lciAqYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YmxyZXEpOwogCkBAIC0xNTgsMTMgKzE2Myw5IEBACiAKICNkZWZpbmUgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4KHRpbmZvLCB0eXBlKSBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ0aW5mby0+aW5kZXhlcywgTlVMTCwgMCwgKHVfY2hhcil0eXBlLCBOVUxMLCAwKTsKIAotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2b2lkICAgICAgICAgICAKICAgICAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGluZm8sIC4uLik7Ci0jZWxzZQotICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh2YV9hbGlzdCk7Ci0jZW5kaWYKIAogICAgIGludCBuZXRzbm1wX2NoZWNrX2dldG5leHRfcmVwbHkobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBwcmVmaXgsIHNpemVfdCBwcmVmaXhfbGVuLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKaW5kZXggZDUxYWNiMS4uZGM2YmZhOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCkBAIC01Miw2ICs1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFicmVxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBrZXlfdHlwZSk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfdW5yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKTsKICAgICAKICAgICAvKiogcmV0cmlldmUgdGhlIGNvbnRhaW5lciB1c2VkIGJ5IHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyICovCiAgICAgbmV0c25tcF9jb250YWluZXIqCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCmluZGV4IGNjMjZlYjYuLjdkOGFlZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCkBAIC0xMTMsMTIgKzExMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAgKmRlZmF1bHRfdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVmYXVsdF92YWx1ZV9sZW4pOwotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2b2lkIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwotI2Vsc2UKLSAgICB2b2lkIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3Jvdyh2YV9hbGlzdCk7Ci0jZW5kaWYKIAogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNzcsMTEgKzE3Myw3IEBACiAKICAgICB2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9hZGRfaW5kZXgobmV0c25tcF90YWJsZV9kYXRhX3NldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJsZSwgdV9jaGFyIHR5cGUpOwotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2b2lkIG5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRzZXQsIC4uLik7Ci0jZWxzZQotICAgIHZvaWQgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModmFfYWxpc3QpOwotI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCmluZGV4IDI0MmIxNTkuLjI4YzA0OWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKQEAgLTgzLDkgKzgzLDEwIEBACiAKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF90ZGF0YV9oYW5kbGVyKG5ldHNubXBfdGRhdGEgKnRhYmxlKTsKIAotICAgIGludCBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YSAgICAgICAgICAgICAgICAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyk7CisgICAgaW50IG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIoICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YSAgICAgICAgICAgICAgICAgICAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvKTsKKyAgICBpbnQgbmV0c25tcF90ZGF0YV91bnJlZ2lzdGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8pOwogCiAgICAgbmV0c25tcF90ZGF0YSAgICAgICpuZXRzbm1wX3RkYXRhX2V4dHJhY3RfdGFibGUoICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICopOwogICAgIG5ldHNubXBfY29udGFpbmVyICAqbmV0c25tcF90ZGF0YV9leHRyYWN0X2NvbnRhaW5lcihuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKaW5kZXggNDNhMTlkNy4uM2M2ZDYwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKQEAgLTgsNiArOCwxMCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyoqIEBpbmdyb3VwIHdhdGNoZXIKKyAqICBAeworICovCisKIC8qCiAgKiBpZiBoYW5kbGVyIGZsYWcgaGFzIHRoaXMgYml0IHNldCwgdGhlIHRpbWVzdGFtcCB3aWxsIGJlCiAgKiB0cmVhdGVkIGFzIGEgcG9pbnRlciB0byB0aGUgdGltZXN0YW1wLiBJZiB0aGlzIGJpdCBpcwpAQCAtMTYsOCArMjAsMzYgQEAKICAqLwogI2RlZmluZSBORVRTTk1QX1dBVENIRVJfRElSRUNUIE1JQl9IQU5ETEVSX0NVU1RPTTEKIAotI2RlZmluZSBXQVRDSEVSX0ZJWEVEX1NJWkUgICAgMHgwMQotI2RlZmluZSBXQVRDSEVSX01BWF9TSVpFICAgICAgMHgwMgorLyoqIFRoZSBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBpcyBjb25zdGFudC4KKyAqICBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgV0FUQ0hFUl9GSVhFRF9TSVpFICAgICAweDAxCisvKiogVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgaXMgc3RvcmVkIGluIG1heF9zaXplLgorICogIElmIFdBVENIRVJfU0laRV9TVFJMRU4gaXMgc2V0IHRoZW4gaXQgaXMgc3VwcG9zZWQgdGhhdCBtYXhfc2l6ZSArIDEKKyAqICBieXRlcyBjb3VsZCBiZSBzdG9yZWQgaW4gdGhlIGJ1ZmZlci4KKyAqICBAaGlkZWluaXRpYWxpemVyCisgKi8KKyNkZWZpbmUgV0FUQ0hFUl9NQVhfU0laRSAgICAgICAweDAyCisvKiogSWYgc2V0IHRoZW4gdGhlIHZhcmlhYmxlIGRhdGFfc2l6ZV9wIHBvaW50cyB0byBpcyBzdXBwb3NlZCB0byBob2xkIHRoZQorICogIGN1cnJlbnQgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgYW5kIHdpbGwgYmUgdXBkYXRlZCBvbiB3cml0ZXMuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICogIEBzaW5jZSBOZXQtU05NUCA1LjUKKyAqLworI2RlZmluZSBXQVRDSEVSX1NJWkVfSVNfUFRSICAgIDB4MDQKKy8qKiBJZiBzZXQgdGhlbiBkYXRhIGlzIHN1cHBwb3NlZCB0byBiZSBhIHplcm8tdGVybWluYXRlZCBjaGFyYWN0ZXIgYXJyYXkKKyAqICBhbmQgYm90aCBkYXRhX3NpemUgYW5kIGRhdGFfc2l6ZV9wIGFyZSBpZ25vcmVkLiBBZGRpdGlvbmFsbHkgXFwwIGlzIGEKKyAqICBmb3JiaWRkZW4gY2hhcmFjdGVyIGluIHRoZSBkYXRhIHNldC4KKyAqICBAaGlkZWluaXRpYWxpemVyCisgKiAgQHNpbmNlIE5ldC1TTk1QIDUuNQorICovCisjZGVmaW5lIFdBVENIRVJfU0laRV9TVFJMRU4gICAgMHgwOAorLyoqIElmIHNldCB0aGVuIHNpemUgaXMgaW4gdW5pdHMgb2Ygb2JqZWN0IGlkZW50aWZpZXJzLgorICogIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGFuIE9JRCBhbmQgdHJhY2tzIHRoZSBPSURfTEVOR1RIIG9mIGl0IGFzCisgKiAgb3Bwb3NlZCB0byBpdCdzIHNpemUuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICogIEBzaW5jZSBOZXQtU05NUCA1LjUuMQorICovCisjZGVmaW5lIFdBVENIRVJfU0laRV9VTklUX09JRFMgMHgxMAogCiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3dhdGNoZXJfaW5mb19zIHsKICAgICB2b2lkICAgICAqZGF0YTsKQEAgLTI1LDggKzU3LDExIEBACiAgICAgc2l6ZV90ICAgIG1heF9zaXplOwogICAgIHVfY2hhciAgICB0eXBlOwogICAgIGludCAgICAgICBmbGFnczsKKyAgICBzaXplX3QgICAqZGF0YV9zaXplX3A7CiB9IG5ldHNubXBfd2F0Y2hlcl9pbmZvOwogCisvKiogQH0gKi8KKwogaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSggbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndpbmZvKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC00NCwzOCArNzksNTEgQEAKICAqLwogCiBpbnQgbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogaW50IG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogaW50IG5ldHNubXBfcmVnaXN0ZXJfaW50X3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogaW50IG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiAKICNkZWZpbmUgV0FUQ0hFUl9IQU5ETEVSX05BTUUgIndhdGNoZXIiCiAKIG5ldHNubXBfbWliX2hhbmRsZXIgICpuZXRzbm1wX2dldF93YXRjaGVyX2hhbmRsZXIodm9pZCk7Ci1uZXRzbm1wX3dhdGNoZXJfaW5mbyAqbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCk7CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfaW5pdF93YXRjaGVyX2luZm8obmV0c25tcF93YXRjaGVyX2luZm8gKiwgdm9pZCAqLCBzaXplX3QsIHVfY2hhciwgaW50KTsKKworbmV0c25tcF93YXRjaGVyX2luZm8gKgorbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbzYobmV0c25tcF93YXRjaGVyX2luZm8gKiwKKwkJCSAgIHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCwgc2l6ZV90LCBzaXplX3QqKTsKKworbmV0c25tcF93YXRjaGVyX2luZm8gKgorbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCk7CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbzYodm9pZCAqLCBzaXplX3QsIHVfY2hhciwgaW50LCBzaXplX3QsIHNpemVfdCopOworCiBOZXRzbm1wX05vZGVfSGFuZGxlciAgbmV0c25tcF93YXRjaGVyX2hlbHBlcl9oYW5kbGVyOwogCiBuZXRzbm1wX21pYl9oYW5kbGVyICAqbmV0c25tcF9nZXRfd2F0Y2hlZF90aW1lc3RhbXBfaGFuZGxlcih2b2lkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKaW5kZXggNjdjZDZhNC4uODBjZjVkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTgsNiArOCw0OSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICpmaWxlUHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKSAoY29uc3QgY2hhciAqLCBjaGFyICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJlbGVhc2VyKSAodm9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2FnZUxpbmUpOworICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKSAoY29uc3QgY2hhciAqLCBjaGFyICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJlbGVhc2VyKSAodm9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2FnZUxpbmUpOworCisvKiBUaGVzZSB0d28gYXJlIGRvY3VtZW50ZWQgYXMgInJlZ2lzdGVyeyxfYXBwfV9wcmVtaWJfaGFuZGxlcigpICovCisvKj8qLyAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX3ByZW5ldHNubXBfbWliX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZVByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNhZ2VMaW5lKTsKKy8qPyovICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfYXBwX3ByZW5ldHNubXBfbWliX2hhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwYXJzZXIpIChjb25zdCBjaGFyICosIGNoYXIgKiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcmVsZWFzZXIpICh2b2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzYWdlTGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICpmaWxlUHJlZml4LCBjb25zdCBjaGFyICp0b2tlbik7CisgICAgdm9pZCAgICAgICAgICAgIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKCAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4pOworICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCk7CisKKy8qPyovIHZvaWQgcmVnaXN0ZXJfbWliX2hhbmRsZXJzKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZ3Modm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHJlYWRfcHJlbWliX2NvbmZpZ3Modm9pZCk7CisKKyAgICB2b2lkICAgICAgICAgICAgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqbGVhZCk7CisgICAgdm9pZCAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoY29uc3QgY2hhciAqKTsKKyAgICB2b2lkICAgICAgICAgICAgY29uZmlnX3B3YXJuKGNvbnN0IGNoYXIgKik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCA0YzZiYWUzLi4xMWU4MzJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKQEAgLTgzLDYgKzgzLDcgQEAKICAgIHVfY2hhciAgICBhcnBfdHlwZTsgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVHlwZSAxLTUgKi8KICAgIHVfY2hhciAgICBhcnBfc3RhdGU7ICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhU3RhdGUgMS03ICovCiAKKyAgIHVfbG9uZyAgICBhcnBfbGFzdF91cGRhdGVkOyAgIC8qIHRpbWV0aWNrcyBvZiBsYXN0IHVwZGF0ZSAqLwogfSBuZXRzbm1wX2FycF9lbnRyeTsKIAogCkBAIC0xMTksNiArMTIwLDkgQEAKIAogdm9pZCBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShuZXRzbm1wX2FycF9lbnRyeSAqIGVudHJ5KTsKIAordm9pZCBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfdXBkYXRlKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKKyAgICAgICAgbmV0c25tcF9hcnBfZW50cnkgKm5ld19kYXRhKTsKKwogLyoKICAqIGZpbmQgZW50cnkgaW4gY29udGFpbmVyCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNhYzE4ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogZGVmYXVsdHJvdXRlciBkYXRhIGFjY2VzcyBoZWFkZXIKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfSAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0gKKworIyBpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKKyAqLworI2lmIGRlZmluZWQoIE5FVFNOTVBfRU5BQkxFX0lQVjYgKQorIyAgIGRlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0JVRl9TSVpFIDE2ICAgLyogWFhYOiAyMCwgZm9yIGlwNno/ICovCisjZWxzZQorIyAgIGRlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0JVRl9TSVpFIDQKKyNlbmRpZgorCisKKy8qCisgKiBuZXRzbm1wX2RlZmF1bHRfcm91dGVfZW50cnkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9kZWZhdWx0cm91dGVyX3MgeworCisgICAgbmV0c25tcF9pbmRleCBvaWRfaW5kZXg7ICAgLyogTVVTVCBCRSBGSVJTVCEhIGZvciBjb250YWluZXIgdXNlICovCisgICAgb2lkICAgICAgICAgICBuc19kcl9pbmRleDsgLyogYXJiaXRyYXJ5IGluZGV4ICovCisKKyAgICBpbnQgICAgICBmbGFnczsgLyogZm9yIG5ldC1zbm1wIHVzZSAqLworCisgICAgLyoKKyAgICAgKiBtaWIgcmVsYXRlZCBkYXRhCisgICAgICovCisgICAgdV9jaGFyICAgZHJfYWRkcmVzc3R5cGU7ICAgIC8qIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlICovCisgICAgY2hhciAgICAgZHJfYWRkcmVzc1tORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0JVRl9TSVpFXTsgLyogaXBEZWZhdWx0Um91dGVyQWRkcmVzcyAqLworICAgIHNpemVfdCAgIGRyX2FkZHJlc3NfbGVuOyAgICAvKiBsZW5ndGggb2YgaXBEZWZhdWx0Um91dGVyQWRkcmVzcyAqLworICAgIG9pZCAgICAgIGRyX2lmX2luZGV4OyAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4ICovCisgICAgdWludDMyX3QgZHJfbGlmZXRpbWU7ICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lICgwLTY1NTM1KSAqLworICAgIGNoYXIgICAgIGRyX3ByZWZlcmVuY2U7ICAgICAvKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlICgtMiwtMSwwLDEpICovCisKK30gbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5OworCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogQUNDRVNTIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAqLworLyoKKyAqIGNvbnRhaW5lciBpbml0CisgKi8KK25ldHNubXBfY29udGFpbmVyICoKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpOworI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0lOSVRfTk9GTEFHUyAgICAgICAgICAgICAgIDB4MDAwMAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0lOSVRfQURETF9JRFhfQllfQUREUiAgICAgIDB4MDAwMQorCisvKgorICogY29udGFpbmVyIGxvYWQKKyAqLworbmV0c25tcF9jb250YWluZXIqCituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0xPQURfTk9GTEFHUyAgICAgICAgICAgICAgIDB4MDAwMAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0xPQURfSVBWNF9PTkxZICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0xPQURfSVBWNl9PTkxZICAgICAgICAgICAgIDB4MDAwMgorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0xPQURfQURETF9JRFhfQllfQUREUiAgICAgIDB4MDAwNAorCisvKgorICogY29udGFpbmVyIGZyZWUKKyAqLwordm9pZAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBmcmVlX2ZsYWdzKTsKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0RPTlRfQ0xFQVIgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSICAgICAgICAweDAwMDIKKworLyoKKyAqIGVudHJ5IGNyZWF0ZQorICovCituZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKgorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9jcmVhdGUodm9pZCk7CisKKy8qCisgKiBlbnRyeSBsb2FkCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9sb2FkKHNpemVfdCAqbnVtX2VudHJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICoqZW50cmllcyk7CisKKy8qCisgKiBlbnRyeSB1cGRhdGUKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3VwZGF0ZShuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqcmhzKTsKKworLyoKKyAqIGVudHJ5IGZyZWUKKyAqLwordm9pZAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZW50cnkpOworCisKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworIyBpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCmluZGV4IDUzZGZiMzYuLjIwMDEzZWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaApAQCAtMzQsNiArMzQsMjAgQEAKICNkZWZpbmUgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX1Y2X1JFQUNIQUJMRSAgICAgICAgMHgwMDA0MDAwMAogI2RlZmluZSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfVjZfSUZJRCAgICAgICAgICAgICAweDAwMDgwMDAwCiAjZGVmaW5lIE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19WNl9GT1JXQVJESU5HICAgICAgIDB4MDAxMDAwMDAKKy8qIFNvbWUgcGxhdGZvcm1zLCBlLmcuTGludXgsIGRvIG5vdCBwcm92aWRlIHN0YW5kYWxvbmUgY291bnRlcgorICogZm9yIGluY29taW5nIHVuaWNhc3QgcGFja2V0cyAtIHRoZXkgcHJvdmlkZSBjb3VudGVyIG9mIGFsbCBwYWNrZXRzCisgKiArIHNlcGFyYXRlIGNvdW50ZXIgZm9yIHRoZSBtdWx0aWNhc3Qgb25lcy4KKyAqIFRoYXQgbWVhbnMgdGhlIGNvdW50ZXIgb2YgYWxsIHBhY2tldHMgbXVzdCB3YXRjaGVkIGFuZCBjaGVja2VkCisgKiBmb3Igb3ZlcmZsb3dzIHRvIHJlY29uc3RydWN0IGl0cyA2NC1iaXQgdmFsdWUgKGkuZS4gYXMgdXN1YWwKKyAqIGZvciBjb3VudGVyIG9mIHVuaWNhc3QgcGFja2V0cyksIGFuZCBhZnRlciBpdHMgZXhwYW5zaW9uIHRvIDY0LWJpdHMsCisgKiBuci5vZiBtdWx0aWNhc3QgcGFja2V0cyBtdXN0IGJlIHN1YnN0cmFjdGVkIHRvIGdldCBuci4gb2YgdW5pY2FzdAorICogcGFja2V0cy4KKyAqIFRoaXMgZmxhZyBtYXJrcyBzdGF0cyBvZiBzdWNoIHBsYXRmb3Jtcy4gTnIuIG9mIGFsbCBpbmNvbWluZyBwYWNrZXRzLAorICogcHJvdmlkZWQgYnkgdGhlIHBsYXRmb3JtLCBtdXN0IGJlIHN0b3JlZCBpbgorICogbmV0c25tcF9pbnRlcmZhY2Vfc3RhdHMuaWFsbCBhbmQgbmV0c25tcF9pbnRlcmZhY2Vfc3RhdHMuaXVjYXN0IHdpbGwKKyAqIGJlIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBsYXRlci4KKyAqLworI2RlZmluZSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19DQUxDVUxBVEVfVUNBU1QgICAgICAgICAweDAwMjAwMDAwCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKQEAgLTkzLDYgKzEwNywxMSBAQAogICAgICAqLwogICAgLyoqIGlucHV0ICovCiAgICAgc3RydWN0IGNvdW50ZXI2NCBpYnl0ZXM7CisgICAgLyoKKyAgICAgKiBuci4gb2YgYWxsIHBhY2tldHMgKHRvIGNhbGN1bGF0ZSBpdWNhc3QsIHdoZW4gdW5kZXJseWluZyBwbGF0Zm9ybSBkb2VzCisgICAgICogbm90IHByb3ZpZGUgaXQpCisgICAgICovCisgICAgc3RydWN0IGNvdW50ZXI2NCBpYWxsOwogICAgIHN0cnVjdCBjb3VudGVyNjQgaXVjYXN0OwogICAgIHN0cnVjdCBjb3VudGVyNjQgaW1jYXN0OwogICAgIHN0cnVjdCBjb3VudGVyNjQgaWJjYXN0OwpAQCAtMTc5LDcgKzE5OCw3IEBACiB0eXBlZGVmIHN0cnVjdCBfY29uZl9pZl9saXN0IHsKICAgICBjb25zdCBjaGFyICAgICAqbmFtZTsKICAgICBpbnQgICAgICAgICAgICAgdHlwZTsKLSAgICB1aW50NjRfdCAgICAgICAgc3BlZWQ7CisgICAgdWludDY0X3Qgc3BlZWQ7CiAgICAgc3RydWN0IF9jb25mX2lmX2xpc3QgKm5leHQ7CiB9IG5ldHNubXBfY29uZl9pZl9saXN0OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAppbmRleCA2YjUxNTE5Li43NTA1NmYyIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKQEAgLTQ3LDcgKzQ3LDEwIEBACiAgICB1X2NoYXIgICAgaWFfc3RhdHVzOyAgICAgLyogSXBBZGRyZXNzU3RhdHVzICgxLTcpICovCiAgICB1X2NoYXIgICAgaWFfb3JpZ2luOyAgICAgLyogSXBBZGRyZXNzT3JpZ2luICgxLTYpICovCiAgICB1X2NoYXIgICAgaWFfc3RvcmFnZXR5cGU7IC8qIElwQWRkcmVzc1N0b3JhZ2VUeXBlICgxLTUpICovCi0KKyAgIHVfY2hhciAgICBpYV9vbmxpbmtfZmxhZzsgLyogSXBPbmxpbmtGbGFnICovCisgICB1X2NoYXIgICAgaWFfYXV0b25vbW91c19mbGFnOyAvKklwQXV0b25vbW91c0ZsYWcgKi8KKyAgIHVfbG9uZyAgICBpYV9wcmVmZXJlZF9saWZldGltZTsvKklwUHJlZmVyZWRMaWZlVGltZSovCisgICB1X2xvbmcgICAgaWFfdmFsaWRfbGlmZXRpbWU7LypJcFZhbGlkTGlmZVRpbWUqLwogICAgbmV0c25tcF9kYXRhX2xpc3QgKmFyY2hfZGF0YTsgICAgICAvKiBhcmNoIHNwZWNpZmljIGRhdGEgKi8KIAogfSBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeTsKQEAgLTE0Miw3ICsxNDUsMTkgQEAKIAogaW50IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbihpbl9hZGRyX3QgbWFzayk7CiAKK2ludCBuZXRzbm1wX2lwYWRkcmVzc19mbGFnc19jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2UHJlZmVycmVkTGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlZhbGlkTGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppYV9wcmVmZXJlZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaWFfdmFsaWRfbGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKmlhX29ubGlua19mbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9hdXRvbm9tb3VzX2ZsYWcpOwogCitpbnQgbmV0c25tcF9pcGFkZHJlc3NfcHJlZml4X29yaWdpbl9jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgaWFfb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcEFkZHJlc3NBZGRyVHlwZSk7CiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmgKaW5kZXggMjE2MTQ0NS4uZjc4MjQ1OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmgKQEAgLTEwLDYgKzEwLDQwIEBACiBleHRlcm4gICAgICAgICAgIkMiIHsKICNlbmRpZgogCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVMgICAgICAgMQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUUyAgICAgICAgIDIKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTICAgICAgICAzCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVMgICAgICAgNCAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0lOQUREUkVSUk9SUyAgICAgICA1CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9JTlVOS05PV05QUk9UT1MgICAgNgorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTICAgIDcKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TICA4IAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01SRVFEUyAgICAgICAgIDkKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTICAgICAgICAgICAxMAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMUyAgICAgICAgIDExCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTICAgICAgICAgMTIKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSUyAgICAgICAxMworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUUyAgICAgIDE0CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE5PUk9VVEVTICAgICAgMTUKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNUyAxNgorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEUyAgICAgIDE3CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdSRVFEUyAgICAgMTgKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LUyAgICAgICAxOQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFMgICAgIDIwCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTICAgMjEKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTICAgICAyMgorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRPQ1RFVFMgICAgICAgIDIzCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTICAgICAgMjQKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUUyAgICAyNQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFMgICAgIDI2CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTICAgMjcKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFMgICAgICAyOAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRCQ0FTVFBLVFMgICAgIDI5CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRSAgMzAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFICAgICAgICAzMQorICAgIAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfTEFTVCBJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEUKKyAgICAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogc3RydWN0dXJlIGRlZmluaXRpb25zCkBAIC0yMCwyOCArNTQsNDIgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9pcHN0YXRzX3MgewogCisgICAvKiBDb2x1bW5zIG9mIGlwU3RhdHNUYWJsZS4gU29tZSBvZiB0aGVtIGFyZSBIQyBmb3IgY29tcHV0YXRpb24gb2YgdGhlIAorICAgICogb3RoZXIgY29sdW1ucywgd2hlbiB1bmRlcmx5aW5nIE9TIGRvZXMgbm90IHByb3ZpZGUgdGhlbS4KKyAgICAqIEFsd2F5cyBmaWxsIGF0IGxlYXN0IDMyIGJpdHMsIHRoZSB0YWJsZSBpcyBwZXJpb2RpY2FsbHkgcG9sbGVkIC0+IDMyIGJpdAorICAgICogb3ZlcmZsb3cgc2hhbGwgYmUgZGV0ZWN0ZWQgYW5kIDY0IGJpdCB2YWx1ZSBzaG91bGQgYmUgY29tcHV0ZWQgYXV0b21hdGljYWxseS4gKi8KICAgIFU2NCAgICAgICAgICAgICBIQ0luUmVjZWl2ZXM7CiAgICBVNjQgICAgICAgICAgICAgSENJbk9jdGV0czsKICAgIHVfbG9uZyAgICAgICAgICBJbkhkckVycm9yczsKLSAgIHVfbG9uZyAgICAgICAgICBJbk5vUm91dGVzOworICAgVTY0ICAgICAgICAgICAgIEhDSW5Ob1JvdXRlczsgCiAgICB1X2xvbmcgICAgICAgICAgSW5BZGRyRXJyb3JzOwogICAgdV9sb25nICAgICAgICAgIEluVW5rbm93blByb3RvczsKICAgIHVfbG9uZyAgICAgICAgICBJblRydW5jYXRlZFBrdHM7Ci0gICBVNjQgICAgICAgICAgICAgSENJbkZvcndEYXRhZ3JhbXM7CisgICAKKyAgIC8qIG9wdGlvbmFsLCBjYW4gYmUgY29tcHV0ZWQgZnJvbSBIQ0luTm9Sb3V0ZXMgYW5kIEhDT3V0Rm9yd0RhdGFncmFtcyAqLworICAgVTY0ICAgICAgICAgICAgIEhDSW5Gb3J3RGF0YWdyYW1zOyAKKyAgIAogICAgdV9sb25nICAgICAgICAgIFJlYXNtUmVxZHM7CiAgICB1X2xvbmcgICAgICAgICAgUmVhc21PS3M7CiAgICB1X2xvbmcgICAgICAgICAgUmVhc21GYWlsczsKICAgIHVfbG9uZyAgICAgICAgICBJbkRpc2NhcmRzOwogICAgVTY0ICAgICAgICAgICAgIEhDSW5EZWxpdmVyczsKICAgIFU2NCAgICAgICAgICAgICBIQ091dFJlcXVlc3RzOwotICAgdV9sb25nICAgICAgICAgIE91dE5vUm91dGVzOworICAgVTY0ICAgICAgICAgICAgIEhDT3V0Tm9Sb3V0ZXM7CiAgICBVNjQgICAgICAgICAgICAgSENPdXRGb3J3RGF0YWdyYW1zOwotICAgdV9sb25nICAgICAgICAgIE91dERpc2NhcmRzOwotICAgdV9sb25nICAgICAgICAgIE91dEZyYWdSZXFkczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXRGcmFnT0tzOwotICAgdV9sb25nICAgICAgICAgIE91dEZyYWdGYWlsczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXRGcmFnQ3JlYXRlczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dERpc2NhcmRzOworICAgCisgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gSENPdXRGcmFnT0tzICsgSENPdXRGcmFnRmFpbHMqLworICAgVTY0ICAgICAgICAgICAgIEhDT3V0RnJhZ1JlcWRzOworICAgVTY0ICAgICAgICAgICAgIEhDT3V0RnJhZ09LczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dEZyYWdGYWlsczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dEZyYWdDcmVhdGVzOworICAgCisgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gCisgICAgKiBIQ091dFJlcXVlc3RzICtIQ091dEZvcndEYXRhZ3JhbXMgKyBIQ091dEZyYWdDcmVhdGVzCisgICAgKiAtIEhDT3V0RnJhZ1JlcWRzIC0gSENPdXROb1JvdXRlcyAgLSBIQ091dERpc2NhcmRzICovCiAgICBVNjQgICAgICAgICAgICAgSENPdXRUcmFuc21pdHM7CisgICAKICAgIFU2NCAgICAgICAgICAgICBIQ091dE9jdGV0czsKICAgIFU2NCAgICAgICAgICAgICBIQ0luTWNhc3RQa3RzOwogICAgVTY0ICAgICAgICAgICAgIEhDSW5NY2FzdE9jdGV0czsKQEAgLTUwLDYgKzk4LDggQEAKICAgIFU2NCAgICAgICAgICAgICBIQ0luQmNhc3RQa3RzOwogICAgVTY0ICAgICAgICAgICAgIEhDT3V0QmNhc3RQa3RzOwogCisgICAvKiBBcnJheSBvZiBhdmFpbGFibGUgY29sdW1ucy4qLworICAgaW50ICAgICAgICAgICAgIGNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9MQVNUKzFdOwogfSBuZXRzbm1wX2lwc3RhdHM7CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1YzhiZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIHNjb3Blem9uZSBkYXRhIGFjY2VzcyBoZWFkZXIKKyAqCisgKiAkSWQ6IHNjb3Blem9uZS5oIDE0MTcwIDIwMDctMDQtMjkgMDI6MjI6MTJaIHZhcnVuX2MgJAorICovCisjaWZuZGVmIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9ICisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucworICoKKyAqCisgKiBOT1RFOiBpZiB5b3UgYWRkIGZpZWxkcywgdXBkYXRlIGNvZGUgZGVhbGluZyB3aXRoCisgKiAgICAgICB0aGVtIGluIGlwdjZzY29wZXpvbmVfY29tbW9uLmMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeV9zIHsKKyAgICBuZXRzbm1wX2luZGV4IG9pZF9pbmRleDsKKyAgICBvaWQgICAgICAgICAgIG5zX3Njb3Blem9uZV9pbmRleDsKKyAgICB1X2ludCAgIG5zX2ZsYWdzOyAvKiBuZXQtc25tcCBmbGFncyAqLworICAgIG9pZCAgICAgaW5kZXg7CisgICAgaW50ICAgICBzY29wZXpvbmVfbGlua2xvY2FsOyAgICAKKworfSBuZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5OworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIEFDQ0VTUyBmdW5jdGlvbiBwcm90b3R5cGVzCisgKi8KKworLyoKKyAqIHNjb3Blem9uZSBjb250YWluZXIgaW5pdAorICovCituZXRzbm1wX2NvbnRhaW5lciAqIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfaW5pdCh1X2ludCBpbml0X2ZsYWdzKTsKKworLyoKKyAqIHNjb3Blem9uZSBjb250YWluZXIgbG9hZCBhbmQgZnJlZQorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworCit2b2lkIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZnJlZV9mbGFncyk7CisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9GUkVFX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU0NPUEVaT05FX0ZSRUVfRE9OVF9DTEVBUiAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfRlJFRV9LRUVQX0NPTlRBSU5FUiAgICAgICAgMHgwMDAyCisKKworLyoKKyAqIGNyZWF0ZS9mcmVlIGFuIHNjb3Blem9uZSBlbnRyeQorICovCituZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5ICoKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9jcmVhdGUodm9pZCk7CisKK3ZvaWQgbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2ZyZWUobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqIGVudHJ5KTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTkVUU05NUF9BQ0NFU1NfU0NPUEVaT05FX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0LmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMjhkZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworI2lmbmRlZiBORVRTTk1QX1NXSU5TVF9ICisjZGVmaW5lIE5FVFNOTVBfU1dJTlNUX0gKKworI2lmZGVmICBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICogRGF0YSBzdHJ1Y3R1cmUgZm9yIGEgc3dpbnN0IGVudHJ5IAorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGhyU1dJbnN0YWxsZWRUYWJsZV9lbnRyeSB7CisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaW5kZXg7CisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBJbmRleCB2YWx1ZXM7IE1JQiB0eXBlIGlzIGludDMyLCBidXQgd2UgdXNlIG9pZCBzbyB0aGlzCisgICAgICAgICAqIHN0cnVjdHVyZSBjYW4gYmUgdXNlZCBkaXJlY3RseSB3aXRoIGEgdGFibGVfY29udGFpbmVyLgorICAgICAgICAgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIHN3SW5kZXg7CisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBDb2x1bW4gdmFsdWVzIAorICAgICAgICAgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgIHN3TmFtZVs2NF07CisgICAgICAgIGNoYXIgICAgICAgICAgICBzd0RhdGVbMTFdOworI2lmZGVmIE5FVFNOTVBfSEFWRV9TV0lECisgICAgICAgIG9pZCAgICAgICAgICAgICpzd0lEOworICAgICAgICB1X2NoYXIgICAgICAgICAgc3dJRF9sZW47CisjZW5kaWYKKyAgICAgICAgdV9jaGFyICAgICAgICAgIHN3VHlwZTsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIHN3TmFtZV9sZW47CisgICAgICAgIHVfY2hhciAgICAgICAgICBzd0RhdGVfbGVuOworICAgIH0gbmV0c25tcF9zd2luc3RfZW50cnk7CisgICAgCisjZGVmaW5lIEhSU1dJTlNUQUxMRURUWVBFX1VOS05PV04gIDEKKyNkZWZpbmUgSFJTV0lOU1RBTExFRFRZUEVfT1BFUkFUSU5HU1lTVEVNICAyCisjZGVmaW5lIEhSU1dJTlNUQUxMRURUWVBFX0RFVklDRURSSVZFUiAgMworI2RlZmluZSBIUlNXSU5TVEFMTEVEVFlQRV9BUFBMSUNBVElPTiAgNAorCisKKyNkZWZpbmUgTkVUU05NUF9TV0lOU1RfTk9GTEFHUyAgICAgICAgICAgIDB4MDAwMDAwMDAKKworI2RlZmluZSBORVRTTk1QX1NXSU5TVF9BTExfT1JfTk9ORSAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBORVRTTk1QX1NXSU5TVF9ET05UX0ZSRUVfSVRFTVMgICAgMHgwMDAwMDAwMgorCisgICAgbmV0c25tcF9jb250YWluZXIgKgorICAgIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBmbGFncyApOworCisgICAgdm9pZCBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZmxhZ3MpOworICAgIHZvaWQgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXMobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcik7CisKKyAgICB2b2lkIG5ldHNubXBfc3dpbnN0X2VudHJ5X3JlbW92ZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkpOworCisgICAgbmV0c25tcF9zd2luc3RfZW50cnkgKiBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoaW50MzJfdCBpbmRleCk7CisgICAgdm9pZCBuZXRzbm1wX3N3aW5zdF9lbnRyeV9mcmVlKG5ldHNubXBfc3dpbnN0X2VudHJ5ICplbnRyeSk7CisKKyAgICBpbnQzMl90IG5ldHNubXBfc3dpbnN0X2FkZF9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpOworICAgIGludDMyX3QgbmV0c25tcF9zd2luc3RfZ2V0X2lkKGNvbnN0IGNoYXIgKm5hbWUpOworICAgIGNvbnN0IGNoYXIgKiBuZXRzbm1wX3N3aW5zdF9nZXRfbmFtZShpbnQzMl90IGlkKTsKKworI2lmZGVmICBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKworI2VuZGlmIC8qIE5FVFNOTVBfU1dJTlNUX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE1YzQxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oCkBAIC0wLDAgKzEsMTA0IEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9TV1JVTl9ICisjZGVmaW5lIE5FVFNOTVBfU1dSVU5fSAorCisjaWZkZWYgIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogRGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5IAorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGhyU1dSdW5UYWJsZV9lbnRyeSB7CisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaW5kZXg7CisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBJbmRleCB2YWx1ZXMgCisgICAgICAgICAqLworICAgICAgICBvaWQgICAgICAgICAgICAgaHJTV1J1bkluZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29sdW1uIHZhbHVlcyAKKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBoclNXUnVuTmFtZVsgNjQrMV07ICAvKiBzaXplIHBlciBNSUIgKyAxICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBoclNXUnVuUGF0aFsxMjgrMV07ICAvKiBzaXplIHBlciBNSUIgKyAxICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBoclNXUnVuUGFyYW1ldGVyc1sxMjgrMV07IC8qIHNpemUgcGVyIE1JQiArIDEgKi8KKyNpZmRlZiBORVRTTk1QX1NXUlVOX0hBVkVfSUQgIC8qIGlmIG5vdCBkZWZpbmVkLCB3aWxsIGFsd2F5cyB1c2UgbnVsbE9pZCAqLworICAgICAgICBvaWQgICAgICAgICAgICAgaHJTV1J1bklEW1NOTVBfTUFYT0lEXTsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIGhyU1dSdW5JRF9sZW47CisjZW5kaWYKKyAgICAgICAgdV9jaGFyICAgICAgICAgIGhyU1dSdW5OYW1lX2xlbjsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIGhyU1dSdW5QYXRoX2xlbjsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIGhyU1dSdW5QYXJhbWV0ZXJzX2xlbjsKKworICAgICAgICB1X2NoYXIgICAgICAgICAgaHJTV1J1blR5cGU7CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuU3RhdHVzOworICAgICAgICB1X2NoYXIgICAgICAgICAgb2xkX2hyU1dSdW5TdGF0dXM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogUGVyZiB2YWx1ZXMKKyAgICAgICAgICovCisgICAgICAgIGludDMyX3QgICAgICAgICBoclNXUnVuUGVyZkNQVTsKKyAgICAgICAgaW50MzJfdCAgICAgICAgIGhyU1dSdW5QZXJmTWVtOworICAgICAgICAKKyAgICB9IG5ldHNubXBfc3dydW5fZW50cnk7CisKKyAgICAvKgorICAgICAqIGVudW1zIGZvciBjb2x1bW4gaHJTV1J1blR5cGUKKyAgICAgKi8KKyNkZWZpbmUgSFJTV1JVTlRZUEVfVU5LTk9XTiAgICAgICAgICAgICAxCisjZGVmaW5lIEhSU1dSVU5UWVBFX09QRVJBVElOR1NZU1RFTSAgICAgMgorI2RlZmluZSBIUlNXUlVOVFlQRV9ERVZJQ0VEUklWRVIgICAgICAgIDMKKyNkZWZpbmUgSFJTV1JVTlRZUEVfQVBQTElDQVRJT04gICAgICAgICA0CisKKyAgICAvKgorICAgICAqIGVudW1zIGZvciBjb2x1bW4gaHJTV1J1blN0YXR1cworICAgICAqLworI2RlZmluZSBIUlNXUlVOU1RBVFVTX1JVTk5JTkcgICAgICAgICAgIDEKKyNkZWZpbmUgSFJTV1JVTlNUQVRVU19SVU5OQUJMRSAgICAgICAgICAyCisjZGVmaW5lIEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEUgICAgICAgMworI2RlZmluZSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQgICAgICAgICAgIDQKKworICAgIC8qLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBQcm90b3R5cGVzCisgICAgICovCisgICAgbmV0c25tcF9jb250YWluZXIgKgorICAgIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MgKTsKKworICAgIHZvaWQgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncyk7CisgICAgdm9pZCBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKTsKKworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKgorICAgIG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKGludDMyX3Qgc3dJbmRleCk7CisKKyAgICB2b2lkIG5ldHNubXBfc3dydW5fZW50cnlfZnJlZShuZXRzbm1wX3N3cnVuX2VudHJ5ICplbnRyeSk7CisKKyAgICBpbnQgIHN3cnVuX2NvdW50X3Byb2Nlc3Nlcyggdm9pZCApOworICAgIGludCAgc3dydW5fbWF4X3Byb2Nlc3NlcyggICB2b2lkICk7CisgICAgaW50ICBzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggY2hhciAqbmFtZSApOworCisjZGVmaW5lIE5FVFNOTVBfU1dSVU5fTk9GTEFHUyAgICAgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgTkVUU05NUF9TV1JVTl9BTExfT1JfTk9ORSAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBORVRTTk1QX1NXUlVOX0RPTlRfRlJFRV9JVEVNUyAgICAweDAwMDAwMDAyCisvKiNkZWZpbmUgTkVUU05NUF9TV1JVTl94eCAgICAgICAgICAgICAgICAweDAwMDAwMDA0ICovCisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKKyNlbmRpZiAvKiBORVRTTk1QX1NXUlVOX0ggKi8KKworCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKaW5kZXggNDM4MjM5Ny4uMWJhYWNkNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaApAQCAtMjIsNyArMjIsMTEgQEAKIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfc3lzdGVtc3RhdHNfcyB7CiAKICAgIG5ldHNubXBfaW5kZXggb2lkX2luZGV4OyAgIC8qIE1VU1QgQkUgRklSU1QhISBmb3IgY29udGFpbmVyIHVzZSAqLwotICAgb2lkICAgICAgICAgICBuc19pcF92ZXJzaW9uOworICAgLyogCisgICAgKiBJbmRleCBvZiB0aGUgdGFibGUKKyAgICAqIEZpcnN0IGVudHJ5ID0gaXAgdmVyc2lvbgorICAgICogU2Vjb25kIGVudHJ5ID0gaW50ZXJmYWNlIGluZGV4ICgwIGZvciBpcFN5c3RlbVN0YXRzVGFibGUgKi8KKyAgIG9pZCAgICAgICAgICAgaW5kZXhbMl07ICAgICAgICAgICAKIAogICAgaW50ICAgICAgIGZsYWdzOyAvKiBmb3IgbmV0LXNubXAgdXNlICovCiAKQEAgLTQ5LDEzICs1MywxNSBAQAogI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19JTklUX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKICNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfSU5JVF9BRERMX0lEWF9CWV9BRERSICAgICAgMHgwMDAxCiAKLS8qCi0gKiBsb2FkIGFuZCBmcmVlCisvKioKKyAqIExvYWQgY29udGFpbmVyLiBJZiB0aGUgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfTE9BRF9JRlRBQkxFIGlzIHNldAorICogdGhlIGlwSWZTeXN0ZW1TdGF0cyB0YWJsZSBpcyBsb2FkZWQsIGVsc2UgaXBTeXN0ZW1TdGF0c1RhYmxlIGlzIGxvYWRlZC4KICAqLwogbmV0c25tcF9jb250YWluZXIqCiBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7CiAjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfTk9GTEFHUyAgICAgICAgICAgICAgIDB4MDAwMAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUgICAgICAgICAgICAgICAweDAwMDEgCiAKIHZvaWQgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZnJlZV9mbGFncyk7CkBAIC02OCw3ICs3NCw3IEBACiAgKiBjcmVhdGUvZnJlZSBhbiBlbnRyeQogICovCiBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICoKLW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpbnQgdmVyc2lvbik7CituZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoaW50IHZlcnNpb24sIGludCBpZl9pbmRleCk7CiAKIHZvaWQgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICogZW50cnkpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaAppbmRleCA2NDcwNGQyLi4zNjIzMWVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAgICAgdV9zaG9ydCAgIHJtdF9wb3J0OwogCiAgICAgICAgIHVfaW50ICAgICBpbnN0YW5jZTsKKyAgICAgICAgdV9pbnQgICAgIHBpZDsKICAgIAogICAgIH0gbmV0c25tcF91ZHBfZW5kcG9pbnRfZW50cnk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCmluZGV4IGYxMzJmM2IuLjQ2ZWQ0NDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaApAQCAtNDEsOSArNDEsMTEgQEAKICNpZm5kZWYgRUlHSFRCSVRfU1VCSURTCiAgICAgdHlwZWRlZiB1X2xvbmcgIG9pZDsKICNkZWZpbmUgTUFYX1NVQklEICAgMHhGRkZGRkZGRgorI2RlZmluZSBORVRTTk1QX1BSSW8gImwiCiAjZWxzZQogICAgIHR5cGVkZWYgdV9jaGFyICBvaWQ7CiAjZGVmaW5lIE1BWF9TVUJJRCAgIDB4RkYKKyNkZWZpbmUgTkVUU05NUF9QUklvICIiCiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCmluZGV4IGFjZDVkNDAuLjU1YmNhMTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw4IEBACiAjZGVmaW5lIFNOTVBfQ0FMTEJBQ0tfUE9TVF9QUkVNSUJfUkVBRF9DT05GSUcJMwogI2RlZmluZSBTTk1QX0NBTExCQUNLX0xPR0dJTkcJCQk0CiAjZGVmaW5lIFNOTVBfQ0FMTEJBQ0tfU0VTU0lPTl9JTklUCQk1CisjZGVmaW5lIFNOTVBfQ0FMTEJBQ0tfUFJFX1JFQURfQ09ORklHCSAgICAgICAgNworI2RlZmluZSBTTk1QX0NBTExCQUNLX1BSRV9QUkVNSUJfUkVBRF9DT05GSUcJOAogCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCmluZGV4IGM2YTQwN2YuLjMyNDFhMWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKQEAgLTEsMyArMSwxMyBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCiAjaWZuZGVmIE5FVFNOTVBfQ09OVEFJTkVSX0gKICNkZWZpbmUgTkVUU05NUF9DT05UQUlORVJfSAogCkBAIC0yNzYsNiArMjg2LDkgQEAKICAgICBpbnQgbmV0c25tcF9jb21wYXJlX21lbShjb25zdCBjaGFyICogbGhzLCBzaXplX3QgbGhzX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcmhzLCBzaXplX3QgcmhzX2xlbik7CiAKKyAgICAvKiogbm8gc3RydWN0dXJlLCBqdXN0ICdjaGFyIConIHBvaW50ZXJzICovCisgICAgaW50IG5ldHNubXBfY29tcGFyZV9kaXJlY3RfY3N0cmluZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKTsKKwogICAgIC8qKiBmb3JfZWFjaCBjYWxsYmFjayB0byBjYWxsIGZyZWUgb24gZGF0YSBpdGVtICovCiAgICAgdm9pZCAgbmV0c25tcF9jb250YWluZXJfc2ltcGxlX2ZyZWUodm9pZCAqZGF0YSwgdm9pZCAqY29udGV4dCk7CiAKQEAgLTM5OSw3ICs0MTIsOCBAQAogICAgICAgICAgICAgcmMyID0geC0+cmVtb3ZlKHgsayk7CiAgICAgICAgICAgICAvKiogaWdub3JlIHJlbW92ZSBlcnJvcnMgaWYgdGhlcmUgaXMgYSBmaWx0ZXIgaW4gcGxhY2UgKi8KICAgICAgICAgICAgIGlmICgocmMyKSAmJiAoTlVMTCA9PSB4LT5pbnNlcnRfZmlsdGVyKSkgewotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciByZW1vdmUgKCVkKVxuIiwgcmMyKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyByZW1vdmUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA/IHgtPmNvbnRhaW5lcl9uYW1lIDogIiIsIHJjMik7CiAgICAgICAgICAgICAgICAgcmMgPSByYzI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB4ID0geC0+cHJldjsKQEAgLTQyMiwxMiArNDM2LDE1IEBACiAgICAgICAgICAgICB4ID0geC0+bmV4dDsKICAgICAgICAgd2hpbGUoeCkgewogICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKnRtcDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgICAgICB0bXAgPSB4LT5wcmV2OworICAgICAgICAgICAgbmFtZSA9IHgtPmNvbnRhaW5lcl9uYW1lOwogICAgICAgICAgICAgaWYgKE5VTEwgIT0geC0+Y29udGFpbmVyX25hbWUpCiAgICAgICAgICAgICAgICAgU05NUF9GUkVFKHgtPmNvbnRhaW5lcl9uYW1lKTsKICAgICAgICAgICAgIHJjMiA9IHgtPmNmcmVlKHgpOwogICAgICAgICAgICAgaWYgKHJjMikgewotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciBjZnJlZSAoJWQpXG4iLCByYzIpOworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciAnJXMnIGNmcmVlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA/IG5hbWUgOiAiIiwgcmMyKTsKICAgICAgICAgICAgICAgICByYyA9IHJjMjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHggPSB0bXA7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAppbmRleCAzYTdlMjM3Li4zMzZhOGU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogICAgIGludCBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChuZXRzbm1wX2NvbnRhaW5lciAqYywgaW50IHNldCwgdV9pbnQgZmxhZ3MpOwogCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAppbmRleCBhZWQ0MzVhLi45MmZkZWJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNlbmRpZgogCiAjZGVmaW5lIE5FVFNOTVBfRFNfTUFYX0lEUyAzCi0jZGVmaW5lIE5FVFNOTVBfRFNfTUFYX1NVQklEUyA0MCAgICAgICAgLyogbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA4ICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTUFYX1NVQklEUyA0OCAgICAgICAgLyogbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA4ICovCiAKICAgICAvKgogICAgICAqIGJlZ2luIHN0b3JhZ2UgZGVmaW5pdGlvbnMgCkBAIC04OCwyMyArODgsMzAgQEAKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfRElTQUJMRV9QRVJTSVNURU5UX0xPQUQgIDM1IC8qIGRvbid0IGxvYWQgcGVyc2lzdGVudCBmaWxlICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0RJU0FCTEVfUEVSU0lTVEVOVF9TQVZFICAzNiAvKiBkb24ndCBzYXZlIHBlcnNpc3RlbnQgZmlsZSAqLwogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9BUFBFTkRfTE9HRklMRVMgICAgIDM3IC8qIGFwcGVuZCwgZG9uJ3Qgb3ZlcndyaXRlLCBsb2cgZmlsZXMgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfTk9fRElTQ09WRVJZICAgICAgICAzOCAvKiBkb24ndCBzdXBwb3J0IFJGQzUzNDMgY29udGV4dEVuZ2luZUlEIGRpc2NvdmVyeSAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9UU01fVVNFX1BSRUZJWCAgICAgIDM5IC8qIFRTTSdzIHNpbXBsZSBzZWN1cml0eSBuYW1lIG1hcHBpbmcgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfQUxMT1dfU0VMRl9TSUdORUQgICA0MCAvKiBDZXJ0cyBmb3IgRFRMUyAqLwogCiAgICAgLyoKICAgICAgKiBsaWJyYXJ5IGludGVnZXJzIAogICAgICAqLwotI2RlZmluZSBORVRTTk1QX0RTX0xJQl9NSUJfV0FSTklOR1MgIDAKLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VDTEVWRUwgICAgICAxCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NOTVBWRVJTSU9OICAgMgotI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgIDMKLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQgIDQKLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfUFJJTlRfU1VGRklYX09OTFkgIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX01JQl9XQVJOSU5HUyAgICAgICAgIDAKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VDTEVWRUwgICAgICAgICAgICAgMQorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTiAgICAgICAgICAyCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0RFRkFVTFRfUE9SVCAgICAgICAgIDMKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQgICAgNAorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9QUklOVF9TVUZGSVhfT05MWSAgICBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVAogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TVFJJTkdfT1VUUFVUX0ZPUk1BVCA1Ci0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX0hFWF9PVVRQVVRfTEVOR1RIIDYKLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VSVkVSU0VOREJVRiAgIDcgLyogc2VuZCBidWZmZXIgKHNlcnZlcikgKi8KLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VSVkVSUkVDVkJVRiAgIDggLyogcmVjZWl2ZSBidWZmZXIgKHNlcnZlcikgKi8KLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ0xJRU5UU0VOREJVRiAgIDkgLyogc2VuZCBidWZmZXIgKGNsaWVudCkgKi8KLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ0xJRU5UUkVDVkJVRiAgMTAgLyogcmVjZWl2ZSBidWZmZXIgKGNsaWVudCkgKi8KLQorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9IRVhfT1VUUFVUX0xFTkdUSCAgICA2CisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlNFTkRCVUYgICAgICAgIDcgLyogc2VuZCBidWZmZXIgKHNlcnZlcikgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU0VSVkVSUkVDVkJVRiAgICAgICAgOCAvKiByZWNlaXZlIGJ1ZmZlciAoc2VydmVyKSAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9DTElFTlRTRU5EQlVGICAgICAgICA5IC8qIHNlbmQgYnVmZmVyIChjbGllbnQpICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NMSUVOVFJFQ1ZCVUYgICAgICAgMTAgLyogcmVjZWl2ZSBidWZmZXIgKGNsaWVudCkgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19QRVJNICAgICAxMQorI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9ESVJfUEVSTSAgICAgIDEyCisjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfVVNFUiAgICAgMTIKKyNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19HUk9VUCAgICAxMworICAgIAogICAgIC8qCiAgICAgICogc3BlY2lhbCBtZWFuaW5ncyBmb3IgdGhlIGRlZmF1bHQgU05NUCB2ZXJzaW9uIHNsb3QgKE5FVFNOTVBfRFNfTElCX1NOTVBWRVJTSU9OKSAKICAgICAgKi8KQEAgLTE0Myw2ICsxNTAsMTUgQEAKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfQVBQVFlQRVMgICAgICAgICAgMjAKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfS1NNX0tFWVRBQiAgICAgICAgMjEKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfS1NNX1NFUlZJQ0VfTkFNRSAgMjIKKy8qIGZvciB0aGUgY2xpZW50ICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BVQiAgIDIzCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BSSVYgIDI0CisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX0NFUlRTIDI1CisvKiBmb3IgdGhlIHNlcnZlciAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIgICAyNgorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QUklWICAyNworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9DRVJUUyAyOAorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TU0hUT1NOTVBfU09DS0VUICAyOQogCiAgICAgLyoKICAgICAgKiBlbmQgc3RvcmFnZSBkZWZpbml0aW9ucyAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjIwZDAwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2Rpcl91dGlscy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworI2lmbmRlZiBORVRTTk1QX0RJUl9VVElMU19ICisjZGVmaW5lIE5FVFNOTVBfRElSX1VUSUxTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKgorICAgICAqIFByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKG5ldHNubXBfY29udGFpbmVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZmxhZ3MpOworICAgIHZvaWQgbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmMpOworCisgICAgICAgIAorCisgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKgorICAgICAqIGZsYWdzCisgICAgICovCisjZGVmaW5lIE5FVFNOTVBfRElSX1JFQ1VSU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEKKworICAgIAorICAgICAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBORVRTTk1QX0RJUl9VVElMU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAppbmRleCA0YjcyNDJkLi4xNGNkZjUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKQEAgLTkwLDYgKzkwLDExIEBACiAgKi8KIHZvaWQgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvKGludCAqbnVtZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzKTsKIAordm9pZCBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKGludCAqbnVtZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpyZWFkZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICp3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzKTsKKwogLyoKICAqIERpc3BhdGNoIEV4dGVybmFsIEV2ZW50cwogICoKQEAgLTExNSw2ICsxMjAsMTAgQEAKICAqIFNpZGUgRWZmZWN0czogTm9uZQogICovCiB2b2lkIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzKGludCAqY291bnQsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMpOwordm9pZCBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoaW50ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpyZWFkZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcyk7CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCmluZGV4IDBmNGQ2OTEuLmY3MGZmZTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKQEAgLTEsNiArMSwxMiBAQAogI2lmbmRlZiBfR0VUT1BUX0hfCiAjZGVmaW5lIF9HRVRPUFRfSF8gMQogCisjaWZuZGVmIE5FVF9TTk1QX0NPTkZJR19ICisjZXJyb3IgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSA8bmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaD4uCisjZW5kaWYKKworI2lmICFkZWZpbmVkKEhBVkVfR0VUT1BUX0gpCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKQEAgLTEyLDQgKzE4LDcgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCisKKyNlbmRpZiAvKiBIQVZFX0dFVE9QVF9IICovCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGYxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKQEAgLTAsMCArMSwxNjggQEAKKy8qKgorICogQGZpbGUgIGxhcmdlX2ZkX3NldC5oCisgKgorICogQGJyaWVmIE1hY3JvJ3MgYW5kIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW9uIG9mIGxhcmdlIGZpbGUgZGVzY3JpcHRvciBzZXRzLgorICovCisKKworI2lmbmRlZiBMQVJHRV9GRF9TRVRfSAorI2RlZmluZSBMQVJHRV9GRF9TRVRfSAorCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgorCisjaWZkZWYgSEFWRV9TWVNfU0VMRUNUX0gKKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpICYmICFkZWZpbmVkKF9XSU5TT0NLQVBJXykgJiYgIWRlZmluZWQoX1dJTlNPQ0tfSCkKKyNlcnJvciA8d2luc29jay5oPiBvciA8d2luc29jazIuaD4gbXVzdCBoYXZlIGJlZW4gaW5jbHVkZWQgYmVmb3JlIHRoaXMgZmlsZS4KKyNlbmRpZgorCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisKKy8qKgorICogQWRkIHNvY2tldCBmZCB0byB0aGUgc2V0ICpmZHNldCBpZiBub3QgeWV0IHByZXNlbnQuCisgKiBFbmxhcmdlcyB0aGUgc2V0IGlmIG5lY2Vzc2FyeS4KKyAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX1NFVChmZCwgZmRzZXQpIFwKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRmZChmZCwgZmRzZXQpCisKKy8qKgorICogUmVtb3ZlIHNvY2tldCBmZCBmcm9tIHRoZSBzZXQgKmZkc2V0LgorICogRG8gbm90aGluZyBpZiBmZCBpcyBub3QgcHJlc2VudCBpbiAqZmRzZXQuCisgKiBEbyBub3RoaW5nIGlmIGZkID49IGZkc2V0LT5sZnNfc2V0c2l6ZS4KKyAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX0NMUihmZCwgZmRzZXQpIFwKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9jbHIoZmQsIGZkc2V0KQorCisvKioKKyAqIFRlc3Qgd2hldGhlciBzZXQgKmZkc2V0IGNvbnRhaW5zIHNvY2tldCBmZC4KKyAqIEV2YWx1YXRlcyB0byB6ZXJvIChmYWxzZSkgaWYgZmQgPj0gZmRzZXQtPmxmc19zZXRzaXplLgorICovCisjZGVmaW5lIE5FVFNOTVBfTEFSR0VfRkRfSVNTRVQoZmQsIGZkc2V0KSBcCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KGZkLCBmZHNldCkKKworI2lmICFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKworLyoqCisgKiBOdW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIGEgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgYXMgYQorICogc3RydWN0IGZkX3NldC4KKyAqLworI2RlZmluZSBORVRTTk1QX0ZEX1NFVF9CWVRFUyhzZXRzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChzaXplb2YoZmRfc2V0KSArICgoc2V0c2l6ZSkgPiBGRF9TRVRTSVpFID8gICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAoKHNldHNpemUpIC0gRkRfU0VUU0laRSkgKiBzaXplb2YoU09DS0VUKSA6IDApKQorCisvKiogUmVtb3ZlIGFsbCBzb2NrZXRzIGZyb20gdGhlIHNldCAqZmRzZXQuICovCisjZGVmaW5lIE5FVFNOTVBfTEFSR0VfRkRfWkVSTyhmZHNldCkgXAorICAgIGRvIHsgKGZkc2V0KS0+bGZzX3NldHB0ci0+ZmRfY291bnQgPSAwOyB9IHdoaWxlKDApCisKKwordm9pZCAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoIFNPQ0tFVCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0KTsKK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX2NsciggICBTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7CitpbnQgICAgbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOworCisjZWxzZQorCisvKioKKyAqIFNpemUgb2YgYSBzaW5nbGUgZWxlbWVudCBvZiB0aGUgYXJyYXkgd2l0aCBmaWxlIGRlc2NyaXB0b3IgYml0bWFza3MuCisgKgorICogQWNjb3JkaW5nIHRvIFNVU3YyLCB0aGlzIGFycmF5IG11c3QgaGF2ZSB0aGUgbmFtZSBmZHNfYml0cy4gU2VlIGFsc28KKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwNzkwODc3NS94c2gvc3lzdGltZS5oLmh0bWwiPlRoZSBTaW5nbGUgVU5JWCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsICZsdDtzeXMvdGltZS5oJmd0OzwvYT4uCisgKi8KKyNkZWZpbmUgTkVUU05NUF9GRF9NQVNLX1NJWkUgc2l6ZW9mKCgoZmRfc2V0KikwKS0+ZmRzX2JpdHNbMF0pCisKKy8qKiBOdW1iZXIgb2YgYml0cyBpbiBvbmUgZWxlbWVudCBvZiB0aGUgZmRfc2V0LmZkc19iaXRzIGFycmF5LiAqLworI2RlZmluZSBORVRTTk1QX0JJVFNfUEVSX0ZEX01BU0sgKDggKiBORVRTTk1QX0ZEX01BU0tfU0laRSkKKworLyoqIE51bWJlciBvZiBlbGVtZW50cyBuZWVkZWQgZm9yIHRoZSBmZHNfYml0cyBhcnJheS4gKi8KKyNkZWZpbmUgTkVUU05NUF9GRF9TRVRfRUxFTV9DT1VOVChzZXRzaXplKSBcCisgICAgKHNldHNpemUgKyBORVRTTk1QX0JJVFNfUEVSX0ZEX01BU0sgLSAxKSAvIE5FVFNOTVBfQklUU19QRVJfRkRfTUFTSworCisvKioKKyAqIE51bWJlciBvZiBieXRlcyBuZWVkZWQgdG8gc3RvcmUgYSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBhcyBhCisgKiBzdHJ1Y3QgZmRfc2V0LgorICovCisjZGVmaW5lIE5FVFNOTVBfRkRfU0VUX0JZVEVTKHNldHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChzaXplb2YoZmRfc2V0KSArICgoc2V0c2l6ZSkgPiBGRF9TRVRTSVpFID8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9GRF9TRVRfRUxFTV9DT1VOVCgoc2V0c2l6ZSkgLSBGRF9TRVRTSVpFKSBcCisgICAgICAgICAgICAgICAgICAgICAgICogTkVUU05NUF9GRF9NQVNLX1NJWkUgOiAwKSkKKworLyoqIFJlbW92ZSBhbGwgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSBzZXQgKmZkc2V0LiAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oZmRzZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1lbXNldCgoZmRzZXQpLT5sZnNfc2V0cHRyLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgTkVUU05NUF9GRF9TRVRfQllURVMoKGZkc2V0KS0+bGZzX3NldHNpemUpKTsgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisKK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX3NldGZkKCBpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7Cit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9jbHIoICAgaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOworaW50ICAgIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KGludCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0KTsKKworI2VuZGlmCisKKy8qKgorICogSW5pdGlhbGl6ZSBhIG5ldHNubXBfbGFyZ2VfZmRfc2V0IHN0cnVjdHVyZS4KKyAqCisgKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIG9ubHkgaW5pdGlhbGl6ZXMgdGhlIGxmc19zZXRzaXplIGFuZCBsZnNfc2V0cHRyCisgKiBtZW1iZXJzIG9mIG5ldHNubXBfbGFyZ2VfZmRfc2V0LCBub3QgdGhlIGZpbGUgZGVzY3JpcHRvciBzZXQgaXRzZWxmLgorICogVGhlIGZpbGUgZGVzY3JpcHRvciBzZXQgbXVzdCBiZSBpbml0aWFsaXplZCBzZXBhcmF0ZWx5LCBlLmcuIHZpYQorICogTkVUU05NUF9MQVJHRV9GRF9DTFIoKS4KKyAqLwordm9pZCAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0LCBpbnQgc2V0c2l6ZSk7CisKKy8qKgorICogTW9kaWZ5IHRoZSBzaXplIG9mIGEgZmlsZSBkZXNjcmlwdG9yIHNldCBhbmQgcHJlc2VydmUgdGhlIGZpcnN0CisgKiBtaW4oZmRzZXQtPmxmc19zZXRzaXplLCBzZXRzaXplKSBmaWxlIGRlc2NyaXB0b3JzLgorICoKKyAqIFJldHVybnMgMSB1cG9uIHN1Y2Nlc3Mgb3IgMCBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuCisgKi8KK2ludCAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCwgaW50IHNldHNpemUpOworCisvKioKKyAqIFN5bmNocm9ub3VzIEkvTyBtdWx0aXBsZXhpbmcgZm9yIGxhcmdlIGZpbGUgZGVzY3JpcHRvciBzZXRzLgorICoKKyAqIE9uIFBPU0lYIHN5c3RlbXMsIGFueSBmaWxlIGRlc2NyaXB0b3Igc2V0IHdpdGggc2l6ZSBiZWxvdyBudW1mZHMgd2lsbCBiZQorICogcmVzaXplZCBiZWZvcmUgaW52b2tpbmcgc2VsZWN0KCkuCisgKgorICogQHNlZSBTZWUgYWxzbyBzZWxlY3QoMikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KK05FVFNOTVBfSU1QT1JUCitpbnQgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfc2VsZWN0KGludCBudW1mZHMsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpyZWFkZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICp3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0KTsKKworLyoqIERlYWxsb2NhdGUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdC4gKi8KK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7CisKKy8qKgorICogQ29weSBhbiBmZF9zZXQgdG8gYSBuZXRzbm1wX2xhcmdlX2ZkX3NldCBzdHJ1Y3R1cmUuCisgKgorICogQG5vdGUgZHN0IG11c3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAqLwordm9pZCAgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmZF9zZXQgKnNyYyk7CisKKy8qKgorICogQ29weSBhIG5ldHNubXBfbGFyZ2VfZmRfc2V0IHN0cnVjdHVyZSBpbnRvIGFuIGZkX3NldC4KKyAqCisgKiBAcmV0dXJuIDAgdXBvbiBzdWNjZXNzLCAtMSB3aGVuIGNvcHlpbmcgZmFpbHMgYmVjYXVzZSAqc3JjIGlzIHRvbyBsYXJnZSB0bworICogICAgICAgICBmaXQgaW50byAqZHN0LgorICovCitpbnQgICAgbmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQoICAgICAgICAgICAgICBmZF9zZXQgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqc3JjKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworCisjZW5kaWYgLyogTEFSR0VfRkRfU0VUX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAppbmRleCBmN2M4YmJhLi4yOTlmMzEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0zNCw3ICszNCwxMyBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4gICAgICAgICAgICAgIC8qIGZvciBGSUxFICovCiAKLSNkZWZpbmUgTUlCIDEsIDMsIDYsIDEsIDIsIDEKKyNpbmNsdWRlIDxuZXQtc25tcC9taWJfYXBpLmg+CisKKyNkZWZpbmUgTkVUU05NUF9NSUIyX09JRCAxLCAzLCA2LCAxLCAyLCAxCisKKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKKyNkZWZpbmUgTUlCIE5FVFNOTVBfTUlCMl9PSUQKKyNlbmRpZgogCiAjZGVmaW5lIE1JQl9JRlRZUEVfT1RIRVIJCSAgICAxCiAjZGVmaW5lIE1JQl9JRlRZUEVfUkVHVUxBUjE4MjIJCSAgICAyCkBAIC0xMTEsMjggKzExNywxOSBAQAogICAgIHN0cnVjdCB2YXJpYWJsZV9saXN0OwogICAgIHN0cnVjdCBlbnVtX2xpc3Q7CiAKLSAgICB2b2lkICAgICAgICAgICAgcHJpbnRfbWliKEZJTEUgKiBmcCk7CiAgICAgdm9pZCAgICAgICAgICAgIHByaW50X2FzY2lpX2R1bXAoRklMRSAqKTsKLSAgICBpbnQgICAgICAgICAgICAgcmVhZF9vYmppZChjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CiAgICAgdm9pZCAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9oYW5kbGVycyh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9zZXRfbWliX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXIpOwogICAgIGNoYXIgICAgICAgICAgICAqbmV0c25tcF9nZXRfbWliX2RpcmVjdG9yeSh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9maXh1cF9taWJfZGlyZWN0b3J5KHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2luaXRfbWliKHZvaWQpOwotI2lmbmRlZiBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQotICAgIHZvaWQgICAgICAgICAgICBpbml0X21pYih2b2lkKTsKLSNlbmRpZgotICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9taWIodm9pZCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHByaW50X2Rlc2NyaXB0aW9uKG9pZCAqLCBzaXplX3QsIGludCk7Ci0gICAgdm9pZCAgICAgICAgICAgIGZwcmludF9kZXNjcmlwdGlvbihGSUxFICosIG9pZCAqLCBzaXplX3QsIGludCk7Ci0gICAgaW50ICAgICAgICAgICAgIHNucHJpbnRfZGVzY3JpcHRpb24oY2hhciAqLCBzaXplX3QsIG9pZCAqLCBzaXplX3QsIGludCk7Ci0gICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX2Rlc2NyaXB0aW9uKHVfY2hhciAqKiwgc2l6ZV90ICosIHNpemVfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIG9pZCAqLCBzaXplX3QsIGludCk7Ci0gICAgaW50ICAgICAgICAgICAgIGdldF9tb2R1bGVfbm9kZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgb2lkICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfbWliaW5kZXhfbG9hZCggdm9pZCApOworICAgIGNoYXIgKiAgICAgICAgICBuZXRzbm1wX21pYmluZGV4X2xvb2t1cCggY29uc3QgY2hhciAqICk7CisgICAgRklMRSAqICAgICAgICAgIG5ldHNubXBfbWliaW5kZXhfbmV3KCBjb25zdCBjaGFyICogKTsKKyAgICBpbnQgICAgICAgICAgICAgc3ByaW50X3JlYWxsb2NfZGVzY3JpcHRpb24odV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCk7CiAgICAgaW50ICAgICAgICAgICAgIGdldF93aWxkX25vZGUoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOwogICAgIGludCAgICAgICAgICAgICBnZXRfbm9kZShjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7Ci0gICAgb2lkICAgICAgICAgICAgKnNubXBfcGFyc2Vfb2lkKGNvbnN0IGNoYXIgKiwgb2lkICosIHNpemVfdCAqKTsKICAgICBzdHJ1Y3QgdHJlZSAgICAqZ2V0X3RyZWUoY29uc3Qgb2lkICosIHNpemVfdCwgc3RydWN0IHRyZWUgKik7CiAgICAgc3RydWN0IHRyZWUgICAgKmdldF90cmVlX2hlYWQodm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIHNldF9mdW5jdGlvbihzdHJ1Y3QgdHJlZSAqKTsKQEAgLTE1MSwyNyArMTQ4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiBpbmRleGVzKTsKICAgICBpbnQgICAgICAgICAgICAgYnVpbGRfb2lkX3NlZ21lbnQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyKTsKIAotCi0gICAgdm9pZCAgICAgICAgICAgIHByaW50X3ZhcmlhYmxlKGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CiAKLSAgICB2b2lkICAgICAgICAgICAgZnByaW50X3ZhcmlhYmxlKEZJTEUgKiBmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7Ci0KLSAgICBpbnQgICAgICAgICAgICAgc25wcmludF92YXJpYWJsZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlKHVfY2hhciAqKiBidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSk7Ci0KICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCiAgICAgc3RydWN0IHRyZWUgICAgKgogI2Vsc2UKQEAgLTE5NCwzOSArMTc1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9iamlkbGVuKTsKIAotICAgIHZvaWQgICAgICAgICAgICBwcmludF92YWx1ZShjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgZnByaW50X3ZhbHVlKEZJTEUgKiBmcCwKKyAgICBpbnQgICAgICAgICAgICAgc3ByaW50X3JlYWxsb2NfdmFsdWUodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKIAotICAgIGludCAgICAgICAgICAgICBzbnByaW50X3ZhbHVlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7Ci0KLSAgICBpbnQgICAgICAgICAgICAgc3ByaW50X3JlYWxsb2NfdmFsdWUodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFsbG93X3JlYWxsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2JqaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKLQotCi0gICAgdm9pZCAgICAgICAgICAgIHByaW50X29iamlkKGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOwotCi0gICAgdm9pZCAgICAgICAgICAgIGZwcmludF9vYmppZChGSUxFICogZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKLQotICAgIGludCAgICAgICAgICAgICBzbnByaW50X29iamlkKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbik7Ci0KICAgICBpbnQgICAgICAgICAgICAgc3ByaW50X3JlYWxsb2Nfb2JqaWQodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFsbG93X3JlYWxsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2JqaWRsZW4pOwotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOwogCiAgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX2J5X3R5cGUodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAppbmRleCA3ODUxMDZkLi5mNWIwY2Q2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaApAQCAtNCw2ICs0LDkgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL21pYl9hcGkuaD4KKwogICAgIC8qCiAgICAgICogcGFyc2UuaAogICAgICAqLwpAQCAtNzAsMzMgKzczLDYgQEAKICAgICB9OwogCiAgICAgLyoKLSAgICAgKiBBIGxpbmtlZCBsaXN0IG9mIG5vZGVzLgotICAgICAqLwotICAgIHN0cnVjdCBub2RlIHsKLSAgICAgICAgc3RydWN0IG5vZGUgICAgKm5leHQ7Ci0gICAgICAgIGNoYXIgICAgICAgICAgICpsYWJlbDsgIC8qIFRoaXMgbm9kZSdzICh1bmlxdWUpIHRleHR1YWwgbmFtZSAqLwotICAgICAgICB1X2xvbmcgICAgICAgICAgc3ViaWQ7ICAvKiBUaGlzIG5vZGUncyBpbnRlZ2VyIHN1YmlkZW50aWZpZXIgKi8KLSAgICAgICAgaW50ICAgICAgICAgICAgIG1vZGlkOyAgLyogVGhlIG1vZHVsZSBjb250YWluaW5nIHRoaXMgbm9kZSAqLwotICAgICAgICBjaGFyICAgICAgICAgICAqcGFyZW50OyAvKiBUaGUgcGFyZW50J3MgdGV4dHVhbCBuYW1lICovCi0gICAgICAgIGludCAgICAgICAgICAgICB0Y19pbmRleDsgICAgICAgLyogaW5kZXggaW50byB0Y2xpc3QgKC0xIGlmIE5BKSAqLwotICAgICAgICBpbnQgICAgICAgICAgICAgdHlwZTsgICAvKiBUaGUgdHlwZSBvZiBvYmplY3QgdGhpcyByZXByZXNlbnRzICovCi0gICAgICAgIGludCAgICAgICAgICAgICBhY2Nlc3M7Ci0gICAgICAgIGludCAgICAgICAgICAgICBzdGF0dXM7Ci0gICAgICAgIHN0cnVjdCBlbnVtX2xpc3QgKmVudW1zOyAgICAgICAgLyogKG9wdGlvbmFsKSBsaXN0IG9mIGVudW1lcmF0ZWQgaW50ZWdlcnMgKi8KLSAgICAgICAgc3RydWN0IHJhbmdlX2xpc3QgKnJhbmdlczsKLSAgICAgICAgc3RydWN0IGluZGV4X2xpc3QgKmluZGV4ZXM7Ci0gICAgICAgIGNoYXIgICAgICAgICAgICphdWdtZW50czsKLSAgICAgICAgc3RydWN0IHZhcmJpbmRfbGlzdCAqdmFyYmluZHM7Ci0gICAgICAgIGNoYXIgICAgICAgICAgICpoaW50OwotICAgICAgICBjaGFyICAgICAgICAgICAqdW5pdHM7Ci0gICAgICAgIGNoYXIgICAgICAgICAgICpkZXNjcmlwdGlvbjsgICAgLyogZGVzY3JpcHRpb24gKGEgcXVvdGVkIHN0cmluZykgKi8KLSAgICAgICAgY2hhciAgICAgICAgICAgKnJlZmVyZW5jZTsgICAgLyogcmVmZXJlbmNlcyAoYSBxdW90ZWQgc3RyaW5nKSAqLwotICAgICAgICBjaGFyICAgICAgICAgICAqZGVmYXVsdFZhbHVlOwotCWNoYXIgICAgICAgICAgICpmaWxlbmFtZTsKLSAgICAgICAgaW50ICAgICAgICAgICAgIGxpbmVubzsKLSAgICB9OwotCi0gICAgLyoKICAgICAgKiBBIHRyZWUgaW4gdGhlIGZvcm1hdCBvZiB0aGUgdHJlZSBzdHJ1Y3R1cmUgb2YgdGhlIE1JQi4KICAgICAgKi8KICAgICBzdHJ1Y3QgdHJlZSB7CkBAIC0yMDksMjMgKzE4NSwxMyBAQAogI2RlZmluZQlBTk9OCSJhbm9ueW1vdXMjIgogI2RlZmluZQlBTk9OX0xFTiAgc3RybGVuKEFOT04pCiAKLSAgICBzdHJ1Y3QgdHJlZSAgICAqbmV0c25tcF9yZWFkX21vZHVsZShjb25zdCBjaGFyICopOwotI2lmbmRlZiBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQotICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX21vZHVsZShjb25zdCBjaGFyICopOwotI2VuZGlmCi0gICAgc3RydWN0IHRyZWUgICAgKnJlYWRfbWliKGNvbnN0IGNoYXIgKik7Ci0gICAgc3RydWN0IHRyZWUgICAgKnJlYWRfYWxsX21pYnModm9pZCk7CiAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfdW5sb2FkX21vZHVsZShjb25zdCBjaGFyICpuYW1lKTsKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKICAgICBpbnQgICAgICAgICAgICAgdW5sb2FkX21vZHVsZShjb25zdCBjaGFyICpuYW1lKTsKLSAgICB2b2lkICAgICAgICAgICAgaW5pdF9taWJfaW50ZXJuYWxzKHZvaWQpOwogI2VuZGlmCiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfaW5pdF9taWJfaW50ZXJuYWxzKHZvaWQpOwogICAgIHZvaWQgICAgICAgICAgICB1bmxvYWRfYWxsX21pYnModm9pZCk7CiAgICAgaW50ICAgICAgICAgICAgIGFkZF9taWJmaWxlKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgRklMRSAqKTsKLSAgICBpbnQgICAgICAgICAgICAgYWRkX21pYmRpcihjb25zdCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICBhZGRfbW9kdWxlX3JlcGxhY2VtZW50KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgaW50KTsKICAgICBpbnQgICAgICAgICAgICAgd2hpY2hfbW9kdWxlKGNvbnN0IGNoYXIgKik7CiAgICAgY2hhciAgICAgICAgICAgKm1vZHVsZV9uYW1lKGludCwgY2hhciAqKTsKICAgICB2b2lkICAgICAgICAgICAgcHJpbnRfc3VidHJlZShGSUxFICosIHN0cnVjdCB0cmVlICosIGludCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCmluZGV4IDc4YWY1NmUuLmRkMjg0MTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCkBAIC0xNSw3ICsxNSw3IEBACiAjZGVmaW5lIFBSRU1JQl9DT05GSUcgMQogI2RlZmluZSBFSVRIRVJfQ09ORklHIDIKIAotCisjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgogCiAgICAgLyoKICAgICAgKiBEZWZpbmVzIGEgc2V0IG9mIGZpbGUgdHlwZXMgYW5kIHRoZSBwYXJzZSBhbmQgZnJlZSBmdW5jdGlvbnMKQEAgLTQ3LDUwICs0NywyNCBAQAogICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19yZW1lbWJlcihjaGFyICopOyAgICAvKiBwcm9jZXNzIGxhdGVyLCBkdXJpbmcgc25tcF9pbml0KCkgKi8KICAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfcHJvY2Vzc19tZW1vcmllcyh2b2lkKTsgICAgICAvKiBydW4gYWxsIG1lbW9yaWVzIHRocm91Z2ggcGFyc2VyICovCiAgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnKGNvbnN0IGNoYXIgKiwgc3RydWN0IGNvbmZpZ19saW5lICosIGludCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlncyh2b2lkKTsKLSAgICB2b2lkICAgICAgICAgICAgcmVhZF9wcmVtaWJfY29uZmlncyh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgcmVhZF9jb25maWdfZmlsZXMoaW50KTsKICAgICB2b2lkICAgICAgICAgICAgZnJlZV9jb25maWcodm9pZCk7Ci0gICAgdm9pZCAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgY29uZmlnX3B3YXJuKGNvbnN0IGNoYXIgKik7CisjaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiYmIF9fR05VQ19NSU5PUl9fIDwgOCkKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoY29uc3QgY2hhciAqLCAuLi4pOworICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ193YXJuKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyNlbHNlCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKGNvbnN0IGNoYXIgKiwgLi4uKQorCV9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMSwgMikpKTsKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfd2Fybihjb25zdCBjaGFyICosIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDEsIDIpKSk7CisjZW5kaWYKKwogICAgIGNoYXIgICAgICAgICAgICpza2lwX3doaXRlKGNoYXIgKik7CiAgICAgY2hhciAgICAgICAgICAgKnNraXBfbm90X3doaXRlKGNoYXIgKik7CiAgICAgY2hhciAgICAgICAgICAgKnNraXBfdG9rZW4oY2hhciAqKTsKICAgICBjaGFyICAgICAgICAgICAqY29weV9ud29yZChjaGFyICosIGNoYXIgKiwgaW50KTsKICAgICBjaGFyICAgICAgICAgICAqY29weV93b3JkKGNoYXIgKiwgY2hhciAqKTsgIC8qIGRvIG5vdCB1c2UgKi8KICAgICB2b2lkICAgICAgICAgICAgcmVhZF9jb25maWdfd2l0aF90eXBlKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLCBjaGFyICopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJlbGVhc2VyKSAodm9pZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKSAoY29uc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCksIGNvbnN0IGNoYXIgKik7Ci0gICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJlbGVhc2VyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7Ci0gICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9hcHBfcHJlbmV0c25tcF9taWJfaGFuZGxlcihjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpyZWxlYXNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7Ci0gICAgdm9pZCAgICAgICAgICAgIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKGNvbnN0IGNoYXIgKmxlYWQpOwogICAgIGNoYXIgICAgICAgICAgICpyZWFkX2NvbmZpZ19zYXZlX29jdGV0X3N0cmluZyhjaGFyICpzYXZldG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVfY2hhciAqIHN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAppbmRleCBiZmI0YzVmLi5kOTU3YmJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE4LDggKzE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB1dGNfb2Zmc2V0X2hvdXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHV0Y19vZmZzZXRfbWludXRlcyk7CiAKLSAgICB1X2NoYXIgICAgICAgICAqZGF0ZV9uX3RpbWUodGltZV90ICosIHNpemVfdCAqKTsKLSAgICB0aW1lX3QgICAgICAgICAgY3RpbWVfdG9fdGltZXQoY2hhciAqKTsKKyAgICB1X2NoYXIgICAgICAgICAqZGF0ZV9uX3RpbWUoY29uc3QgdGltZV90ICosIHNpemVfdCAqKTsKKyAgICB0aW1lX3QgICAgICAgICAgY3RpbWVfdG9fdGltZXQoY29uc3QgY2hhciAqKTsKIAogICAgIC8qCiAgICAgICogVHJ1ZVZhbHVlIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBbGlhc0RvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBbGlhc0RvbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYWZjYjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcEFsaWFzRG9tYWluLmgKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBfU05NUEFMSUFTRE9NQUlOX0gKKyNkZWZpbmUgX1NOTVBBTElBU0RPTUFJTl9ICisKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgorCisvKgorICogU2ltcGxlIGFsaWFzZXMgZm9yIGNvbXBsZXggdHJhbnNwb3J0IHN0cmluZ3MgdGhhdCBjYW4gYmUgc3BlY2lmaWVkCisgKiB2aWEgdGhlIHNubXAuY29uZiBmaWxlIGFuZCB0aGUgJ2FsaWFzJyB0b2tlbi4KKyAqLworCisjZGVmaW5lIFRSQU5TUE9SVF9ET01BSU5fQUxJQVNfSVAJCTEsMyw2LDEsMiwxLDEwMCwxLDUKK05FVFNOTVBfSU1QT1JUIG9pZCBuZXRzbm1wX3NubXBBTElBU0RvbWFpbltdOworCisvKgorICogIkNvbnN0cnVjdG9yIiBmb3IgdHJhbnNwb3J0IGRvbWFpbiBvYmplY3QuICAKKyAqLworCit2b2lkICAgICAgICAgICAgbmV0c25tcF9hbGlhc19jdG9yKHZvaWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKk5FVFNOTVBfVFJBTlNQT1JUX0FMSUFTX0RPTUFJTiAqLworCisjZW5kaWYvKl9TTk1QQUxJQVNET01BSU5fSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wRFRMU1VEUERvbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MmRkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaApAQCAtMCwwICsxLDYxIEBACisjaWZuZGVmIF9TTk1QRFRMU1VEUERPTUFJTl9ICisjZGVmaW5lIF9TTk1QRFRMU1VEUERPTUFJTl9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKworI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKworI2RlZmluZSBUUkFOU1BPUlRfRE9NQUlOX0RUTFNfVURQX0lQCTEsMyw2LDEsNCwxLDgwNzIsMywzLDgKK05FVFNOTVBfSU1QT1JUIG9pZCBuZXRzbm1wRFRMU1VEUERvbWFpbltdOworCituZXRzbm1wX3RyYW5zcG9ydCAqbmV0c25tcF9kdGxzdWRwX3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGludCBsb2NhbCk7CisKKworLyoKKyAqIENvbnZlcnQgYSAidHJhZGl0aW9uYWwiIHBlZXJuYW1lIGludG8gYSBzb2NrYWRkcl9pbiBzdHJ1Y3R1cmUgd2hpY2ggaXMKKyAqIHdyaXR0ZW4gdG8gKmFkZHIuICBSZXR1cm5zIDEgaWYgdGhlIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwsIG9yIDAgaWYgaXQKKyAqIGZhaWxlZC4gIAorICovCisKK2ludCAgICAgICAgICAgICBuZXRzbm1wX3NvY2thZGRyX2luKHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBlZXJuYW1lLCBpbnQgcmVtb3RlX3BvcnQpOworCisKKy8qCisgKiBSZWdpc3RlciBhbnkgY29uZmlndXJhdGlvbiB0b2tlbnMgc3BlY2lmaWMgdG8gdGhlIGFnZW50LiAgCisgKi8KKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfZHRsc3VkcF9hZ2VudF9jb25maWdfdG9rZW5zX3JlZ2lzdGVyKHZvaWQpOworCit2b2lkICAgICAgICAgICAgbmV0c25tcF9kdGxzdWRwX3BhcnNlX3NlY3VyaXR5KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpwYXJhbSk7CisKK2ludCAgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfZ2V0U2VjTmFtZSh2b2lkICpvcGFxdWUsIGludCBvbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29tbXVuaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbW11bml0eV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqc2VjbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipjb250ZXh0TmFtZSk7CisKK2ludCAgICAgICAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldChpbnQgcywgaW50IG9wdG5hbWUsIGludCBsb2NhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSk7CisKKworLyoKKyAqICJDb25zdHJ1Y3RvciIgZm9yIHRyYW5zcG9ydCBkb21haW4gb2JqZWN0LiAgCisgKi8KKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfZHRsc3VkcF9jdG9yKHZvaWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmLypfU05NUERUTFNVRFBET01BSU5fSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNTSERvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjEwODE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaApAQCAtMCwwICsxLDQxIEBACisjaWZuZGVmIF9TTk1QU1NIRE9NQUlOX0gKKyNkZWZpbmUgX1NOTVBTU0hET01BSU5fSAorCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfU1NIX0RPTUFJTgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisKKy8qCisgKiBUaGUgU05NUCBvdmVyIFNTSCBvdmVyIElQdjQgdHJhbnNwb3J0IGRvbWFpbiBpcyBpZGVudGlmaWVkIGJ5CisgKiB0cmFuc3BvcnREb21haW5Tc2hJcHY0IGFzIGRlZmluZWQgaW4gUkZDIDM0MTkuCisgKi8KKworI2RlZmluZSBUUkFOU1BPUlRfRE9NQUlOX1NTSF9JUAkJMSwzLDYsMSwyLDEsMTAwLDEsMTAwCitORVRTTk1QX0lNUE9SVCBvaWQgbmV0c25tcF9zbm1wU1NIRG9tYWluW107CisKK25ldHNubXBfdHJhbnNwb3J0ICpuZXRzbm1wX3NzaF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpOworCisvKgorICogIkNvbnN0cnVjdG9yIiBmb3IgdHJhbnNwb3J0IGRvbWFpbiBvYmplY3QuICAKKyAqLworCit2b2lkICAgICAgICAgICAgbmV0c25tcF9zc2hfY3Rvcih2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLypORVRTTk1QX1RSQU5TUE9SVF9TU0hfRE9NQUlOICovCisKKyNlbmRpZi8qX1NOTVBTU0hET01BSU5fSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAppbmRleCA1NDBhZGY1Li40ZWQ3NTU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKQEAgLTUyLDYgKzUyLDE4IEBACiAKIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3VkcF9jdG9yKHZvaWQpOwogCisvKgorICogcHJvdGVjdGVkLWlzaCBmdW5jdGlvbnMgdXNlZCBieSBvdGhlciBjb3JlLWNvZGUKKyAqLworY2hhciAqbmV0c25tcF91ZHBfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbik7CisjaWYgZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChJUF9QS1RJTkZPKSB8fCBcCisgICAgZGVmaW5lZChJUF9SRUNWRFNUQUREUikgJiYgIWRlZmluZWQoX01TQ19WRVIpCitpbnQgbmV0c25tcF91ZHBfcmVjdmZyb20oaW50IHMsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgc3RydWN0IHNvY2thZGRyICpmcm9tLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqZnJvbWxlbiwgc3RydWN0IGluX2FkZHIgKmRzdGlwKTsKK2ludCBuZXRzbm1wX3VkcF9zZW5kdG8oaW50IGZkLCBzdHJ1Y3QgaW5fYWRkciAqc3JjaXAsIHN0cnVjdCBzb2NrYWRkciAqcmVtb3RlLAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBpbnQgbGVuKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAppbmRleCBjNGVhNDY0Li42ODI0YTVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaApAQCAtMzEsOSArMzEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVtb3RlX3BvcnQpOwogCiB2b2lkICAgICAgICAgICAgbmV0c25tcF91ZHA2X2FnZW50X2NvbmZpZ190b2tlbnNfcmVnaXN0ZXIodm9pZCk7CitORVRTTk1QX0lNUE9SVAogdm9pZCAgICAgICAgICAgIG5ldHNubXBfdWRwNl9wYXJzZV9zZWN1cml0eShjb25zdCBjaGFyICp0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcGFyYW0pOwogCitORVRTTk1QX0lNUE9SVAogaW50ICAgICAgICAgICAgIG5ldHNubXBfdWRwNl9nZXRTZWNOYW1lKHZvaWQgKm9wYXF1ZSwgaW50IG9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29tbXVuaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21tdW5pdHlfbGVuLCBjaGFyICoqc2VjbmFtZSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKaW5kZXggNTE5MDlmNy4uNWQ5ZTYwYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKQEAgLTQxLDkgKzQxLDIwIEBACiAKIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3VuaXhfY3Rvcih2b2lkKTsKIAorLyoKKyAqIFN1cHBvcnQgZnVuY3Rpb25zCisgKi8KK3ZvaWQgICAgICAgICAgICBuZXRzbm1wX3VuaXhfY3JlYXRlX3BhdGhfd2l0aF9tb2RlKGludCBtb2RlKTsKK3ZvaWQgICAgICAgICAgICBuZXRzbm1wX3VuaXhfZG9udF9jcmVhdGVfcGF0aCh2b2lkKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKKyNlbHNlCisKKyNkZWZpbmUgbmV0c25tcF91bml4X2NyZWF0ZV9wYXRoX3dpdGhfbW9kZSh4KQorI2RlZmluZSBuZXRzbm1wX3VuaXhfZG9udF9jcmVhdGVfcGF0aCgpCisKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLypORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTiAqLwogCiAjZW5kaWYvKl9TTk1QVU5JWERPTUFJTl9IKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKaW5kZXggMmNhZDkyZS4uZDBiYzkwNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTI0LDYgKzI0LDExIEBACiAgKiBAewogICovCiAKKyNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3ZhcmJpbmRfYXBpLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvcGR1X2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CisKICNpZm5kZWYgRE9OVF9TSEFSRV9FUlJPUl9XSVRIX09USEVSX1RIUkVBRFMKICNkZWZpbmUgU0VUX1NOTVBfRVJST1IoeCkgc25tcF9lcnJubz0oeCkKICNlbHNlCkBAIC01NywyNTcgKzYyLDcgQEAKIFNPRlRXQVJFLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiogQHR5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgbmV0c25tcF92YXJpYWJsZV9saXN0Ci0gICAgKiBUeXBlZGVmcyB0aGUgdmFyaWFibGVfbGlzdCBzdHJ1Y3QgaW50byBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKi8KLXN0cnVjdCB2YXJpYWJsZV9saXN0OwotdHlwZWRlZiBzdHJ1Y3QgdmFyaWFibGVfbGlzdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3Q7CiBzdHJ1Y3QgdGltZXZhbDsKLXN0cnVjdCBuZXRzbm1wX3RyYW5zcG9ydF9zOwotCi0jZGVmaW5lIFVTTV9BVVRIX0tVX0xFTiAgICAgMzIKLSNkZWZpbmUgVVNNX1BSSVZfS1VfTEVOICAgICAzMgotCi0vKiogQHR5cGVkZWYgc3RydWN0IHNubXBfcGR1IHRvIG5ldHNubXBfcGR1Ci0gICAgKiBUeXBlZGVmcyB0aGUgc25tcF9wZHUgc3RydWN0IGludG8gbmV0c25tcF9wZHUgKi8KLS8qKiBAc3RydWN0IHNubXBfcGR1Ci0gKiBUaGUgc25tcCBwcm90b2NvbCBkYXRhIHVuaXQuCi0gKi8JCi10eXBlZGVmIHN0cnVjdCBzbm1wX3BkdSB7Ci0KLSAgICAvKgotICAgICAqIFByb3RvY29sLXZlcnNpb24gaW5kZXBlbmRlbnQgZmllbGRzCi0gICAgICovCi0gICAgLyoqIHNubXAgdmVyc2lvbiAqLwotICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOwotICAgIC8qKiBUeXBlIG9mIHRoaXMgUERVICovCQotICAgIGludCAgICAgICAgICAgICBjb21tYW5kOwotICAgIC8qKiBSZXF1ZXN0IGlkIC0gbm90ZTogbm90IGluY3JlbWVudGVkIG9uIHJldHJpZXMgKi8KLSAgICBsb25nICAgICAgICAgICAgcmVxaWQ7ICAKLSAgICAvKiogTWVzc2FnZSBpZCBmb3IgVjMgbWVzc2FnZXMgbm90ZTogaW5jcmVtZW50ZWQgZm9yIGVhY2ggcmV0cnkgKi8KLSAgICBsb25nICAgICAgICAgICAgbXNnaWQ7Ci0gICAgLyoqIFVuaXF1ZSBJRCBmb3IgaW5jb21pbmcgdHJhbnNhY3Rpb25zICovCi0gICAgbG9uZyAgICAgICAgICAgIHRyYW5zaWQ7Ci0gICAgLyoqIFNlc3Npb24gaWQgZm9yIEFnZW50WCBtZXNzYWdlcyAqLwotICAgIGxvbmcgICAgICAgICAgICBzZXNzaWQ7Ci0gICAgLyoqIEVycm9yIHN0YXR1cyAobm9uX3JlcGVhdGVycyBpbiBHZXRCdWxrKSAqLwotICAgIGxvbmcgICAgICAgICAgICBlcnJzdGF0OwotICAgIC8qKiBFcnJvciBpbmRleCAobWF4X3JlcGV0aXRpb25zIGluIEdldEJ1bGspICovCi0gICAgbG9uZyAgICAgICAgICAgIGVycmluZGV4OyAgICAgICAKLSAgICAvKiogVXB0aW1lICovCi0gICAgdV9sb25nICAgICAgICAgIHRpbWU7ICAgCi0gICAgdV9sb25nICAgICAgICAgIGZsYWdzOwotCi0gICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7Ci0gICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KLSAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAotICAgIGludCAgICAgICAgICAgICBtc2dQYXJzZU1vZGVsOwotCi0gICAgLyoqCi0gICAgICogVHJhbnNwb3J0LXNwZWNpZmljIG9wYXF1ZSBkYXRhLiAgVGhpcyByZXBsYWNlcyB0aGUgSVAtY2VudHJpYyBhZGRyZXNzCi0gICAgICogZmllbGQuICAKLSAgICAgKi8KLSAgICAKLSAgICB2b2lkICAgICAgICAgICAqdHJhbnNwb3J0X2RhdGE7Ci0gICAgaW50ICAgICAgICAgICAgIHRyYW5zcG9ydF9kYXRhX2xlbmd0aDsKLQotICAgIC8qKgotICAgICAqIFRoZSBhY3R1YWwgdHJhbnNwb3J0IGRvbWFpbi4gIFRoaXMgU0hPVUxEIE5PVCBCRSBGUkVFKClELiAgCi0gICAgICovCi0KLSAgICBjb25zdCBvaWQgICAgICAqdERvbWFpbjsKLSAgICBzaXplX3QgICAgICAgICAgdERvbWFpbkxlbjsKLQotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyaWFibGVzOwotCi0KLSAgICAvKgotICAgICAqIFNOTVB2MSAmIFNOTVB2MmMgZmllbGRzCi0gICAgICovCi0gICAgLyoqIGNvbW11bml0eSBmb3Igb3V0Z29pbmcgcmVxdWVzdHMuICovCi0gICAgdV9jaGFyICAgICAgICAgKmNvbW11bml0eTsKLSAgICAvKiogbGVuZ3RoIG9mIGNvbW11bml0eSBuYW1lLiAqLwotICAgIHNpemVfdCAgICAgICAgICBjb21tdW5pdHlfbGVuOyAgCi0KLSAgICAvKgotICAgICAqIFRyYXAgaW5mb3JtYXRpb24KLSAgICAgKi8KLSAgICAvKiogU3lzdGVtIE9JRCAqLwotICAgIG9pZCAgICAgICAgICAgICplbnRlcnByaXNlOyAgICAgCi0gICAgc2l6ZV90ICAgICAgICAgIGVudGVycHJpc2VfbGVuZ3RoOwotICAgIC8qKiB0cmFwIHR5cGUgKi8KLSAgICBsb25nICAgICAgICAgICAgdHJhcF90eXBlOwotICAgIC8qKiBzcGVjaWZpYyB0eXBlICovCi0gICAgbG9uZyAgICAgICAgICAgIHNwZWNpZmljX3R5cGU7Ci0gICAgLyoqIFRoaXMgaXMgT05MWSB1c2VkIGZvciB2MSBUUkFQcyAgKi8KLSAgICB1bnNpZ25lZCBjaGFyICAgYWdlbnRfYWRkcls0XTsgIAotCi0gICAgLyoKLSAgICAgKiAgU05NUHYzIGZpZWxkcwotICAgICAqLwotICAgIC8qKiBjb250ZXh0IHNubXBFbmdpbmVJRCAqLwotICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCi0gICAgLyoqIGF1dGhvcml0YXRpdmUgY29udGV4dE5hbWUgKi8KLSAgICBjaGFyICAgICAgICAgICAqY29udGV4dE5hbWU7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0TmFtZSAqLwotICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0TmFtZUxlbjsKLSAgICAvKiogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgZm9yIHNlY3VyaXR5ICovCi0gICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7Ci0gICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eUVuZ2luZUlEICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5RW5naW5lSURMZW47ICAgIAotICAgIC8qKiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgKi8KLSAgICBjaGFyICAgICAgICAgICAqc2VjdXJpdHlOYW1lOwotICAgIC8qKiBMZW5ndGggb2Ygc2VjdXJpdHlOYW1lLiAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eU5hbWVMZW47ICAgICAgICAKLSAgICAKLSAgICAvKgotICAgICAqIEFnZW50WCBmaWVsZHMKLSAgICAgKiAgICAgIChhbHNvIHVzZXMgU05NUHYxIGNvbW11bml0eSBmaWVsZCkKLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgcHJpb3JpdHk7Ci0gICAgaW50ICAgICAgICAgICAgIHJhbmdlX3N1YmlkOwotICAgIAotICAgIHZvaWQgICAgICAgICAgICpzZWN1cml0eVN0YXRlUmVmOwotfSBuZXRzbm1wX3BkdTsKLQotc3RydWN0IHNubXBfc2Vzc2lvbjsKLQotLyoqIEB0eXBlZGVmIHN0cnVjdCBzbm1wX3Nlc3Npb24gbmV0c25tcF9zZXNzaW9uCi0gKiBUeXBlZGVmcyB0aGUgc25tcF9zZXNzaW9uIHN0cnVjdCBpbnRvbmV0c25tcF9zZXNzaW9uICovCi10eXBlZGVmIHN0cnVjdCBzbm1wX3Nlc3Npb24gbmV0c25tcF9zZXNzaW9uOwotCi10eXBlZGVmIGludCAgICAgKCpzbm1wX2NhbGxiYWNrKSAoaW50LCBuZXRzbm1wX3Nlc3Npb24gKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqLCB2b2lkICopOwotdHlwZWRlZiBpbnQgICAgICgqbmV0c25tcF9jYWxsYmFjaykgKGludCwgbmV0c25tcF9zZXNzaW9uICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiwgdm9pZCAqKTsKLS8qKiBAc3RydWN0IHNubXBfc2Vzc2lvbgotICogVGhlIHNubXAgc2Vzc2lvbiBzdHJ1Y3R1cmUuCi0gKi8KLXN0cnVjdCBzbm1wX3Nlc3Npb24gewotICAgIC8qCi0gICAgICogUHJvdG9jb2wtdmVyc2lvbiBpbmRlcGVuZGVudCBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogc25tcCB2ZXJzaW9uICovCi0gICAgbG9uZyAgICAgICAgICAgIHZlcnNpb247Ci0gICAgLyoqIE51bWJlciBvZiByZXRyaWVzIGJlZm9yZSB0aW1lb3V0LiAqLwotICAgIGludCAgICAgICAgICAgICByZXRyaWVzOwotICAgIC8qKiBOdW1iZXIgb2YgdVMgdW50aWwgZmlyc3QgdGltZW91dCwgdGhlbiBleHBvbmVudGlhbCBiYWNrb2ZmICovCi0gICAgbG9uZyAgICAgICAgICAgIHRpbWVvdXQ7ICAgICAgICAKLSAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7Ci0gICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqc3Vic2Vzc2lvbjsKLSAgICBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpuZXh0OwotCi0gICAgLyoqIG5hbWUgb3IgYWRkcmVzcyBvZiBkZWZhdWx0IHBlZXIgKG1heSBpbmNsdWRlIHRyYW5zcG9ydCBzcGVjaWZpZXIgYW5kL29yIHBvcnQgbnVtYmVyKSAqLwotICAgIGNoYXIgICAgICAgICAgICpwZWVybmFtZTsKLSAgICAvKiogVURQIHBvcnQgbnVtYmVyIG9mIHBlZXIuIChOTyBMT05HRVIgVVNFRCAtIFVTRSBwZWVybmFtZSBJTlNURUFEKSAqLwotICAgIHVfc2hvcnQgICAgICAgICByZW1vdGVfcG9ydDsKLSAgICAvKiogTXkgRG9tYWluIG5hbWUgb3IgZG90dGVkIElQIGFkZHJlc3MsIDAgZm9yIGRlZmF1bHQgKi8KLSAgICBjaGFyICAgICAgICAgICAqbG9jYWxuYW1lOwotICAgIC8qKiBNeSBVRFAgcG9ydCBudW1iZXIsIDAgZm9yIGRlZmF1bHQsIHBpY2tlZCByYW5kb21seSAqLwotICAgIHVfc2hvcnQgICAgICAgICBsb2NhbF9wb3J0OyAgICAgCi0gICAgLyoqCi0gICAgICogQXV0aGVudGljYXRpb24gZnVuY3Rpb24gb3IgTlVMTCBpZiBudWxsIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQgCi0gICAgICovCi0gICAgdV9jaGFyICAgICAgICAgKigqYXV0aGVudGljYXRvcikgKHVfY2hhciAqLCBzaXplX3QgKiwgdV9jaGFyICosIHNpemVfdCk7Ci0gICAgLyoqIEZ1bmN0aW9uIHRvIGludGVycHJldCBpbmNvbWluZyBkYXRhICovCi0gICAgbmV0c25tcF9jYWxsYmFjayBjYWxsYmFjazsgICAgICAKLSAgICAvKioKLSAgICAgKiBQb2ludGVyIHRvIGRhdGEgdGhhdCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gbWF5IGNvbnNpZGVyIGltcG9ydGFudCAKLSAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAqY2FsbGJhY2tfbWFnaWM7Ci0gICAgLyoqIGNvcHkgb2Ygc3lzdGVtIGVycm5vICovCi0gICAgaW50ICAgICAgICAgICAgIHNfZXJybm87Ci0gICAgLyoqIGNvcHkgb2YgbGlicmFyeSBlcnJubyAqLwotICAgIGludCAgICAgICAgICAgICBzX3NubXBfZXJybm87ICAgCi0gICAgLyoqIFNlc3Npb24gaWQgLSBBZ2VudFggb25seSAqLwotICAgIGxvbmcgICAgICAgICAgICBzZXNzaWQ7IAotCi0gICAgLyoKLSAgICAgKiBTTk1QdjEgJiBTTk1QdjJjIGZpZWxkcwotICAgICAqLwotICAgIC8qKiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAqLwotICAgIHVfY2hhciAgICAgICAgICpjb21tdW5pdHk7Ci0gICAgLyoqIExlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gKi8KLSAgICBzaXplX3QgICAgICAgICAgY29tbXVuaXR5X2xlbjsgIAotICAgIC8qKiAgTGFyZ2VzdCBtZXNzYWdlIHRvIHRyeSB0byByZWNlaXZlLiAgKi8KLSAgICBzaXplX3QgICAgICAgICAgcmN2TXNnTWF4U2l6ZTsKLSAgICAvKiogIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gc2VuZC4gICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNuZE1zZ01heFNpemU7ICAKLQotICAgIC8qCi0gICAgICogU05NUHYzIGZpZWxkcwotICAgICAqLwotICAgIC8qKiBhcmUgd2UgdGhlIGF1dGhvcml0YXRpdmUgZW5naW5lPyAqLwotICAgIHVfY2hhciAgICAgICAgICBpc0F1dGhvcml0YXRpdmU7Ci0gICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEICovCi0gICAgdV9jaGFyICAgICAgICAgKmNvbnRleHRFbmdpbmVJRDsKLSAgICAvKiogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRCAqLwotICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0RW5naW5lSURMZW47ICAgICAKLSAgICAvKiogaW5pdGlhbCBlbmdpbmVCb290cyBmb3IgcmVtb3RlIGVuZ2luZSAqLwotICAgIHVfaW50ICAgICAgICAgICBlbmdpbmVCb290czsKLSAgICAvKiogaW5pdGlhbCBlbmdpbmVUaW1lIGZvciByZW1vdGUgZW5naW5lICovCi0gICAgdV9pbnQgICAgICAgICAgIGVuZ2luZVRpbWU7Ci0gICAgLyoqIGF1dGhvcml0YXRpdmUgY29udGV4dE5hbWUgKi8KLSAgICBjaGFyICAgICAgICAgICAqY29udGV4dE5hbWU7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0TmFtZSAqLwotICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0TmFtZUxlbjsKLSAgICAvKiogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgKi8KLSAgICB1X2NoYXIgICAgICAgICAqc2VjdXJpdHlFbmdpbmVJRDsKLSAgICAvKiogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUVuZ2luZUlETGVuOyAgICAKLSAgICAvKiogb24gYmVoYWxmIG9mIHRoaXMgcHJpbmNpcGFsICovCi0gICAgY2hhciAgICAgICAgICAgKnNlY3VyaXR5TmFtZTsKLSAgICAvKiogTGVuZ3RoIG9mIHNlY3VyaXR5TmFtZS4gKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlOYW1lTGVuOwotCi0gICAgLyoqIGF1dGggcHJvdG9jb2wgb2lkICovCi0gICAgb2lkICAgICAgICAgICAgKnNlY3VyaXR5QXV0aFByb3RvOwotICAgIC8qKiBMZW5ndGggb2YgYXV0aCBwcm90b2NvbCBvaWQgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoUHJvdG9MZW47Ci0gICAgLyoqIEt1IGZvciBhdXRoIHByb3RvY29sIFhYWCAqLwotICAgIHVfY2hhciAgICAgICAgICBzZWN1cml0eUF1dGhLZXlbVVNNX0FVVEhfS1VfTEVOXTsgICAgICAgCi0gICAgLyoqIExlbmd0aCBvZiBLdSBmb3IgYXV0aCBwcm90b2NvbCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUF1dGhLZXlMZW47Ci0gICAgLyoqIEt1bCBmb3IgYXV0aCBwcm90b2NvbCAqLwotICAgIHVfY2hhciAgICAgICAgICAqc2VjdXJpdHlBdXRoTG9jYWxLZXk7ICAgICAgIAotICAgIC8qKiBMZW5ndGggb2YgS3VsIGZvciBhdXRoIHByb3RvY29sIFhYWCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUF1dGhMb2NhbEtleUxlbjsgICAgICAgCi0KLSAgICAvKiogcHJpdiBwcm90b2NvbCBvaWQgKi8KLSAgICBvaWQgICAgICAgICAgICAqc2VjdXJpdHlQcml2UHJvdG87Ci0gICAgLyoqIExlbmd0aCBvZiBwcml2IHByb3RvY29sIG9pZCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZQcm90b0xlbjsKLSAgICAvKiogS3UgZm9yIHByaXZhY3kgcHJvdG9jb2wgWFhYICovCi0gICAgdV9jaGFyICAgICAgICAgIHNlY3VyaXR5UHJpdktleVtVU01fUFJJVl9LVV9MRU5dOyAgICAgICAKLSAgICAvKiogTGVuZ3RoIG9mIEt1IGZvciBwcml2IHByb3RvY29sICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5UHJpdktleUxlbjsKLSAgICAvKiogS3VsIGZvciBwcml2IHByb3RvY29sICovCi0gICAgdV9jaGFyICAgICAgICAgICpzZWN1cml0eVByaXZMb2NhbEtleTsgICAgICAgCi0gICAgLyoqIExlbmd0aCBvZiBLdWwgZm9yIHByaXYgcHJvdG9jb2wgWFhYICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuOyAgICAgICAKLQotICAgIC8qKiBzbm1wIHNlY3VyaXR5IG1vZGVsLCB2MSwgdjJjLCB1c20gKi8KLSAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlNb2RlbDsKLSAgICAvKiogbm9BdXRoTm9Qcml2LCBhdXRoTm9Qcml2LCBhdXRoUHJpdiAqLwotICAgIGludCAgICAgICAgICAgICBzZWN1cml0eUxldmVsOyAgCi0gICAgLyoqIHRhcmdldCBwYXJhbSBuYW1lICovCi0gICAgY2hhciAgICAgICAgICAgKnBhcmFtTmFtZTsKLQotICAgIC8qKgotICAgICAqIHNlY3VyaXR5IG1vZHVsZSBzcGVjaWZpYyAKLSAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAqc2VjdXJpdHlJbmZvOwotCi0gICAgLyoqCi0gICAgICogdXNlIGFzIHlvdSB3YW50IGRhdGEgCi0gICAgICoKLSAgICAgKiAgICAgdXNlZCBieSAnU05NUF9GTEFHU19SRVNQX0NBTExCQUNLJyBoYW5kbGluZyBpbiB0aGUgYWdlbnQKLSAgICAgKiBYWFg6IG9yIHNob3VsZCB3ZSBhZGQgYSBuZXcgZmllbGQgaW50byB0aGlzIHN0cnVjdHVyZT8KLSAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAqbXl2b2lkOwotfTsKLQogLyoKICAqIEEgbGlzdCBvZiBhbGwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgc2Vzc2lvbi4KICAqLwpAQCAtNDA0LDYgKzE1OSw3IEBACiAKICNkZWZpbmUgU05NUF9ERVRBSUxfU0laRSAgICAgICAgNTEyCiAKKyNkZWZpbmUgU05NUF9GTEFHU19VRFBfQlJPQURDQVNUICAgMHg4MDAKICNkZWZpbmUgU05NUF9GTEFHU19SRVNQX0NBTExCQUNLICAgMHg0MDAgICAgICAvKiBBZGRpdGlvbmFsIGNhbGxiYWNrIG9uIHJlc3BvbnNlICovCiAjZGVmaW5lIFNOTVBfRkxBR1NfVVNFUl9DUkVBVEVEICAgIDB4MjAwICAgICAgLyogVVNNIHVzZXIgaGFzIGJlZW4gY3JlYXRlZCAqLwogI2RlZmluZSBTTk1QX0ZMQUdTX0RPTlRfUFJPQkUgICAgICAweDEwMCAgICAgIC8qIGRvbid0IHByb2JlIGZvciBhbiBlbmdpbmVJRCAqLwpAQCAtNTAwLDEzMiArMjU2LDI2IEBACiAjZGVmaW5lIFNOTVBFUlJfS1JCNQkJCSgtNjMpCiAjZGVmaW5lIFNOTVBFUlJfUFJPVE9DT0wJCSgtNjQpCiAjZGVmaW5lIFNOTVBFUlJfT0lEX05PTklOQ1JFQVNJTkcgICAgICAgKC02NSkKKyNkZWZpbmUgU05NUEVSUl9KVVNUX0FfQ09OVEVYVF9QUk9CRSAgICAoLTY2KQogCi0jZGVmaW5lIFNOTVBFUlJfTUFYCQkJKC02NSkKLQotI2RlZmluZSBub25fcmVwZWF0ZXJzCWVycnN0YXQKLSNkZWZpbmUgbWF4X3JlcGV0aXRpb25zIGVycmluZGV4Ci0KLXR5cGVkZWYgdW5pb24gewotICAgbG9uZyAgICAgICAgICAgKmludGVnZXI7Ci0gICB1X2NoYXIgICAgICAgICAqc3RyaW5nOwotICAgb2lkICAgICAgICAgICAgKm9iamlkOwotICAgdV9jaGFyICAgICAgICAgKmJpdHN0cmluZzsKLSAgIHN0cnVjdCBjb3VudGVyNjQgKmNvdW50ZXI2NDsKLSNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKLSAgIGZsb2F0ICAgICAgICAgICpmbG9hdFZhbDsKLSAgIGRvdWJsZSAgICAgICAgICpkb3VibGVWYWw7Ci0gICAvKgotICAgICogdF91bmlvbiAqdW5pb25WYWw7IAotICAgICovCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUyAqLwotfSBuZXRzbm1wX3ZhcmRhdGE7Ci0KLQotLyoqIEBzdHJ1Y3QgdmFyaWFibGVfbGlzdAotICogVGhlIG5ldHNubXAgdmFyaWFibGUgbGlzdCBiaW5kaW5nIHN0cnVjdHVyZSwgaXQncyB0eXBlZGVmJ2QgdG8KLSAqIG5ldHNubXBfdmFyaWFibGVfbGlzdC4KLSAqLwotc3RydWN0IHZhcmlhYmxlX2xpc3QgewotICAgLyoqIE5VTEwgZm9yIGxhc3QgdmFyaWFibGUgKi8KLSAgIHN0cnVjdCB2YXJpYWJsZV9saXN0ICpuZXh0X3ZhcmlhYmxlOyAgICAKLSAgIC8qKiBPYmplY3QgaWRlbnRpZmllciBvZiB2YXJpYWJsZSAqLwotICAgb2lkICAgICAgICAgICAgKm5hbWU7ICAgCi0gICAvKiogbnVtYmVyIG9mIHN1YmlkJ3MgaW4gbmFtZSAqLwotICAgc2l6ZV90ICAgICAgICAgIG5hbWVfbGVuZ3RoOyAgICAKLSAgIC8qKiBBU04gdHlwZSBvZiB2YXJpYWJsZSAqLwotICAgdV9jaGFyICAgICAgICAgIHR5cGU7ICAgCi0gICAvKiogdmFsdWUgb2YgdmFyaWFibGUgKi8KLSAgICBuZXRzbm1wX3ZhcmRhdGEgdmFsOwotICAgLyoqIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGJlIGNvcGllZCBpbnRvIGJ1ZiAqLwotICAgc2l6ZV90ICAgICAgICAgIHZhbF9sZW47Ci0gICAvKiogYnVmZmVyIHRvIGhvbGQgdGhlIE9JRCAqLwotICAgb2lkICAgICAgICAgICAgIG5hbWVfbG9jW01BWF9PSURfTEVOXTsgIAotICAgLyoqIDkwIHBlcmNlbnRpbGUgPCA0MC4gKi8KLSAgIHVfY2hhciAgICAgICAgICBidWZbNDBdOwotICAgLyoqIChPcGFxdWUpIGhvb2sgZm9yIGFkZGl0aW9uYWwgZGF0YSAqLwotICAgdm9pZCAgICAgICAgICAgKmRhdGE7Ci0gICAvKiogY2FsbGJhY2sgdG8gZnJlZSBhYm92ZSAqLwotICAgdm9pZCAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSh2b2lkICopOyAgICAKLSAgIGludCAgICAgICAgICAgICBpbmRleDsKLX07Ci0KLQotCi0gICAgLyoKLSAgICAgKiBuZXRzbm1wX3Nlc3Npb24gKnNubXBfb3BlbihzZXNzaW9uKQotICAgICAqICAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgICAqCi0gICAgICogU2V0cyB1cCB0aGUgc2Vzc2lvbiB3aXRoIHRoZSBzbm1wX3Nlc3Npb24gaW5mb3JtYXRpb24gcHJvdmlkZWQKLSAgICAgKiBieSB0aGUgdXNlci4gIFRoZW4gb3BlbnMgYW5kIGJpbmRzIHRoZSBuZWNlc3NhcnkgVURQIHBvcnQuCi0gICAgICogQSBoYW5kbGUgdG8gdGhlIGNyZWF0ZWQgc2Vzc2lvbiBpcyByZXR1cm5lZCAodGhpcyBpcyBkaWZmZXJlbnQgdGhhbgotICAgICAqIHRoZSBwb2ludGVyIHBhc3NlZCB0byBzbm1wX29wZW4oKSkuICBPbiBhbnkgZXJyb3IsIE5VTEwgaXMgcmV0dXJuZWQKLSAgICAgKiBhbmQgc25tcF9lcnJubyBpcyBzZXQgdG8gdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCi0gICAgICovCi0gICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX29wZW4obmV0c25tcF9zZXNzaW9uICopOwotCi0gICAgLyoKLSAgICAgKiBpbnQgc25tcF9jbG9zZShzZXNzaW9uKQotICAgICAqICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgICoKLSAgICAgKiBDbG9zZSB0aGUgaW5wdXQgc2Vzc2lvbi4gIEZyZWVzIGFsbCBkYXRhIGFsbG9jYXRlZCBmb3IgdGhlIHNlc3Npb24sCi0gICAgICogZGVxdWV1ZXMgYW55IHBlbmRpbmcgcmVxdWVzdHMsIGFuZCBjbG9zZXMgYW55IHNvY2tldHMgYWxsb2NhdGVkIGZvcgotICAgICAqIHRoZSBzZXNzaW9uLiAgUmV0dXJucyAwIG9uIGVycm9yLCAxIG90aGVyd2lzZS4KLSAgICAgKgotICAgICAqIHNubXBfY2xvc2Vfc2Vzc2lvbnMoKSBkb2VzIHRoZSBzYW1lIHRoaW5nIGZvciBhbGwgb3BlbiBzZXNzaW9ucwotICAgICAqLwotICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb3NlKG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9zZV9zZXNzaW9ucyh2b2lkKTsKKyNkZWZpbmUgU05NUEVSUl9NQVgJCQkoLTY2KQogCiAKICAgICAvKgotICAgICAqIGludCBzbm1wX3NlbmQoc2Vzc2lvbiwgcGR1KQotICAgICAqICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgICogICAgIG5ldHNubXBfcGR1ICAgICAgKnBkdTsKLSAgICAgKgotICAgICAqIFNlbmRzIHRoZSBpbnB1dCBwZHUgb24gdGhlIHNlc3Npb24gYWZ0ZXIgY2FsbGluZyBzbm1wX2J1aWxkIHRvIGNyZWF0ZQotICAgICAqIGEgc2VyaWFsaXplZCBwYWNrZXQuICBJZiBuZWNlc3NhcnksIHNldCBzb21lIG9mIHRoZSBwZHUgZGF0YSBmcm9tIHRoZQotICAgICAqIHNlc3Npb24gZGVmYXVsdHMuICBBZGQgYSByZXF1ZXN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwZHUgdG8gdGhlIGxpc3QKLSAgICAgKiBvZiBvdXRzdGFuZGluZyByZXF1ZXN0cyBvbiB0aGlzIHNlc3Npb24sIHRoZW4gc2VuZCB0aGUgcGR1LgotICAgICAqIFJldHVybnMgdGhlIHJlcXVlc3QgaWQgb2YgdGhlIGdlbmVyYXRlZCBwYWNrZXQgaWYgYXBwbGljYWJsZSwgb3RoZXJ3aXNlIDEuCi0gICAgICogT24gYW55IGVycm9yLCAwIGlzIHJldHVybmVkLgotICAgICAqIFRoZSBwZHUgaXMgZnJlZWQgYnkgc25tcF9zZW5kKCkgdW5sZXNzIGEgZmFpbHVyZSBvY2N1cmVkLgorICAgICAqIEdlbmVyYWwgcHVycG9zZSBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMuIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8KKyAgICAgKiBhbGxvY2F0ZSBtZW1vcnkgdGhhdCBtYXkgYmUgcmVhbGxvY2F0ZWQgb3IgZnJlZWQgYnkgdGhlIE5ldC1TTk1QCisgICAgICogbGlicmFyeSBvciB0byByZWFsbG9jYXRlIG9yIGZyZWUgbWVtb3J5IHRoYXQgaGFzIGJlZW4gYWxsb2NhdGVkIGJ5IHRoZQorICAgICAqIE5ldC1TTk1QIGxpYnJhcnksIGFuZCB3aGVuIHdvcmtpbmcgaW4gYSBjb250ZXh0IHdoZXJlIHRoZXJlIGlzIG1vcmUgdGhhbgorICAgICAqIG9uZSBoZWFwLiBFeGFtcGxlcyBhcmU6CisgICAgICogLSBQZXJsIFhTVUIncy4KKyAgICAgKiAtIE1TVkMgb3IgTWluR1cgd2l0aCB0aGUgTmV0LVNOTVAgbGlicmFyeSBjb21waWxlZCBhcyBhIERMTCBpbnN0ZWFkIG9mCisgICAgICogICBhIHN0YXRpYyBsaWJyYXJ5LgogICAgICAqLwotICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbmQobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICopOwotCi0gICAgLyoKLSAgICAgKiBpbnQgc25tcF9hc3luY19zZW5kKHNlc3Npb24sIHBkdSwgY2FsbGJhY2ssIGNiX2RhdGEpCi0gICAgICogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKLSAgICAgKiAgICAgbmV0c25tcF9wZHUgICAgICAqcGR1OwotICAgICAqICAgICBuZXRzbm1wX2NhbGxiYWNrIGNhbGxiYWNrOwotICAgICAqICAgICB2b2lkICAgKmNiX2RhdGE7Ci0gICAgICoKLSAgICAgKiBTZW5kcyB0aGUgaW5wdXQgcGR1IG9uIHRoZSBzZXNzaW9uIGFmdGVyIGNhbGxpbmcgc25tcF9idWlsZCB0byBjcmVhdGUKLSAgICAgKiBhIHNlcmlhbGl6ZWQgcGFja2V0LiAgSWYgbmVjZXNzYXJ5LCBzZXQgc29tZSBvZiB0aGUgcGR1IGRhdGEgZnJvbSB0aGUKLSAgICAgKiBzZXNzaW9uIGRlZmF1bHRzLiAgQWRkIGEgcmVxdWVzdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgcGR1IHRvIHRoZSBsaXN0Ci0gICAgICogb2Ygb3V0c3RhbmRpbmcgcmVxdWVzdHMgb24gdGhpcyBzZXNzaW9uIGFuZCBzdG9yZSBjYWxsYmFjayBhbmQgZGF0YSwKLSAgICAgKiB0aGVuIHNlbmQgdGhlIHBkdS4KLSAgICAgKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGlkIG9mIHRoZSBnZW5lcmF0ZWQgcGFja2V0IGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSAxLgotICAgICAqIE9uIGFueSBlcnJvciwgMCBpcyByZXR1cm5lZC4KLSAgICAgKiBUaGUgcGR1IGlzIGZyZWVkIGJ5IHNubXBfc2VuZCgpIHVubGVzcyBhIGZhaWx1cmUgb2NjdXJlZC4KLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9hc3luY19zZW5kKG5ldHNubXBfc2Vzc2lvbiAqLCBuZXRzbm1wX3BkdSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWxsYmFjaywgdm9pZCAqKTsKLQotCi0gICAgLyoKLSAgICAgKiB2b2lkIHNubXBfcmVhZChmZHNldCkKLSAgICAgKiAgICAgZmRfc2V0ICAqZmRzZXQ7Ci0gICAgICoKLSAgICAgKiBDaGVja3MgdG8gc2VlIGlmIGFueSBvZiB0aGUgZmQncyBzZXQgaW4gdGhlIGZkc2V0IGJlbG9uZyB0bwotICAgICAqIHNubXAuICBFYWNoIHNvY2tldCB3aXRoIGl0J3MgZmQgc2V0IGhhcyBhIHBhY2tldCByZWFkIGZyb20gaXQKLSAgICAgKiBhbmQgc25tcF9wYXJzZSBpcyBjYWxsZWQgb24gdGhlIHBhY2tldCByZWNlaXZlZC4gIFRoZSByZXN1bHRpbmcgcGR1Ci0gICAgICogaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayByb3V0aW5lIGZvciB0aGF0IHNlc3Npb24uICBJZiB0aGUgY2FsbGJhY2sKLSAgICAgKiByb3V0aW5lIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCB0aGUgcGR1IGFuZCBpdCdzIHJlcXVlc3QgYXJlIGRlbGV0ZWQuCi0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfcmVhZChmZF9zZXQgKik7Ci0KLQorICAgIE5FVFNOTVBfSU1QT1JUIHZvaWQgKm5ldHNubXBfbWFsbG9jKHNpemVfdCBzaXplKTsKKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkICpuZXRzbm1wX2NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOworICAgIE5FVFNOTVBfSU1QT1JUIHZvaWQgKm5ldHNubXBfcmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkIG5ldHNubXBfZnJlZSh2b2lkICpwdHIpOworICAgIE5FVFNOTVBfSU1QT1JUIGNoYXIgKm5ldHNubXBfc3RyZHVwKGNvbnN0IGNoYXIgKnMxKTsKIAogICAgIC8qCiAgICAgICogdm9pZApAQCAtNjM0LDU3ICsyODQsOCBAQAogICAgICAqCiAgICAgICogRnJlZXMgdGhlIHBkdSBhbmQgYW55IG1hbGxvYydkIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGl0LgogICAgICAqLwotICAgIHZvaWQgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KG5ldHNubXBfcGR1ICopOwogCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfZnJlZV92YXIobmV0c25tcF92YXJpYWJsZV9saXN0ICopOyAgICAgLyogZnJlZXMganVzdCB0aGlzIG9uZSAqLwotCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcik7ICAgICAvKiBmcmVlcyBhbGwgaW4gbGlzdCAqLwotCi0gICAgLyoKLSAgICAgKiBpbnQgc25tcF9zZWxlY3RfaW5mbyhudW1mZHMsIGZkc2V0LCB0aW1lb3V0LCBibG9jaykKLSAgICAgKiBpbnQgKm51bWZkczsKLSAgICAgKiBmZF9zZXQgICAqZmRzZXQ7Ci0gICAgICogc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQ7Ci0gICAgICogaW50ICpibG9jazsKLSAgICAgKgotICAgICAqIFJldHVybnMgaW5mbyBhYm91dCB3aGF0IHNubXAgcmVxdWlyZXMgZnJvbSBhIHNlbGVjdCBzdGF0ZW1lbnQuCi0gICAgICogbnVtZmRzIGlzIHRoZSBudW1iZXIgb2YgZmRzIGluIHRoZSBsaXN0IHRoYXQgYXJlIHNpZ25pZmljYW50LgotICAgICAqIEFsbCBmaWxlIGRlc2NyaXB0b3JzIG9wZW5lZCBmb3IgU05NUCBhcmUgT1InZCBpbnRvIHRoZSBmZHNldC4KLSAgICAgKiBJZiBhY3Rpdml0eSBvY2N1cnMgb24gYW55IG9mIHRoZXNlIGZpbGUgZGVzY3JpcHRvcnMsIHNubXBfcmVhZAotICAgICAqIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGF0IGZpbGUgZGVzY3JpcHRvciBzZXQuCi0gICAgICoKLSAgICAgKiBUaGUgdGltZW91dCBpcyB0aGUgbGF0ZXN0IHRpbWUgdGhhdCBTTk1QIGNhbiB3YWl0IGZvciBhIHRpbWVvdXQuICBUaGUKLSAgICAgKiBzZWxlY3Qgc2hvdWxkIGJlIGRvbmUgd2l0aCB0aGUgbWluaW11bSB0aW1lIGJldHdlZW4gdGltZW91dCBhbmQgYW55IG90aGVyCi0gICAgICogdGltZW91dHMgbmVjZXNzYXJ5LiAgVGhpcyBzaG91bGQgYmUgY2hlY2tlZCB1cG9uIGVhY2ggaW52b2NhdGlvbiBvZiBzZWxlY3QuCi0gICAgICogSWYgYSB0aW1lb3V0IGlzIHJlY2VpdmVkLCBzbm1wX3RpbWVvdXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjaGVjayBpZiB0aGUKLSAgICAgKiB0aW1lb3V0IHdhcyBmb3IgU05NUC4gIChzbm1wX3RpbWVvdXQgaXMgaWRlbXBvdGVudCkKLSAgICAgKgotICAgICAqIEJsb2NrIGlzIDEgaWYgdGhlIHNlbGVjdCBpcyByZXF1ZXN0ZWQgdG8gYmxvY2sgaW5kZWZpbml0ZWx5LCByYXRoZXIgdGhhbgotICAgICAqIHRpbWUgb3V0LiAgSWYgYmxvY2sgaXMgaW5wdXQgYXMgMSwgdGhlIHRpbWVvdXQgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzCi0gICAgICogdW5kZWZpbmVkLCBidXQgaXQgbXVzdCBiZSBhdmFpbGFibGUgZm9yIHNldHRpbmcgaW4gc25tcF9zZWxlY3RfaW5mby4gIE9uCi0gICAgICogcmV0dXJuLCBpZiBibG9jayBpcyB0cnVlLCB0aGUgdmFsdWUgb2YgdGltZW91dCB3aWxsIGJlIHVuZGVmaW5lZC4KLSAgICAgKgotICAgICAqIHNubXBfc2VsZWN0X2luZm8gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG9wZW4gc29ja2V0cy4gIChpLmUuIFRoZSBudW1iZXIKLSAgICAgKiBvZiBzZXNzaW9ucyBvcGVuKQotICAgICAqLwotICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbGVjdF9pbmZvKGludCAqLCBmZF9zZXQgKiwgc3RydWN0IHRpbWV2YWwgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKik7Ci0KLQotCi0gICAgLyoKLSAgICAgKiB2b2lkIHNubXBfdGltZW91dCgpOwotICAgICAqCi0gICAgICogc25tcF90aW1lb3V0IHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHRpbWVvdXQgZnJvbSBzbm1wX3NlbGVjdF9pbmZvCi0gICAgICogZXhwaXJlcywgYnV0IGl0IGlzIGlkZW1wb3RlbnQsIHNvIHNubXBfdGltZW91dCBjYW4gYmUgcG9sbGVkIChwcm9iYWJseSBhCi0gICAgICogY3B1IGV4cGVuc2l2ZSBwcm9wb3NpdGlvbikuICBzbm1wX3RpbWVvdXQgY2hlY2tzIHRvIHNlZSBpZiBhbnkgb2YgdGhlCi0gICAgICogc2Vzc2lvbnMgaGF2ZSBhbiBvdXRzdGFuZGluZyByZXF1ZXN0IHRoYXQgaGFzIHRpbWVkIG91dC4gIElmIGl0IGZpbmRzIG9uZQotICAgICAqIChvciBtb3JlKSwgYW5kIHRoYXQgcGR1IGhhcyBtb3JlIHJldHJpZXMgYXZhaWxhYmxlLCBhIG5ldyBwYWNrZXQgaXMgZm9ybWVkCi0gICAgICogZnJvbSB0aGUgcGR1IGFuZCBpcyByZXNlbnQuICBJZiB0aGVyZSBhcmUgbm8gbW9yZSByZXRyaWVzIGF2YWlsYWJsZSwgdGhlCi0gICAgICogY2FsbGJhY2sgZm9yIHRoZSBzZXNzaW9uIGlzIHVzZWQgdG8gYWxlcnQgdGhlIHVzZXIgb2YgdGhlIHRpbWVvdXQuCi0gICAgICovCi0KLSAgICB2b2lkICAgICAgICAgICAgc25tcF90aW1lb3V0KHZvaWQpOworICAgIE5FVFNOTVBfSU1QT1JUIHZvaWQgc25tcF9mcmVlX3Zhcl9pbnRlcm5hbHMobmV0c25tcF92YXJpYWJsZV9saXN0ICopOyAgICAgLyogZnJlZXMgY29udGVudHMgb25seSAqLwogCiAKICAgICAvKgpAQCAtNzc0LDE2ICszNzUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCk7CiAgICAgdm9pZCAgICAgICAgICAgIHNubXBfc3RvcmUoY29uc3QgY2hhciAqdHlwZSk7CiAgICAgdm9pZCAgICAgICAgICAgIHNubXBfc2h1dGRvd24oY29uc3QgY2hhciAqdHlwZSk7Ci0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX3BkdV9hZGRfdmFyaWFibGUobmV0c25tcF9wZHUgKiwgY29uc3Qgb2lkICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCB1X2NoYXIsIGNvbnN0IHVfY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCk7Ci0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKG5ldHNubXBfdmFyaWFibGVfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiB2YXJsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmFtZV9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1X2NoYXIgKiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CiAgICAgaW50ICAgICAgICAgICAgIHNubXBfYWRkX3ZhcihuZXRzbm1wX3BkdSAqLCBjb25zdCBvaWQgKiwgc2l6ZV90LCBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKTsKICAgICBvaWQgICAgICAgICAgICAqc25tcF9kdXBsaWNhdGVfb2JqaWQoY29uc3Qgb2lkICogb2JqVG9Db3B5LCBzaXplX3QpOwpAQCAtNzkzLDYgKzM4NCw4IEBACiAgICAgdm9pZCAgICAgICAgICAgIHNubXBfaW5pdF9zdGF0aXN0aWNzKHZvaWQpOwogICAgIGludCAgICAgICAgICAgICBjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbik7CiAgICAgaW50IHNubXBfZ2V0X2ZkX2Zvcl9zZXNzaW9uKHN0cnVjdCBzbm1wX3Nlc3Npb24gKnNlc3NwKTsKKyAgICBpbnQgc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzKHZvaWQgKnNscCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7CiAKICAgICAvKgogICAgICAqIE5ldyByZS1hbGxvY2F0aW5nIHJldmVyc2UgZW5jb2RpbmcgZnVuY3Rpb25zLiAgCkBAIC04MTEsNiArNDA0LDggQEAKIAogCiAKK3N0cnVjdCBuZXRzbm1wX3RyYW5zcG9ydF9zOworCiAgICAgLyoKICAgICAgKiBFeHRlbmRlZCBvcGVuOyBmcHJlX3BhcnNlIGhhcyBjaGFuZ2VkLiAgCiAgICAgICovCkBAIC04NDIsNTYgKzQzNywxNCBAQAogICAgIGludCAgICAgICAgICAgICBzbm1wX2dldF9kb19kZWJ1Z2dpbmcodm9pZCk7CiAKIAotICAgIC8qCi0gICAgICogc25tcF9lcnJvciAtIHJldHVybiBlcnJvciBkYXRhCi0gICAgICogSW5wdXRzIDogIGFkZHJlc3Mgb2YgZXJybm8sIGFkZHJlc3Mgb2Ygc25tcF9lcnJubywgYWRkcmVzcyBvZiBzdHJpbmcKLSAgICAgKiBDYWxsZXIgbXVzdCBmcmVlIHRoZSBzdHJpbmcgcmV0dXJuZWQgYWZ0ZXIgdXNlLgotICAgICAqLwotICAgIHZvaWQgICAgICAgICAgICBzbm1wX2Vycm9yKG5ldHNubXBfc2Vzc2lvbiAqLCBpbnQgKiwgaW50ICosIGNoYXIgKiopOwotICAgIC8qCi0gICAgICogc2luZ2xlIHNlc3Npb24gQVBJLgotICAgICAqCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gc2ltaWxhciBhY3Rpb25zIGFzIHNubXBfWFggZnVuY3Rpb25zLAotICAgICAqIGJ1dCBvcGVyYXRlIG9uIGEgc2luZ2xlIHNlc3Npb24gb25seS4KLSAgICAgKgotICAgICAqIFN5bm9wc2lzOgotICAgICAKLSAgICAgdm9pZCAqIHNlc3NwOwotICAgICBuZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOwotICAgICBuZXRzbm1wX3BkdSAqcGR1LCAqcmVzcG9uc2U7Ci0gICAgIAotICAgICBzbm1wX3Nlc3NfaW5pdCgmc2Vzc2lvbik7Ci0gICAgIHNlc3Npb24ucmV0cmllcyA9IC4uLgotICAgICBzZXNzaW9uLnJlbW90ZV9wb3J0ID0gLi4uCi0gICAgIHNlc3NwID0gc25tcF9zZXNzX29wZW4oJnNlc3Npb24pOwotICAgICBzcyA9IHNubXBfc2Vzc19zZXNzaW9uKHNlc3NwKTsKLSAgICAgaWYgKHNzID09IE5VTEwpCi0gICAgIGV4aXQoMSk7Ci0gICAgIC4uLgotICAgICBpZiAoc3MtPmNvbW11bml0eSkgZnJlZShzcy0+Y29tbXVuaXR5KTsKLSAgICAgc3MtPmNvbW11bml0eSA9IHN0cmR1cChnYXRld2F5KTsKLSAgICAgc3MtPmNvbW11bml0eV9sZW4gPSBzdHJsZW4oZ2F0ZXdheSk7Ci0gICAgIC4uLgotICAgICBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uoc2Vzc3AsIHBkdSwgJnJlc3BvbnNlKTsKLSAgICAgLi4uCi0gICAgIHNubXBfc2Vzc19jbG9zZShzZXNzcCk7Ci0gICAgIAotICAgICAqIFNlZSBhbHNvOgotICAgICAqIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSwgaW4gc25tcF9jbGllbnQuaC4KLSAgICAgCi0gICAgICogTm90ZXM6Ci0gICAgICogIDEuIEludm9rZSBzbm1wX3Nlc3Nfc2Vzc2lvbiBhZnRlciBzbm1wX3Nlc3Nfb3Blbi4KLSAgICAgKiAgMi4gc25tcF9zZXNzX3Nlc3Npb24gcmV0dXJuIHZhbHVlIGlzIGFuIG9wYXF1ZSBwb2ludGVyLgotICAgICAqICAzLiBEbyBOT1QgZnJlZSBtZW1vcnkgcmV0dXJuZWQgYnkgc25tcF9zZXNzX3Nlc3Npb24uCi0gICAgICogIDQuIFJlcGxhY2Ugc25tcF9zZW5kKHNzLHBkdSkgd2l0aCBzbm1wX3Nlc3Nfc2VuZChzZXNzcCxwZHUpCi0gICAgICovCiAKLSAgICB2b2lkICAgICAgICAgICAgc25tcF9zZXNzX2luaXQobmV0c25tcF9zZXNzaW9uICopOwotICAgIHZvaWQgICAgICAgICAgICpzbm1wX3Nlc3Nfb3BlbihuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgdm9pZCAgICAgICAgICAgKnNubXBfc2Vzc19wb2ludGVyKG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNubXBfc2Vzc19zZXNzaW9uKHZvaWQgKik7Ci0gICAgTkVUU05NUF9JTVBPUlQKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCh2b2lkICopOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfZXJyb3Iodm9pZCAqLCBpbnQgKiwgaW50ICosIGNoYXIgKiopOworICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3Nlc3NfbG9nX2Vycm9yKGludCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcm9nX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzcyk7CisgICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19wZXJyb3IoY29uc3QgY2hhciAqcHJvZ19zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogc3MpOworICAgIGNvbnN0IGNoYXIgKiAgICBzbm1wX3BkdV90eXBlKGludCB0eXBlKTsKIAogICAgIC8qCiAgICAgICogUmV0dXJuIHRoZSBuZXRzbm1wX3RyYW5zcG9ydCBzdHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvcGFxdWUKQEAgLTk4MSwyOCArNTM0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KQogICAgICAgICApOwotCi0gICAgLyoKLSAgICAgKiB1c2UgcmV0dXJuIHZhbHVlIGZyb20gc25tcF9zZXNzX29wZW4gYXMgdm9pZCAqIHBhcmFtZXRlciAKLSAgICAgKi8KLQotICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc2VuZCh2b2lkICosIG5ldHNubXBfcGR1ICopOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfYXN5bmNfc2VuZCh2b2lkICosIG5ldHNubXBfcGR1ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FsbGJhY2ssIHZvaWQgKik7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zZWxlY3RfaW5mbyh2b2lkICosIGludCAqLCBmZF9zZXQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICosIGludCAqKTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3JlYWQodm9pZCAqLCBmZF9zZXQgKik7Ci0gICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc190aW1lb3V0KHZvaWQgKik7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19jbG9zZSh2b2lkICopOwotCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19lcnJvcih2b2lkICosIGludCAqLCBpbnQgKiwgY2hhciAqKik7Ci0gICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfc2Vzc19sb2dfZXJyb3IoaW50IHByaW9yaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByb2dfc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqIHNzKTsKLSAgICB2b2lkICAgICAgICAgICAgc25tcF9zZXNzX3BlcnJvcihjb25zdCBjaGFyICpwcm9nX3N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzcyk7Ci0gICAgY29uc3QgY2hhciAqICAgIHNubXBfcGR1X3R5cGUoaW50IHR5cGUpOwotCiAgICAgLyoKICAgICAgKiBlbmQgc2luZ2xlIHNlc3Npb24gQVBJIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAppbmRleCA1NzhiNmNlLi41MWNiNzU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaApAQCAtMzgsMTMgKzM4LDE0IEBACiAgKiAgaWYgYXNzZXJ0cyB3ZXJlbid0IHJlcXVlc3RlZCwganVzdCBsb2csIHVubGVzcyBORVRTTk1QX05PX0RFQlVHR0lORyBzcGVjaWZpZWQKICAqLwogIyAgIGlmbmRlZiBORVRTTk1QX05PX0RFQlVHR0lORwotIyAgICAgIGlmZGVmICBIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVECisjICAgICAgaWZkZWYgIE5FVFNOTVBfRlVOQ1RJT04KICMgICAgICAgICBkZWZpbmUgbmV0c25tcF9hc3NlcnQoeCkgIGRvIHsgXAogICAgICAgICAgICAgICAgICBpZiAoIHggKSBcCiAgICAgICAgICAgICAgICAgICAgIDsgXAogICAgICAgICAgICAgICAgICBlbHNlIFwKICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hc3NlcnQgJXMgZmFpbGVkICVzOiVkICVzKClcbiIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19TVFJJTkcoeCksX19GSUxFX18sX19MSU5FX18sX19GVU5DVElPTl9fKTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1NUUklORyh4KSxfX0ZJTEVfXyxfX0xJTkVfXywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0ZVTkNUSU9OKTsgXAogICAgICAgICAgICAgICB9d2hpbGUoMCkKICMgICAgICBlbHNlCiAjICAgICAgICAgZGVmaW5lIG5ldHNubXBfYXNzZXJ0KHgpICBkbyB7IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKaW5kZXggOTllNzViNS4uMWUxNmNlNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKQEAgLTI2LDYgKzI2LDExIEBACiAjaWZuZGVmIFNOTVBfQ0xJRU5UX0gKICNkZWZpbmUgU05NUF9DTElFTlRfSAogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC92YXJiaW5kX2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCkBAIC00OCwxNyArNTMsNiBAQAogICAgICAgICBuZXRzbm1wX3BkdSAgICAqcGR1OwogICAgIH07CiAKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3ZhbHVlKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfb2JqaWQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYW1lX2xlbmd0aCk7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFyLCB1X2NoYXIgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiB2YWxfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhbF9sZW4pOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiBuZXd2YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLCBsb25nIHZhbCk7CiAgICAgdm9pZCAgICAgICAgICAgIHNubXBfcmVwbGFjZV92YXJfdHlwZXMobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciBvbGRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgbmV3X3R5cGUpOwpAQCAtNzMsMzIgKzY3LDIxIEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpmaW5kX3ZhcmJpbmRfaW5fbGlzdChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZibGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqbmFtZSwgc2l6ZV90IGxlbik7CiAKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfYWRkX251bGxfdmFyKG5ldHNubXBfcGR1ICosIGNvbnN0IG9pZCAqLCBzaXplX3QpOwotICAgIG5ldHNubXBfcGR1ICAgICpzbm1wX3BkdV9jcmVhdGUoaW50KTsKLSAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9maXhfcGR1KG5ldHNubXBfcGR1ICosIGludCk7Ci0gICAgbmV0c25tcF9wZHUgICAgKnNubXBfY2xvbmVfcGR1KG5ldHNubXBfcGR1ICopOwogICAgIG5ldHNubXBfcGR1ICAgICpzbm1wX3NwbGl0X3BkdShuZXRzbm1wX3BkdSAqLCBpbnQgc2tpcENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29weUNvdW50KTsKIAogICAgIHVuc2lnbmVkIGxvbmcgICBzbm1wX3ZhcmJpbmRfbGVuKG5ldHNubXBfcGR1ICpwZHUpOwogICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb25lX3ZhcihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICopOwotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF9jbG9uZV92YXJiaW5kKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsKICAgICBjb25zdCBjaGFyICAgICAqc25tcF9lcnJzdHJpbmcoaW50KTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zeW5jaF9yZXNwb25zZShuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF9wZHUgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqKik7CiAgICAgaW50ICAgICAgICAgICAgIHNubXBfc3luY2hfcmVzcG9uc2VfY2IobmV0c25tcF9zZXNzaW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiwgbmV0c25tcF9wZHUgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9jYWxsYmFjayk7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfY2xvbmVfbWVtKHZvaWQgKiosIHZvaWQgKiwgdW5zaWduZWQpOworICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb25lX21lbSh2b2lkICoqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkKTsKIAotICAgIC8qCi0gICAgICogc2luZ2xlIHNlc3Npb24gQVBJIC0gc2VlIHNubXBfYXBpLmggZm9yIGZ1bGwgZGV0YWlscyAKLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHZvaWQgKiwgbmV0c25tcF9wZHUgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICoqKTsKIAogdm9pZCAgICAgICAgICAgICAgbmV0c25tcF9xdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqKTsKK25ldHNubXBfc2Vzc2lvbiAqIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbl91bmNoZWNrZWQoIHZvaWQgKTsKIG5ldHNubXBfc2Vzc2lvbiAqIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbiggdm9pZCApOwogaW50IG5ldHNubXBfcXVlcnlfZ2V0KCAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICosIG5ldHNubXBfc2Vzc2lvbiAqKTsKIGludCBuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAppbmRleCA5ZTNkNWE5Li43NjVjYzQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKQEAgLTE5LDE2ICsxOSwyMSBAQAogICAgICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIHVzZWQsIGlmIGF0IGFsbCBwb3NzaWJsZS4gIEluc3RlYWQsIHVzZQogICAgICAqIHRoZSBtYWNyb3MgYmVsb3cuIAogICAgICAqLwotI2lmIEhBVkVfU1REQVJHX0gKKyNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgX19HTlVDX18gPCAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDwgOCkKICAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2coY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKICAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2d0b2tlbihjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnX2NvbWJvX25jKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CiAjZWxzZQotICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZyh2YV9hbGlzdCk7Ci0gICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNndG9rZW4odmFfYWxpc3QpOwotICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z19jb21ib19uYyh2YV9hbGlzdCk7CisgICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNnKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOworICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZ3Rva2VuKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKQorICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CisgICAgdm9pZCAgICAgICAgICAgIGRlYnVnX2NvbWJvX25jKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwogI2VuZGlmCiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNnX29pZChjb25zdCBjaGFyICp0b2tlbiwgY29uc3Qgb2lkICogdGhlb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CkBAIC00NCw3ICs0OSwxMyBAQAogICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZ19oZXh0bGkoY29uc3QgY2hhciAqdG9rZW4sIHVfY2hhciAqIHRoZWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKTsKICAgICB2b2lkICAgICAgICAgICAgZGVidWdfaW5kZW50X2FkZChpbnQgYW1vdW50KTsKLSAgICBjaGFyICAgICAgICAgICAqZGVidWdfaW5kZW50KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBkZWJ1Z19pbmRlbnRfZ2V0KHZvaWQpOworICAgIC8qCisgICAgICogV2hhdCBpcyBzYWlkIGFib3ZlIGlzIHRydWUgZm9yIHRoaXMgZnVuY3Rpb24gYXMgd2VsbC4gRnVydGhlciB0aGlzCisgICAgICogZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgb25seSBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAgICogUGxlYXNlIHVzZSAiJSpzIiwgZGVidWdfaW5kZW50X2dldCgpLCAiIiBpZiB5b3UgdXNlZCB0aGlzIG9uZSBiZWZvcmUuCisgICAgICovCisgICAgY29uc3QgY2hhciAgICAgKmRlYnVnX2luZGVudCh2b2lkKTsKIAogICAgIC8qCiAgICAgICogVXNlIHRoZXNlIG1hY3JvcyBpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbnMgYWJvdmUgdG8gYWxsb3cgdGhlbSB0byBiZQpAQCAtMTIxLDkgKzEzMiw5IEBACiAjZGVmaW5lIF9fREJHTVNHTF9OQyh4KSAgX19EQkdUUkFDRTsgZGVidWdtc2cgeAogI2RlZmluZSBfX0RCR01TR1RMX05DKHgpIF9fREJHVFJBQ0U7IGRlYnVnX2NvbWJvX25jIHgKIAotI2lmZGVmICBIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVECi0jZGVmaW5lIF9fREJHVFJBQ0UgICAgICAgX19EQkdNU0dUKCgidHJhY2UiLCIlcygpOiAlcywgJWQ6XG4iLF9fRlVOQ1RJT05fXyxcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXyxfX0xJTkVfXykpCisjaWZkZWYgIE5FVFNOTVBfRlVOQ1RJT04KKyNkZWZpbmUgX19EQkdUUkFDRSAgICAgICBfX0RCR01TR1QoKCJ0cmFjZSIsIiVzKCk6ICVzLCAlZDpcbiIsXAorCQkJCU5FVFNOTVBfRlVOQ1RJT04sX19GSUxFX18sX19MSU5FX18pKQogI2Vsc2UKICNkZWZpbmUgX19EQkdUUkFDRSAgICAgICBfX0RCR01TR1QoKCJ0cmFjZSIsIiAlcywgJWQ6XG4iLCBfX0ZJTEVfXyxfX0xJTkVfXykpCiAjZW5kaWYKQEAgLTEzNiwxMSArMTQ3LDExIEBACiAjZGVmaW5lIF9fREJHTVNHT0lEUkFOR0UoeCkgZGVidWdtc2dfb2lkcmFuZ2UgeAogI2RlZmluZSBfX0RCR01TR0hFWCh4KSAgICAgZGVidWdtc2dfaGV4IHgKICNkZWZpbmUgX19EQkdNU0dIRVhUTEkoeCkgIGRlYnVnbXNnX2hleHRsaSB4Ci0jZGVmaW5lIF9fREJHSU5ERU5UKCkgICAgICBkZWJ1Z19pbmRlbnQoKQorI2RlZmluZSBfX0RCR0lOREVOVCgpICAgICAgZGVidWdfaW5kZW50X2dldCgpCiAjZGVmaW5lIF9fREJHSU5ERU5UQUREKHgpICBkZWJ1Z19pbmRlbnRfYWRkKHgpCiAjZGVmaW5lIF9fREJHSU5ERU5UTU9SRSgpICBkZWJ1Z19pbmRlbnRfYWRkKDIpCiAjZGVmaW5lIF9fREJHSU5ERU5UTEVTUygpICBkZWJ1Z19pbmRlbnRfYWRkKC0yKQotI2RlZmluZSBfX0RCR1BSSU5USU5ERU5UKHRva2VuKSBfX0RCR01TR1RMKCh0b2tlbiwgIiVzIiwgX19EQkdJTkRFTlQoKSkpCisjZGVmaW5lIF9fREJHUFJJTlRJTkRFTlQodG9rZW4pIF9fREJHTVNHVEwoKHRva2VuLCAiJSpzIiwgX19EQkdJTkRFTlQoKSwgIiIpKQogCiAjZGVmaW5lIF9fREJHRFVNUEhFQURFUih0b2tlbix4KSBcCiAgICAgICAgIF9fREJHUFJJTlRJTkRFTlQoImR1bXBoXyIgdG9rZW4pOyBcCkBAIC0xNTcsMTIgKzE2OCwxMSBAQAogCiAjZGVmaW5lIF9fREJHRFVNUFNFQ1RJT04odG9rZW4seCkgXAogICAgICAgICBfX0RCR1BSSU5USU5ERU5UKCJkdW1waF8iIHRva2VuKTsgXAotICAgICAgICBkZWJ1Z21zZygiZHVtcGhfIiB0b2tlbix4KTsgXAotICAgICAgICBkZWJ1Z21zZygiZHVtcGhfIiB0b2tlbiwiXG4iKTsgXAorICAgICAgICBkZWJ1Z21zZygiZHVtcGhfIiB0b2tlbiwiJXNcbiIseCk7XAogICAgICAgICBfX0RCR0lOREVOVE1PUkUoKQogCiAjZGVmaW5lIF9fREJHRFVNUFNFVFVQKHRva2VuLGJ1ZixsZW4pIFwKLSAgICAgICAgZGVidWdtc2coImR1bXB4IiB0b2tlbiwgImR1bXB4XyVzOiVzIiwgdG9rZW4sIF9fREJHSU5ERU5UKCkpOyBcCisgICAgICAgIGRlYnVnbXNnKCJkdW1weCIgdG9rZW4sICJkdW1weF8lczolKnMiLCB0b2tlbiwgX19EQkdJTkRFTlQoKSwgIiIpOyBcCiAgICAgICAgIF9fREJHTVNHSEVYKCgiZHVtcHhfIiB0b2tlbixidWYsbGVuKSk7IFwKICAgICAgICAgaWYgKGRlYnVnX2lzX3Rva2VuX3JlZ2lzdGVyZWQoImR1bXB2IiB0b2tlbikgPT0gU05NUEVSUl9TVUNDRVNTIHx8IFwKICAgICAgICAgICAgIGRlYnVnX2lzX3Rva2VuX3JlZ2lzdGVyZWQoImR1bXB2XyIgdG9rZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgeyBcCkBAIC0xNzAsNyArMTgwLDcgQEAKICAgICAgICAgfSBlbHNlIHsgXAogICAgICAgICAgICAgZGVidWdtc2coImR1bXB4XyIgdG9rZW4sIiAgIik7IFwKICAgICAgICAgfSBcCi0gICAgICAgIGRlYnVnbXNnKCJkdW1wdiIgdG9rZW4sICJkdW1wdl8lczolcyIsIHRva2VuLCBfX0RCR0lOREVOVCgpKTsKKyAgICAgICAgZGVidWdtc2coImR1bXB2IiB0b2tlbiwgImR1bXB2XyVzOiUqcyIsIHRva2VuLCBfX0RCR0lOREVOVCgpLCAiIik7CiAKIC8qKioqKioqKioqKioqKioqKioqIEVuZCAgIHByaXZhdGUgbWFjcm9zICoqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE4OSw3ICsxOTksNiBAQAogI2RlZmluZSBERUJVR01TR09JRFJBTkdFKHgpIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR01TR09JRFJBTkdFKHgpO30gfXdoaWxlKDApCiAjZGVmaW5lIERFQlVHTVNHSEVYKHgpICAgICBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdNU0dIRVgoeCk7fSB9d2hpbGUoMCkKICNkZWZpbmUgREVCVUdNU0dIRVhUTEkoeCkgIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR01TR0hFWFRMSSh4KTt9IH13aGlsZSgwKQotI2RlZmluZSBERUJVR0lOREVOVCgpICAgICAgZG8ge2lmIChfREJHX0lGXykge19fREJHSU5ERU5UKCk7fSB9d2hpbGUoMCkKICNkZWZpbmUgREVCVUdJTkRFTlRBREQoeCkgIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR0lOREVOVEFERCh4KTt9IH13aGlsZSgwKQogI2RlZmluZSBERUJVR0lOREVOVE1PUkUoKSAgZG8ge2lmIChfREJHX0lGXykge19fREJHSU5ERU5UTU9SRSgpO30gfXdoaWxlKDApCiAjZGVmaW5lIERFQlVHSU5ERU5UTEVTUygpICBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdJTkRFTlRMRVNTKCk7fSB9d2hpbGUoMCkKQEAgLTIyMyw3ICsyMzIsNiBAQAogI2RlZmluZSBERUJVR01TR0hFWCh4KQogI2RlZmluZSBERUJVR0lGKHgpICAgICAgICBpZigwKQogI2RlZmluZSBERUJVR0RVTVAodCxiLGwscCkKLSNkZWZpbmUgREVCVUdJTkRFTlQoKQogI2RlZmluZSBERUJVR0lOREVOVE1PUkUoKQogI2RlZmluZSBERUJVR0lOREVOVExFU1MoKQogI2RlZmluZSBERUJVR0lOREVOVEFERCh4KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCmluZGV4IDBkMzJjNDQuLmY3OWFlYmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKQEAgLTcyLDEwICs3MiwxNSBAQAogICAgIC8qCiAgICAgICogQWNjZXNzIGNvbnRyb2wgc3RhdGVtZW50cyBmb3IgdGhlIGFnZW50IAogICAgICAqLwotI2RlZmluZSBST05MWQkweDEgICAgICAgICAgICAgLyogcmVhZCBhY2Nlc3Mgb25seSAqLwotI2RlZmluZSBSV1JJVEUJMHgyICAgICAgICAgICAgIC8qIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyAobXVzdCBoYXZlIDB4MiBiaXQgc2V0KSAqLworI2RlZmluZSBORVRTTk1QX09MREFQSV9ST05MWQkweDEgICAgIC8qIHJlYWQgYWNjZXNzIG9ubHkgKi8KKyNkZWZpbmUgTkVUU05NUF9PTERBUElfUldSSVRFCTB4MiAgICAgLyogcmVhZCBhbmQgd3JpdGUgYWNjZXNzIChtdXN0IGhhdmUgMHgyIGJpdCBzZXQpICovCisjZGVmaW5lIE5FVFNOTVBfT0xEQVBJX05PQUNDRVNTIDB4MDAwMCAgLyogbm8gYWNjZXNzIGZvciBhbnlib2R5ICovCiAKLSNkZWZpbmUgTk9BQ0NFU1MgMHgwMDAwICAgICAgICAgLyogbm8gYWNjZXNzIGZvciBhbnlib2R5ICovCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisjZGVmaW5lIFJPTkxZICAgICAgICAgICBORVRTTk1QX09MREFQSV9ST05MWQorI2RlZmluZSBSV1JJVEUgICAgICAgICAgTkVUU05NUF9PTERBUElfUldSSVRFCisjZGVmaW5lIE5PQUNDRVNTICAgICAgICBORVRTTk1QX09MREFQSV9OT0FDQ0VTUworI2VuZGlmCiAKICAgICAvKgogICAgICAqIGRlZmluZWQgdHlwZXMgKGZyb20gdGhlIFNNSSwgUkZDIDExNTcpIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCmluZGV4IDBkZGU3YWUuLjU1MGU2NjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKQEAgLTUsMTUgKzUsMTEgQEAKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCiAKLSNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfU1lTTE9HX0gKICNpbmNsdWRlIDxzeXNsb2cuaD4KICNlbmRpZgotI2lmIEhBVkVfU1REQVJHX0gKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDx2YXJhcmdzLmg+Ci0jZW5kaWYKIAogI2lmbmRlZiBMT0dfRVJSCiAjZGVmaW5lIExPR19FTUVSRyAgICAgICAwICAgICAgIC8qIHN5c3RlbSBpcyB1bnVzYWJsZSAqLwpAQCAtMzUsNiArMzEsMTQgQEAKICNkZWZpbmUgREVGQVVMVF9MT0dfSUQgIm5ldC1zbm1wIgogI2VuZGlmCiAKKyNkZWZpbmUgTkVUU05NUF9MT0dPTkNFKHgpIGRvIHsgXAorICAgICAgICBzdGF0aWMgY2hhciBsb2dnZWQgPSAwOyBcCisgICAgICAgIGlmICghbG9nZ2VkKSB7ICAgICAgICAgIFwKKyAgICAgICAgICAgIGxvZ2dlZCA9IDE7ICAgICAgICAgXAorICAgICAgICAgICAgc25tcF9sb2cgeCA7ICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlKDApCisKICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zbm1wX2xvZ2dpbmcodm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NubXBfbG9nZ2luZyh2b2lkKTsKICAgICBpbnQgICAgICAgICAgICAgc25tcF9nZXRfZG9fbG9nZ2luZyh2b2lkKTsKQEAgLTUzLDE1ICs1NywxMSBAQAogCiAgICAgaW50ICAgICAgICAgICAgIHNubXBfc3RkZXJybG9nX3N0YXR1cyh2b2lkKTsKIAotI2lmIEhBVkVfU1REQVJHX0gKLSMgaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDgpCisjaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDgpCiAgICAgaW50ICAgICAgICAgICAgIHNubXBfbG9nKGludCBwcmlvcml0eSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwotIyBlbHNlCisjZWxzZQogICAgIGludCAgICAgICAgICAgICBzbm1wX2xvZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogICAgICAgICAgICAgICAgICAgICAJX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0jIGVuZGlmCi0jZWxzZQotICAgIGludCAgICAgICAgICAgICBzbm1wX2xvZyh2YV9hbGlzdCk7CiAjZW5kaWYKICAgICBpbnQgICAgICAgICAgICAgc25tcF92bG9nKGludCBwcmlvcml0eSwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcCk7CkBAIC04OCw2ICs4OCw3IEBACiAjZGVmaW5lIE5FVFNOTVBfTE9HSEFORExFUl9DQUxMQkFDSwk1CiAjZGVmaW5lIE5FVFNOTVBfTE9HSEFORExFUl9OT05FCQk2CiAKKyAgICB2b2lkIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKEZJTEUgKnN0cmVhbSk7CiAgICAgaW50IHNubXBfbG9nX29wdGlvbnMoY2hhciAqb3B0YXJnLCBpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YpOwogICAgIHZvaWQgc25tcF9sb2dfb3B0aW9uc191c2FnZShjb25zdCBjaGFyICpsZWFkLCBGSUxFICpvdXRmKTsKICAgICBjaGFyICpzbm1wX2xvZ19zeXNsb2duYW1lKGNvbnN0IGNoYXIgKnN5c2xvZ25hbWUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTJmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgKQEAgLTAsMCArMSwxNyBAQAorLyoKKyAqIEhlYWRlciBmaWxlIGZvciB0aGUgT3BlblNTTCBXcmFwcGVyCisgKi8KKworI2lmbmRlZiBTTk1QX09QRU5TU0xfSAorI2RlZmluZSBTTk1QX09QRU5TU0xfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICB2b2lkIG5ldHNubXBfaW5pdF9vcGVuc3NsKHZvaWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTk1QX09QRU5TU0xfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAppbmRleCBhZWViMjRhLi42YTY4N2RmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaApAQCAtMTEsNyArMTEsNyBAQAogICogKE5ldC1TTk1QIGVudGVycHJpc2UgbnVtYmVyID0gODA3MikqMjU2ICsgbG9jYWxfbnVtCiAgKi8KICNkZWZpbmUgTkVUU05NUF9LU01fU0VDVVJJVFlfTU9ERUwgICAgIDIwNjY0MzIKLSNkZWZpbmUgTkVUU05NUF9MT0NBTFNNX1NFQ1VSSVRZX01PREVMIDIwNjY0MzMKKyNkZWZpbmUgTkVUU05NUF9UU01fU0VDVVJJVFlfTU9ERUwgICAgIDIwNjY0MzQKIAogc3RydWN0IHNubXBfc2VjbW9kX2RlZjsKIApAQCAtOTAsNiArOTAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKm9yaWdwZHUpOwordHlwZWRlZiBpbnQgICAgIChTZWNtb2REaXNjb3ZlcnlNZXRob2QpICh2b2lkICpzbHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7CiAKIC8qCiAgKiBkZWZpbml0aW9uIG9mIGEgc2VjdXJpdHkgbW9kdWxlCkBAIC0xMjUsNiArMTI3LDExIEBACiAgICAgKiBlcnJvciBhbmQgcmVwb3J0IGhhbmRsaW5nCiAgICAgKi8KICAgIFNlY21vZEhhbmRsZVJlcG9ydCAqaGFuZGxlX3JlcG9ydDsKKworICAgLyoKKyAgICAqIGRlZmF1bHQgZW5naW5lSUQgZGlzY292ZXJ5IG1lY2hhbmlzbQorICAgICovCisgICBTZWNtb2REaXNjb3ZlcnlNZXRob2QgKnByb2JlX2VuZ2luZWlkOwogfTsKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCmluZGV4IGNlNzQyZDUuLmNkNGVjMzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCkBAIC0xNiw5ICsxNiwxMyBAQAogCiAvKiAgU29tZSB0cmFuc3BvcnQtdHlwZSBmbGFncy4gICovCiAKLSNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNCTB4MDEKLSNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfTElTVEVOCTB4MDIKLSNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfVFVOTkVMRUQJMHgwNAorI2RlZmluZQkJTkVUU05NUF9UUkFOU1BPUlRfRkxBR19TVFJFQU0JIDB4MDEKKyNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfTElTVEVOCSAweDAyCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVECSAweDA0CisjZGVmaW5lICAgICAgICAgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19UTVNUQVRFICAgMHgwOCAgLyogaW5kaWNhdGVzIG9wYXF1ZSBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNNIHRtU3RhdGVSZWZlcmVuY2UgKi8KKyNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfRU1QVFlfUEtUIDB4MTAKKyNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfSE9TVE5BTUUJIDB4ODAgIC8qIGZvciBmbXRhZGRyIGhvb2sgKi8KIAogLyogIFRoZSBzdGFuZGFyZCBTTk1QIGRvbWFpbnMuICAqLwogCkBAIC0zMyw2ICszNywzNSBAQAogTkVUU05NUF9JTVBPUlQgc2l6ZV90ICAgbmV0c25tcEREUERvbWFpbl9sZW47CiBORVRTTk1QX0lNUE9SVCBzaXplX3QgICBuZXRzbm1wSVBYRG9tYWluX2xlbjsKIAorLyogU3RydWN0dXJlIHdoaWNoIHN0b3JlcyB0cmFuc3BvcnQgc2VjdXJpdHkgbW9kZWwgc3BlY2lmaWMgcGFyYW1ldGVycyAqLworLyogaXNtcy1zZWNzaGVsbC0xMSBzZWN0aW9uIDQuMSAqLworCisvKiBjb250ZW50cyBkb2N1bWVudGVkIGluIGRyYWZ0LWlldGYtaXNtcy10cmFuc3BvcnQtc2VjdXJpdHktbW9kZWwKKyAgIFNlY3Rpb24gMy4yICovCisvKiBub3RlOiBWQUNNIG9ubHkgYWxsb3dzIDw9IDMyIHNvIHRoaXMgaXMgb3ZlcmtpbGwgdGlsbCBhbm90aGVyIEFDTSBjb21lcyAqLworI2RlZmluZSBORVRTTk1QX1RNX01BWF9TRUNOQU1FIDI1NgorCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2FkZHJfcGFpcl9zIHsKKyAgIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKKyAgIHN0cnVjdCBpbl9hZGRyIGxvY2FsX2FkZHI7Cit9IG5ldHNubXBfYWRkcl9wYWlyOworCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2VfcyB7CisgICBvaWQgICAgdHJhbnNwb3J0RG9tYWluW01BWF9PSURfTEVOXTsKKyAgIHNpemVfdCB0cmFuc3BvcnREb21haW5MZW47CisgICBjaGFyICAgc2VjdXJpdHlOYW1lW05FVFNOTVBfVE1fTUFYX1NFQ05BTUVdOworICAgc2l6ZV90IHNlY3VyaXR5TmFtZUxlbjsKKyAgIGludCAgICByZXF1ZXN0ZWRTZWN1cml0eUxldmVsOworICAgaW50ICAgIHRyYW5zcG9ydFNlY3VyaXR5TGV2ZWw7CisgICBjaGFyICAgc2FtZVNlY3VyaXR5OworICAgaW50ICAgIHNlc3Npb25JRDsKKyAgIAorICAgY2hhciAgIGhhdmVfYWRkcmVzc2VzOworICAgbmV0c25tcF9hZGRyX3BhaXIgYWRkcmVzc2VzOworCisgICB2b2lkICpvdGhlclRyYW5zcG9ydE9wYXF1ZTsgLyogWFhYOiBNYXkgaGF2ZSBtZW0gbGVhayBpc3N1ZXMgKi8KK30gbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlOworCiAvKiAgU3RydWN0dXJlIHdoaWNoIGRlZmluZXMgdGhlIHRyYW5zcG9ydC1pbmRlcGVuZGVudCBBUEkuICAqLwogCiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3RyYW5zcG9ydF9zIHsKQEAgLTY4LDYgKzEwMSw5IEBACiAKICAgICBzaXplX3QgICAgICAgICAgbXNnTWF4U2l6ZTsKIAorICAgIC8qIFRNIHN0YXRlIHJlZmVyZW5jZSBwZXIgSVNNUyBXRyBzb2x1dGlvbiAqLworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZjsKKwogICAgIC8qICBDYWxsYmFja3MuICBBcmd1bWVudHMgYXJlOgogICAgICAqCQkKICAgICAgKiAgICAgICAgICAgICAgInRoaXMiIHBvaW50ZXIsIGZkLCBidWYsIHNpemUsICpvcGFxdWUsICpvcGFxdWVfbGVuZ3RoICAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZDVhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBIZWFkZXIgZmlsZSBmb3IgVHJhbnNwb3J0IFNlY3VyaXR5IE1vZGVsIHN1cHBvcnQKKyAqLworCisjaWZuZGVmIFNOTVBUU01fSAorI2RlZmluZSBTTk1QVFNNX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgaW50ICAgICAgICAgICAgIHRzbV9yZ2VuZXJhdGVfb3V0X21zZyhzdHJ1Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2VjbW9kX291dGdvaW5nX3BhcmFtcyAqKTsKKyAgICBpbnQgICAgICAgICAgICAgdHNtX3Byb2Nlc3NfaW5fbXNnKHN0cnVjdCBzbm1wX3NlY21vZF9pbmNvbWluZ19wYXJhbXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopOworICAgIHZvaWQgICAgICAgICAgICBpbml0X3VzbSh2b2lkKTsKKworICAgICNkZWZpbmUgTkVUU05NUF9UTV9TQU1FX1NFQ1VSSVRZX05PVF9SRVFVSVJFRCAwCisgICAgI2RlZmluZSBORVRTTk1QX1RNX1VTRV9TQU1FX1NFQ1VSSVRZICAgICAgICAgIDEKKworICAgIC8qIGJhc2ljYWxseSB3ZSBzdG9yZSBhbG1vc3Qgbm90aGluZyBlbHNlIGJ1dCBhIHRtIHJlZiAqLworICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2VfcyB7CisgICAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmOworICAgICAgIGludCBzZWN1cml0eUxldmVsOworICAgIH0gbmV0c25tcF90c21TZWN1cml0eVJlZmVyZW5jZTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05NUFRTTV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAppbmRleCA1ZDE0MzAzLi4xOGNmMTE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKQEAgLTc1LDYgKzc1LDcgQEAKICAgICAgICAgdV9jaGFyICAgICAgICAgKnByaXZLZXk7CiAgICAgICAgIHNpemVfdCAgICAgICAgICBwcml2S2V5TGVuOwogICAgICAgICB1X2NoYXIgICAgICAgICAqdXNlclB1YmxpY1N0cmluZzsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgIHVzZXJQdWJsaWNTdHJpbmdMZW47CiAgICAgICAgIGludCAgICAgICAgICAgICB1c2VyU3RhdHVzOwogICAgICAgICBpbnQgICAgICAgICAgICAgdXNlclN0b3JhZ2VUeXBlOwogICAgICAgIC8qIHRoZXNlIGFyZSBhY3R1YWxseSBESCAqIHBvaW50ZXJzIGJ1dCBvbmx5IGlmIG9wZW5zc2wgaXMgYXZhaWwuICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKaW5kZXggZTI0ODQ0MS4uZjNkMjk1ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaApAQCAtOSwxMiArOSwxMyBAQAogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKIAotI2RlZmluZSBNQVhfRU5HSU5FSURfTEVOR1RIIDEyOAorI2RlZmluZSBNQVhfRU5HSU5FSURfTEVOR1RIIDMyIC8qIHBlciBTTk1QLUZSQU1FV09SSy1NSUIgU25tcEVuZ2luZUlEIFRDICovCiAKICNkZWZpbmUgRU5HSU5FSURfVFlQRV9JUFY0ICAgIDEKICNkZWZpbmUgRU5HSU5FSURfVFlQRV9JUFY2ICAgIDIKICNkZWZpbmUgRU5HSU5FSURfVFlQRV9NQUNBRERSIDMKICNkZWZpbmUgRU5HSU5FSURfVFlQRV9URVhUICAgIDQKKyNkZWZpbmUgRU5HSU5FSURfVFlQRV9FWEFDVCAgIDUKICNkZWZpbmUgRU5HSU5FSURfVFlQRV9ORVRTTk1QX1JORCAxMjgKIAogI2RlZmluZQlERUZBVUxUX05JQyAiZXRoMCIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAppbmRleCBmMzJjNDNmLi4wM2MyYjA3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCkBAIC01MSwxMSArNTEsMTQgQEAKIAogICAgIC8qCiAgICAgICogRGVmaW5pdGlvbnMgZm9yIHRoZSBzeXN0ZW0gZGVwZW5kZW50IGxpYnJhcnkgZmlsZQorICAgICAqCisgICAgICogRG8gbm90IGRlZmluZSAnc3RydWN0IGRpcmVjdCcgd2hlbiBNU1ZDX1BFUkwgaXMgZGVmaW5lZCBiZWNhdXNlIGEKKyAgICAgKiBzdHJ1Y3R1cmUgd2l0aCB0aGF0IG5hbWUgaXMgYWxzbyBkZWZpbmVkIGluIHRoZSBQZXJsIGhlYWRlcgorICAgICAqIGxpYlxDT1JFXGRpcmVudC5oLiBEbyBub3QgZGVjbGFyZSBnZXR0aW1lb2ZkYXkoKSBlaXRoZXIuCiAgICAgICovCiAjaWZuZGVmIE1TVkNfUEVSTAotI2lmZGVmIFdJTjMyCiAKLSNpZm5kZWYgSEFWRV9ESVJFTlRfSCAvKiBNaW5nR1cgaGFzIGRpcmVudC5oIGJ1dCBhbHNvIGRlZmluZXMgV0lOMzIgKi8KKyNpZm5kZWYgSEFWRV9SRUFERElSCiAgICAgLyoKICAgICAgKiBzdHJ1Y3R1cmUgb2YgYSBkaXJlY3RvcnkgZW50cnkgCiAgICAgICovCkBAIC03OSwzMiArODIsMzYgQEAKICAgICBESVIgICAgICAgICAgICAqb3BlbmRpcihjb25zdCBjaGFyICpmaWxlbmFtZSk7CiAgICAgc3RydWN0IGRpcmVjdCAgKnJlYWRkaXIoRElSICogZGlycCk7CiAgICAgaW50ICAgICAgICAgICAgIGNsb3NlZGlyKERJUiAqIGRpcnApOwotI2VuZGlmIC8qIEhBVkVfRElSRU5UX0ggKi8KKyNlbmRpZiAvKiBIQVZFX1JFQURESVIgKi8KIAogI2lmbmRlZiBIQVZFX0dFVFRJTUVPRkRBWQogICAgIGludCAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV6b25lICp0eik7CiAjZW5kaWYKKworI2VuZGlmCQkJCS8qIE1TVkNfUEVSTCAqLworCiAjaWZuZGVmIEhBVkVfU1RSTkNBU0VDTVAKICAgICBpbnQgICAgICAgICAgICAgc3RyY2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwogICAgIGludCAgICAgICAgICAgICBzdHJuY2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIHNpemVfdCBuKTsKICNlbmRpZgogCisjaWZkZWYgV0lOMzIKICAgICBjaGFyICAgICAgICAgICAqd2luc29ja19zdGFydHVwKHZvaWQpOwogICAgIHZvaWQgICAgICAgICAgICB3aW5zb2NrX2NsZWFudXAodm9pZCk7Ci0KICNkZWZpbmUgU09DS19TVEFSVFVQIHdpbnNvY2tfc3RhcnR1cCgpCiAjZGVmaW5lIFNPQ0tfQ0xFQU5VUCB3aW5zb2NrX2NsZWFudXAoKQotCiAjZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFXSU4zMiAqLwotCiAjZGVmaW5lIFNPQ0tfU1RBUlRVUAogI2RlZmluZSBTT0NLX0NMRUFOVVAKLQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXSU4zMiAqLwotI2VuZGlmCQkJCS8qIE1TVkNfUEVSTCAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4gICAgIC8qIEZvciBkZWZpbml0aW9uIG9mIGluX2FkZHJfdCAqLwogCisgICAgLyogU2ltcGx5IHJlc29sdmUgYSBob3N0bmFtZSBhbmQgcmV0dXJuIGZpcnN0IElQdjQgYWRkcmVzcy4KKyAgICAgKiBSZXR1cm5zIC0xIG9uIGVycm9yICovCisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NChjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fYWRkcl90ICphZGRyX291dCk7CisKICAgICBpbl9hZGRyX3QgICAgICAgZ2V0X215YWRkcih2b2lkKTsKICAgICBsb25nICAgICAgICAgICAgZ2V0X3VwdGltZSh2b2lkKTsKIApAQCAtMTI5LDYgKzEzNiw5IEBACiAjaWZuZGVmIEhBVkVfU1RSVE9VTAogICAgIHVuc2lnbmVkIGxvbmcgICBzdHJ0b3VsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNlbmRpZgorI2lmbmRlZiBIQVZFX1NUUlRPVUxMCisgICAgTkVUU05NUF9JTVBPUlQgdWludDY0X3Qgc3RydG91bGwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOworI2VuZGlmCiAjaWZuZGVmIEhBVkVfU1RSVE9LX1IKICAgICBjaGFyICAgICAgICAgICAqc3RydG9rX3IoY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiopOwogI2VuZGlmCkBAIC0xNTEsNiArMTYxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvc3BtcmVscHJlZml4KTsKICAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9vc19rZXJuZWxfd2lkdGgodm9pZCk7CiAKKyAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9zdHJfdG9fdWlkKGNvbnN0IGNoYXIgKnVzZXJvcnVpZCk7CisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfc3RyX3RvX2dpZChjb25zdCBjaGFyICpncm91cG9yZ2lkKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE3NDI5MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0wLDAgKzEsNzAgQEAKKyNpZm5kZWYgTkVUX1NOTVBfTElCUkFSWV9UWVBFU19ICisjZGVmaW5lIE5FVF9TTk1QX0xJQlJBUllfVFlQRVNfSAorCisjaWZuZGVmIE5FVF9TTk1QX0NPTkZJR19ICisjZXJyb3IgIlBsZWFzZSBpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gYmVmb3JlIHRoaXMgZmlsZSIKKyNlbmRpZgorCisKKyNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgorCisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfaW5kZXhfcyB7CisgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKKyAgICBvaWQgICAgICAgICAgICAqb2lkczsKK30gbmV0c25tcF9pbmRleDsKKwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF92b2lkX2FycmF5X3MgeworICAgIHNpemVfdCAgICAgICAgICBzaXplOworICAgIHZvaWQgICAgICAgICAgKiphcnJheTsKK30gbmV0c25tcF92b2lkX2FycmF5OworCisvKgorICogcmVmZXJlbmNlcyB0byB2YXJpb3VzIHR5cGVzCisgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3ZvaWQgeworICAgIHZvaWQgICAgICAgICAgICp2YWw7Cit9IG5ldHNubXBfcmVmX3ZvaWQ7CisKK3R5cGVkZWYgdW5pb24geworICAgIHVfbG9uZyAgICAgICAgICB1bDsKKyAgICB1X2ludCAgICAgICAgICAgdWk7CisgICAgdV9zaG9ydCAgICAgICAgIHVzOworICAgIHVfY2hhciAgICAgICAgICB1YzsKKyAgICBsb25nICAgICAgICAgICAgc2w7CisgICAgaW50ICAgICAgICAgICAgIHNpOworICAgIHNob3J0ICAgICAgICAgICBzczsKKyAgICBjaGFyICAgICAgICAgICAgc2M7CisgICAgY2hhciAgICAgICAgICAgKmNwOworICAgIHZvaWQgICAgICAgICAgICp2cDsKK30gbmV0c25tcF9jdmFsdWU7CisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3NpemVfdF9zIHsKKyAgICBzaXplX3QgICAgICAgICAgdmFsOworfSAgICAgICAgICAgICAgKm5ldHNubXBfcmVmX3NpemVfdDsKKworLyoKKyAqIFN0cnVjdHVyZSBmb3IgaG9sZGluZyBhIHNldCBvZiBmaWxlIGRlc2NyaXB0b3JzLCBzaW1pbGFyIHRvIGZkX3NldC4KKyAqCisgKiBUaGlzIHN0cnVjdHVyZSBob3dldmVyIGNhbiBob2xkIHNvLWNhbGxlZCBsYXJnZSBmaWxlIGRlc2NyaXB0b3JzCisgKiAoPj0gRkRfU0VUU0laRSBvciAxMDI0KSBvbiBVbml4IHN5c3RlbXMgb3IgbW9yZSB0aGFuIEZEX1NFVFNJWkUgKDY0KQorICogc29ja2V0cyBvbiBXaW5kb3dzIHN5c3RlbXMuCisgKgorICogSXQgaXMgc2FmZSB0byBhbGxvY2F0ZSB0aGlzIHN0cnVjdHVyZSBvbiB0aGUgc3RhY2suCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgbXVzdCBiZSBpbml0aWFsaXplZCBieSBjYWxsaW5nIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoKQorICogYW5kIG11c3QgYmUgY2xlYW5lZCB1cCB2aWEgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgpLiBJZiB0aGlzIGxhc3QKKyAqIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQgdGhpcyBtYXkgcmVzdWx0IGluIGEgbWVtb3J5IGxlYWsuCisgKgorICogVGhlIG1lbWJlcnMgb2YgdGhpcyBzdHJ1Y3R1cmUgYXJlOgorICogbGZzX3NldHNpemU6IG1heGltdW0gc2V0IHNpemUuCisgKiBsc2Zfc2V0cHRyOiAgcG9pbnRzIHRvIGxmc19zZXQgaWYgbGZzX3NldHNpemUgPD0gRkRfU0VUU0laRSwgYW5kIG90aGVyd2lzZQorICogICAgICAgICAgICAgIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuCisgKiBsZnNfc2V0OiAgICAgZmlsZSBkZXNjcmlwdG9yIC8gc29ja2V0IHNldCBkYXRhIGlmIGxmc19zZXRzaXplIDw9IEZEX1NFVFNJWkUuCisgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfbGFyZ2VfZmRfc2V0X3MgeworICAgIHVuc2lnbmVkICAgICAgICBsZnNfc2V0c2l6ZTsKKyAgICBmZF9zZXQgICAgICAgICAqbGZzX3NldHB0cjsKKyAgICBmZF9zZXQgICAgICAgICAgbGZzX3NldDsKK30gbmV0c25tcF9sYXJnZV9mZF9zZXQ7CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVF9TTk1QX0xJQlJBUllfVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAppbmRleCAwOWZmNWY1Li43MDY4YmZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtNyw2ICs3LDYwIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKiBJbml0aWFsaXNhdGlvbiBhbmQgU2h1dGRvd24gKi8KKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9pbml0X21pYih2b2lkKTsKKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKKyAgICB2b2lkICAgICAgICAgICAgaW5pdF9taWIodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIGluaXRfbWliX2ludGVybmFscyh2b2lkKTsKKyNlbmRpZgorICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9taWIodm9pZCk7CisKKyAgICAgLyogUmVhZGluZyBhbmQgUGFyc2luZyBNSUJzICovCisgICAgaW50ICAgICAgICAgICAgIGFkZF9taWJkaXIoY29uc3QgY2hhciAqKTsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHN0cnVjdCB0cmVlICAgICpuZXRzbm1wX3JlYWRfbW9kdWxlKGNvbnN0IGNoYXIgKik7CisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisgICAgc3RydWN0IHRyZWUgICAgKnJlYWRfbW9kdWxlKGNvbnN0IGNoYXIgKik7CisjZW5kaWYKKyAgICBzdHJ1Y3QgdHJlZSAgICAqcmVhZF9taWIoY29uc3QgY2hhciAqKTsKKyAgICBzdHJ1Y3QgdHJlZSAgICAqcmVhZF9hbGxfbWlicyh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgYWRkX21vZHVsZV9yZXBsYWNlbWVudChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGludCk7CisKKyAgICAgICAgIC8qIGZyb20gdWNkLWNvbXBhdC5oICovCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfc2V0X21pYl93YXJuaW5ncyhpbnQpOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NldF9taWJfZXJyb3JzKGludCk7CisgICAgdm9pZCAgICAgICAgICAgIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zKGludCk7CisKKworICAgICAvKiBTZWFyY2hpbmcgdGhlIE1JQiBUcmVlICovCisgICAgb2lkICAgICAgICAgICAgKnNubXBfcGFyc2Vfb2lkKGNvbnN0IGNoYXIgKiwgb2lkICosIHNpemVfdCAqKTsKKyAgICBpbnQgICAgICAgICAgICAgcmVhZF9vYmppZChjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CisgICAgaW50ICAgICAgICAgICAgIGdldF9tb2R1bGVfbm9kZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgb2lkICosIHNpemVfdCAqKTsKKworICAgICAvKiBPdXRwdXQgKi8KKyAgICB2b2lkICAgICAgICAgICAgcHJpbnRfbWliKEZJTEUgKiBmcCk7CisKKyAgICB2b2lkICAgICAgICAgICAgcHJpbnRfb2JqaWQoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbik7CisgICAgdm9pZCAgICAgICAgICAgZnByaW50X29iamlkKEZJTEUgKiBmcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbik7CisgICAgaW50ICAgICAgICAgICBzbnByaW50X29iamlkKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOworCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X2Rlc2NyaXB0aW9uKG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCk7CisgICAgdm9pZCAgICAgICAgICAgZnByaW50X2Rlc2NyaXB0aW9uKEZJTEUgKiBmcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwgaW50IHdpZHRoKTsKKyAgICBpbnQgICAgICAgICAgIHNucHJpbnRfZGVzY3JpcHRpb24oY2hhciAqYnVmLCBzaXplX3QgYnVmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwgaW50IHdpZHRoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwogICAgIC8qCiAgICAgICogIEZvciB0aGUgaW5pdGlhbCByZWxlYXNlLCB0aGlzIHdpbGwganVzdCByZWZlciB0byB0aGUKICAgICAgKiAgcmVsZXZhbnQgVUNEIGhlYWRlciBmaWxlcy4KQEAgLTE4LDcgKzcyLDYgQEAKICAgICAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaD4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4gYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCmluZGV4IDNjNWQ3YzIuLjBlZTYwNTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KKysrIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgpAQCAtMSw0ICsxLDQgQEAKLS8qIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuaW4gYnkgYXV0b2hlYWRlci4gICovCisvKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwogLyogCiAgKiBuZXQtc25tcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlCiAgKi8KQEAgLTI0LDIzNiArMjQsNyBAQAogICovCiAjaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKIAotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50MzJfdCAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAogCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50MzJfdCAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdV9pbnQzMl90ICovCi0jdW5kZWYgSEFWRV9VX0lOVDMyX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50NjRfdCAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50NjRfdCAqLwotI3VuZGVmIEhBVkVfVUlOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdV9pbnQ2NF90ICovCi0jdW5kZWYgSEFWRV9VX0lOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50cHRyX3QgKi8KLSN1bmRlZiBIQVZFX0lOVFBUUl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVpbnRwdHJfdCAqLwotI3VuZGVmIEhBVkVfVUlOVFBUUl9UCi0KLS8qIGdvdCBzb2NrbGVuX3Q/ICovCi0jdW5kZWYgSEFWRV9TT0NLTEVOX1QKLQotLyogZ290IGluX2FkZHJfdD8gKi8KLSN1bmRlZiBIQVZFX0lOX0FERFJfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgZ2V0ZGV2cygpICovCi0jdW5kZWYgSEFWRV9HRVRERVZTCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBkZXZzdGF0X2dldGRldnMoKSAqLwotI3VuZGVmIEhBVkVfREVWU1RBVF9HRVRERVZTCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSA8bmV0aW5ldC9pbl9wY2IuaD4gKi8KLSN1bmRlZiBIQVZFX05FVElORVRfSU5fUENCX0gKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIDxzeXMvZGlza2xhYmVsLmg+ICovCi0jdW5kZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKLQotLyogZGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgKHByb2Nlc3NvcikgZGVmaW5lcyBfX0ZVTkNUSU9OX18gZm9yIHlvdSAqLwotI3VuZGVmIEhBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQKLQotLyogb24gYWl4LCBpZiB5b3UgaGF2ZSBwZXJmc3RhdCAqLwotI3VuZGVmIEhBVkVfUEVSRlNUQVQKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGxpYmRiLCBsaWJubSBvciBsaWJycG0sIHJlc3BlY3RpdmVseSAqLwotI3VuZGVmIEhBVkVfTElCREIKLSN1bmRlZiBIQVZFX0xJQk5NCi0jdW5kZWYgSEFWRV9MSUJSUE0KLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm8gKi8KLSN1bmRlZiBIQVZFX1BLR0lORk8KLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGhvc3RieW5hbWUgKi8KLSN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwZXJsX2V2YWxfcHYoKSBmdW5jdGlvbiAqLwotI3VuZGVmIEhBVkVfUEVSTF9FVkFMX1BWX0xDCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0aGUgUGVybF9ldmFsX3B2KCkgZnVuY3Rpb24gKi8KLSN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9VQwotCi0vKiBwcmludGluZyBzeXN0ZW0gKi8KLSN1bmRlZiBIQVZFX0xQU1RBVAotI3VuZGVmIExQU1RBVF9QQVRICi0jdW5kZWYgSEFWRV9QUklOVENBUAotLyogVXNlIGRtYWxsb2MgdG8gZG8gbWFsbG9jIGRlYnVnZ2luZz8gKi8KLSN1bmRlZiBIQVZFX0RNQUxMT0NfSAotCi0vKiBsb2NhdGlvbiBvZiBVTklYIGtlcm5lbCAqLwotI2RlZmluZSBLRVJORUxfTE9DICIvdm11bml4IgotCi0vKiBsb2NhdGlvbiBvZiBtb3VudCB0YWJsZSBsaXN0ICovCi0jZGVmaW5lIEVUQ19NTlRUQUIgIi9ldGMvbW50dGFiIgotCi0vKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAob2sgaWYgbm90IGZvdW5kKSAqLwotI3VuZGVmIERNRU1fTE9DCi0KLS8qIENvbW1hbmQgdG8gZ2VuZXJhdGUgcHMgb3V0cHV0LCB0aGUgZmluYWwgY29sdW1uIG11c3QgYmUgdGhlIHByb2Nlc3MKLSAgIG5hbWUgd2l0aE9VVCBhcmd1bWVudHMgKi8KLSNkZWZpbmUgUFNDTUQgIi9iaW4vcHMiCi0KLS8qIFdoZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kICovCi0jZGVmaW5lIFVOQU1FUFJPRyAiL2Jpbi91bmFtZSIKLQotLyogZGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgbGludXggYW5kIC9wcm9jL25ldC9kZXYgaGFzIHRoZSBjb21wcmVzc2VkCi0gICBmaWVsZCwgd2hpY2ggZXhpc3RzIGluIGxpbnV4IGtlcm5lbHMgMi4yIGFuZCBncmVhdGVyLiAqLwotI3VuZGVmIFBST0NfTkVUX0RFVl9IQVNfQ09NUFJFU1NFRAotCi0vKiBkZWZpbmUgcnRlbnRyeSB0byBvcnRlbnRyeSBvbiBTWVNWIG1hY2hpbmVzIChhbHBoYXMpICovCi0jdW5kZWYgUlRFTlRSWQotCi0vKiBVc2UgQlNEIDQuNCByb3V0aW5nIHRhYmxlIGVudHJpZXM/ICovCi0jdW5kZWYgUlRFTlRSWV80XzQKLQotLyogRG9lcyBzdHJ1Y3Qgc2lnYWN0aW9uIGhhdmUgYSBzYV9zaWdhY3Rpb24gZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NJR0FDVElPTl9IQVNfU0FfU0lHQUNUSU9OCi0KLS8qIERvZXMgc3RydWN0IHRtIGhhdmUgYSB0bV9nbXRvZmYgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1RNX0hBU19UTV9HTVRPRkZGCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9sZW4gZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9MRU4KLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHIgaGF2ZSBhIHNhX2ZhbWlseTIgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBoYXZlIGEgc3NfZmFtaWx5IGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19TU19GQU1JTFkKLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBoYXZlIGEgX19zc19mYW1pbHkgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfSEFTX19fU1NfRkFNSUxZCi0KLS8qIERvZXMgc3RydWN0IGluNl9hZGRyIGhhdmUgYSBzNl91bi5zYTZfbGFkZCBmaWVsZD8gKi8KLSN1bmRlZiBTVFJVQ1RfSU42X0FERFJfSEFTX1M2X1VOX1NBNl9MQUREUgotCi0vKiBydGVudHJ5IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFJURU5UUllfUlRfTkVYVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVU5JVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VU0UKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0hBU0gKLQotLyogaWZuZXQgc3RydWN0dXJlIHRlc3RzICovCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEVfSUZTX1ZBTFVFCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9TUEVFRAotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfVFlQRQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSU1DQVNUUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSVFEUk9QUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfTlNFQwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTk9QUk9UTwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT01DQVNUUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSUJZVEVTCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9BRERSTElTVAotCi0vKiB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcCAqLwotI3VuZGVmIFNUUlVDVF9UQ1BTVEFUX0hBU19UQ1BTX1JDVk1FTURST1AKLQotLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLSN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19ESVNDQVJECi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUQkNBU1QKLQotLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLSN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19GVUxMU09DSwotCi0vKiBhcnBoZC5hdF9uZXh0ICovCi0jdW5kZWYgU1RSVUNUX0FSUEhEX0hBU19BVF9ORVhUCi0KLS8qIGlmYWRkci5pZmFfbmV4dCAqLwotI3VuZGVmIFNUUlVDVF9JRkFERFJfSEFTX0lGQV9ORVhUCi0KLS8qIGlmbmV0LmlmX210dSAqLwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTVRVCi0KLS8qIHN3ZGV2dC5zd19uYmxrc2VuYWJsZWQgKi8KLSN1bmRlZiBTVFJVQ1RfU1dERVZUX0hBU19TV19OQkxLU0VOQUJMRUQKLQotLyogbmxpc3Qubl92YWx1ZSAqLwotI3VuZGVmIFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRQotCi0vKiBubGlzdDY0Lm5fdmFsdWUgKi8KLSN1bmRlZiBTVFJVQ1RfTkxJU1Q2NF9IQVNfTl9WQUxVRQotCi0vKiBpcHN0YXQgc3RydWN0dXJlIHRlc3RzICovCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGT1JXQVJECi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGUkFHCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0RFTElWRVJFRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHRFJPUFBFRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHVElNRU9VVAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19MT0NBTE9VVAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1BST1RPCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0RST1BQRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0ZSQUdNRU5UUwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19SRUFTU0VNQkxFRAotCi0vKiB2ZnNzdGF0LmZfZnJzaXplICovCi0jdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFCi0KLS8qIHZmc3N0YXQuZl9maWxlcyAqLwotI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTCi0KLS8qIHN0YXRmcyBpbm9kZSBzdHJ1Y3R1cmUgdGVzdHMqLwotI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMKLSN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZGUkVFCi0jdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GQVZBSUwKLQotLyogZGVzX2tzX3N0cnVjdC53ZWFrX2tleSAqLwotI3VuZGVmIFNUUlVDVF9ERVNfS1NfU1RSVUNUX0hBU19XRUFLX0tFWQotCi0vKiBpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZCAqLwotI3VuZGVmIElGTkVUX05FRURTX0tFUk5FTAotCi0vKiBzeXNjdGwgd29ya3MgdG8gZ2V0IGJvb3R0aW1lLCBldGMuLi4gKi8KLSN1bmRlZiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCi0KLS8qIGRlZmluZSBpZiBTSU9DR0lGQUREUiBleGlzdHMgaW4gc3lzL2lvY3RsLmggKi8KLSN1bmRlZiBTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIKLQotLyogRGVmaW5lIGlmIHN0YXRmcyB0YWtlcyAyIGFyZ3MgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzCi0gICB0eXBlIHN0cnVjdCBmc19kYXRhLiBbVWx0cml4XSAqLwotI3VuZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKLQotLyogRGVmaW5lIGlmIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGluIDxuZXRpbmV0L3RjcF90aW1lci5oPgotICAgZGVwZW5kIG9uIHRoZSBpbnRlZ2VyIHZhcmlhYmxlIGBoeicuICBbRnJlZUJTRCA0LnhdICovCi0jdW5kZWYgVENQVFZfTkVFRFNfSFoKLQotLyogTm90LXRvLWJlLWNvbXBpbGVkIG1hY3JvcyBmb3IgdXNlIGJ5IGNvbmZpZ3VyZSBvbmx5ICovCi0jZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpCi0jZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpCi0jZGVmaW5lIGNvbmZpZ19hcmNoX3JlcXVpcmUoeCx5KQotI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseikKLSNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCkKLSNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCkKLSNkZWZpbmUgY29uZmlnX2Vycm9yKHgpCi0jZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpCi0gIAogI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChtaW5ndzMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCiAjZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjsiCiAjZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOycKQEAgLTI2NCw2ICszNSwyNyBAQAogCiAvKiBkZWZpbml0aW9ucyBhZGRlZCBieSBjb25maWd1cmUgb24tdGhlLWZseSAqLwogCisjZGVmaW5lIGNvbmZpZ19iZWxvbmdzX2luKHgpCisKKyNkZWZpbmUgY29uZmlnX2V4Y2x1ZGUoeCkKKworI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSkKKworI2RlZmluZSBjb25maWdfdmVyc2lvbl9yZXF1aXJlKHgpCisKKyNkZWZpbmUgY29uZmlnX3JlcXVpcmUoeCkKKworI2RlZmluZSBjb25maWdfYWRkX21pYih4KQorCisjZGVmaW5lIGNvbmZpZ19wYXJzZV9kb3RfY29uZih3LHgseSx6KQorCisjZGVmaW5lIGNvbmZpZ19lcnJvcih4KQorCisjZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpCisKKy8qIERlZmluZSBpZiBidWlsZGluZyB1bml2ZXJzYWwgKGludGVybmFsIGhlbHBlciBtYWNybykgKi8KKyN1bmRlZiBBQ19BUFBMRV9VTklWRVJTQUxfQlVJTEQKKwogLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3IgQ3JheS0yIGFuZCBDcmF5LVlNUAogICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCiAgICAqLwpAQCAtMjcyLDYgKzY0LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB1c2luZyBgYWxsb2NhLmMnLiAqLwogI3VuZGVmIENfQUxMT0NBCiAKKy8qIGxvY2F0aW9uIG9mIHN3YXAgZGV2aWNlICovCisjdW5kZWYgRE1FTV9MT0MKKworLyogbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdCAqLworI3VuZGVmIEVUQ19NTlRUQUIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBBRVNfY2ZiMTI4X2VuY3J5cHQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQUVTX0NGQjEyOF9FTkNSWVBUCiAKQEAgLTI5MSwxOCArODksMjUgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YXNtL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfQVNNX1RZUEVTX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiY29weScgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9CQ09QWQorLyogRGVmaW5lIGlmIHVzaW5nIE1ZX0lOSVQoKSBjYXVzZXMgYSBsaW5rZXIgZXJyb3IgKi8KKyN1bmRlZiBIQVZFX0JST0tFTl9MSUJNWVNRTENMSUVOVAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNnZXRuZXh0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NHRVRORVhUCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2hvd24nIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfQ0hPV04KLQogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYENvdW50ZXI2NCcuICovCiAjdW5kZWYgSEFWRV9DT1VOVEVSNjQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBzZW5zb3JzX2dldF9hbGxfc3ViZmVhdHVyZXMnLAorICAgYW5kIHRvIDAgaWYgeW91IGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9TRU5TT1JTX0dFVF9BTExfU1VCRkVBVFVSRVMKKworLyogZGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgSVJFX0NBQ0hFIGRlZmluZWQgaW4gPGluZXQvaXAuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ERUZJTkVEX0lSRV9DQUNIRQorCisvKiBkZWZpbmUgaWYgeW91IGhhdmUgZGV2c3RhdF9nZXRkZXZzKCkgKi8KKyN1bmRlZiBIQVZFX0RFVlNUQVRfR0VUREVWUworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfRElSRU5UX0gKQEAgLTMxMyw2ICsxMTgsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbG9wZW4nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRExPUEVOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZG1hbGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0RNQUxMT0NfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVyci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0VSUl9ICiAKQEAgLTM0Myw2ICsxNTEsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRhZGRyaW5mbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRBRERSSU5GTwogCisvKiBkZWZpbmUgaWYgeW91IGhhdmUgZ2V0ZGV2cygpICovCisjdW5kZWYgSEFWRV9HRVRERVZTCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0ZHRhYmxlc2l6ZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVREVEFCTEVTSVpFCiAKQEAgLTM1Miw2ICsxNjMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRncm5hbScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRHUk5BTQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhvc3RieW5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGhvc3RuYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEhPU1ROQU1FCiAKQEAgLTM3OSw2ICsxOTMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXR0aW1lb2ZkYXknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0dmZzc3RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRWRlNTVEFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Z3JwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfR1JQX0gKIApAQCAtMzk0LDIzICsyMTEsMTcgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaWZfbmFtZXRvaW5kZXgnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSUZfTkFNRVRPSU5ERVgKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbmRleCcgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9JTkRFWAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbmV0L2NvbW1vbi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0lORVRfQ09NTU9OX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbmV0L2lwLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfSU5FVF9JUF9ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW5ldC9taWIyLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5FVF9NSUIyX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGludDE2X3QnLiAqLwotI3VuZGVmIEhBVkVfSU5UMTZfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW50MzJfdCcuICovCi0jdW5kZWYgSEFWRV9JTlQzMl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbnQ2NF90Jy4gKi8KLSN1bmRlZiBIQVZFX0lOVDY0X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGludDhfdCcuICovCi0jdW5kZWYgSEFWRV9JTlQ4X1QKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaW5pdGdyb3VwcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9JTklUR1JPVVBTCiAKIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbnRtYXhfdCcuICovCiAjdW5kZWYgSEFWRV9JTlRNQVhfVApAQCAtNDIxLDIxICsyMzIsMzMgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9JTlRUWVBFU19ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbl9hZGRyX3QnLiAqLworI3VuZGVmIEhBVkVfSU5fQUREUl9UCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW9jdGxzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU9DVExTX0gKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lPX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpcGhscGFwaS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0lQSExQQVBJX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBraW5mb19nZXRfY3B1cycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LSU5GT19HRVRfQ1BVUwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtubGlzdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LTkxJU1QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrcmI1X2F1dGhfY29uX2dldHNlbmRzdWJrZXknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfS1JCNV9BVVRIX0NPTl9HRVRTRU5EU1VCS0VZCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8a3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9LU1RBVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX2dldHByb2MyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DMgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9nZXRwcm9jcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LVk1fR0VUUFJPQ1MKIApAQCAtNDQ4LDMwICsyNzEsMjEgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX29wZW5maWxlcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY3J5cHRvJyBsaWJyYXJ5ICgtbGNyeXB0bykuICovCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgT3BlblNTTCBsaWJyYXJ5ICgtbGNyeXB0byBvciAtbGVheTMyKS4gKi8KICN1bmRlZiBIQVZFX0xJQkNSWVBUTwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRsJyBsaWJyYXJ5ICgtbGRsKS4gKi8KLSN1bmRlZiBIQVZFX0xJQkRMCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZWZlbmNlJyBsaWJyYXJ5ICgtbGVmZW5jZSkuICovCi0jdW5kZWYgSEFWRV9MSUJFRkVOQ0UKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBlbGYnIGxpYnJhcnkgKC1sZWxmKS4gKi8KICN1bmRlZiBIQVZFX0xJQkVMRgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtzdGF0JyBsaWJyYXJ5ICgtbGtzdGF0KS4gKi8KICN1bmRlZiBIQVZFX0xJQktTVEFUCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtJyBsaWJyYXJ5ICgtbGt2bSkuICovCi0jdW5kZWYgSEFWRV9MSUJLVk0KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtJyBsaWJyYXJ5ICgtbG0pLiAqLwotI3VuZGVmIEhBVkVfTElCTQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1sZCcgbGlicmFyeSAoLWxtbGQpLiAqLwogI3VuZGVmIEhBVkVfTElCTUxECiAKKy8qIGRlZmluZSBpZiB5b3UgaGF2ZSBsaWJubSAqLworI3VuZGVmIEhBVkVfTElCTk0KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBuc2wnIGxpYnJhcnkgKC1sbnNsKS4gKi8KICN1bmRlZiBIQVZFX0xJQk5TTAogCkBAIC00ODEsMTIgKzI5NSwyMSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwa2NzMTEnIGxpYnJhcnkgKC1scGtjczExKS4gKi8KICN1bmRlZiBIQVZFX0xJQlBLQ1MxMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJwbScgbGlicmFyeSAoLWxycG0pLiAqLworI3VuZGVmIEhBVkVfTElCUlBNCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgUlNBZ2x1ZScgbGlicmFyeSAoLWxSU0FnbHVlKS4gKi8KICN1bmRlZiBIQVZFX0xJQlJTQUdMVUUKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByc2FyZWYnIGxpYnJhcnkgKC1scnNhcmVmKS4gKi8KICN1bmRlZiBIQVZFX0xJQlJTQVJFRgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzaDInIGxpYnJhcnkgKC1sc3NoMikuICovCisjdW5kZWYgSEFWRV9MSUJTU0gyCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3NsJyBsaWJyYXJ5ICgtbHNzbCkuICovCisjdW5kZWYgSEFWRV9MSUJTU0wKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU1JVFNfSAogCkBAIC00OTYsMTQgKzMxOSwyMyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9oZHJlZy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX0hEUkVHX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9uZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfTkVUTElOS19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvcnRuZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfUlRORVRMSU5LX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC90YXNrcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX1RBU0tTX0gKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsb2NhbGUuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MT0NBTEVfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2FsdGltZV9yJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX0xPQ0FMVElNRV9SCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgbG9uZyBsb25nIGludCcuICovCisjdW5kZWYgSEFWRV9MT05HX0xPTkdfSU5UCisKKy8qIFNldCBpZiB0aGUgbHBzdGF0IGNvbW1hbmQgaXMgYXZhaWxhYmxlICovCisjdW5kZWYgSEFWRV9MUFNUQVQKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBscmFuZDQ4JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xSQU5ENDgKQEAgLTUyMywxNSArMzU1LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hbGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX01BTExPQ19ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtY3B5JyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX01FTUNQWQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfTUVNTU9WRQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX01FTU9SWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBtaWIyX2lwSWZTdGF0c0VudHJ5X3QnLiAqLworI3VuZGVmIEhBVkVfTUlCMl9JUElGU1RBVFNFTlRSWV9UCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtzdGVtcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NS1NURU1QCiAKQEAgLTU3NCw2ICs0MDMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0Ni90Y3A2X3Zhci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX05FVElORVQ2X1RDUDZfVkFSX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2ljbXA2Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUSU5FVF9JQ01QNl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pY21wX3Zhci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX05FVElORVRfSUNNUF9WQVJfSAogCkBAIC01ODMsNiArNDE1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pbi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX05FVElORVRfSU5fSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW5fcGNiLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUSU5FVF9JTl9QQ0JfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW5fc3lzdG0uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lOX1NZU1RNX0gKIApAQCAtNjI1LDYgKzQ2MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGlweC9pcHguaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJUFhfSVBYX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRsaW5rL25ldGxpbmsuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ORVRMSU5LX05FVExJTktfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl9hcnAuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRfSUZfQVJQX0gKIApAQCAtNjQ2LDYgKzQ4NCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9yb3V0ZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX05FVF9ST1VURV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBuZmRzX3QnLiAqLworI3VuZGVmIEhBVkVfTkZEU19UCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbmxpc3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTkxJU1QKIApAQCAtNjc5LDE4ICs1MjAsMzYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGNpL3BjaS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BDSV9QQ0lfSAogCisvKiBvbiBhaXgsIGlmIHlvdSBoYXZlIHBlcmZzdGF0ICovCisjdW5kZWYgSEFWRV9QRVJGU1RBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgdGhlIHBlcmxfZXZhbF9wdicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QRVJMX0VWQUxfUFZfTEMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBQZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUEVSTF9FVkFMX1BWX1VDCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGljbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BJQ0xfSAogCisvKiBkZWZpbmUgaWYgeW91IGhhdmUgcGtnaW5mbyAqLworI3VuZGVmIEhBVkVfUEtHSU5GTworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBrZ2luZm8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QS0dJTkZPX0gKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwa2dsb2NzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUEtHTE9DU19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcG9sbCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QT0xMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWQ2NCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QUkVBRDY0CiAKKy8qIFNldCBpZiAvZXRjL3ByaW50Y2FwIGV4aXN0cyAqLworI3VuZGVmIEhBVkVfUFJJTlRDQVAKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwdGhyZWFkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUFRIUkVBRF9ICiAKQEAgLTcwMyw2ICs1NjIsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByYW5kb20nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkFORE9NCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZGRpcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUFERElSCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVnY29tcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUdDT01QCiAKQEAgLTcxNSw2ICs1NzcsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxycG0vaGVhZGVyLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUlBNX0hFQURFUl9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cnBtL3JwbWZpbGV1dGlsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfUlBNX1JQTUZJTEVVVElMX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxycG0vcnBtbGliLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUlBNX1JQTUxJQl9ICiAKQEAgLTczMCw2ICs1OTUsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxlY3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VMRUNUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2Vuc29ycy9zZW5zb3JzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU0VOU09SU19TRU5TT1JTX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRlbnYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VURU5WCiAKQEAgLTc4MSw3ICs2NDksMTAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc29ja2V0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NPQ0tFVAogCi0vKiBEZWZpbmUgaWYgdHlwZSBzc2l6ZV90IGlzIGF2YWlsYWJsZSAqLworLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHNvY2tsZW5fdCcuICovCisjdW5kZWYgSEFWRV9TT0NLTEVOX1QKKworLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHNzaXplX3QnLiAqLwogI3VuZGVmIEhBVkVfU1NJWkVfVAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0YXRmcycgZnVuY3Rpb24uICovCkBAIC03OTAsOSArNjYxLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RhdHZmcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TVEFUVkZTCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IGhlYWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfU1REQVJHX0gKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TVERJTlRfSAogCkBAIC04MDUsOSArNjczLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyY2FzZXN0cicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TVFJDQVNFU1RSCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RyY2hyJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX1NUUkNIUgotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmR1cCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TVFJEVVAKIApAQCAtODM4LDEyICs3MDMsMjExIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSVE9VTAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWxsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlRPVUxMCisKKy8qIERlZmluZSB0byAxIGlmIGBhdF9uZXh0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBhcnBoZCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgd2Vha19rZXknIGlzIG1lbWJlciBvZiBgc3RydWN0IGRlc19rc19zdHJ1Y3QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0RFU19LU19TVFJVQ1RfV0VBS19LRVkKKworLyogRGVmaW5lIHRvIDEgaWYgYGRfdHlwZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgZGlyZW50Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9ESVJFTlRfRF9UWVBFCisKIC8qIERlZmluZSB0byAxIGlmIGBzcGVlZF9oaScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgZXRodG9vbF9jbWQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0VUSFRPT0xfQ01EX1NQRUVEX0hJCiAKKy8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZhZGRyJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRkFERFJfSUZBX05FWFQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2FkZHJoZWFkLnRxaF9maXJzdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJIRUFEX1RRSF9GSVJTVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmxpc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSTElTVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQkFVRFJBVEVfSUZTX1ZBTFVFCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9pYnl0ZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JQllURVMKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2ltY2FzdHMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JTUNBU1RTCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9pcWRyb3BzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSVFEUk9QUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbGFzdGNoYW5nZS50dl9uc2VjJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9OU0VDCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9sYXN0Y2hhbmdlLnR2X3NlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9tdHUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9NVFUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9OT1BST1RPCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PQllURVMKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX29tY2FzdHMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PTUNBU1RTCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9zcGVlZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVECisKKy8qIERlZmluZSB0byAxIGlmIGBpZl90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfeG5hbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9YTkFNRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmb3J3YXJkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZPUldBUkQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50ZnJhZycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0NBTlRGUkFHCisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfZGVsaXZlcmVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfREVMSVZFUkVECisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHTUVOVEVECisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ3RpbWVvdXQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHVElNRU9VVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2xvY2Fsb3V0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTE9DQUxPVVQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3Byb3RvJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9QUk9UTworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcm91dGUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1JPVVRFCisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfb2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRlJBR01FTlRTCisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfcmVhc3NlbWJsZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19SRUFTU0VNQkxFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9jbGZyZWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfTUJTVEFUX01fQ0xGUkVFCisKKy8qIERlZmluZSB0byAxIGlmIGBtX2NsdXN0ZXJzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX0NMVVNURVJTCisKKy8qIERlZmluZSB0byAxIGlmIGBtX21idWZzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX01CVUZTCisKKy8qIERlZmluZSB0byAxIGlmIGBtc2dfY29udHJvbCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbXNnaGRyJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wKKworLyogRGVmaW5lIHRvIDEgaWYgYG5fdmFsdWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IG5saXN0NjQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUNjRfTl9WQUxVRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgbl92YWx1ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUKKworLyogRGVmaW5lIHRvIDEgaWYgYHJ0X2RzdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKKworLyogRGVmaW5lIHRvIDEgaWYgYHJ0X2hhc2gnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAorCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9ORVhUCisKKy8qIERlZmluZSB0byAxIGlmIGBydF9yZWZjbnQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UCisKKy8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VOSVQKKworLyogRGVmaW5lIHRvIDEgaWYgYHJ0X3VzZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VU0UKKworLyogRGVmaW5lIHRvIDEgaWYgYHNhX3NpZ2FjdGlvbicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TSUdBQ1RJT05fU0FfU0lHQUNUSU9OCisKIC8qIERlZmluZSB0byAxIGlmIGBzaW42X3Njb3BlX2lkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcl9pbjYnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX0lONl9TSU42X1NDT1BFX0lECiAKKy8qIERlZmluZSB0byAxIGlmIGBzYV9sZW4nIGlzIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9MRU4KKworLyogRGVmaW5lIHRvIDEgaWYgYHNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5MicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QKKyAgIHNvY2thZGRyJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKKworLyogRGVmaW5lIHRvIDEgaWYgYHNzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFkKKworLyogRGVmaW5lIHRvIDEgaWYgYF9fc3NfZmFtaWx5JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFX19fU1NfRkFNSUxZCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2ZhdmFpbCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GQVZBSUwKKworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmZyZWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkZSRUUKKworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmlsZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRklMRVMKKworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZSU0laRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9maWxlcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdHZmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZJTEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2Zyc2l6ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdHZmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZSU0laRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgbW50X2RpcicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdHZmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19NTlRfRElSCisKKy8qIERlZmluZSB0byAxIGlmIGBzd19uYmxrc2VuYWJsZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1dERVZUX1NXX05CTEtTRU5BQkxFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgdGNwX3Jjdm1lbWRyb3AnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQX1JDVk1FTURST1AKKworLyogRGVmaW5lIHRvIDEgaWYgYHRtX2dtdG9mZicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdG0nLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19kaXNjYXJkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfRElTQ0FSRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19mdWxsc29jaycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0ZVTExTT0NLCisKKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX25vcG9ydCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19ub3BvcnRiY2FzdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVEJDQVNUCisKKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfT1BBQ0tFVFMKKworLyogRGVmaW5lIHRvIDEgaWYgYHBnc3dhcGluJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1dm1leHAnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VWTUVYUF9QR1NXQVBJTgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5c2NvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1lTQ09ORgogCkBAIC04NjYsNiArOTMwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2Rpc2tpby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19ESVNLSU9fSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXNrbGFiZWwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGtpby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19ES0lPX0gKIApAQCAtOTE1LDYgKzk4Miw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wYXJhbS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19QQVJBTV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BvbGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfUE9MTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Bvb2wuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfUE9PTF9ICiAKQEAgLTEwNDcsMTggKzExMTcsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1ZnMvdWZzL3F1b3RhLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVUZTX1VGU19RVU9UQV9ICiAKLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1aW50MTZfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UMTZfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludDMyX3QnLiAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnQ2NF90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlQ2NF9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1aW50OF90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlQ4X1QKLQogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnRtYXhfdCcuICovCiAjdW5kZWYgSEFWRV9VSU5UTUFYX1QKIApAQCAtMTA3MSw2ICsxMTI5LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQnLiAqLworI3VuZGVmIEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVzbGVlcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VU0xFRVAKIApAQCAtMTA4NiwxOCArMTE0Nyw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHV2bS91dm1fcGFyYW0uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9VVk1fVVZNX1BBUkFNX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVfaW50MTZfdCcuICovCi0jdW5kZWYgSEFWRV9VX0lOVDE2X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVfaW50MzJfdCcuICovCi0jdW5kZWYgSEFWRV9VX0lOVDMyX1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVfaW50NjRfdCcuICovCi0jdW5kZWYgSEFWRV9VX0lOVDY0X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVfaW50OF90Jy4gKi8KLSN1bmRlZiBIQVZFX1VfSU5UOF9UCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dm0vc3dhcF9wYWdlci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1ZNX1NXQVBfUEFHRVJfSAogCkBAIC0xMTEzLDE4ICsxMTYyLDUzIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHZzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9WU05QUklOVEYKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx3aW5kb3dzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfV0lORE9XU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8d2luc29jazIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9XSU5TT0NLMl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8d2luc29jay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1dJTlNPQ0tfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHdzMnRjcGlwLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfV1MyVENQSVBfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHh0aS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1hUSV9ICiAKKy8qIGxvY2F0aW9uIG9mIFVOSVgga2VybmVsICovCisjdW5kZWYgS0VSTkVMX0xPQworCisvKiBQYXRoIHRvIHRoZSBscHN0YXQgY29tbWFuZCAqLworI3VuZGVmIExQU1RBVF9QQVRICisKKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSBpbiB3aGljaCBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuCisgICAqLworI3VuZGVmIExUX09CSkRJUgorCisvKiBkZWZpbmUgaWYgYWdlbnR4IHRyYW5zcG9ydCBpcyB0byB1c2UgZG9tYWluIHNvY2tldHMgb25seSAqLworI3VuZGVmIE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFkKKwogLyogVW5peCBkb21haW4gc29ja2V0IGZvciBBZ2VudFggbWFzdGVyLXN1YmFnZW50IGNvbW11bmljYXRpb24gKi8KICN1bmRlZiBORVRTTk1QX0FHRU5UWF9TT0NLRVQKIAogLyogRGVmaW5lIGlmIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZCAqLwogI3VuZGVmIE5FVFNOTVBfQlJPS0VOX0lOTElORQogCisvKiBzeXNjdGwgd29ya3MgdG8gZ2V0IGJvb3R0aW1lLCBldGMuLi4gKi8KKyN1bmRlZiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCisKKy8qIGNvbmZpZ3VyZSBvcHRpb25zIHNwZWNpZmllZCAqLworI3VuZGVmIE5FVFNOTVBfQ09ORklHVVJFX09QVElPTlMKKworLyogZGVmYXVsdCBsb2NhdGlvbiB0byBsb29rIGZvciBtaWJzIHRvIGxvYWQgdXNpbmcgdGhlIGFib3ZlIHRva2VucyBhbmQvb3IKKyAgIHRob3NlIGluIHRoZSBNSUJTIGVudnJpb25tZW50IHZhcmlhYmxlICovCisjdW5kZWYgTkVUU05NUF9ERUZBVUxUX01JQkRJUlMKKworLyogZGVmYXVsdCBtaWIgZmlsZXMgdG8gbG9hZCwgc3BlY2lmaWVkIGJ5IHBhdGguICovCisjdW5kZWYgTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTCisKIC8qIERlZmluZSBpZiBERVMgZW5jcnlwdGlvbiBzaG91bGQgbm90IGJlIHN1cHBvcnRlZCAqLwogI3VuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKIApAQCAtMTE0Myw5ICsxMjI3LDg1IEBACiAvKiBEZWZpbmUgaWYgU05NUHYyYyBjb2RlIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgKi8KICN1bmRlZiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQwogCisvKiBEZWZpbmUgaWYgeW91IGFyZSBlbWJlZGRpbmcgcGVybCBpbiB0aGUgbWFpbiBhZ2VudC4gKi8KKyN1bmRlZiBORVRTTk1QX0VNQkVEREVEX1BFUkwKKworLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBJUHY2IHN1cHBvcnQgKi8KKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisKKy8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdCBieSBkZWZhdWx0ICovCisjdW5kZWYgTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWAorCisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgTUZEIG1vZHVsZSByZXdyaXRlcyAqLworI3VuZGVmIE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUworCisvKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBib3RoIGF1dGhlbnRpY2F0aW9uIGFuZCBwcml2YWN5CisgICBzdXBwb3J0LiAqLworI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCisKKy8qIHRlc3RpbmcgY29kZSBzZWN0aW9ucy4gKi8KKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKKworLyogU2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlmIGRlZmluZWQgKi8KKyN1bmRlZiBORVRTTk1QX0ZVTkNUSU9OCisKKy8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTCBkZWZpbmVkICovCisjdW5kZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKKworLyogaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMX1NUUlVDVFVSRVMgZGVmaW5lZCAqLworI3VuZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKworLyogRGVmaW5lIHRvIHN1cHByZXNzIGluY2x1c2lvbiBvZiBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqLworI3VuZGVmIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMKKworLyogSWYgeW91IGRvbid0IHdhbnQgdGhlIGFnZW50IHRvIHJlcG9ydCBvbiB2YXJpYWJsZXMgaXQgZG9lc24ndCBoYXZlIGRhdGEgZm9yCisgICAqLworI3VuZGVmIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCisKKy8qIElmIHdlIGRvbid0IHdhbnQgdG8gdXNlIGttZW0uICovCisjdW5kZWYgTkVUU05NUF9OT19LTUVNX1VTQUdFCisKKy8qIElmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9ycyAqLworI3VuZGVmIE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MKKworLyogdW1hc2sgcGVybWlzc2lvbnMgdG8gc2V0IHVwIHBlcnNpc3RlbnQgZmlsZXMgd2l0aCAqLworI3VuZGVmIE5FVFNOTVBfUEVSU0lTVEVOVF9NQVNLCisKKy8qIFNpemUgcHJlZml4IHRvIHVzZSB0byBwcmludGYgYSBzaXplX3Qgb3Igc3NpemVfdCAqLworI3VuZGVmIE5FVFNOTVBfUFJJegorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHJlZW50cmFudC90aHJlYWRlZCBjb2RlIChpbmNvbXBsZXRlKS4KKyAgICovCisjdW5kZWYgTkVUU05NUF9SRUVOVFJBTlQKKworLyogZGVmaW5lIGlmIHlvdSBkbyBub3Qgd2FudCBzbm1wdHJhcGQgdG8gcmVnaXN0ZXIgYXMgYW4gQWdlbnRYIHN1YmFnZW50ICovCisjdW5kZWYgTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKKwogLyogUGF0dGVybiBvZiB0ZW1wb3JhcnkgZmlsZXMgKi8KICN1bmRlZiBORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOCiAKKy8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi4gKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9JTlRFUk5BTF9NRDUKKworLyogRGVmaW5lIHRoaXMgaWYgeW91J3JlIHVzaW5nIEhlaW1kYWwgS2VyYmVyb3MgKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9LRVJCRVJPU19IRUlNREFMCisKKy8qIERlZmluZSB0aGlzIGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgTUlUIGNyeXB0byBBUEkgKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQKKworLyogZGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgdGhlIG15c3FsIGNvZGUgZm9yIHNubXB0cmFwZCAuLi4gKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9NWVNRTAorCisvKiBEZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLiAqLworI3VuZGVmIE5FVFNOTVBfVVNFX1BLQ1MxMQorCisvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBsaW1fc2Vuc29ycyB2MyBvciBsYXRlciAqLworI3VuZGVmIE5FVFNOTVBfVVNFX1NFTlNPUlNfVjMKKworLyogU2hvdWxkIHdlIGNvbXBpbGUgdG8gdXNlIHNwZWNpYWwgb3BhcXVlIHR5cGVzOiBmbG9hdCwgZG91YmxlLCBjb3VudGVyNjQsCisgICBpNjQsIHVpNjQsIHVuaW9uPyAqLworI3VuZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUworCiAvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KICNpZm5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVApAQCAtMTE3MSw1MiArMTMzMSwxMjQgQEAKICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KICNlbmRpZgogCisvKiBDb21tYW5kIHRvIGdlbmVyYXRlIHBzIG91dHB1dCwgdGhlIGZpbmFsIGNvbHVtbiBtdXN0IGJlIHRoZSBwcm9jZXNzIG5hbWUKKyAgIHdpdGhPVVQgYXJndW1lbnRzICovCisjdW5kZWYgUFNDTUQKKwogLyogRGVmaW5lIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMgKGBpbnQnIG9yIGB2b2lkJykuICovCiAjdW5kZWYgUkVUU0lHVFlQRQogCi0vKiBUaGUgc2l6ZSBvZiBhIGBpbnQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisvKiBkZWZpbmUgcnRlbnRyeSB0byBvcnRlbnRyeSBvbiBTWVNWIG1hY2hpbmVzIChhbHBoYXMpICovCisjdW5kZWYgUlRFTlRSWQorCisvKiBVc2UgQlNEIDQuNCByb3V0aW5nIHRhYmxlIGVudHJpZXM/ICovCisjdW5kZWYgUlRFTlRSWV80XzQKKworLyogVGhlIHNpemUgb2YgYGludCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICN1bmRlZiBTSVpFT0ZfSU5UCiAKLS8qIFRoZSBzaXplIG9mIGEgYGludG1heF90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLyogVGhlIHNpemUgb2YgYGludG1heF90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI3VuZGVmIFNJWkVPRl9JTlRNQVhfVAogCi0vKiBUaGUgc2l6ZSBvZiBhIGBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLyogVGhlIHNpemUgb2YgYGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjdW5kZWYgU0laRU9GX0xPTkcKIAotLyogVGhlIHNpemUgb2YgYSBgbG9uZyBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLyogVGhlIHNpemUgb2YgYGxvbmcgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICN1bmRlZiBTSVpFT0ZfTE9OR19MT05HCiAKLS8qIFRoZSBzaXplIG9mIGEgYHNob3J0JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLyogVGhlIHNpemUgb2YgYHNob3J0JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI3VuZGVmIFNJWkVPRl9TSE9SVAogCiAvKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmluZSBpZiB5b3Uga25vdyB0aGUKICAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQotICAgYXV0b21hdGljYWxseSBkZWR1Y2VkIGF0IHJ1bi10aW1lLgorICAgYXV0b21hdGljYWxseSBkZWR1Y2VkIGF0IHJ1bnRpbWUuCiAJU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFkZHJlc3NlcwogCVNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcwogCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duICovCiAjdW5kZWYgU1RBQ0tfRElSRUNUSU9OCiAKKy8qIERlZmluZSBpZiBzdGF0ZnMgdGFrZXMgMiBhcmdzIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcyB0eXBlIHN0cnVjdAorICAgZnNfZGF0YS4gW1VsdHJpeF0gKi8KKyN1bmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwogI3VuZGVmIFNURENfSEVBREVSUwogCisvKiBkZWZpbmUgaWYgU0lPQ0dJRkFERFIgZXhpc3RzIGluIHN5cy9pb2N0bC5oICovCisjdW5kZWYgU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSCisKKy8qIERlZmluZSBpZiB0aGUgVENQIHRpbWVyIGNvbnN0YW50cyBpbiA8bmV0aW5ldC90Y3BfdGltZXIuaD4gZGVwZW5kIG9uIHRoZQorICAgaW50ZWdlciB2YXJpYWJsZSAnaHonLiBbRnJlZUJTRCA0LnhdICovCisjdW5kZWYgVENQVFZfTkVFRFNfSFoKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGNhbiBzYWZlbHkgaW5jbHVkZSBib3RoIDxzeXMvdGltZS5oPiBhbmQgPHRpbWUuaD4uICovCiAjdW5kZWYgVElNRV9XSVRIX1NZU19USU1FCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdXIgcHJvY2Vzc29yIHN0b3JlcyB3b3JkcyB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUKLSAgIGZpcnN0IChsaWtlIE1vdG9yb2xhIGFuZCBTUEFSQywgdW5saWtlIEludGVsIGFuZCBWQVgpLiAqLwotI3VuZGVmIFdPUkRTX0JJR0VORElBTgorLyogV2hlcmUgaXMgdGhlIHVuYW1lIGNvbW1hbmQgKi8KKyN1bmRlZiBVTkFNRVBST0cKIAotLyogRGVmaW5lIHRvIDEgaWYgb24gQUlYIDMuCi0gICBTeXN0ZW0gaGVhZGVycyBzb21ldGltZXMgZGVmaW5lIHRoaXMuCi0gICBXZSBqdXN0IHdhbnQgdG8gYXZvaWQgYSByZWRlZmluaXRpb24gZXJyb3IgbWVzc2FnZS4gICovCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBBSVggMywgSW50ZXJpeC4gICovCiAjaWZuZGVmIF9BTExfU09VUkNFCiAjIHVuZGVmIF9BTExfU09VUkNFCiAjZW5kaWYKKy8qIEVuYWJsZSBHTlUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSB0aGVtLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgdW5kZWYgX0dOVV9TT1VSQ0UKKyNlbmRpZgorLyogRW5hYmxlIHRocmVhZGluZyBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lmbmRlZiBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MKKyMgdW5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjZW5kaWYKKy8qIEVuYWJsZSBleHRlbnNpb25zIG9uIEhQIE5vblN0b3AuICAqLworI2lmbmRlZiBfVEFOREVNX1NPVVJDRQorIyB1bmRlZiBfVEFOREVNX1NPVVJDRQorI2VuZGlmCisvKiBFbmFibGUgZ2VuZXJhbCBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lmbmRlZiBfX0VYVEVOU0lPTlNfXworIyB1bmRlZiBfX0VYVEVOU0lPTlNfXworI2VuZGlmCisKKworLyogRGVmaW5lIFdPUkRTX0JJR0VORElBTiB0byAxIGlmIHlvdXIgcHJvY2Vzc29yIHN0b3JlcyB3b3JkcyB3aXRoIHRoZSBtb3N0CisgICBzaWduaWZpY2FudCBieXRlIGZpcnN0IChsaWtlIE1vdG9yb2xhIGFuZCBTUEFSQywgdW5saWtlIEludGVsKS4gKi8KKyNpZiBkZWZpbmVkIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRAorIyBpZiBkZWZpbmVkIF9fQklHX0VORElBTl9fCisjICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKKyMgZW5kaWYKKyNlbHNlCisjIGlmbmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIHVuZGVmIFdPUkRTX0JJR0VORElBTgorIyBlbmRpZgorI2VuZGlmCisKKy8qIERlZmluZSB0byAxIGlmIG9uIE1JTklYLiAqLworI3VuZGVmIF9NSU5JWAorCisvKiBEZWZpbmUgdG8gMiBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQgd2l0aAorICAgdGhpcyBkZWZpbmVkLiAqLworI3VuZGVmIF9QT1NJWF8xX1NPVVJDRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGluZ3MgdG8gd29yay4gKi8KKyN1bmRlZiBfUE9TSVhfU09VUkNFCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBSUE0gNC42IG9yIG5ld2VyIHRvIHR1cm4gb24gbGVnYWN5IEFQSSAqLwogI3VuZGVmIF9SUE1fNF80X0NPTVBBVAogCisvKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCisgICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLworI3VuZGVmIF9VSU5UMzJfVAorCisvKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ2NF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCisgICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLworI3VuZGVmIF9VSU5UNjRfVAorCisvKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ4X3QgdHlwZWRlZiBmcm9tIDxzeXMvc3luY2guaD4sCisgICA8cHRocmVhZC5oPiwgb3IgPHNlbWFwaG9yZS5oPiBpcyBub3QgdXNlZC4gSWYgdGhlIHR5cGVkZWYgd2VyZSBhbGxvd2VkLCB0aGUKKyAgICNkZWZpbmUgYmVsb3cgd291bGQgY2F1c2UgYSBzeW50YXggZXJyb3IuICovCisjdW5kZWYgX1VJTlQ4X1QKKwogLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCiAjdW5kZWYgY29uc3QKIApAQCAtMTIyNiw1NSArMTQ1OCw2MiBAQAogI3VuZGVmIGlubGluZQogI2VuZGlmCiAKLS8qIERlZmluZSB0byBgbG9uZycgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMTYgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQxNl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludDMyX3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDY0IGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50NjRfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgOCBiaXRzIGlmIHN1Y2gKKyAgIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludDhfdAorCisvKiBEZWZpbmUgdG8gdGhlIHdpZGVzdCBzaWduZWQgaW50ZWdlciB0eXBlIGlmIDxzdGRpbnQuaD4gYW5kIDxpbnR0eXBlcy5oPiBkbworICAgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBpbnRtYXhfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIHdpZGUgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyLAorICAgaWYgc3VjaCBhIHR5cGUgZXhpc3RzLCBhbmQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50cHRyX3QKKworLyogRGVmaW5lIHRvIGBsb25nIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCiAjdW5kZWYgb2ZmX3QKIAogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIHBpZF90CiAKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAxNiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQxNl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQzMl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQ2NF90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA4IGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludDhfdAorCisvKiBEZWZpbmUgdG8gdGhlIHdpZGVzdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgaWYgPHN0ZGludC5oPiBhbmQgPGludHR5cGVzLmg+CisgICBkbyBub3QgZGVmaW5lLiAqLworI3VuZGVmIHVpbnRtYXhfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpZGUgZW5vdWdoIHRvIGhvbGQgYQorICAgcG9pbnRlciwgaWYgc3VjaCBhIHR5cGUgZXhpc3RzLCBhbmQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgdWludHB0cl90CisKIC8qIGVuZCBvZiBkZWZpbml0aW9ucyBhZGRlZCBieSBjb25maWd1cmUgb24tdGhlLWZseSAqLwogCi0jaWZuZGVmIEhBVkVfU1RSQ0hSCi0jaWZkZWYgSEFWRV9JTkRFWAotIyBkZWZpbmUgc3RyY2hyIGluZGV4Ci0jIGRlZmluZSBzdHJyY2hyIHJpbmRleAotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0lOREVYCi0jaWZkZWYgSEFWRV9TVFJDSFIKLSNpZmRlZiBtaW5ndzMyCi0jIGRlZmluZSBpbmRleChhLGIpIHN0cmNocihhLGIpCi0jIGRlZmluZSByaW5kZXgoYSxiKSBzdHJyY2hyKGEsYikKLSNlbHNlCi0jIGRlZmluZSBpbmRleCBzdHJjaHIKLSMgZGVmaW5lIHJpbmRleCBzdHJyY2hyCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NRU1DUFkKLSNpZmRlZiBIQVZFX0JDT1BZCi0jIGRlZmluZSBtZW1jcHkoZCwgcywgbikgYmNvcHkgKChzKSwgKGQpLCAobikpCi0jIGRlZmluZSBtZW1tb3ZlKGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBkZWZpbmUgbWVtY21wIGJjbXAKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9NRU1NT1ZFCi0jaWZkZWYgSEFWRV9NRU1DUFkKLSMgZGVmaW5lIG1lbW1vdmUgbWVtY3B5Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfQkNPUFkKLSNpZmRlZiBIQVZFX01FTUNQWQotIyBkZWZpbmUgYmNvcHkocywgZCwgbikgbWVtY3B5ICgoZCksIChzKSwgKG4pKQotIyBkZWZpbmUgYnplcm8ocCxuKSBtZW1zZXQoKHApLCgwKSwobikpCi0jIGRlZmluZSBiY21wIG1lbWNtcAotI2VuZGlmCi0jZW5kaWYKLQogLyogSWYgeW91IGhhdmUgb3BlbnNzbCAwLjkuNyBvciBhYm92ZSwgeW91IGxpa2VseSBoYXZlIEFFUyBzdXBwb3J0LiAqLwogI3VuZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wKICNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0FFU19IKSAmJiBkZWZpbmVkKEhBVkVfQUVTX0NGQjEyOF9FTkNSWVBUKQpAQCAtMTMzMSwyNyArMTU3MCw2IEBACiAvKiBkZWZhdWx0IGxpc3Qgb2YgbWlicyB0byBsb2FkICovCiAjZGVmaW5lIE5FVFNOTVBfREVGQVVMVF9NSUJTICJJUC1NSUI6SUYtTUlCOlRDUC1NSUI6VURQLU1JQjpTTk1QdjItTUlCOlJGQzEyMTMtTUlCIgogCi0vKiBkZWZhdWx0IGxvY2F0aW9uIHRvIGxvb2sgZm9yIG1pYnMgdG8gbG9hZCB1c2luZyB0aGUgYWJvdmUgdG9rZW5zCi0gICBhbmQvb3IgdGhvc2UgaW4gdGhlIE1JQlMgZW52cmlvbm1lbnQgdmFyaWFibGUqLwotI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTCi0KLS8qIGRlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLiAqLwotI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUwotCi0vKiBzaG91bGQgd2UgY29tcGlsZSB0byB1c2Ugc3BlY2lhbCBvcGFxdWUgdHlwZXM6IGZsb2F0LCBkb3VibGUsCi0gICBjb3VudGVyNjQsIGk2NCwgdWk2NCwgdW5pb24/ICovCi0jdW5kZWYgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCi0KLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIHN1cHBvcnQgZm9yIGJvdGggYXV0aGVudGljYXRpb24gYW5kCi0gICBwcml2YWN5IHN1cHBvcnQuICovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYKLQotLyogZGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgdGhlIE1ENSBjb2RlIC4uLiovCi0jdW5kZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1Ci0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBjb2RlUzExIGxpYnJhcnkgLi4uKi8KLSN1bmRlZiBORVRTTk1QX1VTRV9QS0NTMTEKLQogLyogZGVidWdnaW5nIHN0dWZmICovCiAvKiBpZiBkZWZpbmVkLCB3ZSBvcHRpbWl6ZSB0aGUgY29kZSB0byBleGNsdWRlIGFsbCBkZWJ1Z2dpbmcgY2FsbHMuICovCiAjdW5kZWYgTkVUU05NUF9OT19ERUJVR0dJTkcKQEAgLTEzNjcsOSArMTU4NSw2IEBACiAgICBsaW5lczogUEVSU0lTVEVOVF9ESVJFQ1RPUlkvTkFNRS5wZXJzaXN0ZW50LmNvbmYgKi8KICNkZWZpbmUgTkVUU05NUF9QRVJTSVNURU5UX0RJUkVDVE9SWSAiL3Zhci9zbm1wIgogCi0vKiBQRVJTSVNURU5UX01BU0s6IHRoZSB1bWFzayBwZXJtaXNzaW9ucyB0byBzZXQgdXAgcGVyc2lzdGVudCBmaWxlcyB3aXRoICovCi0jZGVmaW5lIE5FVFNOTVBfUEVSU0lTVEVOVF9NQVNLIDA3NwotCiAvKiBBR0VOVF9ESVJFQ1RPUllfTU9ERTogdGhlIG1vZGUgdGhlIGFnZW50cyBzaG91bGQgdXNlIHRvIGNyZWF0ZQogICAgZGlyZWN0b3JpZXMgd2l0aC4gU2luY2UgdGhlIGRhdGEgc3RvcmVkIGhlcmUgaXMgcHJvYmFibHkgc2Vuc2l0aXZlLCBpdAogICAgcHJvYmFibHkgc2hvdWxkIGJlIHJlYWQtb25seSBieSByb290L2FkbWluaXN0cmF0b3IuICovCkBAIC0xNDE0LDE5ICsxNjI5LDYgQEAKIC8qIFVzZSBsaWJ3cmFwIHRvIGhhbmRsZSBhbGxvdy9kZW55IGhvc3RzPyAqLwogI3VuZGVmIE5FVFNOTVBfVVNFX0xJQldSQVAKIAotLyogdGVzdGluZyBjb2RlIHNlY3Rpb25zLiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAKLQotLyogSWYgeW91IGRvbid0IGhhdmUgcm9vdCBhY2Nlc3MgZG9uJ3QgZXhpdCB1cG9uIGttZW0gZXJyb3JzICovCi0jdW5kZWYgTkVUU05NUF9OT19ST09UX0FDQ0VTUwotCi0vKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLwotI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQotCi0vKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWdlbnQgdG8gcmVwb3J0IG9uIHZhcmlhYmxlcyBpdCBkb2Vzbid0IGhhdmUgZGF0YSBmb3IgKi8KLSN1bmRlZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwotCi0KIC8qIE1pYi0yIHRyZWUgSW5mbyAqLwogLyogVGhlc2UgYXJlIHRoZSBzeXN0ZW0gaW5mb3JtYXRpb24gdmFyaWFibGVzLiAqLwogCkBAIC0xNjIxLDkgKzE4MjMsNiBAQAogLyogaW50ZXJuYWwgZGVmaW5lICovCiAjZGVmaW5lIE5FVFNOTVBfTEFTVEZJRUxEIC0xCiAKLS8qIGNvbmZpZ3VyZSBvcHRpb25zIHNwZWNpZmllZCAqLwotI2RlZmluZSBORVRTTk1QX0NPTkZJR1VSRV9PUFRJT05TICIiCi0KIC8qICBQbHVnZ2FibGUgdHJhbnNwb3J0cy4gICovCiAKIC8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFVEUC9JUCB0cmFuc3BvcnQgZG9tYWluIGlzCkBAIC0xNjU4LDEwICsxODU3LDIyIEBACiAgICAgYXZhaWxhYmxlLiAgKi8KICN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTgogCi0vKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVRFAvSVAgdHJhbnNwb3J0IGRvbWFpbiBpcworLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgVExTIHRyYW5zcG9ydCBkb21haW4gaXMKICAgICBhdmFpbGFibGUuICAgKi8KICN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UTFNfRE9NQUlOCiAKKy8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIEFsaWFzIHRyYW5zcG9ydCBkb21haW4gaXMKKyAgICBhdmFpbGFibGUuICAgKi8KKyN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4KKworLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgU1NIIHRyYW5zcG9ydCBkb21haW4gaXMKKyAgICBhdmFpbGFibGUuICAgKi8KKyN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9TU0hfRE9NQUlOCisKKy8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIERUTFMvVURQIHRyYW5zcG9ydCBkb21haW4gaXMKKyAgICBhdmFpbGFibGUuICAgKi8KKyN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9EVExTVURQX0RPTUFJTgorCiAvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHN0ZGluL291dCB0cmFuc3BvcnQgZG9tYWluIGlzIGF2YWlsYWJsZS4gICAqLwogI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1NURF9ET01BSU4KIApAQCAtMTY3NCwxOCArMTg4NSw5IEBACiAvKiBkZWZpbmUgdGhpcyBpZiB0aGUgbG9jYWwgc2VjdXJpdHkgbW9kdWxlIGlzIGF2YWlsYWJsZSAqLwogI3VuZGVmIE5FVFNOTVBfU0VDTU9EX0xPQ0FMU00KIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggcmVlbnRyYW50L3RocmVhZGVkIGNvZGUgKGluY29tcGxldGUpKi8KLSN1bmRlZiBORVRTTk1QX1JFRU5UUkFOVAotCiAvKiBkZWZpbmUgaWYgY29uZmlndXJlZCBhcyBhICJtaW5pLWFnZW50IiAqLwogI3VuZGVmIE5FVFNOTVBfTUlOSV9BR0VOVAogCi0vKiBkZWZpbmUgaWYgeW91IGFyZSBlbWJlZGRpbmcgcGVybCBpbiB0aGUgbWFpbiBhZ2VudCAqLwotI3VuZGVmIE5FVFNOTVBfRU1CRURERURfUEVSTAotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgTUZEIG1vZHVsZSByZXdyaXRlcyovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCi0KIC8qIHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBuZXQtc25tcCBtaWIgdHJlZS4gIEl0IHNob3VsZG4ndCBiZQogICAgY2hhbmdlZCwgYXMgdGhlIHBsYWNlcyBpdCBpcyB1c2VkIGFyZSBleHBlY3RlZCB0byBiZSBjb25zdGFudAogICAgdmFsdWVzIG9yIGFyZSBkaXJlY3RseSB0aWVkIHRvIHRoZSBVQ0QtU05NUC1NSUIuICovCkBAIC0xNzUzLDI0ICsxOTU1LDYgQEAKICMgIGRlZmluZSBORVRTTk1QX0lNUE9SVCBleHRlcm4KICNlbmRpZgogCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydCAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLQotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0IGJ5IGRlZmF1bHQgKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9MT0NBTF9TTVVYCi0KLS8qIGRlZmluZSBpZiBhZ2VudHggdHJhbnNwb3J0IGlzIHRvIHVzZSBkb21haW4gc29ja2V0cyBvbmx5ICovCi0jdW5kZWYgTkVUU05NUF9BR0VOVFhfRE9NX1NPQ0tfT05MWQotCi0vKiBkZWZpbmUgaWYgeW91IGRvIG5vdCB3YW50IHNubXB0cmFwZCB0byByZWdpc3RlciBhcyBhbiBBZ2VudFggc3ViYWdlbnQgKi8KLSN1bmRlZiBORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWAotCi0vKiBkZWZpbmUgdGhpcyBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IE1JVCBjcnlwdG8gQVBJICovCi0jdW5kZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUCi0KLS8qIGRlZmluZSB0aGlzIGlmIHlvdSdyZSB1c2luZyBIZWltZGFsIEtlcmJlcm9zICovCi0jdW5kZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTAotCiAvKiBjb21tZW50IHRoZSBuZXh0IGxpbmUgaWYgeW91IGFyZSBjb21waWxpbmcgd2l0aCBsaWJzbm1wLmggCiAgICBhbmQgYXJlIG5vdCB1c2luZyB0aGUgVUMtRGF2aXMgU05NUCBsaWJyYXJ5LiAqLwogI2RlZmluZSBVQ0RfU05NUF9MSUJSQVJZIDEKQEAgLTE3NzksNyArMTk2Myw3IEBACiAjdW5kZWYgQ01VX0NPTVBBVElCTEUKIAogLyogZmluYWwgY29uY2x1c2lvbiBvbiBubGlzdCB1c2FnZSAqLwotI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChTVFJVQ1RfTkxJU1RfSEFTX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKKyNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQogI2RlZmluZSBORVRTTk1QX0NBTl9VU0VfTkxJU1QKICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKaW5kZXggNTNkYzdiOC4uM2FlYTA5NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2RlZmluaXRpb25zLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvc2Vzc2lvbl9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9wZHVfYXBpLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCmluZGV4IGEzYTFkZDYuLjg3YzEwMTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCkBAIC03LDYgKzcsMTkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworbmV0c25tcF9wZHUgICAgKnNubXBfcGR1X2NyZWF0ZShpbnQgdHlwZSk7CituZXRzbm1wX3BkdSAgICAqc25tcF9jbG9uZV9wZHUobmV0c25tcF9wZHUgKnBkdSk7CituZXRzbm1wX3BkdSAgICAqc25tcF9maXhfcGR1KCAgbmV0c25tcF9wZHUgKnBkdSwgaW50IGlkeCk7Cit2b2lkICAgICAgICAgICAgc25tcF9mcmVlX3BkdSggbmV0c25tcF9wZHUgKnBkdSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKaW5kZXggMzMyN2Y4OS4uOTA3YjdiOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaApAQCAtOCw2ICs4LDIzNCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19pbml0KG5ldHNubXBfc2Vzc2lvbiAqKTsKKworICAgIC8qCisgICAgICogbmV0c25tcF9zZXNzaW9uICpzbm1wX29wZW4oc2Vzc2lvbikKKyAgICAgKiAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgKgorICAgICAqIFNldHMgdXAgdGhlIHNlc3Npb24gd2l0aCB0aGUgc25tcF9zZXNzaW9uIGluZm9ybWF0aW9uIHByb3ZpZGVkCisgICAgICogYnkgdGhlIHVzZXIuICBUaGVuIG9wZW5zIGFuZCBiaW5kcyB0aGUgbmVjZXNzYXJ5IFVEUCBwb3J0LgorICAgICAqIEEgaGFuZGxlIHRvIHRoZSBjcmVhdGVkIHNlc3Npb24gaXMgcmV0dXJuZWQgKHRoaXMgaXMgZGlmZmVyZW50IHRoYW4KKyAgICAgKiB0aGUgcG9pbnRlciBwYXNzZWQgdG8gc25tcF9vcGVuKCkpLiAgT24gYW55IGVycm9yLCBOVUxMIGlzIHJldHVybmVkCisgICAgICogYW5kIHNubXBfZXJybm8gaXMgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorICAgICAqLworICAgIG5ldHNubXBfc2Vzc2lvbiAqc25tcF9vcGVuKG5ldHNubXBfc2Vzc2lvbiAqKTsKKworICAgIC8qCisgICAgICogaW50IHNubXBfY2xvc2Uoc2Vzc2lvbikKKyAgICAgKiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOworICAgICAqCisgICAgICogQ2xvc2UgdGhlIGlucHV0IHNlc3Npb24uICBGcmVlcyBhbGwgZGF0YSBhbGxvY2F0ZWQgZm9yIHRoZSBzZXNzaW9uLAorICAgICAqIGRlcXVldWVzIGFueSBwZW5kaW5nIHJlcXVlc3RzLCBhbmQgY2xvc2VzIGFueSBzb2NrZXRzIGFsbG9jYXRlZCBmb3IKKyAgICAgKiB0aGUgc2Vzc2lvbi4gIFJldHVybnMgMCBvbiBlcnJvciwgMSBvdGhlcndpc2UuCisgICAgICoKKyAgICAgKiBzbm1wX2Nsb3NlX3Nlc3Npb25zKCkgZG9lcyB0aGUgc2FtZSB0aGluZyBmb3IgYWxsIG9wZW4gc2Vzc2lvbnMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9zZShuZXRzbm1wX3Nlc3Npb24gKik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfY2xvc2Vfc2Vzc2lvbnModm9pZCk7CisKKworICAgIC8qCisgICAgICogaW50IHNubXBfc2VuZChzZXNzaW9uLCBwZHUpCisgICAgICogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgKiAgICAgbmV0c25tcF9wZHUgICAgICAqcGR1OworICAgICAqCisgICAgICogU2VuZHMgdGhlIGlucHV0IHBkdSBvbiB0aGUgc2Vzc2lvbiBhZnRlciBjYWxsaW5nIHNubXBfYnVpbGQgdG8gY3JlYXRlCisgICAgICogYSBzZXJpYWxpemVkIHBhY2tldC4gIElmIG5lY2Vzc2FyeSwgc2V0IHNvbWUgb2YgdGhlIHBkdSBkYXRhIGZyb20gdGhlCisgICAgICogc2Vzc2lvbiBkZWZhdWx0cy4gIEFkZCBhIHJlcXVlc3QgY29ycmVzcG9uZGluZyB0byB0aGlzIHBkdSB0byB0aGUgbGlzdAorICAgICAqIG9mIG91dHN0YW5kaW5nIHJlcXVlc3RzIG9uIHRoaXMgc2Vzc2lvbiwgdGhlbiBzZW5kIHRoZSBwZHUuCisgICAgICogUmV0dXJucyB0aGUgcmVxdWVzdCBpZCBvZiB0aGUgZ2VuZXJhdGVkIHBhY2tldCBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2UgMS4KKyAgICAgKiBPbiBhbnkgZXJyb3IsIDAgaXMgcmV0dXJuZWQuCisgICAgICogVGhlIHBkdSBpcyBmcmVlZCBieSBzbm1wX3NlbmQoKSB1bmxlc3MgYSBmYWlsdXJlIG9jY3VyZWQuCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2VuZChuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF9wZHUgKik7CisKKyAgICAvKgorICAgICAqIGludCBzbm1wX2FzeW5jX3NlbmQoc2Vzc2lvbiwgcGR1LCBjYWxsYmFjaywgY2JfZGF0YSkKKyAgICAgKiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOworICAgICAqICAgICBuZXRzbm1wX3BkdSAgICAgICpwZHU7CisgICAgICogICAgIG5ldHNubXBfY2FsbGJhY2sgY2FsbGJhY2s7CisgICAgICogICAgIHZvaWQgICAqY2JfZGF0YTsKKyAgICAgKgorICAgICAqIFNlbmRzIHRoZSBpbnB1dCBwZHUgb24gdGhlIHNlc3Npb24gYWZ0ZXIgY2FsbGluZyBzbm1wX2J1aWxkIHRvIGNyZWF0ZQorICAgICAqIGEgc2VyaWFsaXplZCBwYWNrZXQuICBJZiBuZWNlc3NhcnksIHNldCBzb21lIG9mIHRoZSBwZHUgZGF0YSBmcm9tIHRoZQorICAgICAqIHNlc3Npb24gZGVmYXVsdHMuICBBZGQgYSByZXF1ZXN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwZHUgdG8gdGhlIGxpc3QKKyAgICAgKiBvZiBvdXRzdGFuZGluZyByZXF1ZXN0cyBvbiB0aGlzIHNlc3Npb24gYW5kIHN0b3JlIGNhbGxiYWNrIGFuZCBkYXRhLAorICAgICAqIHRoZW4gc2VuZCB0aGUgcGR1LgorICAgICAqIFJldHVybnMgdGhlIHJlcXVlc3QgaWQgb2YgdGhlIGdlbmVyYXRlZCBwYWNrZXQgaWYgYXBwbGljYWJsZSwgb3RoZXJ3aXNlIDEuCisgICAgICogT24gYW55IGVycm9yLCAwIGlzIHJldHVybmVkLgorICAgICAqIFRoZSBwZHUgaXMgZnJlZWQgYnkgc25tcF9zZW5kKCkgdW5sZXNzIGEgZmFpbHVyZSBvY2N1cmVkLgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX2FzeW5jX3NlbmQobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhbGxiYWNrLCB2b2lkICopOworCisKKyAgICAvKgorICAgICAqIHZvaWQgc25tcF9yZWFkKGZkc2V0KQorICAgICAqICAgICBmZF9zZXQgICpmZHNldDsKKyAgICAgKgorICAgICAqIENoZWNrcyB0byBzZWUgaWYgYW55IG9mIHRoZSBmZCdzIHNldCBpbiB0aGUgZmRzZXQgYmVsb25nIHRvCisgICAgICogc25tcC4gIEVhY2ggc29ja2V0IHdpdGggaXQncyBmZCBzZXQgaGFzIGEgcGFja2V0IHJlYWQgZnJvbSBpdAorICAgICAqIGFuZCBzbm1wX3BhcnNlIGlzIGNhbGxlZCBvbiB0aGUgcGFja2V0IHJlY2VpdmVkLiAgVGhlIHJlc3VsdGluZyBwZHUKKyAgICAgKiBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIHJvdXRpbmUgZm9yIHRoYXQgc2Vzc2lvbi4gIElmIHRoZSBjYWxsYmFjaworICAgICAqIHJvdXRpbmUgcmV0dXJucyBzdWNjZXNzZnVsbHksIHRoZSBwZHUgYW5kIGl0J3MgcmVxdWVzdCBhcmUgZGVsZXRlZC4KKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9yZWFkKGZkX3NldCAqKTsKKworICAgIC8qCisgICAgICogc25tcF9yZWFkMigpIGlzIHNpbWlsYXIgdG8gc25tcF9yZWFkKCksIGJ1dCBhY2NlcHRzIGEgcG9pbnRlciB0byBhCisgICAgICogbGFyZ2UgZmlsZSBkZXNjcmlwdG9yIHNldCBpbnN0ZWFkIG9mIGEgcG9pbnRlciB0byBhIHJlZ3VsYXIgZmlsZQorICAgICAqIGRlc2NyaXB0b3Igc2V0LgorICAgICAqLworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3JlYWQyKG5ldHNubXBfbGFyZ2VfZmRfc2V0ICopOworCisKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zeW5jaF9yZXNwb25zZShuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF9wZHUgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqKik7CisKKyAgICAvKgorICAgICAqIGludCBzbm1wX3NlbGVjdF9pbmZvKG51bWZkcywgZmRzZXQsIHRpbWVvdXQsIGJsb2NrKQorICAgICAqIGludCAqbnVtZmRzOworICAgICAqIGZkX3NldCAgICpmZHNldDsKKyAgICAgKiBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dDsKKyAgICAgKiBpbnQgKmJsb2NrOworICAgICAqCisgICAgICogUmV0dXJucyBpbmZvIGFib3V0IHdoYXQgc25tcCByZXF1aXJlcyBmcm9tIGEgc2VsZWN0IHN0YXRlbWVudC4KKyAgICAgKiBudW1mZHMgaXMgdGhlIG51bWJlciBvZiBmZHMgaW4gdGhlIGxpc3QgdGhhdCBhcmUgc2lnbmlmaWNhbnQuCisgICAgICogQWxsIGZpbGUgZGVzY3JpcHRvcnMgb3BlbmVkIGZvciBTTk1QIGFyZSBPUidkIGludG8gdGhlIGZkc2V0LgorICAgICAqIElmIGFjdGl2aXR5IG9jY3VycyBvbiBhbnkgb2YgdGhlc2UgZmlsZSBkZXNjcmlwdG9ycywgc25tcF9yZWFkCisgICAgICogc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoYXQgZmlsZSBkZXNjcmlwdG9yIHNldC4KKyAgICAgKgorICAgICAqIFRoZSB0aW1lb3V0IGlzIHRoZSBsYXRlc3QgdGltZSB0aGF0IFNOTVAgY2FuIHdhaXQgZm9yIGEgdGltZW91dC4gIFRoZQorICAgICAqIHNlbGVjdCBzaG91bGQgYmUgZG9uZSB3aXRoIHRoZSBtaW5pbXVtIHRpbWUgYmV0d2VlbiB0aW1lb3V0IGFuZCBhbnkgb3RoZXIKKyAgICAgKiB0aW1lb3V0cyBuZWNlc3NhcnkuICBUaGlzIHNob3VsZCBiZSBjaGVja2VkIHVwb24gZWFjaCBpbnZvY2F0aW9uIG9mIHNlbGVjdC4KKyAgICAgKiBJZiBhIHRpbWVvdXQgaXMgcmVjZWl2ZWQsIHNubXBfdGltZW91dCBzaG91bGQgYmUgY2FsbGVkIHRvIGNoZWNrIGlmIHRoZQorICAgICAqIHRpbWVvdXQgd2FzIGZvciBTTk1QLiAgKHNubXBfdGltZW91dCBpcyBpZGVtcG90ZW50KQorICAgICAqCisgICAgICogQmxvY2sgaXMgMSBpZiB0aGUgc2VsZWN0IGlzIHJlcXVlc3RlZCB0byBibG9jayBpbmRlZmluaXRlbHksIHJhdGhlciB0aGFuCisgICAgICogdGltZSBvdXQuICBJZiBibG9jayBpcyBpbnB1dCBhcyAxLCB0aGUgdGltZW91dCB2YWx1ZSB3aWxsIGJlIHRyZWF0ZWQgYXMKKyAgICAgKiB1bmRlZmluZWQsIGJ1dCBpdCBtdXN0IGJlIGF2YWlsYWJsZSBmb3Igc2V0dGluZyBpbiBzbm1wX3NlbGVjdF9pbmZvLiAgT24KKyAgICAgKiByZXR1cm4sIGlmIGJsb2NrIGlzIHRydWUsIHRoZSB2YWx1ZSBvZiB0aW1lb3V0IHdpbGwgYmUgdW5kZWZpbmVkLgorICAgICAqCisgICAgICogc25tcF9zZWxlY3RfaW5mbyByZXR1cm5zIHRoZSBudW1iZXIgb2Ygb3BlbiBzb2NrZXRzLiAgKGkuZS4gVGhlIG51bWJlcgorICAgICAqIG9mIHNlc3Npb25zIG9wZW4pCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2VsZWN0X2luZm8oaW50ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqKTsKKworICAgIC8qCisgICAgICogc25tcF9zZWxlY3RfaW5mbzIoKSBpcyBzaW1pbGFyIHRvIHNubXBfc2VsZWN0X2luZm8oKSwgYnV0IGFjY2VwdHMgYQorICAgICAqIHBvaW50ZXIgdG8gYSBsYXJnZSBmaWxlIGRlc2NyaXB0b3Igc2V0IGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEKKyAgICAgKiByZWd1bGFyIGZpbGUgZGVzY3JpcHRvciBzZXQuCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2VsZWN0X2luZm8yKGludCAqLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqLCBpbnQgKik7CisKKworICAgIC8qCisgICAgICogdm9pZCBzbm1wX3RpbWVvdXQoKTsKKyAgICAgKgorICAgICAqIHNubXBfdGltZW91dCBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSB0aW1lb3V0IGZyb20gc25tcF9zZWxlY3RfaW5mbworICAgICAqIGV4cGlyZXMsIGJ1dCBpdCBpcyBpZGVtcG90ZW50LCBzbyBzbm1wX3RpbWVvdXQgY2FuIGJlIHBvbGxlZCAocHJvYmFibHkgYQorICAgICAqIGNwdSBleHBlbnNpdmUgcHJvcG9zaXRpb24pLiAgc25tcF90aW1lb3V0IGNoZWNrcyB0byBzZWUgaWYgYW55IG9mIHRoZQorICAgICAqIHNlc3Npb25zIGhhdmUgYW4gb3V0c3RhbmRpbmcgcmVxdWVzdCB0aGF0IGhhcyB0aW1lZCBvdXQuICBJZiBpdCBmaW5kcyBvbmUKKyAgICAgKiAob3IgbW9yZSksIGFuZCB0aGF0IHBkdSBoYXMgbW9yZSByZXRyaWVzIGF2YWlsYWJsZSwgYSBuZXcgcGFja2V0IGlzIGZvcm1lZAorICAgICAqIGZyb20gdGhlIHBkdSBhbmQgaXMgcmVzZW50LiAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgcmV0cmllcyBhdmFpbGFibGUsIHRoZQorICAgICAqIGNhbGxiYWNrIGZvciB0aGUgc2Vzc2lvbiBpcyB1c2VkIHRvIGFsZXJ0IHRoZSB1c2VyIG9mIHRoZSB0aW1lb3V0LgorICAgICAqLworCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfdGltZW91dCh2b2lkKTsKKworICAgIC8qCisgICAgICogc25tcF9lcnJvciAtIHJldHVybiBlcnJvciBkYXRhCisgICAgICogSW5wdXRzIDogIGFkZHJlc3Mgb2YgZXJybm8sIGFkZHJlc3Mgb2Ygc25tcF9lcnJubywgYWRkcmVzcyBvZiBzdHJpbmcKKyAgICAgKiBDYWxsZXIgbXVzdCBmcmVlIHRoZSBzdHJpbmcgcmV0dXJuZWQgYWZ0ZXIgdXNlLgorICAgICAqLworICAgIHZvaWQgICAgICAgICAgICBzbm1wX2Vycm9yKG5ldHNubXBfc2Vzc2lvbiAqLCBpbnQgKiwgaW50ICosIGNoYXIgKiopOworCisgICAgLyoKKyAgICAgKiBzaW5nbGUgc2Vzc2lvbiBBUEkuCisgICAgICoKKyAgICAgKiBUaGVzZSBmdW5jdGlvbnMgcGVyZm9ybSBzaW1pbGFyIGFjdGlvbnMgYXMgc25tcF9YWCBmdW5jdGlvbnMsCisgICAgICogYnV0IG9wZXJhdGUgb24gYSBzaW5nbGUgc2Vzc2lvbiBvbmx5LgorICAgICAqCisgICAgICogU3lub3BzaXM6CisgICAgIAorICAgICB2b2lkICogc2Vzc3A7CisgICAgIG5ldHNubXBfc2Vzc2lvbiBzZXNzaW9uLCAqc3M7CisgICAgIG5ldHNubXBfcGR1ICpwZHUsICpyZXNwb25zZTsKKyAgICAgCisgICAgIHNubXBfc2Vzc19pbml0KCZzZXNzaW9uKTsKKyAgICAgc2Vzc2lvbi5yZXRyaWVzID0gLi4uCisgICAgIHNlc3Npb24ucmVtb3RlX3BvcnQgPSAuLi4KKyAgICAgc2Vzc3AgPSBzbm1wX3Nlc3Nfb3Blbigmc2Vzc2lvbik7CisgICAgIHNzID0gc25tcF9zZXNzX3Nlc3Npb24oc2Vzc3ApOworICAgICBpZiAoc3MgPT0gTlVMTCkKKyAgICAgZXhpdCgxKTsKKyAgICAgLi4uCisgICAgIGlmIChzcy0+Y29tbXVuaXR5KSBmcmVlKHNzLT5jb21tdW5pdHkpOworICAgICBzcy0+Y29tbXVuaXR5ID0gc3RyZHVwKGdhdGV3YXkpOworICAgICBzcy0+Y29tbXVuaXR5X2xlbiA9IHN0cmxlbihnYXRld2F5KTsKKyAgICAgLi4uCisgICAgIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzZXNzcCwgcGR1LCAmcmVzcG9uc2UpOworICAgICAuLi4KKyAgICAgc25tcF9zZXNzX2Nsb3NlKHNlc3NwKTsKKyAgICAgCisgICAgICogU2VlIGFsc286CisgICAgICogc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlLCBpbiBzbm1wX2NsaWVudC5oLgorICAgICAKKyAgICAgKiBOb3RlczoKKyAgICAgKiAgMS4gSW52b2tlIHNubXBfc2Vzc19zZXNzaW9uIGFmdGVyIHNubXBfc2Vzc19vcGVuLgorICAgICAqICAyLiBzbm1wX3Nlc3Nfc2Vzc2lvbiByZXR1cm4gdmFsdWUgaXMgYW4gb3BhcXVlIHBvaW50ZXIuCisgICAgICogIDMuIERvIE5PVCBmcmVlIG1lbW9yeSByZXR1cm5lZCBieSBzbm1wX3Nlc3Nfc2Vzc2lvbi4KKyAgICAgKiAgNC4gUmVwbGFjZSBzbm1wX3NlbmQoc3MscGR1KSB3aXRoIHNubXBfc2Vzc19zZW5kKHNlc3NwLHBkdSkKKyAgICAgKi8KKworICAgIHZvaWQgICAgICAgICAgICpzbm1wX3Nlc3Nfb3BlbihuZXRzbm1wX3Nlc3Npb24gKik7CisgICAgdm9pZCAgICAgICAgICAgKnNubXBfc2Vzc19wb2ludGVyKG5ldHNubXBfc2Vzc2lvbiAqKTsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNubXBfc2Vzc19zZXNzaW9uKHZvaWQgKik7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCh2b2lkICopOworCisKKyAgICAvKgorICAgICAqIHVzZSByZXR1cm4gdmFsdWUgZnJvbSBzbm1wX3Nlc3Nfb3BlbiBhcyB2b2lkICogcGFyYW1ldGVyIAorICAgICAqLworCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zZW5kKHZvaWQgKiwgbmV0c25tcF9wZHUgKik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19hc3luY19zZW5kKHZvaWQgKiwgbmV0c25tcF9wZHUgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWxsYmFjaywgdm9pZCAqKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3NlbGVjdF9pbmZvKHZvaWQgKiwgaW50ICosIGZkX3NldCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKiwgaW50ICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8yKHZvaWQgKiwgaW50ICosCisJCQkJCSAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKiwgaW50ICopOworICAgIC8qCisgICAgICogUmV0dXJucyAwIGlmIHN1Y2Nlc3MsIC0xIGlmIGZhaWwuCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19yZWFkKHZvaWQgKiwgZmRfc2V0ICopOworICAgIC8qCisgICAgICogU2ltaWxhciB0byBzbm1wX3Nlc3NfcmVhZCgpLCBidXQgYWNjZXB0cyBhIHBvaW50ZXIgdG8gYSBsYXJnZSBmaWxlCisgICAgICogZGVzY3JpcHRvciBzZXQgaW5zdGVhZCBvZiBhIHBvaW50ZXIgdG8gYSBmaWxlIGRlc2NyaXB0b3Igc2V0LgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfcmVhZDIodm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKik7CisgICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc190aW1lb3V0KHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19jbG9zZSh2b2lkICopOworCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSh2b2lkICosIG5ldHNubXBfcGR1ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqKik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKwogICAgIC8qCiAgICAgICogIEZvciB0aGUgaW5pdGlhbCByZWxlYXNlLCB0aGlzIHdpbGwganVzdCByZWZlciB0byB0aGUKICAgICAgKiAgcmVsZXZhbnQgVUNEIGhlYWRlciBmaWxlcy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYWl4LmgKaW5kZXggNDMyNzJmMS4uMDJkNDk4MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYWl4LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYWl4LmgKQEAgLTIyLDMgKzIyLDYgQEAKIAogLyogZGVmaW5lIHRoZSBleHRyYSBtaWIgbW9kdWxlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCisKKy8qIHRoZSBsZWdhY3kgc3ltYm9sIE5PQUNDRVNTIGNsYXNoZXMgd2l0aCB0aGUgc3lzdGVtIGhlYWRlcnMuIFJlbW92ZSBpdC4gKi8KKyNkZWZpbmUgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaAppbmRleCA2MmQ4ZDMwLi5iNTU2ZDkwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oCkBAIC0zLDYgKzMsMTYgQEAKICAqIHN1YnN0YW50aWFsbHkgZW5vdWdoIHRvIG5vdCB3YXJyYW50IHByZXRlbmRpbmcgaXQgaXMgYSBCU0QgZmxhdm9yLgogICogVGhpcyBmaXJzdCBzZWN0aW9uIGFyZSB0aGUgdmVzdGlnYWwgQlNEIHJlbW5hbnRzLgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogLyoKICAqIEJTRCBzeXN0ZW1zIHVzZSBhIGRpZmZlcmVudCBtZXRob2Qgb2YgbG9va2luZyB1cCBzb2NrYWRkcl9pbiB2YWx1ZXMgCkBAIC0zNSw2ICs0NSw5IEBACiAgKiBUaGlzIHNlY3Rpb24gZGVmaW5lcyBNYWMgT1MgWCAxMC41IChhbmQgbGF0ZXIpIHNwZWNpZmljIGFkZGl0aW9ucy4KICAqLwogI2RlZmluZSBkYXJ3aW4gOQorI2lmbmRlZiBkYXJ3aW45CisjICAgZGVmaW5lIGRhcndpbjkgZGFyd2luCisjZW5kaWYKIAogLyoKICAqIE1hYyBPUyBYIHNob3VsZCBvbmx5IHVzZSB0aGUgbW9kZXJuIEFQSSBhbmQgZGVmaW5pdGlvbnMuCkBAIC01MCw2ICs2MywxNCBAQAogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSUZUQUJMRV9SRVdSSVRFUwogCiAvKgorICogdXNlIG5ldyBob3N0IHJlc291cmNlcyBmaWxlcyBhcyB3ZWxsCisgKi8KKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCisjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVAorI2RlZmluZSBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTCAxCisKKy8qCiAgKiBFbmFibGluZyB0aGlzIHJlc3RyaWN0cyB0aGUgY29tcGlsZXIgdG8gbW9zdGx5IHB1YmxpYyBBUElzLgogICovCiAjaWZuZGVmIF9fQVBQTEVfQVBJX1NUUklDVF9DT05GT1JNQU5DRQpAQCAtMTIwLDYgKzE0MSwxMSBAQAogI3VuZGVmIFNUUlVDVF9pbjZwY2JfSEFTX2lucF92ZmxhZwogCiAvKgorICogdXRpbGl0eSBtYWNybyB1c2VkIGluIHNldmVyYWwgZGFyd2luIHNwZWNpZmljIGZpbGVzCisgKi8KKyNkZWZpbmUgU05NUF9DRlJlbGVhc2UoeCkgZG8geyBpZiAoeCkgeyBDRlJlbGVhc2UoeCk7IHggPSBOVUxMOyB9IH0gd2hpbGUoMCkKKworLyoKICAqIE1hYyBPUyBYIHJ1bnMgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLAogICogICB3aGljaCBoYW5kbGUgdWRwVGFibGUgaW5kZXggdmFsdWVzIGRpZmZlcmVudGx5CiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QuaAppbmRleCA0MTA4NDI5Li5hMzA2ODNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZC5oCkBAIC0yNCw2ICsyNCw0IEBACiAKIC8qIGRlZmluZSB0aGUgZXh0cmEgbWliIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkICovCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSUZUQUJMRV9SRVdSSVRFUwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaAppbmRleCBlZmJjNWIzLi4zNjljMWE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q1LmgKQEAgLTQsNSArNCw1IEBACiAKIC8qIGRvbid0IGRlZmluZSBfS0VSTkVMIG9uIEZyZWVCU0QgNS4zIGV2ZW4gaWYgY29uZmlndXJlIHRoaW5rcyB3ZSBuZWVkIGl0ICovCiAjaWZkZWYgZnJlZWJzZDUKLSN1bmRlZiBJRk5FVF9ORUVEU19LRVJORUwKKyN1bmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmgKaW5kZXggMGI2MjdlOS4uNTdjZWE0MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2hwdXguaApAQCAtODAsNSArODAsMTUgQEAKICMgIGRlZmluZSBORVRTTk1QX0VOQUJMRV9JTkxJTkUgMAogI2VuZGlmCiAKKy8qCisgKiBwcmV2ZW50IHNpZ2FjdGlvbiBiZWluZyByZWRlZmluZWQgdG8gY21hX3NpZ2FjdGlvbgorICogKGNhdXNpbmcgYnVpbGQgZXJyb3JzIG9uIEhQLVVYIDEwLjIwLCBhdCBsZWFzdCkKKyAqLworI2lmZGVmIGhwdXgxMAorI2lmbmRlZiBfQ01BX05PV1JBUFBFUlNfCisjICBkZWZpbmUgX0NNQV9OT1dSQVBQRVJTXyAxCisjZW5kaWYKKyNlbmRpZgorCiAvKiBkZWZpbmUgdGhlIGV4dHJhIG1pYiBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2lyaXguaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2lyaXguaAppbmRleCA3OWQ0MWE4Li45MzNmZTYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9pcml4LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oCkBAIC0yMyw3ICsyMyw3IEBACiAvKgogICogZG9uJ3QgZGVmaW5lIF9LRVJORUwgYmVmb3JlIGluY2x1ZGluZyBzeXMvdW5pc3RkLmggCiAgKi8KLSNkZWZpbmUgSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUgIDEKKyNkZWZpbmUgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfTEFURSAgMQogCiAjZGVmaW5lIFNUUkVBTV9ORUVEU19LRVJORUxfSVNMQU5EUwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9rZnJlZWJzZC5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmY3MDI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaApAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlICJmcmVlYnNkNi5oIgorI2RlZmluZSBmcmVlYnNkNiBmcmVlYnNkNgorCisjaW5jbHVkZSA8b3NyZWxkYXRlLmg+CisjZGVmaW5lIF9fRnJlZUJTRF92ZXJzaW9uIF9fRnJlZUJTRF9rZXJuZWxfdmVyc2lvbgorCisjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CisjaW5jbHVkZSA8c3lzL190eXBlcy5oPgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oCmluZGV4IDEzYWQ3ZWEuLmM2NzI2MGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oCkBAIC00NCwzICs0NCw0IEBACiAKIC8qIGRlZmluZSB0aGUgZXh0cmEgbWliIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkICovCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSUZUQUJMRV9SRVdSSVRFUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oCmluZGV4IDcxNjc5NGMuLjhkYjBlYWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgKQEAgLTE1LDYgKzE1LDQgQEAKIAogLyogZGVmaW5lIHRoZSBleHRyYSBtaWIgbW9kdWxlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9JRlRBQkxFX1JFV1JJVEVTCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaAppbmRleCBkM2RjYjcyLi5lYzYxYzM5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oCkBAIC0yNSwxNCArMjUsOSBAQAogI2RlZmluZSBVRFBfUE9SVFNfSU5fSE9TVF9PUkRFUiAxCiAjZGVmaW5lIFRDUF9QT1JUU19JTl9IT1NUX09SREVSIDEKIAotLyogZ2V0IHNvbWUgcmVxdWlyZWQgcHJvdG90eXBlcyAoc3RydG9rX3IpIGZyb20gaW5jbHVkZSBmaWxlcyAqLwotI2RlZmluZSBfX0VYVEVOU0lPTlNfXwotCiAvKiBkZWZpbmUgdGhlIGV4dHJhIG1pYiBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKLSNpZmRlZiBORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKLSNlbmRpZgogCiAvKiBTb2xhcmlzIDIuNisgKi8KICNkZWZpbmUgX1NMQVNIX1BST0NfTUVUSE9EXyAxCkBAIC00Myw2ICszOCw2IEBACiAvKgogICogTkVXX01JQl9DT01QTElBTlQgaXMgYSBkZWZpbmUgdXNlZCBpbiBTb2xhcmlzIDEwVTQrIHRvIGVuYWJsZSBhZGRpdGlvbmFsCiAgKiBNSUIgaW5mb3JtYXRpb24gKGl0IGFmZmVjdHMgdGhlIHN0cnVjdHMgaW4gPGluZXQvbWliMi5oPikKLSAqLwotCisgKi8gCisgCiAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1LmgKaW5kZXggYzRhOWY5YS4uMDE3YzdjMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3ZyNS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N2cjUuaApAQCAtNywxOCArNywxMiBAQAogLyoKICAqIHVzaW5nIENDUyAiY2MiLCAiY29uZmlndXJlIiBkb2VzIG5vdCBmaW5kIHRoaXMgaXRlbSAKICAqLwotI2RlZmluZSBIQVZFX01FTUNQWSAxCi0vKgotICogc28sIHVuZG8gdGhlIGRhbWFnZSBkb25lIGVhcmxpZXIgaW4gY29uZmlnLmggCi0gKi8KLSN1bmRlZiBtZW1jcHkKLSN1bmRlZiBtZW1tb3ZlCiAjZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRSAxCiAKIC8qCiAgKiBsaWUgYWJvdXQgdGhpcyBuZXh0IGRlZmluZSB0byBhdm9pZCBzYV9sZW4gYW5kIHNhX2ZhbWlseSBNQUNST1MgISEgCiAgKi8KLSNkZWZpbmUgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIgMQorI2RlZmluZSBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIgMQogCiAvKgogICogdGhpcyBoZWFkZXIgcmVxdWlyZXMgcXVldWVfdCwgbm90IGVhc2lseSBkb25lIHdpdGhvdXQga2VybmVsIGhlYWRlcnMgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggYi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKaW5kZXggZDkwZGYwNzUuLjI5MzBjYzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTk4LDE0MiArOTgsMTAgQEAKICNlbmRpZgogI2VuZGlmCiAKLSAgICAvKgotICAgICAqIFRyeSB0byBlbnN1cmUgd2UgaGF2ZSAzMi1iaXQgKGFuZCBob3BlZnVsbHkgNjQtYml0KQotICAgICAqICAgIGludGVnZXIgdHlwZXMgYXZhaWxhYmxlLgotICAgICAqLwotCi0jaWZuZGVmIEhBVkVfSU5UOF9UCi10eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsKLSNlbmRpZiAvKiAhSEFWRV9JTlQ4X1QgKi8KLQotI2lmbmRlZiBIQVZFX1VJTlQ4X1QKLSNpZmRlZiBIQVZFX1VfSU5UOF9UCi10eXBlZGVmIHVfaW50OF90ICAgICAgdWludDhfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKLSNlbmRpZgotI2VuZGlmIC8qICFIQVZFX1VJTlQ4X1QgKi8KLQotI2lmbmRlZiBIQVZFX0lOVDE2X1QKLSNpZiAgIFNJWkVPRl9JTlQgPT0gMgotI2RlZmluZSBJTlQxNl9UIGludAotI2VsaWYgU0laRU9GX1NIT1JUID09IDIKLSNkZWZpbmUgSU5UMTZfVCBzaG9ydAotI2Vsc2UKLSNkZWZpbmUgX0lOVDE2X0lTX05PVF8xNkJJVAotI2RlZmluZSBJTlQxNl9UIHNob3J0Ci0jZW5kaWYKLXR5cGVkZWYgSU5UMTZfVCBpbnQxNl90OwotI2VuZGlmIC8qICFIQVZFX0lOVDE2X1QgKi8KLQotI2lmbmRlZiBIQVZFX1VJTlQxNl9UCi0jaWZkZWYgSEFWRV9VX0lOVDE2X1QKLXR5cGVkZWYgdV9pbnQxNl90ICAgICAgICB1aW50MTZfdDsKLSNlbHNlCi0jaWZkZWYgSU5UMTZfVAotdHlwZWRlZiB1bnNpZ25lZCBJTlQxNl9UIHVpbnQxNl90OwotI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICB1aW50MTZfdDsKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfVUlOVDE2X1QgKi8KLQotI2lmbmRlZiBIQVZFX0lOVDMyX1QKLSNpZiAgIFNJWkVPRl9JTlQgPT0gNAotI2RlZmluZSBJTlQzMl9UIGludCAKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSU5UMzJfVCBsb25nIAotI2VsaWYgU0laRU9GX1NIT1JUID09IDQKLSNkZWZpbmUgSU5UMzJfVCBzaG9ydCAKLSNlbHNlCi0jZGVmaW5lIF9JTlQzMl9JU19OT1RfMzJCSVQKLSNkZWZpbmUgSU5UMzJfVCBpbnQgCi0jZW5kaWYKLXR5cGVkZWYgSU5UMzJfVCBpbnQzMl90OwotI2VuZGlmIC8qICFIQVZFX0lOVDMyX1QgKi8KLQotI2lmbmRlZiBIQVZFX1VJTlQzMl9UCi0jaWZkZWYgSEFWRV9VX0lOVDMyX1QKLXR5cGVkZWYgdV9pbnQzMl90ICAgICAgICB1aW50MzJfdDsKLSNlbHNlCi0jaWZkZWYgSU5UMzJfVAotdHlwZWRlZiB1bnNpZ25lZCBJTlQzMl9UIHVpbnQzMl90OwotI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgICB1aW50MzJfdDsKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfVUlOVDMyX1QgKi8KLQotI2lmbmRlZiBIQVZFX0lOVDY0X1QKLSNpZiBTSVpFT0ZfTE9ORyA9PSA4Ci0jZGVmaW5lIElOVDY0X1QgbG9uZyAKLSNlbGlmIFNJWkVPRl9MT05HX0xPTkcgPT0gOAotI2RlZmluZSBJTlQ2NF9UIGxvbmcgbG9uZwotI2VsaWYgICBTSVpFT0ZfSU5UID09IDgKLSNkZWZpbmUgSU5UNjRfVCBpbnQgCi0jZWxpZiBTSVpFT0ZfTE9ORyA+PSA4Ci0jZGVmaW5lIElOVDY0X1QgbG9uZyAKLSNkZWZpbmUgX0lOVDY0X0lTX05PVF82NEJJVAotI2VuZGlmCi0jaWZkZWYgSU5UNjRfVAotdHlwZWRlZiBJTlQ2NF9UIGludDY0X3Q7Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZW5kaWYKLSNlbmRpZiAvKiAhSEFWRV9JTlQ2NF9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UNjRfVAotI2lmZGVmIEhBVkVfVV9JTlQ2NF9UCi10eXBlZGVmIHVfaW50NjRfdCAgICAgICAgdWludDY0X3Q7Ci0jZWxpZiBkZWZpbmVkKElOVDY0X1QpCi10eXBlZGVmIHVuc2lnbmVkIElOVDY0X1QgdWludDY0X3Q7Ci0jZW5kaWYKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCisjaWZuZGVmIEhBVkVfTkZEU19UCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IG5mZHNfdDsKICNlbmRpZgogCi0jaWZuZGVmIEhBVkVfSU5UTUFYX1QKLSNpZmRlZiBTSVpFT0ZfTE9OR19MT05HCi10eXBlZGVmIGxvbmcgbG9uZyBpbnRtYXhfdDsKLSNkZWZpbmUgU0laRU9GX0lOVE1BWF9UIFNJWkVPRl9MT05HX0xPTkcKLSNlbGlmIGRlZmluZWQoSEFWRV9JTlQ2NF9UKSAmJiAhZGVmaW5lZChfSU5UNjRfSVNfTk9UXzY0QklUKQotdHlwZWRlZiBpbnQ2NF90ICAgaW50bWF4X3Q7Ci0jZGVmaW5lIFNJWkVPRl9JTlRNQVhfVCA4Ci0jZWxzZQotdHlwZWRlZiBsb25nICAgICAgaW50bWF4X3Q7Ci0jZGVmaW5lIFNJWkVPRl9JTlRNQVhfVCBTSVpFT0ZfTE9ORwotI2VuZGlmCi0jZGVmaW5lIEhBVkVfSU5UTUFYX1QgMQotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9VSU5UTUFYX1QKLSNpZmRlZiBTSVpFT0ZfTE9OR19MT05HCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50bWF4X3Q7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfVUlOVDY0X1QpICYmICFkZWZpbmVkKF9JTlQ2NF9JU19OT1RfNjRCSVQpCi10eXBlZGVmIHVpbnQ2NF90ICAgICAgICAgICB1aW50bWF4X3Q7Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgdWludG1heF90OwotI2VuZGlmCi0jZGVmaW5lIEhBVkVfVUlOVE1BWF9UIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVUlOVFBUUl9UCi0jaWYgU0laRU9GX0xPTkcgPT0gOAotLyogbGlrZWx5IDY0Yml0IG1hY2hpbmUgd2l0aCA2NGJpdCBhZGRyZXNzaW5nPyAqLwotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7Ci0jZWxzZQotICAgIHR5cGVkZWYgdW5zaWduZWQgdWludHB0cl90OwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0lOVFBUUl9UCi0jaWYgU0laRU9GX0xPTkcgPT0gOAotLyogbGlrZWx5IDY0Yml0IG1hY2hpbmUgd2l0aCA2NGJpdCBhZGRyZXNzaW5nPyAqLwotICAgIHR5cGVkZWYgbG9uZyBpbnRwdHJfdDsKLSNlbHNlCi0gICAgdHlwZWRlZiBpbnQgaW50cHRyX3Q7Ci0jZW5kaWYKLSNlbmRpZgotICAgIAogICAgIC8qCiAgICAgICogIEZvciB0aGUgaW5pdGlhbCByZWxlYXNlLCB0aGlzIHdpbGwganVzdCByZWZlciB0byB0aGUKICAgICAgKiAgcmVsZXZhbnQgVUNEIGhlYWRlciBmaWxlcy4KQEAgLTI0NCw2OSArMTEyLDMwNiBAQAogICAgICAqICB0byBhbGxvdyBhcHBsaWNhdGlvbiB3cml0ZXJzIHRvIGFkb3B0IHRoZSBuZXcgaGVhZGVyIGZpbGUgbmFtZXMuCiAgICAgICovCiAKK3R5cGVkZWYgdW5pb24geworICAgbG9uZyAgICAgICAgICAgKmludGVnZXI7CisgICB1X2NoYXIgICAgICAgICAqc3RyaW5nOworICAgb2lkICAgICAgICAgICAgKm9iamlkOworICAgdV9jaGFyICAgICAgICAgKmJpdHN0cmluZzsKKyAgIHN0cnVjdCBjb3VudGVyNjQgKmNvdW50ZXI2NDsKKyNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKKyAgIGZsb2F0ICAgICAgICAgICpmbG9hdFZhbDsKKyAgIGRvdWJsZSAgICAgICAgICpkb3VibGVWYWw7CisgICAvKgorICAgICogdF91bmlvbiAqdW5pb25WYWw7IAorICAgICovCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUyAqLworfSBuZXRzbm1wX3ZhcmRhdGE7CiAKLSNpbmNsdWRlIDxuZXQtc25tcC9kZWZpbml0aW9ucy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KLS8qCi0gKiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmg+IAorCisjZGVmaW5lIE1BWF9PSURfTEVOCSAgICAxMjggLyogbWF4IHN1YmlkJ3MgaW4gYW4gb2lkICovCisKKy8qKiBAdHlwZWRlZiBzdHJ1Y3QgdmFyaWFibGVfbGlzdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QKKyAqIFR5cGVkZWZzIHRoZSB2YXJpYWJsZV9saXN0IHN0cnVjdCBpbnRvIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLworLyoqIEBzdHJ1Y3QgdmFyaWFibGVfbGlzdAorICogVGhlIG5ldHNubXAgdmFyaWFibGUgbGlzdCBiaW5kaW5nIHN0cnVjdHVyZSwgaXQncyB0eXBlZGVmJ2QgdG8KKyAqIG5ldHNubXBfdmFyaWFibGVfbGlzdC4KICAqLwotCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9pbmRleF9zIHsKLSAgICAgICBzaXplX3QgICAgICBsZW47Ci0gICAgICAgb2lkICAgICAgICAgKm9pZHM7Ci0gICAgfSBuZXRzbm1wX2luZGV4OwordHlwZWRlZiBzdHJ1Y3QgdmFyaWFibGVfbGlzdCB7CisgICAvKiogTlVMTCBmb3IgbGFzdCB2YXJpYWJsZSAqLworICAgc3RydWN0IHZhcmlhYmxlX2xpc3QgKm5leHRfdmFyaWFibGU7ICAgIAorICAgLyoqIE9iamVjdCBpZGVudGlmaWVyIG9mIHZhcmlhYmxlICovCisgICBvaWQgICAgICAgICAgICAqbmFtZTsgICAKKyAgIC8qKiBudW1iZXIgb2Ygc3ViaWQncyBpbiBuYW1lICovCisgICBzaXplX3QgICAgICAgICAgbmFtZV9sZW5ndGg7ICAgIAorICAgLyoqIEFTTiB0eXBlIG9mIHZhcmlhYmxlICovCisgICB1X2NoYXIgICAgICAgICAgdHlwZTsgICAKKyAgIC8qKiB2YWx1ZSBvZiB2YXJpYWJsZSAqLworICAgIG5ldHNubXBfdmFyZGF0YSB2YWw7CisgICAvKiogdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYmUgY29waWVkIGludG8gYnVmICovCisgICBzaXplX3QgICAgICAgICAgdmFsX2xlbjsKKyAgIC8qKiBidWZmZXIgdG8gaG9sZCB0aGUgT0lEICovCisgICBvaWQgICAgICAgICAgICAgbmFtZV9sb2NbTUFYX09JRF9MRU5dOyAgCisgICAvKiogOTAgcGVyY2VudGlsZSA8IDQwLiAqLworICAgdV9jaGFyICAgICAgICAgIGJ1Zls0MF07CisgICAvKiogKE9wYXF1ZSkgaG9vayBmb3IgYWRkaXRpb25hbCBkYXRhICovCisgICB2b2lkICAgICAgICAgICAqZGF0YTsKKyAgIC8qKiBjYWxsYmFjayB0byBmcmVlIGFib3ZlICovCisgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spKHZvaWQgKik7ICAgIAorICAgaW50ICAgICAgICAgICAgIGluZGV4OworfSBuZXRzbm1wX3ZhcmlhYmxlX2xpc3Q7CiAKIAotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfdm9pZF9hcnJheV9zIHsKLSAgICAgICBzaXplX3QgIHNpemU7Ci0gICAgICAgdm9pZCAqICphcnJheTsKLSAgICB9IG5ldHNubXBfdm9pZF9hcnJheTsKKy8qKiBAdHlwZWRlZiBzdHJ1Y3Qgc25tcF9wZHUgdG8gbmV0c25tcF9wZHUKKyAqIFR5cGVkZWZzIHRoZSBzbm1wX3BkdSBzdHJ1Y3QgaW50byBuZXRzbm1wX3BkdSAqLworLyoqIEBzdHJ1Y3Qgc25tcF9wZHUKKyAqIFRoZSBzbm1wIHByb3RvY29sIGRhdGEgdW5pdC4KKyAqLwkKK3R5cGVkZWYgc3RydWN0IHNubXBfcGR1IHsKKworI2RlZmluZSBub25fcmVwZWF0ZXJzCWVycnN0YXQKKyNkZWZpbmUgbWF4X3JlcGV0aXRpb25zIGVycmluZGV4CiAKICAgICAvKgotICAgICAqIHJlZmVyZW5jZXMgdG8gdmFyaW91cyB0eXBlcworICAgICAqIFByb3RvY29sLXZlcnNpb24gaW5kZXBlbmRlbnQgZmllbGRzCiAgICAgICovCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9yZWZfdm9pZCB7Ci0gICAgICAgdm9pZCAqIHZhbDsKLSAgICB9IG5ldHNubXBfcmVmX3ZvaWQ7CisgICAgLyoqIHNubXAgdmVyc2lvbiAqLworICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOworICAgIC8qKiBUeXBlIG9mIHRoaXMgUERVICovCQorICAgIGludCAgICAgICAgICAgICBjb21tYW5kOworICAgIC8qKiBSZXF1ZXN0IGlkIC0gbm90ZTogbm90IGluY3JlbWVudGVkIG9uIHJldHJpZXMgKi8KKyAgICBsb25nICAgICAgICAgICAgcmVxaWQ7ICAKKyAgICAvKiogTWVzc2FnZSBpZCBmb3IgVjMgbWVzc2FnZXMgbm90ZTogaW5jcmVtZW50ZWQgZm9yIGVhY2ggcmV0cnkgKi8KKyAgICBsb25nICAgICAgICAgICAgbXNnaWQ7CisgICAgLyoqIFVuaXF1ZSBJRCBmb3IgaW5jb21pbmcgdHJhbnNhY3Rpb25zICovCisgICAgbG9uZyAgICAgICAgICAgIHRyYW5zaWQ7CisgICAgLyoqIFNlc3Npb24gaWQgZm9yIEFnZW50WCBtZXNzYWdlcyAqLworICAgIGxvbmcgICAgICAgICAgICBzZXNzaWQ7CisgICAgLyoqIEVycm9yIHN0YXR1cyAobm9uX3JlcGVhdGVycyBpbiBHZXRCdWxrKSAqLworICAgIGxvbmcgICAgICAgICAgICBlcnJzdGF0OworICAgIC8qKiBFcnJvciBpbmRleCAobWF4X3JlcGV0aXRpb25zIGluIEdldEJ1bGspICovCisgICAgbG9uZyAgICAgICAgICAgIGVycmluZGV4OyAgICAgICAKKyAgICAvKiogVXB0aW1lICovCisgICAgdV9sb25nICAgICAgICAgIHRpbWU7ICAgCisgICAgdV9sb25nICAgICAgICAgIGZsYWdzOwogCi0gICAgdHlwZWRlZiB1bmlvbiB7Ci0gICAgICAgIHVfbG9uZyAgdWw7Ci0gICAgICAgIHVfaW50ICAgdWk7Ci0gICAgICAgIHVfc2hvcnQgdXM7Ci0gICAgICAgIHVfY2hhciAgdWM7Ci0gICAgICAgIGxvbmcgICAgc2w7Ci0gICAgICAgIGludCAgICAgc2k7Ci0gICAgICAgIHNob3J0ICAgc3M7Ci0gICAgICAgIGNoYXIgICAgc2M7Ci0gICAgICAgIGNoYXIgKiAgY3A7Ci0gICAgICAgIHZvaWQgKiAgdnA7Ci0gICAgfSBuZXRzbm1wX2N2YWx1ZTsKKyAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlNb2RlbDsKKyAgICAvKiogbm9BdXRoTm9Qcml2LCBhdXRoTm9Qcml2LCBhdXRoUHJpdiAqLworICAgIGludCAgICAgICAgICAgICBzZWN1cml0eUxldmVsOyAgCisgICAgaW50ICAgICAgICAgICAgIG1zZ1BhcnNlTW9kZWw7CiAKLSNpZiAwCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9yZWZfdV9jaGFyIHsKLSAgICAgICB1X2NoYXIgKiB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl9VX2NoYXI7CisgICAgLyoqCisgICAgICogVHJhbnNwb3J0LXNwZWNpZmljIG9wYXF1ZSBkYXRhLiAgVGhpcyByZXBsYWNlcyB0aGUgSVAtY2VudHJpYyBhZGRyZXNzCisgICAgICogZmllbGQuICAKKyAgICAgKi8KKyAgICAKKyAgICB2b2lkICAgICAgICAgICAqdHJhbnNwb3J0X2RhdGE7CisgICAgaW50ICAgICAgICAgICAgIHRyYW5zcG9ydF9kYXRhX2xlbmd0aDsKIAotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX2NoYXIgewotICAgICAgIGNoYXIgKiB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl92b2lkOworICAgIC8qKgorICAgICAqIFRoZSBhY3R1YWwgdHJhbnNwb3J0IGRvbWFpbi4gIFRoaXMgU0hPVUxEIE5PVCBCRSBGUkVFKClELiAgCisgICAgICovCiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl9pbnRfcyB7Ci0gICAgICAgaW50IHZhbDsKLSAgICB9IG5ldHNubXBfcmVmX2ludDsKKyAgICBjb25zdCBvaWQgICAgICAqdERvbWFpbjsKKyAgICBzaXplX3QgICAgICAgICAgdERvbWFpbkxlbjsKIAotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3VfaW50X3MgewotICAgICAgIHVfaW50IHZhbDsKLSAgICB9IG5ldHNubXBfcmVmX2ludDsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcmlhYmxlczsKIAotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3VfbG9uZ19zIHsKLSAgICAgICB1X2xvbmcgdmFsOwotICAgIH0gbmV0c25tcF9yZWZfdV9sb25nOwotI2VuZGlmCiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl9zaXplX3RfcyB7Ci0gICAgICAgc2l6ZV90IHZhbDsKLSAgICB9ICogbmV0c25tcF9yZWZfc2l6ZV90OworICAgIC8qCisgICAgICogU05NUHYxICYgU05NUHYyYyBmaWVsZHMKKyAgICAgKi8KKyAgICAvKiogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gKi8KKyAgICB1X2NoYXIgICAgICAgICAqY29tbXVuaXR5OworICAgIC8qKiBsZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuICovCisgICAgc2l6ZV90ICAgICAgICAgIGNvbW11bml0eV9sZW47ICAKKworICAgIC8qCisgICAgICogVHJhcCBpbmZvcm1hdGlvbgorICAgICAqLworICAgIC8qKiBTeXN0ZW0gT0lEICovCisgICAgb2lkICAgICAgICAgICAgKmVudGVycHJpc2U7ICAgICAKKyAgICBzaXplX3QgICAgICAgICAgZW50ZXJwcmlzZV9sZW5ndGg7CisgICAgLyoqIHRyYXAgdHlwZSAqLworICAgIGxvbmcgICAgICAgICAgICB0cmFwX3R5cGU7CisgICAgLyoqIHNwZWNpZmljIHR5cGUgKi8KKyAgICBsb25nICAgICAgICAgICAgc3BlY2lmaWNfdHlwZTsKKyAgICAvKiogVGhpcyBpcyBPTkxZIHVzZWQgZm9yIHYxIFRSQVBzICAqLworICAgIHVuc2lnbmVkIGNoYXIgICBhZ2VudF9hZGRyWzRdOyAgCisKKyAgICAvKgorICAgICAqICBTTk1QdjMgZmllbGRzCisgICAgICovCisgICAgLyoqIGNvbnRleHQgc25tcEVuZ2luZUlEICovCisgICAgdV9jaGFyICAgICAgICAgKmNvbnRleHRFbmdpbmVJRDsKKyAgICAvKiogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRCAqLworICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0RW5naW5lSURMZW47ICAgICAKKyAgICAvKiogYXV0aG9yaXRhdGl2ZSBjb250ZXh0TmFtZSAqLworICAgIGNoYXIgICAgICAgICAgICpjb250ZXh0TmFtZTsKKyAgICAvKiogTGVuZ3RoIG9mIGNvbnRleHROYW1lICovCisgICAgc2l6ZV90ICAgICAgICAgIGNvbnRleHROYW1lTGVuOworICAgIC8qKiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCBmb3Igc2VjdXJpdHkgKi8KKyAgICB1X2NoYXIgICAgICAgICAqc2VjdXJpdHlFbmdpbmVJRDsKKyAgICAvKiogTGVuZ3RoIG9mIHNlY3VyaXR5RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlFbmdpbmVJRExlbjsgICAgCisgICAgLyoqIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAqLworICAgIGNoYXIgICAgICAgICAgICpzZWN1cml0eU5hbWU7CisgICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eU5hbWUuICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5TmFtZUxlbjsgICAgICAgIAorICAgIAorICAgIC8qCisgICAgICogQWdlbnRYIGZpZWxkcworICAgICAqICAgICAgKGFsc28gdXNlcyBTTk1QdjEgY29tbXVuaXR5IGZpZWxkKQorICAgICAqLworICAgIGludCAgICAgICAgICAgICBwcmlvcml0eTsKKyAgICBpbnQgICAgICAgICAgICAgcmFuZ2Vfc3ViaWQ7CisgICAgCisgICAgdm9pZCAgICAgICAgICAgKnNlY3VyaXR5U3RhdGVSZWY7Cit9IG5ldHNubXBfcGR1OworCisKKy8qKiBAdHlwZWRlZiBzdHJ1Y3Qgc25tcF9zZXNzaW9uIG5ldHNubXBfc2Vzc2lvbgorICogVHlwZWRlZnMgdGhlIHNubXBfc2Vzc2lvbiBzdHJ1Y3QgaW50b25ldHNubXBfc2Vzc2lvbiAqLworICAgICAgICBzdHJ1Y3Qgc25tcF9zZXNzaW9uOwordHlwZWRlZiBzdHJ1Y3Qgc25tcF9zZXNzaW9uIG5ldHNubXBfc2Vzc2lvbjsKKworI2RlZmluZSBVU01fQVVUSF9LVV9MRU4gICAgIDMyCisjZGVmaW5lIFVTTV9QUklWX0tVX0xFTiAgICAgMzIKKwordHlwZWRlZiBpbnQgICAgICAgICgqc25tcF9jYWxsYmFjaykgKGludCwgbmV0c25tcF9zZXNzaW9uICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIHZvaWQgKik7Cit0eXBlZGVmIGludCAgICAgKCpuZXRzbm1wX2NhbGxiYWNrKSAoaW50LCBuZXRzbm1wX3Nlc3Npb24gKiwgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiwgdm9pZCAqKTsKKy8qKiBAc3RydWN0IHNubXBfc2Vzc2lvbgorICogVGhlIHNubXAgc2Vzc2lvbiBzdHJ1Y3R1cmUuCisgKi8KK3N0cnVjdCBzbm1wX3Nlc3Npb24geworICAgIC8qCisgICAgICogUHJvdG9jb2wtdmVyc2lvbiBpbmRlcGVuZGVudCBmaWVsZHMKKyAgICAgKi8KKyAgICAvKiogc25tcCB2ZXJzaW9uICovCisgICAgbG9uZyAgICAgICAgICAgIHZlcnNpb247CisgICAgLyoqIE51bWJlciBvZiByZXRyaWVzIGJlZm9yZSB0aW1lb3V0LiAqLworICAgIGludCAgICAgICAgICAgICByZXRyaWVzOworICAgIC8qKiBOdW1iZXIgb2YgdVMgdW50aWwgZmlyc3QgdGltZW91dCwgdGhlbiBleHBvbmVudGlhbCBiYWNrb2ZmICovCisgICAgbG9uZyAgICAgICAgICAgIHRpbWVvdXQ7ICAgICAgICAKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisgICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqc3Vic2Vzc2lvbjsKKyAgICBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpuZXh0OworCisgICAgLyoqIG5hbWUgb3IgYWRkcmVzcyBvZiBkZWZhdWx0IHBlZXIgKG1heSBpbmNsdWRlIHRyYW5zcG9ydCBzcGVjaWZpZXIgYW5kL29yIHBvcnQgbnVtYmVyKSAqLworICAgIGNoYXIgICAgICAgICAgICpwZWVybmFtZTsKKyAgICAvKiogVURQIHBvcnQgbnVtYmVyIG9mIHBlZXIuIChOTyBMT05HRVIgVVNFRCAtIFVTRSBwZWVybmFtZSBJTlNURUFEKSAqLworICAgIHVfc2hvcnQgICAgICAgICByZW1vdGVfcG9ydDsKKyAgICAvKiogTXkgRG9tYWluIG5hbWUgb3IgZG90dGVkIElQIGFkZHJlc3MsIDAgZm9yIGRlZmF1bHQgKi8KKyAgICBjaGFyICAgICAgICAgICAqbG9jYWxuYW1lOworICAgIC8qKiBNeSBVRFAgcG9ydCBudW1iZXIsIDAgZm9yIGRlZmF1bHQsIHBpY2tlZCByYW5kb21seSAqLworICAgIHVfc2hvcnQgICAgICAgICBsb2NhbF9wb3J0OyAgICAgCisgICAgLyoqCisgICAgICogQXV0aGVudGljYXRpb24gZnVuY3Rpb24gb3IgTlVMTCBpZiBudWxsIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQgCisgICAgICovCisgICAgdV9jaGFyICAgICAgICAgKigqYXV0aGVudGljYXRvcikgKHVfY2hhciAqLCBzaXplX3QgKiwgdV9jaGFyICosIHNpemVfdCk7CisgICAgLyoqIEZ1bmN0aW9uIHRvIGludGVycHJldCBpbmNvbWluZyBkYXRhICovCisgICAgbmV0c25tcF9jYWxsYmFjayBjYWxsYmFjazsgICAgICAKKyAgICAvKioKKyAgICAgKiBQb2ludGVyIHRvIGRhdGEgdGhhdCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gbWF5IGNvbnNpZGVyIGltcG9ydGFudCAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAqY2FsbGJhY2tfbWFnaWM7CisgICAgLyoqIGNvcHkgb2Ygc3lzdGVtIGVycm5vICovCisgICAgaW50ICAgICAgICAgICAgIHNfZXJybm87CisgICAgLyoqIGNvcHkgb2YgbGlicmFyeSBlcnJubyAqLworICAgIGludCAgICAgICAgICAgICBzX3NubXBfZXJybm87ICAgCisgICAgLyoqIFNlc3Npb24gaWQgLSBBZ2VudFggb25seSAqLworICAgIGxvbmcgICAgICAgICAgICBzZXNzaWQ7IAorCisgICAgLyoKKyAgICAgKiBTTk1QdjEgJiBTTk1QdjJjIGZpZWxkcworICAgICAqLworICAgIC8qKiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAqLworICAgIHVfY2hhciAgICAgICAgICpjb21tdW5pdHk7CisgICAgLyoqIExlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gKi8KKyAgICBzaXplX3QgICAgICAgICAgY29tbXVuaXR5X2xlbjsgIAorICAgIC8qKiAgTGFyZ2VzdCBtZXNzYWdlIHRvIHRyeSB0byByZWNlaXZlLiAgKi8KKyAgICBzaXplX3QgICAgICAgICAgcmN2TXNnTWF4U2l6ZTsKKyAgICAvKiogIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gc2VuZC4gICovCisgICAgc2l6ZV90ICAgICAgICAgIHNuZE1zZ01heFNpemU7ICAKKworICAgIC8qCisgICAgICogU05NUHYzIGZpZWxkcworICAgICAqLworICAgIC8qKiBhcmUgd2UgdGhlIGF1dGhvcml0YXRpdmUgZW5naW5lPyAqLworICAgIHVfY2hhciAgICAgICAgICBpc0F1dGhvcml0YXRpdmU7CisgICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEICovCisgICAgdV9jaGFyICAgICAgICAgKmNvbnRleHRFbmdpbmVJRDsKKyAgICAvKiogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRCAqLworICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0RW5naW5lSURMZW47ICAgICAKKyAgICAvKiogaW5pdGlhbCBlbmdpbmVCb290cyBmb3IgcmVtb3RlIGVuZ2luZSAqLworICAgIHVfaW50ICAgICAgICAgICBlbmdpbmVCb290czsKKyAgICAvKiogaW5pdGlhbCBlbmdpbmVUaW1lIGZvciByZW1vdGUgZW5naW5lICovCisgICAgdV9pbnQgICAgICAgICAgIGVuZ2luZVRpbWU7CisgICAgLyoqIGF1dGhvcml0YXRpdmUgY29udGV4dE5hbWUgKi8KKyAgICBjaGFyICAgICAgICAgICAqY29udGV4dE5hbWU7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0TmFtZSAqLworICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0TmFtZUxlbjsKKyAgICAvKiogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgKi8KKyAgICB1X2NoYXIgICAgICAgICAqc2VjdXJpdHlFbmdpbmVJRDsKKyAgICAvKiogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUVuZ2luZUlETGVuOyAgICAKKyAgICAvKiogb24gYmVoYWxmIG9mIHRoaXMgcHJpbmNpcGFsICovCisgICAgY2hhciAgICAgICAgICAgKnNlY3VyaXR5TmFtZTsKKyAgICAvKiogTGVuZ3RoIG9mIHNlY3VyaXR5TmFtZS4gKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlOYW1lTGVuOworCisgICAgLyoqIGF1dGggcHJvdG9jb2wgb2lkICovCisgICAgb2lkICAgICAgICAgICAgKnNlY3VyaXR5QXV0aFByb3RvOworICAgIC8qKiBMZW5ndGggb2YgYXV0aCBwcm90b2NvbCBvaWQgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoUHJvdG9MZW47CisgICAgLyoqIEt1IGZvciBhdXRoIHByb3RvY29sIFhYWCAqLworICAgIHVfY2hhciAgICAgICAgICBzZWN1cml0eUF1dGhLZXlbVVNNX0FVVEhfS1VfTEVOXTsgICAgICAgCisgICAgLyoqIExlbmd0aCBvZiBLdSBmb3IgYXV0aCBwcm90b2NvbCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUF1dGhLZXlMZW47CisgICAgLyoqIEt1bCBmb3IgYXV0aCBwcm90b2NvbCAqLworICAgIHVfY2hhciAgICAgICAgICAqc2VjdXJpdHlBdXRoTG9jYWxLZXk7ICAgICAgIAorICAgIC8qKiBMZW5ndGggb2YgS3VsIGZvciBhdXRoIHByb3RvY29sIFhYWCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUF1dGhMb2NhbEtleUxlbjsgICAgICAgCisKKyAgICAvKiogcHJpdiBwcm90b2NvbCBvaWQgKi8KKyAgICBvaWQgICAgICAgICAgICAqc2VjdXJpdHlQcml2UHJvdG87CisgICAgLyoqIExlbmd0aCBvZiBwcml2IHByb3RvY29sIG9pZCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZQcm90b0xlbjsKKyAgICAvKiogS3UgZm9yIHByaXZhY3kgcHJvdG9jb2wgWFhYICovCisgICAgdV9jaGFyICAgICAgICAgIHNlY3VyaXR5UHJpdktleVtVU01fUFJJVl9LVV9MRU5dOyAgICAgICAKKyAgICAvKiogTGVuZ3RoIG9mIEt1IGZvciBwcml2IHByb3RvY29sICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5UHJpdktleUxlbjsKKyAgICAvKiogS3VsIGZvciBwcml2IHByb3RvY29sICovCisgICAgdV9jaGFyICAgICAgICAgICpzZWN1cml0eVByaXZMb2NhbEtleTsgICAgICAgCisgICAgLyoqIExlbmd0aCBvZiBLdWwgZm9yIHByaXYgcHJvdG9jb2wgWFhYICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuOyAgICAgICAKKworICAgIC8qKiBzbm1wIHNlY3VyaXR5IG1vZGVsLCB2MSwgdjJjLCB1c20gKi8KKyAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlNb2RlbDsKKyAgICAvKiogbm9BdXRoTm9Qcml2LCBhdXRoTm9Qcml2LCBhdXRoUHJpdiAqLworICAgIGludCAgICAgICAgICAgICBzZWN1cml0eUxldmVsOyAgCisgICAgLyoqIHRhcmdldCBwYXJhbSBuYW1lICovCisgICAgY2hhciAgICAgICAgICAgKnBhcmFtTmFtZTsKKworICAgIC8qKgorICAgICAqIHNlY3VyaXR5IG1vZHVsZSBzcGVjaWZpYyAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAqc2VjdXJpdHlJbmZvOworCisgICAgLyoqCisgICAgICogdXNlIGFzIHlvdSB3YW50IGRhdGEgCisgICAgICoKKyAgICAgKiAgICAgdXNlZCBieSAnU05NUF9GTEFHU19SRVNQX0NBTExCQUNLJyBoYW5kbGluZyBpbiB0aGUgYWdlbnQKKyAgICAgKiBYWFg6IG9yIHNob3VsZCB3ZSBhZGQgYSBuZXcgZmllbGQgaW50byB0aGlzIHN0cnVjdHVyZT8KKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAqbXl2b2lkOworfTsKKworCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RlZmluaXRpb25zLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAppbmRleCBlZDU3NDhiLi45MjQ5NzdlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCkBAIC03LDYgKzcsNjUgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qIENyZWF0aW9uICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKKyAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUobmV0c25tcF9wZHUgKnBkdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgbGVuKTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgorICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUobmV0c25tcF92YXJpYWJsZV9saXN0ICoqIHZhcmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbik7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKKyAgICAgICBzbm1wX2FkZF9udWxsX3ZhcihuZXRzbm1wX3BkdSAqcGR1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoKTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgorICAgICAgIHNubXBfY2xvbmVfdmFyYmluZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJsaXN0KTsKKworICAgIC8qIFNldHRpbmcgVmFsdWVzICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl92YWx1ZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogdmFsdWUsIHNpemVfdCBsZW4pOworICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfb2JqaWQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgbGVuKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsIGxvbmcgdmFsKTsKKworICAgICAvKiBPdXRwdXQgKi8KKyAgICB2b2lkICAgICAgICAgICAgcHJpbnRfdmFyaWFibGUoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOworICAgIHZvaWQgICAgICAgICAgIGZwcmludF92YXJpYWJsZShGSUxFICogZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKyAgICBpbnQgICAgICAgICAgIHNucHJpbnRfdmFyaWFibGUoY2hhciAqYnVmLCBzaXplX3QgYnVmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOworCisgICAgdm9pZCAgICAgICAgICAgICBwcmludF92YWx1ZShjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOworICAgIHZvaWQgICAgICAgICAgICBmcHJpbnRfdmFsdWUoRklMRSAqIGZwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKyAgICBpbnQgICAgICAgICAgICBzbnByaW50X3ZhbHVlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOworCisgICAgLyogRGVsZXRpb24gKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9mcmVlX3ZhciggICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpOyAgICAgLyogZnJlZXMganVzdCB0aGlzIG9uZSAqLworICAgIHZvaWQgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcmxpc3QpOyAvKiBmcmVlcyBhbGwgaW4gbGlzdCAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCiAgICAgLyoKICAgICAgKiAgRm9yIHRoZSBpbml0aWFsIHJlbGVhc2UsIHRoaXMgd2lsbCBqdXN0IHJlZmVyIHRvIHRoZQogICAgICAqICByZWxldmFudCBVQ0QgaGVhZGVyIGZpbGVzLgpAQCAtMTYsNyArNzUsNiBAQAogICAgICAqICBCdXQgZm9yIHRoZSB0aW1lIGJlaW5nLCB0aGlzIGhlYWRlciBmaWxlIGlzIGEgcGxhY2Vob2xkZXIsCiAgICAgICogIHRvIGFsbG93IGFwcGxpY2F0aW9uIHdyaXRlcnMgdG8gYWRvcHQgdGhlIG5ldyBoZWFkZXIgZmlsZSBuYW1lcy4KICAgICAgKi8KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9taWIuaD4KZGlmZiAtLWdpdCBhL2luc3RhbGwtc2ggYi9pbnN0YWxsLXNoCmluZGV4IDJjMjEyY2MuLmE1ODk3ZGUgMTAwNzU1Ci0tLSBhL2luc3RhbGwtc2gKKysrIGIvaW5zdGFsbC1zaApAQCAtMSwxOSArMSwzOCBAQAotIyEgL2Jpbi9zaAotIworIyEvYmluL3NoCiAjIGluc3RhbGwgLSBpbnN0YWxsIGEgcHJvZ3JhbSwgc2NyaXB0LCBvciBkYXRhZmlsZQotIyBUaGlzIGNvbWVzIGZyb20gWDExUjUgKG1pdC91dGlsL3NjcmlwdHMvaW5zdGFsbC5zaCkuCisKK3NjcmlwdHZlcnNpb249MjAwNi0xMi0yNS4wMAorCisjIFRoaXMgb3JpZ2luYXRlcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLCB3aGljaCB3YXMKKyMgbGF0ZXIgcmVsZWFzZWQgaW4gWDExUjYgKHhjL2NvbmZpZy91dGlsL2luc3RhbGwuc2gpIHdpdGggdGhlCisjIGZvbGxvd2luZyBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UuCiAjCi0jIENvcHlyaWdodCAxOTkxIGJ5IHRoZSBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5CisjIENvcHlyaWdodCAoQykgMTk5NCBYIENvbnNvcnRpdW0KICMKLSMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCi0jIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0Ci0jIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdAotIyBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCi0jIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIE0uSS5ULiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvcgotIyBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCi0jIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlCi0jIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIgotIyB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyMgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyMgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisjIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBYIENPTlNPUlRJVU0gQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQy0KKyMgVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgdGhlIFggQ29uc29ydGl1bSBzaGFsbCBub3QKKyMgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWwtCisjIGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBmcm9tIHRoZSBYIENvbnNvci0KKyMgdGl1bS4KKyMKKyMKKyMgRlNGIGNoYW5nZXMgdG8gdGhpcyBmaWxlIGFyZSBpbiB0aGUgcHVibGljIGRvbWFpbi4KICMKICMgQ2FsbGluZyB0aGlzIHNjcmlwdCBpbnN0YWxsLXNoIGlzIHByZWZlcnJlZCBvdmVyIGluc3RhbGwuc2gsIHRvIHByZXZlbnQKICMgYG1ha2UnIGltcGxpY2l0IHJ1bGVzIGZyb20gY3JlYXRpbmcgYSBmaWxlIGNhbGxlZCBpbnN0YWxsIGZyb20gaXQKQEAgLTIxLDIzMCArNDAsNDgwIEBACiAjCiAjIFRoaXMgc2NyaXB0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQlNEIGluc3RhbGwgc2NyaXB0LCBidXQgd2FzIHdyaXR0ZW4KICMgZnJvbSBzY3JhdGNoLgotIwogCitubD0nCisnCitJRlM9IiAiIgkkbmwiCiAKICMgc2V0IERPSVRQUk9HIHRvIGVjaG8gdG8gdGVzdCB0aGlzIHNjcmlwdAogCiAjIERvbid0IHVzZSA6LSBzaW5jZSA0LjNCU0QgYW5kIGVhcmxpZXIgc2hlbGxzIGRvbid0IGxpa2UgaXQuCi1kb2l0PSIke0RPSVRQUk9HLX0iCi0KLQotIyBwdXQgaW4gYWJzb2x1dGUgcGF0aHMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7IG9yIHVzZSBlbnYuIHZhcnMuCi0KLW12cHJvZz0iJHtNVlBST0ctbXZ9IgotY3Bwcm9nPSIke0NQUFJPRy1jcH0iCi1jaG1vZHByb2c9IiR7Q0hNT0RQUk9HLWNobW9kfSIKLWNob3ducHJvZz0iJHtDSE9XTlBST0ctY2hvd259IgotY2hncnBwcm9nPSIke0NIR1JQUFJPRy1jaGdycH0iCi1zdHJpcHByb2c9IiR7U1RSSVBQUk9HLXN0cmlwfSIKLXJtcHJvZz0iJHtSTVBST0ctcm19IgotbWtkaXJwcm9nPSIke01LRElSUFJPRy1ta2Rpcn0iCi0KLXRyYW5zZm9ybWJhc2VuYW1lPSIiCi10cmFuc2Zvcm1fYXJnPSIiCi1pbnN0Y21kPSIkbXZwcm9nIgotY2htb2RjbWQ9IiRjaG1vZHByb2cgMDc1NSIKLWNob3duY21kPSIiCi1jaGdycGNtZD0iIgotc3RyaXBjbWQ9IiIKLXJtY21kPSIkcm1wcm9nIC1mIgotbXZjbWQ9IiRtdnByb2ciCi1zcmM9IiIKLWRzdD0iIgotZGlyX2FyZz0iIgotCi13aGlsZSBbIHgiJDEiICE9IHggXTsgZG8KLSAgICBjYXNlICQxIGluCi0JLWMpIGluc3RjbWQ9IiRjcHByb2ciCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCS1kKSBkaXJfYXJnPXRydWUKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLW0pIGNobW9kY21kPSIkY2htb2Rwcm9nICQyIgotCSAgICBzaGlmdAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIiCi0JICAgIHNoaWZ0Ci0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCS1nKSBjaGdycGNtZD0iJGNoZ3JwcHJvZyAkMiIKLQkgICAgc2hpZnQKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLXMpIHN0cmlwY21kPSIkc3RyaXBwcm9nIgotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktdD0qKSB0cmFuc2Zvcm1hcmc9YGVjaG8gJDEgfCBzZWQgJ3MvLXQ9Ly8nYAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktYj0qKSB0cmFuc2Zvcm1iYXNlbmFtZT1gZWNobyAkMSB8IHNlZCAncy8tYj0vLydgCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCSopICBpZiBbIHgiJHNyYyIgPSB4IF0KLQkgICAgdGhlbgotCQlzcmM9JDEKLQkgICAgZWxzZQotCQkjIHRoaXMgY29sb24gaXMgdG8gd29yayBhcm91bmQgYSAzODZCU0QgL2Jpbi9zaCBidWcKLQkJOgotCQlkc3Q9JDEKLQkgICAgZmkKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotICAgIGVzYWMKLWRvbmUKLQotaWYgWyB4IiRzcmMiID0geCBdCi10aGVuCi0JZWNobyAiaW5zdGFsbDoJbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQiCi0JZXhpdCAxCitkb2l0PSR7RE9JVFBST0ctfQoraWYgdGVzdCAteiAiJGRvaXQiOyB0aGVuCisgIGRvaXRfZXhlYz1leGVjCiBlbHNlCi0JdHJ1ZQorICBkb2l0X2V4ZWM9JGRvaXQKIGZpCiAKLWlmIFsgeCIkZGlyX2FyZyIgIT0geCBdOyB0aGVuCi0JZHN0PSRzcmMKLQlzcmM9IiIKLQkKLQlpZiBbIC1kICRkc3QgXTsgdGhlbgotCQlpbnN0Y21kPToKLQllbHNlCi0JCWluc3RjbWQ9bWtkaXIKLQlmaQotZWxzZQorIyBQdXQgaW4gYWJzb2x1dGUgZmlsZSBuYW1lcyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsKKyMgb3IgdXNlIGVudmlyb25tZW50IHZhcnMuCiAKLSMgV2FpdGluZyBmb3IgdGhpcyB0byBiZSBkZXRlY3RlZCBieSB0aGUgIiRpbnN0Y21kICRzcmMgJGRzdHRtcCIgY29tbWFuZAotIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZCAKLSMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgorY2hncnBwcm9nPSR7Q0hHUlBQUk9HLWNoZ3JwfQorY2htb2Rwcm9nPSR7Q0hNT0RQUk9HLWNobW9kfQorY2hvd25wcm9nPSR7Q0hPV05QUk9HLWNob3dufQorY21wcHJvZz0ke0NNUFBST0ctY21wfQorY3Bwcm9nPSR7Q1BQUk9HLWNwfQorbWtkaXJwcm9nPSR7TUtESVJQUk9HLW1rZGlyfQorbXZwcm9nPSR7TVZQUk9HLW12fQorcm1wcm9nPSR7Uk1QUk9HLXJtfQorc3RyaXBwcm9nPSR7U1RSSVBQUk9HLXN0cmlwfQogCi0JaWYgWyAtZiAkc3JjIC1vIC1kICRzcmMgXQotCXRoZW4KLQkJdHJ1ZQotCWVsc2UKLQkJZWNobyAiaW5zdGFsbDogICRzcmMgZG9lcyBub3QgZXhpc3QiCi0JCWV4aXQgMQotCWZpCi0JCi0JaWYgWyB4IiRkc3QiID0geCBdCi0JdGhlbgotCQllY2hvICJpbnN0YWxsOglubyBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiCi0JCWV4aXQgMQotCWVsc2UKLQkJdHJ1ZQotCWZpCi0KLSMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IGlmIHlvdXIgc3lzdGVtCi0jIGRvZXMgbm90IGxpa2UgZG91YmxlIHNsYXNoZXMgaW4gZmlsZW5hbWVzLCB5b3UgbWF5IG5lZWQgdG8gYWRkIHNvbWUgbG9naWMKLQotCWlmIFsgLWQgJGRzdCBdCi0JdGhlbgotCQlkc3Q9IiRkc3QiL2BiYXNlbmFtZSAkc3JjYAotCWVsc2UKLQkJdHJ1ZQotCWZpCi1maQotCi0jIyB0aGlzIHNlZCBjb21tYW5kIGVtdWxhdGVzIHRoZSBkaXJuYW1lIGNvbW1hbmQKLWRzdGRpcj1gZWNobyAkZHN0IHwgc2VkIC1lICdzLFteL10qJCwsO3MsLyQsLDtzLF4kLC4sJ2AKLQotIyBNYWtlIHN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0cy4KLSMgIHRoaXMgcGFydCBpcyB0YWtlbiBmcm9tIE5vYWggRnJpZWRtYW4ncyBta2luc3RhbGxkaXJzIHNjcmlwdAotCi0jIFNraXAgbG90cyBvZiBzdGF0IGNhbGxzIGluIHRoZSB1c3VhbCBjYXNlLgotaWYgWyAhIC1kICIkZHN0ZGlyIiBdOyB0aGVuCi1kZWZhdWx0SUZTPScJCitwb3NpeF9nbG9iPSc/JworaW5pdGlhbGl6ZV9wb3NpeF9nbG9iPScKKyAgdGVzdCAiJHBvc2l4X2dsb2IiICE9ICI/IiB8fCB7CisgICAgaWYgKHNldCAtZikgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIHBvc2l4X2dsb2I9CisgICAgZWxzZQorICAgICAgcG9zaXhfZ2xvYj06CisgICAgZmkKKyAgfQogJwotSUZTPSIke0lGUy0ke2RlZmF1bHRJRlN9fSIKIAotb0lGUz0iJHtJRlN9IgotIyBTb21lIHNoJ3MgY2FuJ3QgaGFuZGxlIElGUz0vIGZvciBzb21lIHJlYXNvbi4KLUlGUz0nJScKLXNldCAtIGBlY2hvICR7ZHN0ZGlyfSB8IHNlZCAtZSAnc0AvQCVAZycgLWUgJ3NAXiVAL0AnYAotSUZTPSIke29JRlN9IgorcG9zaXhfbWtkaXI9CiAKLXBhdGhjb21wPScnCisjIERlc2lyZWQgbW9kZSBvZiBpbnN0YWxsZWQgZmlsZS4KK21vZGU9MDc1NQogCi13aGlsZSBbICQjIC1uZSAwIF0gOyBkbwotCXBhdGhjb21wPSIke3BhdGhjb21wfSR7MX0iCi0Jc2hpZnQKK2NoZ3JwY21kPQorY2htb2RjbWQ9JGNobW9kcHJvZworY2hvd25jbWQ9CittdmNtZD0kbXZwcm9nCitybWNtZD0iJHJtcHJvZyAtZiIKK3N0cmlwY21kPQogCi0JaWYgWyAhIC1kICIke3BhdGhjb21wfSIgXSA7Ci0gICAgICAgIHRoZW4KLQkJJG1rZGlycHJvZyAiJHtwYXRoY29tcH0iCi0JZWxzZQotCQl0cnVlCi0JZmkKK3NyYz0KK2RzdD0KK2Rpcl9hcmc9Citkc3RfYXJnPQogCi0JcGF0aGNvbXA9IiR7cGF0aGNvbXB9LyIKK2NvcHlfb25fY2hhbmdlPWZhbHNlCitub190YXJnZXRfZGlyZWN0b3J5PQorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFstVF0gU1JDRklMRSBEU1RGSUxFCisgICBvcjogJDAgW09QVElPTl0uLi4gU1JDRklMRVMuLi4gRElSRUNUT1JZCisgICBvcjogJDAgW09QVElPTl0uLi4gLXQgRElSRUNUT1JZIFNSQ0ZJTEVTLi4uCisgICBvcjogJDAgW09QVElPTl0uLi4gLWQgRElSRUNUT1JJRVMuLi4KKworSW4gdGhlIDFzdCBmb3JtLCBjb3B5IFNSQ0ZJTEUgdG8gRFNURklMRS4KK0luIHRoZSAybmQgYW5kIDNyZCwgY29weSBhbGwgU1JDRklMRVMgdG8gRElSRUNUT1JZLgorSW4gdGhlIDR0aCwgY3JlYXRlIERJUkVDVE9SSUVTLgorCitPcHRpb25zOgorICAgICAtLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgorICAgICAtLXZlcnNpb24gIGRpc3BsYXkgdmVyc2lvbiBpbmZvIGFuZCBleGl0LgorCisgIC1jICAgICAgICAgICAgKGlnbm9yZWQpCisgIC1DICAgICAgICAgICAgaW5zdGFsbCBvbmx5IGlmIGRpZmZlcmVudCAocHJlc2VydmUgdGhlIGxhc3QgZGF0YSBtb2RpZmljYXRpb24gdGltZSkKKyAgLWQgICAgICAgICAgICBjcmVhdGUgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIGZpbGVzLgorICAtZyBHUk9VUCAgICAgICRjaGdycHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIEdST1VQLgorICAtbSBNT0RFICAgICAgICRjaG1vZHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIE1PREUuCisgIC1vIFVTRVIgICAgICAgJGNob3ducHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gVVNFUi4KKyAgLXMgICAgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KKyAgLXQgRElSRUNUT1JZICBpbnN0YWxsIGludG8gRElSRUNUT1JZLgorICAtVCAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvciBpZiBEU1RGSUxFIGlzIGEgZGlyZWN0b3J5LgorCitFbnZpcm9ubWVudCB2YXJpYWJsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29tbWFuZHM6CisgIENIR1JQUFJPRyBDSE1PRFBST0cgQ0hPV05QUk9HIENNUFBST0cgQ1BQUk9HIE1LRElSUFJPRyBNVlBST0cKKyAgUk1QUk9HIFNUUklQUFJPRworIgorCit3aGlsZSB0ZXN0ICQjIC1uZSAwOyBkbworICBjYXNlICQxIGluCisgICAgLWMpIDs7CisKKyAgICAtQykgY29weV9vbl9jaGFuZ2U9dHJ1ZTs7CisKKyAgICAtZCkgZGlyX2FyZz10cnVlOzsKKworICAgIC1nKSBjaGdycGNtZD0iJGNoZ3JwcHJvZyAkMiIKKwlzaGlmdDs7CisKKyAgICAtLWhlbHApIGVjaG8gIiR1c2FnZSI7IGV4aXQgJD87OworCisgICAgLW0pIG1vZGU9JDIKKwljYXNlICRtb2RlIGluCisJICAqJyAnKiB8IConCScqIHwgKicKKycqCSAgfCAqJyonKiB8IConPycqIHwgKidbJyopCisJICAgIGVjaG8gIiQwOiBpbnZhbGlkIG1vZGU6ICRtb2RlIiA+JjIKKwkgICAgZXhpdCAxOzsKKwllc2FjCisJc2hpZnQ7OworCisgICAgLW8pIGNob3duY21kPSIkY2hvd25wcm9nICQyIgorCXNoaWZ0OzsKKworICAgIC1zKSBzdHJpcGNtZD0kc3RyaXBwcm9nOzsKKworICAgIC10KSBkc3RfYXJnPSQyCisJc2hpZnQ7OworCisgICAgLVQpIG5vX3RhcmdldF9kaXJlY3Rvcnk9dHJ1ZTs7CisKKyAgICAtLXZlcnNpb24pIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIjsgZXhpdCAkPzs7CisKKyAgICAtLSkJc2hpZnQKKwlicmVhazs7CisKKyAgICAtKikJZWNobyAiJDA6IGludmFsaWQgb3B0aW9uOiAkMSIgPiYyCisJZXhpdCAxOzsKKworICAgICopICBicmVhazs7CisgIGVzYWMKKyAgc2hpZnQKIGRvbmUKKworaWYgdGVzdCAkIyAtbmUgMCAmJiB0ZXN0IC16ICIkZGlyX2FyZyRkc3RfYXJnIjsgdGhlbgorICAjIFdoZW4gLWQgaXMgdXNlZCwgYWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZS4KKyAgIyBXaGVuIC10IGlzIHVzZWQsIHRoZSBkZXN0aW5hdGlvbiBpcyBhbHJlYWR5IHNwZWNpZmllZC4KKyAgIyBPdGhlcndpc2UsIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBkZXN0aW5hdGlvbi4gIFJlbW92ZSBpdCBmcm9tICRALgorICBmb3IgYXJnCisgIGRvCisgICAgaWYgdGVzdCAtbiAiJGRzdF9hcmciOyB0aGVuCisgICAgICAjICRAIGlzIG5vdCBlbXB0eTogaXQgY29udGFpbnMgYXQgbGVhc3QgJGFyZy4KKyAgICAgIHNldCBmbm9yZCAiJEAiICIkZHN0X2FyZyIKKyAgICAgIHNoaWZ0ICMgZm5vcmQKKyAgICBmaQorICAgIHNoaWZ0ICMgYXJnCisgICAgZHN0X2FyZz0kYXJnCisgIGRvbmUKIGZpCiAKLWlmIFsgeCIkZGlyX2FyZyIgIT0geCBdCi10aGVuCi0JJGRvaXQgJGluc3RjbWQgJGRzdCAmJgoraWYgdGVzdCAkIyAtZXEgMDsgdGhlbgorICBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgICBlY2hvICIkMDogbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQuIiA+JjIKKyAgICBleGl0IDEKKyAgZmkKKyAgIyBJdCdzIE9LIHRvIGNhbGwgYGluc3RhbGwtc2ggLWQnIHdpdGhvdXQgYXJndW1lbnQuCisgICMgVGhpcyBjYW4gaGFwcGVuIHdoZW4gY3JlYXRpbmcgY29uZGl0aW9uYWwgZGlyZWN0b3JpZXMuCisgIGV4aXQgMAorZmkKIAotCWlmIFsgeCIkY2hvd25jbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkY2hvd25jbWQgJGRzdDsgZWxzZSB0cnVlIDsgZmkgJiYKLQlpZiBbIHgiJGNoZ3JwY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNoZ3JwY21kICRkc3Q7IGVsc2UgdHJ1ZSA7IGZpICYmCi0JaWYgWyB4IiRzdHJpcGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRzdHJpcGNtZCAkZHN0OyBlbHNlIHRydWUgOyBmaSAmJgotCWlmIFsgeCIkY2htb2RjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkY2htb2RjbWQgJGRzdDsgZWxzZSB0cnVlIDsgZmkKLWVsc2UKK2lmIHRlc3QgLXogIiRkaXJfYXJnIjsgdGhlbgorICB0cmFwICcoZXhpdCAkPyk7IGV4aXQnIDEgMiAxMyAxNQogCi0jIElmIHdlJ3JlIGdvaW5nIHRvIHJlbmFtZSB0aGUgZmluYWwgZXhlY3V0YWJsZSwgZGV0ZXJtaW5lIHRoZSBuYW1lIG5vdy4KKyAgIyBTZXQgdW1hc2sgc28gYXMgbm90IHRvIGNyZWF0ZSB0ZW1wcyB3aXRoIHRvby1nZW5lcm91cyBtb2Rlcy4KKyAgIyBIb3dldmVyLCAnc3RyaXAnIHJlcXVpcmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRlbXBzLgorICBjYXNlICRtb2RlIGluCisgICAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCisgICAgKjY0NCkgY3BfdW1hc2s9MTMzOzsKKyAgICAqNzU1KSBjcF91bWFzaz0yMjs7CiAKLQlpZiBbIHgiJHRyYW5zZm9ybWFyZyIgPSB4IF0gCi0JdGhlbgotCQlkc3RmaWxlPWBiYXNlbmFtZSAkZHN0YAorICAgICpbMC03XSkKKyAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KKwl1X3BsdXNfcnc9CisgICAgICBlbHNlCisJdV9wbHVzX3J3PSclIDIwMCcKKyAgICAgIGZpCisgICAgICBjcF91bWFzaz1gZXhwciAnKCcgNzc3IC0gJG1vZGUgJSAxMDAwICcpJyAkdV9wbHVzX3J3YDs7CisgICAgKikKKyAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KKwl1X3BsdXNfcnc9CisgICAgICBlbHNlCisJdV9wbHVzX3J3PSx1K3J3CisgICAgICBmaQorICAgICAgY3BfdW1hc2s9JG1vZGUkdV9wbHVzX3J3OzsKKyAgZXNhYworZmkKKworZm9yIHNyYworZG8KKyAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICBjYXNlICRzcmMgaW4KKyAgICAtKikgc3JjPS4vJHNyYzs7CisgIGVzYWMKKworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICBkc3Q9JHNyYworICAgIGRzdGRpcj0kZHN0CisgICAgdGVzdCAtZCAiJGRzdGRpciIKKyAgICBkc3RkaXJfc3RhdHVzPSQ/CisgIGVsc2UKKworICAgICMgV2FpdGluZyBmb3IgdGhpcyB0byBiZSBkZXRlY3RlZCBieSB0aGUgIiRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kCisgICAgIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZAorICAgICMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgorICAgIGlmIHRlc3QgISAtZiAiJHNyYyIgJiYgdGVzdCAhIC1kICIkc3JjIjsgdGhlbgorICAgICAgZWNobyAiJDA6ICRzcmMgZG9lcyBub3QgZXhpc3QuIiA+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC16ICIkZHN0X2FyZyI7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiBubyBkZXN0aW5hdGlvbiBzcGVjaWZpZWQuIiA+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBkc3Q9JGRzdF9hcmcKKyAgICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCisgICAgY2FzZSAkZHN0IGluCisgICAgICAtKikgZHN0PS4vJGRzdDs7CisgICAgZXNhYworCisgICAgIyBJZiBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSwgYXBwZW5kIHRoZSBpbnB1dCBmaWxlbmFtZTsgd29uJ3Qgd29yaworICAgICMgaWYgZG91YmxlIHNsYXNoZXMgYXJlbid0IGlnbm9yZWQuCisgICAgaWYgdGVzdCAtZCAiJGRzdCI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRub190YXJnZXRfZGlyZWN0b3J5IjsgdGhlbgorCWVjaG8gIiQwOiAkZHN0X2FyZzogSXMgYSBkaXJlY3RvcnkiID4mMgorCWV4aXQgMQorICAgICAgZmkKKyAgICAgIGRzdGRpcj0kZHN0CisgICAgICBkc3Q9JGRzdGRpci9gYmFzZW5hbWUgIiRzcmMiYAorICAgICAgZHN0ZGlyX3N0YXR1cz0wCisgICAgZWxzZQorICAgICAgIyBQcmVmZXIgZGlybmFtZSwgYnV0IGZhbGwgYmFjayBvbiBhIHN1YnN0aXR1dGUgaWYgZGlybmFtZSBmYWlscy4KKyAgICAgIGRzdGRpcj1gCisJKGRpcm5hbWUgIiRkc3QiKSAyPi9kZXYvbnVsbCB8fAorCWV4cHIgWCIkZHN0IiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvL1wpJCcgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKwllY2hvIFgiJGRzdCIgfAorCSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wvXClbXi9dLioveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wvXCkkL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cKS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIHMvLiovLi87IHEnCisgICAgICBgCisKKyAgICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgICBkc3RkaXJfc3RhdHVzPSQ/CisgICAgZmkKKyAgZmkKKworICBvYnNvbGV0ZV9ta2Rpcl91c2VkPWZhbHNlCisKKyAgaWYgdGVzdCAkZHN0ZGlyX3N0YXR1cyAhPSAwOyB0aGVuCisgICAgY2FzZSAkcG9zaXhfbWtkaXIgaW4KKyAgICAgICcnKQorCSMgQ3JlYXRlIGludGVybWVkaWF0ZSBkaXJzIHVzaW5nIG1vZGUgNzU1IGFzIG1vZGlmaWVkIGJ5IHRoZSB1bWFzay4KKwkjIFRoaXMgaXMgbGlrZSBGcmVlQlNEICdpbnN0YWxsJyBhcyBvZiAxOTk3LTEwLTI4LgorCXVtYXNrPWB1bWFza2AKKwljYXNlICRzdHJpcGNtZC4kdW1hc2sgaW4KKwkgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorCSAgKlsyMzY3XVsyMzY3XSkgbWtkaXJfdW1hc2s9JHVtYXNrOzsKKwkgIC4qMFswMl1bMDJdIHwgLlswMl1bMDJdIHwgLlswMl0pIG1rZGlyX3VtYXNrPTIyOzsKKworCSAgKlswLTddKQorCSAgICBta2Rpcl91bWFzaz1gZXhwciAkdW1hc2sgKyAyMiBcCisJICAgICAgLSAkdW1hc2sgJSAxMDAgJSA0MCArICR1bWFzayAlIDIwIFwKKwkgICAgICAtICR1bWFzayAlIDEwICUgNCArICR1bWFzayAlIDIKKwkgICAgYDs7CisJICAqKSBta2Rpcl91bWFzaz0kdW1hc2ssZ28tdzs7CisJZXNhYworCisJIyBXaXRoIC1kLCBjcmVhdGUgdGhlIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUgdXNlci1zcGVjaWZpZWQgbW9kZS4KKwkjIE90aGVyd2lzZSwgcmVseSBvbiAkbWtkaXJfdW1hc2suCisJaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisJICBta2Rpcl9tb2RlPS1tJG1vZGUKIAllbHNlCi0JCWRzdGZpbGU9YGJhc2VuYW1lICRkc3QgJHRyYW5zZm9ybWJhc2VuYW1lIHwgCi0JCQlzZWQgJHRyYW5zZm9ybWFyZ2AkdHJhbnNmb3JtYmFzZW5hbWUKKwkgIG1rZGlyX21vZGU9CiAJZmkKIAotIyBkb24ndCBhbGxvdyB0aGUgc2VkIGNvbW1hbmQgdG8gY29tcGxldGVseSBlbGltaW5hdGUgdGhlIGZpbGVuYW1lCisJcG9zaXhfbWtkaXI9ZmFsc2UKKwljYXNlICR1bWFzayBpbgorCSAgKlsxMjM1NjddWzAtN11bMC03XSkKKwkgICAgIyBQT1NJWCBta2RpciAtcCBzZXRzIHUrd3ggYml0cyByZWdhcmRsZXNzIG9mIHVtYXNrLCB3aGljaAorCSAgICAjIGlzIGluY29tcGF0aWJsZSB3aXRoIEZyZWVCU0QgJ2luc3RhbGwnIHdoZW4gKHVtYXNrICYgMzAwKSAhPSAwLgorCSAgICA7OworCSAgKikKKwkgICAgdG1wZGlyPSR7VE1QRElSLS90bXB9L2lucyRSQU5ET00tJCQKKwkgICAgdHJhcCAncmV0PSQ/OyBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIgMj4vZGV2L251bGw7IGV4aXQgJHJldCcgMAogCi0JaWYgWyB4IiRkc3RmaWxlIiA9IHggXSAKLQl0aGVuCi0JCWRzdGZpbGU9YGJhc2VuYW1lICRkc3RgCisJICAgIGlmICh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkJZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkdG1wZGlyL2QiKSA+L2Rldi9udWxsIDI+JjEKKwkgICAgdGhlbgorCSAgICAgIGlmIHRlc3QgLXogIiRkaXJfYXJnIiB8fCB7CisJCSAgICMgQ2hlY2sgZm9yIFBPU0lYIGluY29tcGF0aWJpbGl0aWVzIHdpdGggLW0uCisJCSAgICMgSFAtVVggMTEuMjMgYW5kIElSSVggNi41IG1rZGlyIC1tIC1wIHNldHMgZ3JvdXAtIG9yCisJCSAgICMgb3RoZXItd3JpdGVhYmxlIGJpdCBvZiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gaXQgc2hvdWxkbid0LgorCQkgICAjIEZyZWVCU0QgNi4xIG1rZGlyIC1tIC1wIHNldHMgbW9kZSBvZiBleGlzdGluZyBkaXJlY3RvcnkuCisJCSAgIGxzX2xkX3RtcGRpcj1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgY2FzZSAkbHNfbGRfdG1wZGlyIGluCisJCSAgICAgZD8/Pz8tP3ItKikgZGlmZmVyZW50X21vZGU9NzAwOzsKKwkJICAgICBkPz8/Py0/LS0qKSBkaWZmZXJlbnRfbW9kZT03NTU7OworCQkgICAgICopIGZhbHNlOzsKKwkJICAgZXNhYyAmJgorCQkgICAkbWtkaXJwcm9nIC1tJGRpZmZlcmVudF9tb2RlIC1wIC0tICIkdG1wZGlyIiAmJiB7CisJCSAgICAgbHNfbGRfdG1wZGlyXzE9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgICAgdGVzdCAiJGxzX2xkX3RtcGRpciIgPSAiJGxzX2xkX3RtcGRpcl8xIgorCQkgICB9CisJCSB9CisJICAgICAgdGhlbiBwb3NpeF9ta2Rpcj06CisJICAgICAgZmkKKwkgICAgICBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIKKwkgICAgZWxzZQorCSAgICAgICMgUmVtb3ZlIGFueSBkaXJzIGxlZnQgYmVoaW5kIGJ5IGFuY2llbnQgbWtkaXIgaW1wbGVtZW50YXRpb25zLgorCSAgICAgIHJtZGlyIC4vJG1rZGlyX21vZGUgLi8tcCAuLy0tIDI+L2Rldi9udWxsCisJICAgIGZpCisJICAgIHRyYXAgJycgMDs7CisJZXNhYzs7CisgICAgZXNhYworCisgICAgaWYKKyAgICAgICRwb3NpeF9ta2RpciAmJiAoCisJdW1hc2sgJG1rZGlyX3VtYXNrICYmCisJJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIgorICAgICAgKQorICAgIHRoZW4gOgorICAgIGVsc2UKKworICAgICAgIyBUaGUgdW1hc2sgaXMgcmlkaWN1bG91cywgb3IgbWtkaXIgZG9lcyBub3QgY29uZm9ybSB0byBQT1NJWCwKKyAgICAgICMgb3IgaXQgZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiAgQ3JlYXRlIHRoZQorICAgICAgIyBkaXJlY3RvcnkgdGhlIHNsb3cgd2F5LCBzdGVwIGJ5IHN0ZXAsIGNoZWNraW5nIGZvciByYWNlcyBhcyB3ZSBnby4KKworICAgICAgY2FzZSAkZHN0ZGlyIGluCisJLyopIHByZWZpeD0nLyc7OworCS0qKSBwcmVmaXg9Jy4vJzs7CisJKikgIHByZWZpeD0nJzs7CisgICAgICBlc2FjCisKKyAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiCisKKyAgICAgIG9JRlM9JElGUworICAgICAgSUZTPS8KKyAgICAgICRwb3NpeF9nbG9iIHNldCAtZgorICAgICAgc2V0IGZub3JkICRkc3RkaXIKKyAgICAgIHNoaWZ0CisgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YKKyAgICAgIElGUz0kb0lGUworCisgICAgICBwcmVmaXhlcz0KKworICAgICAgZm9yIGQKKyAgICAgIGRvCisJdGVzdCAteiAiJGQiICYmIGNvbnRpbnVlCisKKwlwcmVmaXg9JHByZWZpeCRkCisJaWYgdGVzdCAtZCAiJHByZWZpeCI7IHRoZW4KKwkgIHByZWZpeGVzPQogCWVsc2UKLQkJdHJ1ZQorCSAgaWYgJHBvc2l4X21rZGlyOyB0aGVuCisJICAgICh1bWFzaz0kbWtkaXJfdW1hc2sgJiYKKwkgICAgICRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIpICYmIGJyZWFrCisJICAgICMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkgICAgdGVzdCAtZCAiJHByZWZpeCIgfHwgZXhpdCAxCisJICBlbHNlCisJICAgIGNhc2UgJHByZWZpeCBpbgorCSAgICAgICpcJyopIHFwcmVmaXg9YGVjaG8gIiRwcmVmaXgiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsKKwkgICAgICAqKSBxcHJlZml4PSRwcmVmaXg7OworCSAgICBlc2FjCisJICAgIHByZWZpeGVzPSIkcHJlZml4ZXMgJyRxcHJlZml4JyIKKwkgIGZpCiAJZmkKKwlwcmVmaXg9JHByZWZpeC8KKyAgICAgIGRvbmUKIAotIyBNYWtlIGEgdGVtcCBmaWxlIG5hbWUgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCisgICAgICBpZiB0ZXN0IC1uICIkcHJlZml4ZXMiOyB0aGVuCisJIyBEb24ndCBmYWlsIGlmIHR3byBpbnN0YW5jZXMgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5LgorCSh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkgZXZhbCAiXCRkb2l0X2V4ZWMgXCRta2RpcnByb2cgJHByZWZpeGVzIikgfHwKKwkgIHRlc3QgLWQgIiRkc3RkaXIiIHx8IGV4aXQgMQorCW9ic29sZXRlX21rZGlyX3VzZWQ9dHJ1ZQorICAgICAgZmkKKyAgICBmaQorICBmaQogCi0JZHN0dG1wPSRkc3RkaXIvI2luc3QuJCQjCisgIGlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IH0gJiYKKyAgICB7IHRlc3QgIiRvYnNvbGV0ZV9ta2Rpcl91c2VkJGNob3duY21kJGNoZ3JwY21kIiA9IGZhbHNlIHx8CisgICAgICB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAkbW9kZSAiJGRzdCI7IH0gfHwgZXhpdCAxCisgIGVsc2UKIAotIyBNb3ZlIG9yIGNvcHkgdGhlIGZpbGUgbmFtZSB0byB0aGUgdGVtcCBuYW1lCisgICAgIyBNYWtlIGEgY291cGxlIG9mIHRlbXAgZmlsZSBuYW1lcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeS4KKyAgICBkc3R0bXA9JGRzdGRpci9faW5zdC4kJF8KKyAgICBybXRtcD0kZHN0ZGlyL19ybS4kJF8KIAotCSRkb2l0ICRpbnN0Y21kICRzcmMgJGRzdHRtcCAmJgorICAgICMgVHJhcCB0byBjbGVhbiB1cCB0aG9zZSB0ZW1wIGZpbGVzIGF0IGV4aXQuCisgICAgdHJhcCAncmV0PSQ/OyBybSAtZiAiJGRzdHRtcCIgIiRybXRtcCIgJiYgZXhpdCAkcmV0JyAwCiAKLQl0cmFwICJybSAtZiAke2RzdHRtcH0iIDAgJiYKKyAgICAjIENvcHkgdGhlIGZpbGUgbmFtZSB0byB0aGUgdGVtcCBuYW1lLgorICAgICh1bWFzayAkY3BfdW1hc2sgJiYgJGRvaXRfZXhlYyAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIpICYmCiAKLSMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cworICAgICMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cy4KKyAgICAjCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bworICAgICMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQorICAgICMgZXJyb3JzIGZyb20gdGhlIGFib3ZlICIkZG9pdCAkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KKyAgICAjCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAkbW9kZSAiJGRzdHRtcCI7IH0gJiYKIAotIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bwotIyBpZ25vcmUgZXJyb3JzIGZyb20gYW55IG9mIHRoZXNlLCBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gaWdub3JlCi0jIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGluc3RjbWQgJHNyYyAkZHN0dG1wIiBjb21tYW5kLgorICAgICMgSWYgLUMsIGRvbid0IGJvdGhlciB0byBjb3B5IGlmIGl0IHdvdWxkbid0IGNoYW5nZSB0aGUgZmlsZS4KKyAgICBpZiAkY29weV9vbl9jaGFuZ2UgJiYKKyAgICAgICBvbGQ9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3QiCTI+L2Rldi9udWxsYCAmJgorICAgICAgIG5ldz1gTENfQUxMPUMgbHMgLWRsTCAiJGRzdHRtcCIJMj4vZGV2L251bGxgICYmCiAKLQlpZiBbIHgiJGNob3duY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNob3duY21kICRkc3R0bXA7IGVsc2UgdHJ1ZTtmaSAmJgotCWlmIFsgeCIkY2hncnBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkY2hncnBjbWQgJGRzdHRtcDsgZWxzZSB0cnVlO2ZpICYmCi0JaWYgWyB4IiRzdHJpcGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRzdHJpcGNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKLQlpZiBbIHgiJGNobW9kY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNobW9kY21kICRkc3R0bXA7IGVsc2UgdHJ1ZTtmaSAmJgorICAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiICYmCisgICAgICAgJHBvc2l4X2dsb2Igc2V0IC1mICYmCisgICAgICAgc2V0IFggJG9sZCAmJiBvbGQ9OiQyOiQ0OiQ1OiQ2ICYmCisgICAgICAgc2V0IFggJG5ldyAmJiBuZXc9OiQyOiQ0OiQ1OiQ2ICYmCisgICAgICAgJHBvc2l4X2dsb2Igc2V0ICtmICYmCiAKLSMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKyAgICAgICB0ZXN0ICIkb2xkIiA9ICIkbmV3IiAmJgorICAgICAgICRjbXBwcm9nICIkZHN0IiAiJGRzdHRtcCIgPi9kZXYvbnVsbCAyPiYxCisgICAgdGhlbgorICAgICAgcm0gLWYgIiRkc3R0bXAiCisgICAgZWxzZQorICAgICAgIyBSZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisgICAgICAkZG9pdCAkbXZjbWQgLWYgIiRkc3R0bXAiICIkZHN0IiAyPi9kZXYvbnVsbCB8fAogCi0JJGRvaXQgJHJtY21kIC1mICRkc3RkaXIvJGRzdGZpbGUgJiYKLQkkZG9pdCAkbXZjbWQgJGRzdHRtcCAkZHN0ZGlyLyRkc3RmaWxlIAorICAgICAgIyBUaGUgcmVuYW1lIGZhaWxlZCwgcGVyaGFwcyBiZWNhdXNlIG12IGNhbid0IHJlbmFtZSBzb21ldGhpbmcgZWxzZQorICAgICAgIyB0byBpdHNlbGYsIG9yIHBlcmhhcHMgYmVjYXVzZSBtdiBpcyBzbyBhbmNpZW50IHRoYXQgaXQgZG9lcyBub3QKKyAgICAgICMgc3VwcG9ydCAtZi4KKyAgICAgIHsKKwkjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCisJIyBXZSB0cnkgdGhpcyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUKKwkjIHN5c3RlbXMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG1pZ2h0IGJlIGJ1c3kgZm9yIG90aGVyCisJIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xlYW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3CisJIyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KKwl7CisJICB0ZXN0ICEgLWYgIiRkc3QiIHx8CisJICAkZG9pdCAkcm1jbWQgLWYgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisJICB7ICRkb2l0ICRtdmNtZCAtZiAiJGRzdCIgIiRybXRtcCIgMj4vZGV2L251bGwgJiYKKwkgICAgeyAkZG9pdCAkcm1jbWQgLWYgIiRybXRtcCIgMj4vZGV2L251bGw7IDo7IH0KKwkgIH0gfHwKKwkgIHsgZWNobyAiJDA6IGNhbm5vdCB1bmxpbmsgb3IgcmVuYW1lICRkc3QiID4mMgorCSAgICAoZXhpdCAxKTsgZXhpdCAxCisJICB9CisJfSAmJgogCi1maSAmJgorCSMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKwkkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0IgorICAgICAgfQorICAgIGZpIHx8IGV4aXQgMQogCisgICAgdHJhcCAnJyAwCisgIGZpCitkb25lCiAKLWV4aXQgMAorIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9sb2NhbC9NYWtlZmlsZS5pbiBiL2xvY2FsL01ha2VmaWxlLmluCmluZGV4IDgyM2I2NmMuLjZkNWNiZTAgMTAwNjQ0Ci0tLSBhL2xvY2FsL01ha2VmaWxlLmluCisrKyBiL2xvY2FsL01ha2VmaWxlLmluCkBAIC0yOCw3ICsyOCw4IEBACiAJbWliMmMuY2hlY2tfdmFsdWVzLmNvbmYgbWliMmMuY2hlY2tfdmFsdWVzX2xvY2FsLmNvbmYgXAogCW1pYjJjLmFjY2Vzc19mdW5jdGlvbnMuY29uZiBtaWIyYy5ub3RpZnkuY29uZiBcCiAJbWliMmMuaW50X3dhdGNoLmNvbmYgbWliMmMuZ2VuaHRtbC5jb25mIFwKLQltaWIyYy50YWJsZV9kYXRhLmNvbmYgbWliMmMuY29udGFpbmVyLmNvbmYgbWliMmMucGVybC5jb25mCisJbWliMmMucmF3LXRhYmxlLmNvbmYgbWliMmMudGFibGVfZGF0YS5jb25mIFwKKwltaWIyYy5jb250YWluZXIuY29uZiBtaWIyYy5wZXJsLmNvbmYKIE1JQjJDSU5TVEFMTERJUj0kKHNubXBsaWJkaXIpL21pYjJjLWRhdGEKIE1JQjJDREFUQVNSQz1taWIyYy1jb25mLmQKIE1JQjJDRklMRVM9ZGVmYXVsdC1tZmQtdG9wLm0yYyBkZXRhaWxzLWVudW1zLm0yaSBkZXRhaWxzLW5vZGUubTJpIFwKZGlmZiAtLWdpdCBhL2xvY2FsL1ZlcnNpb24tTXVuZ2UucGwgYi9sb2NhbC9WZXJzaW9uLU11bmdlLnBsCmluZGV4IGZkZTU5MzkuLjI0OWNmZWMgMTAwNzU1Ci0tLSBhL2xvY2FsL1ZlcnNpb24tTXVuZ2UucGwKKysrIGIvbG9jYWwvVmVyc2lvbi1NdW5nZS5wbApAQCAtMzMsMTIgKzMzLDYgQEAKIH0KIAogbXkgQGV4cHJzID0gKAotCSAgICAgIyBjIGZpbGVzIHdpdGggYSBlcXVhbCBzaWduIGFuZCBhIHNwZWNpZmljIHZhcmlhYmxlCi0JICAgICB7IHR5cGUgPT4gJ2MnLAotCSAgICAgICBleHByID0+ICdWZXJzaW9uSW5mbyhccyo9XHMqW14iXSopIiguKikiJywKLQkgICAgICAgcmVwbCA9PiAnVmVyc2lvbkluZm8kMSIkVkVSU0lPTiInLCAKLQkgICAgICAgZmlsZXMgPT4gW3F3KHNubXBsaWIvc25tcF92ZXJzaW9uLmMpXX0sCi0KIAkgICAgICMgZG9jdW1lbnRhdGlvbiBmaWxlcwogCSAgICAgeyB0eXBlID0+ICdkb2NzJywKIAkgICAgICAgZXhwciA9PiAnVmVyc2lvbjogW1wuMC05YS16QS1aXSsnLApAQCAtNDcsMTIgKzQxLDYgQEAKIAkgICAgICAgbm90X3JlcXVpcmVkID0+IHsnZGlzdC9uZXQtc25tcC5zcGVjJyA9PiAxfQogCSAgICAgfSwKIAotCSAgICAgIyBzZWQgZmlsZXMKLQkgICAgIHsgdHlwZSA9PiAnc2VkJywKLQkgICAgICAgZXhwciA9PiAnXnNcL1ZFUlNJT05JTkZPXC9bXlwvXSonLAotCSAgICAgICByZXBsID0+ICdzXC9WRVJTSU9OSU5GT1wvJFZFUlNJT04nLAotCSAgICAgICBmaWxlcyA9PiBbcXcoc2Vkc2NyaXB0LmluKV19LAotCiAJICAgICAjIE1ha2VmaWxlcwogCSAgICAgeyB0eXBlID0+ICdNYWtlZmlsZScsCiAJICAgICAgIGV4cHIgPT4gJ1ZFUlNJT04gPSBbXC4wLTlhLXpBLVpdKycsCkBAIC02MSwxMyArNDksNiBAQAogCSAgICAgICBub3RfcmVxdWlyZWQgPT4geydkaXN0L01ha2VmaWxlJyA9PiAxfQogCSAgICAgfSwKIAotCSAgICAgIyBEb3h5Z2VuIGNvbmZpZwotCSAgICAgeyB0eXBlID0+ICdkb3h5Z2VuJywKLQkgICAgICAgZXhwciA9PiAnUFJPSkVDVF9OVU1CRVIoXHMrKT0oXHMrKVwnKC4qKVwnJywKLQkgICAgICAgcmVwbCA9PiAnUFJPSkVDVF9OVU1CRVIkMT0kMlwnJFZFUlNJT05cJycsCi0JICAgICAgIGZpbGVzID0+IFtxdyhkb3h5Z2VuLmNvbmYpXQotCSAgICAgfSwKLQogCSAgICAgIyBwZXJsIGZpbGVzCiAJICAgICB7IHR5cGUgPT4gJ3BlcmwnLAogCSAgICAgICBleHByID0+ICdWRVJTSU9OID0gXCcoLiopXCcnLApAQCAtOTUsMTIgKzc2LDYgQEAKIAkgICAgICAgZXhmaWxlcyA9PiBbcXcoY29uZmlndXJlKV0sCiAJICAgICB9LAogCi0JICAgICAjIGNvbmZpZ3VyZSBzY3JpcHQgZmlsZXMKLQkgICAgIHsgdHlwZSA9PiAnZG94eWdlbicsCi0JICAgICAgIGV4cHIgPT4gJ1BST0pFQ1RfTlVNQkVSXHMqPSAoLiopJywKLQkgICAgICAgcmVwbCA9PiAnUFJPSkVDVF9OVU1CRVIgICAgICAgICA9ICRWRVJTSU9OJywKLQkgICAgICAgZmlsZXMgPT4gW3F3KGRveHlnZW4uY29uZildLAotCSAgICAgfSwKIAkgICAgKTsKIAogIwpkaWZmIC0tZ2l0IGEvbG9jYWwvaHRtbC1hZGQtaGVhZGVyLWZvb3Rlci5wbCBiL2xvY2FsL2h0bWwtYWRkLWhlYWRlci1mb290ZXIucGwKaW5kZXggOTZlNDZhNS4uYzNjYjkwMiAxMDA3NTUKLS0tIGEvbG9jYWwvaHRtbC1hZGQtaGVhZGVyLWZvb3Rlci5wbAorKysgYi9sb2NhbC9odG1sLWFkZC1oZWFkZXItZm9vdGVyLnBsCkBAIC0yMSw3ICsyMSw3IEBACiB1c2UgRmlsZTo6c3RhdDsKIHVzZSBHZXRvcHQ6Okxvbmc7CiAKLW15ICR0aWR5X29wdGlvbnMgPSAnLWYgL2Rldi9udWxsIC1tIC1pIC1hc3hodG1sIC13cmFwIDEzMCAtcXVpZXQnOworbXkgJHRpZHlfb3B0aW9ucyA9ICctZiAvZGV2L251bGwgLW0gLWkgLWFzeGh0bWwgLXdyYXAgMTMwIC1xdWlldCAtLXF1b3RlLW5ic3Agbic7CiAKIG15ICRwYXR0ZXJuID0gJyc7CiBteSAkc2VjdGlvbiA9ICcnOwpkaWZmIC0tZ2l0IGEvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwgYi9sb2NhbC9odG1sLXRleHRmaWxlLWZpeC5wbAppbmRleCBmOTQxMTk3Li5iNzIwNzViIDEwMDc1NQotLS0gYS9sb2NhbC9odG1sLXRleHRmaWxlLWZpeC5wbAorKysgYi9sb2NhbC9odG1sLXRleHRmaWxlLWZpeC5wbApAQCAtOCw2ICs4LDcgQEAKICMgRGF0ZTogICAgICAgICAgIERlY2VtYmVyIDI5dGgsIDIwMDUKICMgCiBAZmlsZXMgPSBxdyIKK0NIQU5HRVMKIEVSUkFUQQogSU5TVEFMTAogTkVXUwpAQCAtMTcsNiArMTgsNyBAQAogUkVBRE1FLmFnZW50eAogUkVBRE1FLmFpeAogUkVBRE1FLmhwdXgxMQorUkVBRE1FLmlyaXgKIFJFQURNRS5rcmI1CiBSRUFETUUubWliMmMKIFJFQURNRS5taWJzCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXRvLW9pZC5tMmkgYi9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXRvLW9pZC5tMmkKaW5kZXggYjJhYTA3Ny4uYzE3ZGU0YyAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpCisrKyBiL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMtdG8tb2lkLm0yaQpAQCAtMjQsMTEgKzI0LDEwIEBACiBAICAgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKICAgICAgICAgLyogJG0yY19ub2RlX3N1bW1hcnkgKi8KIEAgICAgICAgIGlmICRtMmNfbm9kZV9uZWVkbGVuZ3RoID09IDFACi0gICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfJG5vZGUsICh1X2NoYXIqKSZtaWJfaWR4LT4kbm9kZSwKKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl8kbm9kZSwgJm1pYl9pZHgtPiRub2RlLAogICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4LT4ke25vZGV9X2xlbiAqIHNpemVvZihtaWJfaWR4LT4ke25vZGV9WzBdKSk7CiBAICAgICAgICBlbHNlQAotICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyXyRub2RlLCAodV9jaGFyKikmbWliX2lkeC0+JG5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT4kbm9kZSkpOworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyXyRub2RlLCAmbWliX2lkeC0+JG5vZGUsIHNpemVvZihtaWJfaWR4LT4kbm9kZSkpOwogQCAgICAgICAgZW5kQAogCiBAICAgIGVuZEAgIyBmb3IgZWFjaCBjb2x1bW4KZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYyBiL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYwppbmRleCA3ZWNhMzA4Li5hN2QxODkyIDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMKKysrIGIvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjCkBAIC0yMTUsMTQgKzIxNSw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF8ke2NvbnRleHR9X2NoZWNrX2RlcGVuZGVuY2llczsKIEAgICAgICBlbmRACiAKLU5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQgXyR7Y29udGV4dH1fdW5kb19jb2x1bW4oICR7Y29udGV4dH1fcm93cmVxX2N0eCAqcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCBpbnQgY29sdW1uICk7Ci0KIEAgICBlbmRAICMgd3JpdGFibGUKLUBpZiAoJG0yY190YWJsZV9wZXJzaXN0ZW50ID09IDEpIHx8ICgkbTJjX3RhYmxlX3Jvd19jcmVhdGlvbiA9PSAxKUAKLU5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQgXyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcygke2NvbnRleHR9X3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKLQotQGVuZEAKIEAgICBpZiAoIiRtMmNfZGF0YV9jb250ZXh0IiBlcSAiZ2VuZXJhdGVkIikgJiYgKCgkbTJjX3VuZG9fZW1iZWQgPT0gMCkgfHwgKCRtMmNfZGF0YV9hbGxvY2F0ZSA9PSAxKSlACiAke2NvbnRleHR9X2RhdGEgKiR7Y29udGV4dH1fYWxsb2NhdGVfZGF0YSh2b2lkKTsKIApAQCAtNjYxLDYgKzY1NCw1MSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIwogQGlmICgkbTJjX3RhYmxlX3Jvd19jcmVhdGlvbiA9PSAxKSB8fCAoJG0yY190YWJsZV9wZXJzaXN0ZW50ID09IDEpQAorTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorXyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcygke2NvbnRleHR9X3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6JHtjb250ZXh0fTpfJHtjb250ZXh0fV9jaGVja19pbmRleGVzIiwiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisjIworQGlmICRtMmNfdGFibGVfZXh0ZXJuYWxfaW5kZXhlcyAhPSAwQAorICAgIC8qCisgICAgICogY2hlY2sgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBFWFRFUk5BTCByb3cgZXhpc3RzCisgICAgICovCitAICAgZm9yZWFjaCAkbm9kZSBleHRlcm5hbGluZGV4QAorQCAgICAgIGluY2x1ZGUgbTJjX3NldHVwX25vZGUubTJpQAorCisgICAgLyogKElOREVYKSAkbTJjX25vZGVfc3VtbWFyeSAqLworICAgIHJjID0gJHtjb250ZXh0fV8ke25vZGV9X2NoZWNrX2luZGV4KCByb3dyZXFfY3R4ICk7CisgICAgaWYoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOworQCAgIGVuZEAgIyBmb3IgZWFjaCBub25pbmRleAorCitAZW5kQCAjIGV4dGVybmFsIGluZGV4CitAICAgZm9yZWFjaCAkbm9kZSBpbnRlcm5hbGluZGV4QAorQCAgICAgIGluY2x1ZGUgbTJjX3NldHVwX25vZGUubTJpQAorCisgICAgLyogKElOREVYKSAkbTJjX25vZGVfc3VtbWFyeSAqLworQCAgIGV2YWwgJG0yY19udl92YWwgPSAicm93cmVxX2N0eC0+dGJsX2lkeC4kbm9kZSJACitAICAgZXZhbCAkbTJjX252X2xlbiA9ICJyb3dyZXFfY3R4LT50YmxfaWR4LiR7bm9kZX1fbGVuIkAKK0AgICBldmFsICRtMmNfbnZfc3RyID0gInJvd3JlcV9jdHgtPnRibF9pZHguJG5vZGUiQAorQCAgIGluY2x1ZGUgbm9kZS12YWxpZGF0ZS5tMmlACisgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgcmMgPSAke25vZGV9X2NoZWNrX2luZGV4KCByb3dyZXFfY3R4ICk7CisgICAgICAgaWYoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOworQCAgIGVuZEAgIyBmb3IgZWFjaCBpbnRlcm5hbGluZGV4CisKKyAgICAvKgorICAgICAqIGlmIGluZGl2aWR1YWwgcGFydHMgbG9vayBvaywgY2hlY2sgdGhlbSBhcyBhIHdob2xlCisgICAgICovCisgICAgcmV0dXJuICR7Y29udGV4dH1fdmFsaWRhdGVfaW5kZXgoICR7Y29udGV4dH1faWZfY3R4LnVzZXJfY3R4LCByb3dyZXFfY3R4ICk7Cit9IC8qIF8ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMgKi8KKyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLyoqCiAgKiBAaW50ZXJuYWwKICAqIHdyYXBwZXIKQEAgLTk3NSw1NCArMTAxMyw2IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9IC8qIF9tZmRfJHtjb250ZXh0fV9nZXRfdmFsdWVzICovCiAKLSMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQGlmICgkbTJjX3RhYmxlX3Jvd19jcmVhdGlvbiA9PSAxKSB8fCAoJG0yY190YWJsZV9wZXJzaXN0ZW50ID09IDEpQAotTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAotXyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcygke2NvbnRleHR9X3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQotewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7Ci0KLSAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6JHtjb250ZXh0fTpfJHtjb250ZXh0fV9jaGVja19pbmRleGVzIiwiY2FsbGVkXG4iKSk7Ci0KLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOwotCi0jIwotQGlmICRtMmNfdGFibGVfZXh0ZXJuYWxfaW5kZXhlcyAhPSAwQAotICAgIC8qCi0gICAgICogY2hlY2sgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBFWFRFUk5BTCByb3cgZXhpc3RzCi0gICAgICovCi1AICAgZm9yZWFjaCAkbm9kZSBleHRlcm5hbGluZGV4QAotQCAgICAgIGluY2x1ZGUgbTJjX3NldHVwX25vZGUubTJpQAotCi0gICAgLyogKElOREVYKSAkbTJjX25vZGVfc3VtbWFyeSAqLwotICAgIHJjID0gJHtjb250ZXh0fV8ke25vZGV9X2NoZWNrX2luZGV4KCByb3dyZXFfY3R4ICk7Ci0gICAgaWYoTUZEX1NVQ0NFU1MgIT0gcmMpCi0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOwotQCAgIGVuZEAgIyBmb3IgZWFjaCBub25pbmRleAotCi1AZW5kQCAjIGV4dGVybmFsIGluZGV4Ci1AICAgZm9yZWFjaCAkbm9kZSBpbnRlcm5hbGluZGV4QAotQCAgICAgIGluY2x1ZGUgbTJjX3NldHVwX25vZGUubTJpQAotCi0gICAgLyogKElOREVYKSAkbTJjX25vZGVfc3VtbWFyeSAqLwotQCAgIGV2YWwgJG0yY19udl92YWwgPSAicm93cmVxX2N0eC0+dGJsX2lkeC4kbm9kZSJACi1AICAgZXZhbCAkbTJjX252X2xlbiA9ICJyb3dyZXFfY3R4LT50YmxfaWR4LiR7bm9kZX1fbGVuIkAKLUAgICBldmFsICRtMmNfbnZfc3RyID0gInJvd3JlcV9jdHgtPnRibF9pZHguJG5vZGUiQAotQCAgIGluY2x1ZGUgbm9kZS12YWxpZGF0ZS5tMmlACi0gICAgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQotICAgICAgICAgIHJldHVybiByYzsKLSAgICAgICAgcmMgPSAke25vZGV9X2NoZWNrX2luZGV4KCByb3dyZXFfY3R4ICk7Ci0gICAgICAgaWYoTUZEX1NVQ0NFU1MgIT0gcmMpCi0gICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOwotQCAgIGVuZEAgIyBmb3IgZWFjaCBpbnRlcm5hbGluZGV4Ci0KLSAgICAvKgotICAgICAqIGlmIGluZGl2aWR1YWwgcGFydHMgbG9vayBvaywgY2hlY2sgdGhlbSBhcyBhIHdob2xlCi0gICAgICovCi0gICAgcmV0dXJuICR7Y29udGV4dH1fdmFsaWRhdGVfaW5kZXgoICR7Y29udGV4dH1faWZfY3R4LnVzZXJfY3R4LCByb3dyZXFfY3R4ICk7Ci19IC8qIF8ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMgKi8KLUBlbmRAICMgJG0yY190YWJsZV9yb3dfY3JlYXRpb24KLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMKaW5kZXggMTJjZjlkZC4uZGIwZjM5OCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC10b3AubTJjCisrKyBiL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtdG9wLm0yYwpAQCAtMjUyLDggKzI1Miw4IEBACiBpbnQgJHtjb250ZXh0fV9yb3dfcmVmX2RlY3JlbWVudCgke2NvbnRleHR9X3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgpOwogCiBAICAgZW5kQAotZXh0ZXJuIG9pZCAke2NvbnRleHR9X29pZFtdOwotZXh0ZXJuIGludCAke2NvbnRleHR9X29pZF9zaXplOworZXh0ZXJuIGNvbnN0IG9pZCAke2NvbnRleHR9X29pZFtdOworZXh0ZXJuIGNvbnN0IGludCAke2NvbnRleHR9X29pZF9zaXplOwogCiBAZW5kQCAjIGZvciBlYWNoCiAKQEAgLTMwOSw4ICszMDksOCBAQAogCiBAZm9yZWFjaCAkdGFibGUgdGFibGVACiBAICAgIGluY2x1ZGUgbTJjX3NldHVwX3RhYmxlLm0yaUAKLW9pZCAke2NvbnRleHR9X29pZFtdID0geyAkY29udGV4dC51Y19PSUQgfTsKLWludCAke2NvbnRleHR9X29pZF9zaXplID0gT0lEX0xFTkdUSCgke2NvbnRleHR9X29pZCk7Citjb25zdCBvaWQgJHtjb250ZXh0fV9vaWRbXSA9IHsgJGNvbnRleHQudWNfT0lEIH07Citjb25zdCBpbnQgJHtjb250ZXh0fV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoJHtjb250ZXh0fV9vaWQpOwogCiBAICAgIGlmICJ4JG0yY19jb250ZXh0X3JlZyIgbmUgIngiQAogICAgICR7Y29udGV4dH1fcmVnaXN0cmF0aW9uICAke2NvbnRleHR9X3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLXVwZGF0ZSBiL2xvY2FsL21pYjJjLXVwZGF0ZQppbmRleCA2NjlhNzQ1Li4yMjNlYzYzIDEwMDc1NQotLS0gYS9sb2NhbC9taWIyYy11cGRhdGUKKysrIGIvbG9jYWwvbWliMmMtdXBkYXRlCkBAIC0xLDQgKzEsNCBAQAotIyEvYmluL2Jhc2gKKyMhL2Jpbi9zaAogIwogIyAkSWQkCiAjCkBAIC0zOSw3ICszOSw3IEBACiAKIGVycm9yKCkKIHsKLSAgICBlY2hvICJFUlJPUjogJEAiID4gL2Rldi9zdGRlcnIKKyAgICBlY2hvICJFUlJPUjogJEAiID4yCiB9CiAKIGRpZSgpCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5hY2Nlc3NfZnVuY3Rpb25zLmNvbmYgYi9sb2NhbC9taWIyYy5hY2Nlc3NfZnVuY3Rpb25zLmNvbmYKaW5kZXggODMzYTg1Ny4uYzIwOWIyOSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mCisrKyBiL2xvY2FsL21pYjJjLmFjY2Vzc19mdW5jdGlvbnMuY29uZgpAQCAtNzksNyArNzksNyBAQAogICAgIHZwdHIgPSBwdXRfaW5kZXhfZGF0YTsKICAgICAKICAgICBAZm9yZWFjaCAkaWR4IGluZGV4QAotICAgIHNubXBfc2V0X3Zhcl92YWx1ZSh2cHRyLCAodV9jaGFyICopIC8qKiBYWFg6ICRpZHggZGF0YSAqLywgLyoqIFhYWDogbGVuZ3RoIG9mICRpZHggZGF0YSAqLyk7CisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKHZwdHIsIC8qKiBYWFg6ICRpZHggZGF0YSAqLywgLyoqIFhYWDogbGVuZ3RoIG9mICRpZHggZGF0YSAqLyk7CiAgICAgdnB0ciA9IHZwdHItPm5leHRfdmFyaWFibGU7CiAgICAgQGVuZEAKIApAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgdnB0ciA9IHB1dF9pbmRleF9kYXRhOwogICAgIAogICAgIEBmb3JlYWNoICRpZHggaW5kZXhACi0gICAgc25tcF9zZXRfdmFyX3ZhbHVlKHZwdHIsICh1X2NoYXIgKikgLyoqIFhYWDogJGlkeCBkYXRhICovLCAvKiogWFhYOiBsZW5ndGggb2YgJGlkeCBkYXRhICovKTsKKyAgICBzbm1wX3NldF92YXJfdmFsdWUodnB0ciwgLyoqIFhYWDogJGlkeCBkYXRhICovLCAvKiogWFhYOiBsZW5ndGggb2YgJGlkeCBkYXRhICovKTsKICAgICB2cHRyID0gdnB0ci0+bmV4dF92YXJpYWJsZTsKICAgICBAZW5kQAogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYgYi9sb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYKaW5kZXggZDNlMDI2ZS4uMzE1NTlhYyAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mCisrKyBiL2xvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZgpAQCAtMTM2LDggKzEzNiw4IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogb2lkIGRlY2xhcmF0aW9ucwogICovCi1leHRlcm4gb2lkICR7aX1fb2lkW107Ci1leHRlcm4gc2l6ZV90ICR7aX1fb2lkX2xlbjsKK2V4dGVybiBjb25zdCBvaWQgJHtpfV9vaWRbXTsKK2V4dGVybiBjb25zdCBzaXplX3QgJHtpfV9vaWRfbGVuOwogCiAjZGVmaW5lICR7aX1fVEFCTEVfT0lEICRpLmNvbW1hb2lkCiAgICAgCkBAIC0yNjEsOCArMjYxLDggQEAKIHN0YXRpYyAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlfaGFuZGxlciA9IE5VTEw7CiBzdGF0aWMgICAgIG5ldHNubXBfdGFibGVfYXJyYXlfY2FsbGJhY2tzIGNiOwogCi1vaWQgJHtpfV9vaWRbXSA9IHsgJHtpfV9UQUJMRV9PSUQgfTsKLXNpemVfdCAke2l9X29pZF9sZW4gPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKK2NvbnN0IG9pZCAke2l9X29pZFtdID0geyAke2l9X1RBQkxFX09JRCB9OworY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbiA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwogCiAKICNpZmRlZiAke2l9X0NVU1RPTV9TT1JUCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZiBiL2xvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mCmluZGV4IDI2NmYwMDcuLmU3NjYyMWYgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mCisrKyBiL2xvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mCkBAIC0xLDQgKzEsNyBAQAogIyMgLSotIGMgLSotCisjIyBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXIgQ29weXJpZ2h0IChDKSBBcHBsZSwgSW5jLgorIyMgVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorIyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIERvIHRoZSAuaCBmaWxlCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zNiw4ICszOSwxNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgogI2luY2x1ZGUgIiR7bmFtZX0uaCIKIAorI2lmZGVmICR7aS51Y31fVVNFX0NBQ0hFCitzdGF0aWMgdm9pZCBfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKTsKK3N0YXRpYyBpbnQgX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpOworI2VuZGlmCisKIC8qKiBJbml0aWFsaXplcyB0aGUgJG5hbWUgbW9kdWxlICovCiB2b2lkCiBpbml0XyRuYW1lKHZvaWQpCkBAIC00Nyw5ICs1Nyw5IEBACiAgICAgaW5pdGlhbGl6ZV90YWJsZV8kaSgpOwogICBAZW5kQAogfQotCisjIwogQGZvcmVhY2ggJGkgdGFibGVACi0gICMgRGV0ZXJtaW5lIHRoZSBmaXJzdC9sYXN0IGNvbHVtbiBuYW1lcworIyMgRGV0ZXJtaW5lIHRoZSBmaXJzdC9sYXN0IGNvbHVtbiBuYW1lcwogICBAZXZhbCAkZmlyc3RfY29sdW1uID0gIi0iQAogICBAZXZhbCAkbGFzdF9jb2x1bW4gPSAiLSJACiAgIEBmb3JlYWNoICRjIGNvbHVtbkAKQEAgLTY1LDEyICs3NSwxOCBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfY29udGFpbmVyICAgICAgICAgICAgICAgKmNvbnRhaW5lcjsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKKyAgICBjb25zdCBzaXplX3QgJHtpfV9vaWRfbGVuICAgPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWcgPSBOVUxMOworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgICAgICAgICAgICAgKmhhbmRsZXIgPSBOVUxMOworICAgIG5ldHNubXBfY29udGFpbmVyICAgICAgICAgICAgICAgKmNvbnRhaW5lciA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CisjaWZkZWYgJHtpLnVjfV9VU0VfQ0FDSEUKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGUgPSBOVUxMOworI2VuZGlmCiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTppbml0IiwgImluaXRpYWxpemluZyB0YWJsZSAkaVxuIikpOworICAgIAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAogICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuLApAQCAtODAsOSArOTYsMjYgQEAKICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkKIEBlbmRACiAgICAgICAgICAgICAgICk7CisgICAgaWYgKE5VTEwgPT0gcmVnKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGNyZWF0aW5nIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZvciAkaVxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CitAaWYgJGkuc2V0dGFibGVACisgICAgLyoqIHNob3VsZCBhIHNldCBvbiBhIG5vbi1leGlzdGVudCByb3cgY3JlYXRlIGEgbmV3IG9uZT8gKi8KKyAgICAvKiogcmVnLT5tb2RlcyB8PSBIQU5ETEVSX0NBTl9OT1RfQ1JFQVRFOyAqLworQGVuZEAKIAotICAgIGNvbnRhaW5lciAgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCAidGFibGVfY29udGFpbmVyIiApOworICAgIGNvbnRhaW5lciAgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCAiJGk6dGFibGVfY29udGFpbmVyIiApOworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBjcmVhdGluZyBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKwogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICk7CisgICAgaWYgKE5VTEwgPT0gdGFibGVfaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCiAgICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZHgudHlwZSwgIC8qIGluZGV4OiAkaWR4ICovCkBAIC05MSwxMyArMTI0LDkyIEBACiAgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl8kZmlyc3RfY29sdW1uLnVjOwogICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fJGxhc3RfY29sdW1uLnVjOwogICAgIAotICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3JlZ2lzdGVyKCByZWcsIHRhYmxlX2luZm8sIGNvbnRhaW5lciwgMCApOworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YWJsZV9pbmZvLCBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjb250YWluZXJfdGFibGUgaGFuZGxlciBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0LCB3aWxsIHJldXNlIGJlbG93ICovCiAKLSAgICAvKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZSAqLworI2lmZGVmICR7aS51Y31fVVNFX0NBQ0hFCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBjYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aX1fb2lkLCAke2l9X29pZF9sZW4pOworCisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciAkaVxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgY2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOworICAgIGNhY2hlLT5tYWdpYyA9IGNvbnRhaW5lcjsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBoYW5kbGVyIGZvciAkaVxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY2FjaGUgaGFuZGxlciBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0Ki8KKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiByZWdpc3RlciB0aGUgdGFibGUKKyAgICAgKi8KKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciAkaVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZQorICAgICAqLworCisgICAgCisgICAgcmV0dXJuOyAvKiBvayAqLworCisgICAgLyoKKyAgICAgKiBTb21lIGVycm9yIG9jY3VycmVkIGR1cmluZyByZWdpc3RyYXRpb24uIENsZWFuIHVwIGFuZCBiYWlsLgorICAgICAqLworICBiYWlsOiAvKiBub3Qgb2sgKi8KKyAgICAKKyAgICBpZiAoaGFuZGxlcikKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CisKKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorICAgIGlmIChjYWNoZSkKKyAgICAgICAgbmV0c25tcF9jYWNoZV9mcmVlKGNhY2hlKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisKKyAgICBpZiAoY29udGFpbmVyKQorICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworCisgICAgaWYgKHJlZykgCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCi0gICAgLyogVHlwaWNhbCBkYXRhIHN0cnVjdHVyZSBmb3IgYSByb3cgZW50cnkgKi8KLXN0cnVjdCAke2l9X2VudHJ5IHsKKy8qKiBUeXBpY2FsIGRhdGEgc3RydWN0dXJlIGZvciBhIHJvdyBlbnRyeSAqLwordHlwZWRlZiBzdHJ1Y3QgJHtpfV9lbnRyeV9zIHsKICAgICBuZXRzbm1wX2luZGV4IG9pZF9pbmRleDsKIAogICAgIC8qIEluZGV4IHZhbHVlcyAqLwpAQCAtMTMzLDEwICsyNDUsMTAgQEAKICAgICBAZW5kQAogCiAgICAgaW50ICAgdmFsaWQ7Ci19OworfSAke2l9X2VudHJ5OwogCi0vKiBjcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0YWJsZSAqLwotc3RydWN0ICR7aX1fZW50cnkgKgorLyoqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlICovCiske2l9X2VudHJ5ICoKICR7aX1fY3JlYXRlRW50cnkobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgCiAgIEBmb3JlYWNoICRpZHggaW5kZXhACiAgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKQEAgLTE0Nyw5ICsyNTksOSBAQAogICAgIEBlbmRACiAgIEBlbmRACiAgICAgICAgICAgICAgICAgKSB7Ci0gICAgc3RydWN0ICR7aX1fZW50cnkgKmVudHJ5OworICAgICR7aX1fZW50cnkgKmVudHJ5OwogCi0gICAgZW50cnkgPSBTTk1QX01BTExPQ19UWVBFREVGKHN0cnVjdCAke2l9X2VudHJ5KTsKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoJHtpfV9lbnRyeSk7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE2NywxMCArMjc5LDEwIEBACiAgICAgcmV0dXJuIGVudHJ5OwogfQogCi0vKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgKi8KKy8qKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgKi8KIHZvaWQKICR7aX1fcmVtb3ZlRW50cnkobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgCi0gICAgICAgICAgICAgICAgIHN0cnVjdCAke2l9X2VudHJ5ICplbnRyeSkgeworICAgICAgICAgICAgICAgICAke2l9X2VudHJ5ICplbnRyeSkgewogCiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuOyAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLwpAQCAtMTc5LDYgKzI5MSwxNSBAQAogICAgICAgICBTTk1QX0ZSRUUoIGVudHJ5ICk7ICAgLyogWFhYIC0gcmVsZWFzZSBhbnkgb3RoZXIgaW50ZXJuYWwgcmVzb3VyY2VzICovCiB9CiAKKy8qKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgKi8KK3ZvaWQKKyR7aX1fZnJlZUVudHJ5KCR7aX1fZW50cnkgKmVudHJ5KSB7CisKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm47ICAgIC8qIE5vdGhpbmcgdG8gcmVtb3ZlICovCisgICAgU05NUF9GUkVFKCBlbnRyeSApOyAgIC8qIFhYWCAtIHJlbGVhc2UgYW55IG90aGVyIGludGVybmFsIHJlc291cmNlcyAqLworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlICRpIHRhYmxlICovCiBpbnQKICR7aX1faGFuZGxlcigKQEAgLTE4OSwxMCArMzEwLDEzIEBACiAKICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAqcmVxdWVzdDsKICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKLSAgICBuZXRzbm1wX3RhYmxlX2RhdGEgICAgICAgICAqdGFibGVfZGF0YTsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAgICAgICAgICAqY29udGFpbmVyOwotICAgIHN0cnVjdCAke2l9X2VudHJ5ICAgICAgICAgICp0YWJsZV9lbnRyeTsKKyAgICAke2l9X2VudHJ5ICAgICAgICAgICAgICAgICAqdGFibGVfZW50cnk7CitAaWYgJGkuc2V0dGFibGVACiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldDsKK0BlbmRACisKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTpoYW5kbGVyIiwgIlByb2Nlc3NpbmcgcmVxdWVzdCAoJWQpXG4iLCByZXFpbmZvLT5tb2RlKSk7CiAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgLyoKQEAgLTIwMCw5ICszMjQsMTggQEAKICAgICAgICAgICovCiAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiAgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACkBAIC0yMTUsNyArMzQ4LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIqKXRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbik7CiAgICAgICAgICAgICBAZWxzZUAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLApAQCAtMjM4LDkgKzM3MSwxOCBAQAogICAgICAgICAgKi8KICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewotICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0ICR7aX1fZW50cnkgKikKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCisgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKCR7aX1fZW50cnkgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKICAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKICAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKQEAgLTI1MSw3ICszOTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICh0YWJsZV9lbnRyeSA/IFJTX0FDVElWRSA6IFJTX05PTkVYSVNURU5UICkpOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKLQkgICAgICAgIC8qIG9yIHBvc3NpYmxjICduZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUnICovCisJICAgICAgICAvKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLwogICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOwogICAgICAgICAgICAgQGVsc2VACkBAIC0yNzcsMTAgKzQxOSwxOCBAQAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiBAaWYgJGkuY3JlYXRhYmxlQAogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewotICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiBAaWYgJGkucm93c3RhdHVzQApAQCAtMjkwLDYgKzQ0MCwxNCBAQAogICAgICAgICAgICAgICAgIHN3aXRjaCAoKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpIHsKICAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFOREdPOgogICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5EV0FJVDoKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGNvbnRhaW5lciBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnkgPSAke2l9X2NyZWF0ZUVudHJ5KGNvbnRhaW5lcgogICBAZm9yZWFjaCAkaWR4IGluZGV4QAogICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACkBAIC0zMTcsNiArNDc1LDE0IEBACiAgICAgICAgICAgICBAZW5kQAogICAgICAgICAgICAgQGVuZEAKICAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGNvbnRhaW5lciBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnkgPSAke2l9X2NyZWF0ZUVudHJ5KGNvbnRhaW5lcgogICBAZm9yZWFjaCAkaWR4IGluZGV4QAogICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACkBAIC0zNDUsMTAgKzUxMSwyNiBAQAogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKIEBpZiAkaS5jcmVhdGFibGVACiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBjb250YWluZXIgICA9ICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0KHJlcXVlc3QpOwotICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0ICR7aX1fZW50cnkgKikKKyAgICAgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGNvbnRhaW5lciBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiBAaWYgJGkucm93c3RhdHVzQApAQCAtMzgyLDkgKzU2NCwxOCBAQAogCiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQApAQCAtNDE3LDkgKzYwOCwxOCBAQAogQGlmICRpLnJvd3N0YXR1c0AKICAgICAgICAgLyogQ2hlY2sgdGhlIGludGVybmFsIGNvbnNpc3RlbmN5IG9mIGFuIGFjdGl2ZSByb3cgKi8KICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiAgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACkBAIC00NDMsMTAgKzY0MywyNiBAQAogCiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQApAQCAtNTE4LDEwICs3MzQsMTggQEAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKIEBpZiAkaS5jcmVhdGFibGVACiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7Ci0gICAgICAgICAgICBjb250YWluZXIgICA9ICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0KHJlcXVlc3QpOwotICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0ICR7aX1fZW50cnkgKikKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCisgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKCR7aX1fZW50cnkgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKICAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKIEBpZiAkaS5yb3dzdGF0dXNACkBAIC01NDQsNiArNzY4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBSU19ERVNUUk9ZOgorICAgICAgICAgICAgICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0KHJlcXVlc3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgY29udGFpbmVyIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAke2l9X3JlbW92ZUVudHJ5KGNvbnRhaW5lciwgdGFibGVfZW50cnkgKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAZW5kQApAQCAtNTY2LDQgKzc5OCw2NyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworI2lmZGVmICR7aS51Y31fVVNFX0NBQ0hFCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworICAgIAorICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDoke2l9Ol9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNhY2hlIGZvciAke2l9X2NhY2hlX2xvYWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGNvbnRhaW5lciA9IChuZXRzbm1wX2NvbnRhaW5lciAqKWNhY2hlLT5tYWdpYzsKKworICAgIC8qKiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIGFuIGludmFsaWQgb3IgZXhwaXJlZCBjYWNoZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KCgwID09IGNhY2hlLT52YWxpZCkgfHwgKDEgPT0gY2FjaGUtPmV4cGlyZWQpKTsKKworICAgIC8qCisgICAgICogbG9hZCBjYWNoZSBoZXJlIChvciBjYWxsIGZ1bmN0aW9uIHRvIGRvIGl0KQorICAgICAqLworICAgIC8qKiBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcmVjb3JkKTsgKi8KKworICAgIHJldHVybiAwOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBJbnRlcm5hbAorICovCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCitzdGF0aWMgdm9pZAorJHtpfV9mcmVlRW50cnlfY2IoJHtpfV9lbnRyeSAqZW50cnksIHZvaWQgKm1hZ2ljKSB7CisKKyAgICAke2l9X2ZyZWVFbnRyeShlbnRyeSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6JHtpfTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiAke2l9X2NhY2hlX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnRhaW5lciA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWM7CisKKyAgICAvKgorICAgICAqIGVtcHR5IChidXQgZG9uJ3QgZnJlZSkgY2FjaGUgaGVyZQorICAgICAqLworICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopJHtpfV9mcmVlRW50cnlfY2IsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfZnJlZSAqLworI2VuZGlmIC8qICR7aS51Y31fVVNFX0NBQ0hFICovCiBAZW5kQApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiBiL2xvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYKaW5kZXggMTFmZDVkMi4uOWNmNzVmZCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZgorKysgYi9sb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mCkBAIC00Myw4ICs0Myw3IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlXyRpKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKLSAgICBzaXplX3QgJHtpfV9vaWRfbGVuID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OwogICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldDsKIAogICAgIC8qIGNyZWF0ZSB0aGUgdGFibGUgc3RydWN0dXJlIGl0c2VsZiAqLwpAQCAtNzgsNyArNzcsNyBAQAogICAgICAgIG9mIHRoZSByZXF1ZXN0LCBjaGFuZ2UgJHtpfV9oYW5kbGVyIHRvICJOVUxMIiAqLwogICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YV9zZXQobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIiRpIiwgJHtpfV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2l9X29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpfV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKCR7aX1fb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9zZXQsIE5VTEwpOwogfQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYgYi9sb2NhbC9taWIyYy5pbnRfd2F0Y2guY29uZgppbmRleCA3Nzg3YTJmLi5lY2M1ZDEwIDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy5pbnRfd2F0Y2guY29uZgorKysgYi9sb2NhbC9taWIyYy5pbnRfd2F0Y2guY29uZgpAQCAtNTAsMTIgKzUwLDEyIEBACiBpbml0XyR7bmFtZX0odm9pZCkKIHsKICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnOwotICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3aW5mbzsKIAogICBAZm9yZWFjaCAkaSBzY2FsYXJACiAgICAgQGlmICEkaS5uZWVkbGVuZ3RoQAotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKICAgICBAZW5kQAorICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gJHtpfV93aW5mbzsKICAgQGVuZEAKIAogICAvKgpAQCAtOTIsMTAgKzkyLDkgQEAKICAgICBAZWxzZUAKICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOwogICAgIEBlbmRACi0gICAgd2luZm8gPSBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgJiRpLCBzaXplb2YoJGkuZGVjbCksCi0gICAgICAgICAgICAgICAgICRpLnR5cGUsIFdBVENIRVJfRklYRURfU0laRSk7Ci0gICAgaWYgKG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoIHJlZywgd2luZm8gKSA8IDAgKSB7CisgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygmJHtpfV93aW5mbywgJiRpLCBzaXplb2YoJGkuZGVjbCksCisJCQkgICAgICAkaS50eXBlLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOworaWYgKG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoIHJlZywgJiR7aX1fd2luZm8gKSA8IDAgKSB7CiAgICAgICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHdhdGNoZWQgJGkiICk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYgYi9sb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYKaW5kZXggM2E1NWQyMy4uZTQwOWJhOSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mCisrKyBiL2xvY2FsL21pYjJjLml0ZXJhdGUuY29uZgpAQCAtNzIsMTIgKzcyLDE0IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlXyRpKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKLSAgICBzaXplX3QgJHtpfV9vaWRfbGVuICAgPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CisgICAgY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTppbml0IiwgImluaXRpYWxpemluZyB0YWJsZSAkaVxuIikpOworCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICIkaSIsICAgICAke2l9X2hhbmRsZXIsCiAgICAgICAgICAgICAgICR7aX1fb2lkLCAke2l9X29pZF9sZW4sCkBAIC0zMDcsNiArMzA5LDggQEAKICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKICAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAgICAgICAgICAqdGFibGVfZW50cnk7CiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTpoYW5kbGVyIiwgIlByb2Nlc3NpbmcgcmVxdWVzdCAoJWQpXG4iLCByZXFpbmZvLT5tb2RlKSk7CisKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgLyoKICAgICAgICAgICogUmVhZC1zdXBwb3J0IChhbHNvIGNvdmVycyBHZXROZXh0IHJlcXVlc3RzKQpAQCAtMzI4LDcgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKQEAgLTM2NCw3ICszNjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICh0YWJsZV9lbnRyeSA/IFJTX0FDVElWRSA6IFJTX05PTkVYSVNURU5UICkpOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKLQkgICAgICAgIC8qIG9yIHBvc3NpYmxjICduZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUnICovCisJICAgICAgICAvKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLwogICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOwogICAgICAgICAgICAgQGVsc2VACmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mIGIvbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZgppbmRleCBkYzdlYWUzLi45MGI4NTA4IDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mCisrKyBiL2xvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYKQEAgLTc3LDExICs3NywxMyBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlfaGFuZGxlcjsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvOwogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKwogICAgIC8qKiBjcmVhdGUgdGhlIHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzICovCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgaWluZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfaXRlcmF0b3JfaW5mbyk7CkBAIC0xNzcsMTQgKzE3OSwxNCBAQAogCiAgICAgdm9pZCAqZGF0YV9jb250ZXh0ID0gTlVMTDsKIAotICAgIG9pZCAqc3VmZml4OwotICAgIHNpemVfdCBzdWZmaXhfbGVuOwotCiAgICAgLyoqIGNvbHVtbiBhbmQgcm93IGluZGV4IGVuY29kZWQgcG9ydGlvbiAqLwotICAgIHN1ZmZpeCA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDE7Ci0gICAgc3VmZml4X2xlbiA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoIC0KKyAgICBjb25zdCBvaWQgKiBjb25zdCBzdWZmaXggPQorICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxOworICAgIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGggLQogICAgICAgICAocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxKTsKICAgICAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTpoYW5kbGVyIiwgIlByb2Nlc3NpbmcgcmVxdWVzdCAoJWQpXG4iLCByZXFpbmZvLT5tb2RlKSk7CisKICAgICBmb3IocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgewogICAgICAgICB2YXIgPSByZXF1ZXN0LT5yZXF1ZXN0dmI7CiAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKQEAgLTI0Miw4ICsyNDQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBnZXRfJGMoZGF0YV9jb250ZXh0LCAmcmV0dmFsX2xlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXR2YWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUodmFyLCAkYy50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVfY2hhciAqKSByZXR2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWxfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsX2xlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mIGIvbG9jYWwvbWliMmMubm90aWZ5LmNvbmYKaW5kZXggZDIxMTYxOS4uNmMxZWIxYSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMubm90aWZ5LmNvbmYKKysrIGIvbG9jYWwvbWliMmMubm90aWZ5LmNvbmYKQEAgLTMwLDIwICszMCwyMCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiJHtuYW1lfS5oIgogCi1zdGF0aWMgb2lkIHNubXB0cmFwX29pZFtdID0gezEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDQsIDEsIDB9Oworc3RhdGljIGNvbnN0IG9pZCBzbm1wdHJhcF9vaWRbXSA9IHsxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwfTsKIAogQGZvcmVhY2ggJGkgbm90aWZpY2F0aW9uc0AKIGludAogc2VuZF8ke2l9X3RyYXAoIHZvaWQgKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAgKnZhcl9saXN0ID0gTlVMTDsKLSAgICBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKICAgICBAZm9yZWFjaCAkdiB2YXJiaW5kc0AKICAgICBAaWYgJHYuaXNzY2FsYXJACi0gICAgb2lkICR7dn1fb2lkW10gPSB7ICR2LmNvbW1hb2lkLCAwIH07CisgICAgY29uc3Qgb2lkICR7dn1fb2lkW10gPSB7ICR2LmNvbW1hb2lkLCAwIH07CiAgICAgQGVuZEAKICAgICBAaWYgISR2Lmlzc2NhbGFyQAotICAgIG9pZCAke3Z9X29pZFtdID0geyAkdi5jb21tYW9pZCwgLyogaW5zZXJ0IGluZGV4IGhlcmUgKi8gfTsKKyAgICBjb25zdCBvaWQgJHt2fV9vaWRbXSA9IHsgJHYuY29tbWFvaWQsIC8qIGluc2VydCBpbmRleCBoZXJlICovIH07CiAgICAgQGVuZEAKICAgICBAZW5kQAogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5vbGQtYXBpLmNvbmYgYi9sb2NhbC9taWIyYy5vbGQtYXBpLmNvbmYKaW5kZXggOGRhZjhmMS4uOGZhMjcwYiAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMub2xkLWFwaS5jb25mCisrKyBiL2xvY2FsL21pYjJjLm9sZC1hcGkuY29uZgpAQCAtNjksMTAgKzY5LDEyIEBACiAgICAgQGV2YWwgJHN1ZmZpeGxlbiA9ICRpLm9pZGxlbmd0aCAtICRuYW1lLm9pZGxlbmd0aEAKICNkZWZpbmUgJGkudWMJCSRtYWdpYwogICAgIEBpZiAkaS5zZXR0YWJsZUAKLXskaS51YywgICRpLnR5cGUsICBSV1JJVEUsICB2YXJfJHtuYW1lfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCB9fSwKK3skaS51YywgICRpLnR5cGUsICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgdmFyXyR7bmFtZX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggfX0sCiAgICAgQGVuZEAKICAgICBAaWYgISRpLnNldHRhYmxlQAoteyRpLnVjLCAgJGkudHlwZSwgIFJPTkxZICwgIHZhcl8ke25hbWV9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4IH19LAoreyRpLnVjLCAgJGkudHlwZSwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorIHZhcl8ke25hbWV9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4IH19LAogICAgIEBlbmRACiBAZW5kQAogCkBAIC05MSwxMCArOTMsMTIgQEAKICAgICBAZXZhbCAkbWFnaWMgPSAkbWFnaWMgKyAxQAogI2RlZmluZSAkYy51YwkJJG1hZ2ljCiAgICAgQGlmICRjLnNldHRhYmxlQAoteyRjLnVjLCAgJGMudHlwZSwgIFJXUklURSwgIHZhcl8ke2l9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4ICRjdG1wIDEsICRjLnN1YmlkIH19LAoreyRjLnVjLCAgJGMudHlwZSwgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyB2YXJfJHtpfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCAkY3RtcCAxLCAkYy5zdWJpZCB9fSwKICAgICBAZW5kQAogICAgIEBpZiAhJGMuc2V0dGFibGVACi17JGMudWMsICAkYy50eXBlLCAgUk9OTFksICAgdmFyXyR7aX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggJGN0bXAgMSwgJGMuc3ViaWQgfX0sCit7JGMudWMsICAkYy50eXBlLCAgTkVUU05NUF9PTERBUElfUk9OTFksCisgdmFyXyR7aX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggJGN0bXAgMSwgJGMuc3ViaWQgfX0sCiAgICAgQGVuZEAKICBAZW5kQAogQGVuZEAKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mIGIvbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0ZDQxNgotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mCkBAIC0wLDAgKzEsNjEyIEBACisjIyAtKi0gYyAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIERvIHRoZSAuaCBmaWxlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitAb3BlbiAke25hbWV9LmhACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAkSWQ6IG1pYjJjLnJhdy10YWJsZS5jb25mIDE3NDM2IDIwMDktMDMtMzEgMTU6MTI6MTlaIGR0czEyICQKKyAqLworI2lmbmRlZiAkbmFtZS51Y19ICisjZGVmaW5lICRuYW1lLnVjX0gKKwordm9pZCBpbml0XyRuYW1lKHZvaWQpOworCisjZW5kaWYgLyogJG5hbWUudWNfSCAqLworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgRG8gdGhlIC5jIGZpbGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0BvcGVuICR7bmFtZX0uY0AKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICRJZDogbWliMmMucmF3LXRhYmxlLmNvbmYgMTc0MzYgMjAwOS0wMy0zMSAxNToxMjoxOVogZHRzMTIgJAorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSAiJHtuYW1lfS5oIgorCitAZm9yZWFjaCAkaSB0YWJsZUAKKyAgIyMgRGV0ZXJtaW5lIHRoZSBmaXJzdC9sYXN0IGNvbHVtbiBuYW1lcworICBAZXZhbCAkZmlyc3RfY29sdW1uID0gIi0iQAorICBAZXZhbCAkbGFzdF9jb2x1bW4gPSAiLSJACisgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICBAaWYgJGMucmVhZGFibGVACisgICAgICBAaWYgIiRmaXJzdF9jb2x1bW4iIGVxICItIkAKKyAgICAgICAgQGV2YWwgJGZpcnN0X2NvbHVtbiA9ICRjQAorICAgICAgQGVuZEAKKyAgICAgIEBldmFsICRsYXN0X2NvbHVtbiA9ICRjQAorICAgIEBlbmRACisgIEBlbmRACisKKy8qIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlICRpICovCisgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyNkZWZpbmUgQ09MVU1OXyRjLnVjCQkkYy5zdWJpZAorICBAZW5kQAorCisgICAgLyogVHlwaWNhbCBkYXRhIHN0cnVjdHVyZSBmb3IgYSByb3cgZW50cnkgKi8KK3N0cnVjdCAke2l9X2VudHJ5IHsKKyAgICAvKiBJbmRleCB2YWx1ZXMgKi8KKyAgICBAZm9yZWFjaCAkaWR4IGluZGV4QAorICAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQAorICAgICRpZHguZGVjbCAkaWR4W05OTl07CisgICAgc2l6ZV90ICR7aWR4fV9sZW47CisgICAgIEBlbHNlQAorICAgICRpZHguZGVjbCAkaWR4OworICAgICBAZW5kQAorICAgIEBlbmRACisKKyAgICAvKiBDb2x1bW4gdmFsdWVzICovCisgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgIEBpZiAkYy5yZWFkYWJsZUAKKyAgICAgQGlmICRjLm5lZWRsZW5ndGhACisgICAgJGMuZGVjbCAkY1tOTk5dOworICAgIHNpemVfdCAke2N9X2xlbjsKKyAgICAgQGVsc2VACisgICAgJGMuZGVjbCAkYzsKKyAgICAgQGVuZEAKKyAgICAgQGlmICRjLnNldHRhYmxlQAorICAgICAgQGlmICEkYy5yb3dzdGF0dXNACisgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACisgICAgJGMuZGVjbCBvbGRfJGNbTk5OXTsKKyAgICBzaXplX3Qgb2xkXyR7Y31fbGVuOworICAgICAgIEBlbHNlQAorICAgICRjLmRlY2wgb2xkXyRjOworICAgICAgIEBlbmRACisgICAgICBAZW5kQAorICAgICBAZW5kQAorICAgIEBlbmRACisgICAgQGVuZEAKKworICAgIGludCAgIHZhbGlkOworfTsKKworLyogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgKi8KK3N0YXRpYyBzdHJ1Y3QgJHtpfV9lbnRyeSAqCiske2l9X2NyZWF0ZUVudHJ5KCBpbnQgZHVtbXkKKyAgQGZvcmVhY2ggJGlkeCBpbmRleEAKKyAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgICAsICRpZHguZGVjbCogJGlkeAorICAgICAgICAgICAgICAgICAsIHNpemVfdCAke2lkeH1fbGVuCisgICAgQGVsc2VACisgICAgICAgICAgICAgICAgICwgJGlkeC5kZWNsICAkaWR4CisgICAgQGVuZEAKKyAgQGVuZEAKKyAgICAgICAgICAgICAgICApIHsKKyAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAqZW50cnk7CisKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3RydWN0ICR7aX1fZW50cnkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogWFhYIC0gaW5zZXJ0IGVudHJ5IGludG8gbG9jYWwgZGF0YSBzdHJ1Y3R1cmUgKi8KKyAgICByZXR1cm4gZW50cnk7Cit9CisKKy8qIHJlbW92ZSBhIHJvdyBmcm9tIHRoZSB0YWJsZSAqLworc3RhdGljIHZvaWQKKyR7aX1fcmVtb3ZlRW50cnkoc3RydWN0ICR7aX1fZW50cnkgKmVudHJ5KSB7CisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOyAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLworCisgICAgLyogWFhYIC0gcmVtb3ZlIGVudHJ5IGZyb20gbG9jYWwgZGF0YSBzdHJ1Y3R1cmUgKi8KKworICAgIGlmIChlbnRyeSkKKyAgICAgICAgU05NUF9GUkVFKCBlbnRyeSApOyAgIC8qIFhYWCAtIHJlbGVhc2UgYW55IG90aGVyIGludGVybmFsIHJlc291cmNlcyAqLworfQorCisKKy8qKiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHJvdyBmb3IgYW4gZXhhY3QgcmVxdWVzdCAqLworc3RhdGljIHN0cnVjdCAke2l9X2VudHJ5ICoKKyR7aX1fZ2V0X2VudHJ5KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4ZXMgKSB7CisgICAgc3RydWN0ICR7aX1fZW50cnkgKnJvdyA9IE5VTEw7CisKKyAgICAvKiBYWFggLSBVc2UgdGhlICdpbmRleGVzJyBwYXJhbWV0ZXIgdG8gcmV0cmlldmUgdGhlIGRhdGEKKyAgICAgICBzdHJ1Y3R1cmUgZm9yIHRoZSByZXF1ZXN0ZWQgcm93LCBhbmQgcmV0dXJuIHRoaXMuICovCisgICAgcmV0dXJuIHJvdzsKK30KKworLyoqIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgcm93IGZvciBhbiBmdXp6eSByZXF1ZXN0ICovCitzdGF0aWMgc3RydWN0ICR7aX1fZW50cnkgKgorJHtpfV9nZXRfbmV4dF9lbnRyeSggbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgKnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgICAgICAgICppbmRleGVzICkgeworICAgIHN0cnVjdCAke2l9X2VudHJ5ICpyb3cgPSBOVUxMOworICAgIG9pZCAgICAgICAgICAgICBidWlsZF9zcGFjZVtNQVhfT0lEX0xFTl07CisgICAgc2l6ZV90ICAgICAgICAgIGJ1aWxkX3NwYWNlX2xlbiA9IDA7CisgICAgc2l6ZV90ICAgICAgICAgIGluZGV4X29pZF9sZW4gPSAwOworCisgICAgLyogWFhYIC0gVXNlIHRoZSAnaW5kZXhlcycgcGFyYW1ldGVyIHRvIGlkZW50aWZ5IHRoZQorICAgICAgICAgICAgIG5leHQgcm93IGluIHRoZSB0YWJsZS4uLi4gKi8KKworICAgIC8qIFhYWCAgIC4uLi4gdXBkYXRlIHRoZSAnaW5kZXhlcycgcGFyYW1ldGVyIHdpdGggdGhlCisgICAgICAgICAgICAgYXBwcm9wcmlhdGUgaW5kZXggdmFsdWVzIC4uLiAqLworCisgICAgLyogLi4uIGFuZCB1cGRhdGUgdGhlIHJlcXVlc3RlZCBPSUQgdG8gbWF0Y2ggdGhpcyBpbnN0YW5jZSAqLworICAgIG1lbWNweShidWlsZF9zcGFjZSwgcmVnaW5mby0+cm9vdG9pZCwgICAvKiByZWdpc3RlcmVkIG9pZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgYnVpbGRfc3BhY2VfbGVuID0gcmVnaW5mby0+cm9vdG9pZF9sZW47CisgICAgYnVpbGRfc3BhY2VbYnVpbGRfc3BhY2VfbGVuKytdID0gMTsgIC8qIGVudHJ5ICovCisgICAgYnVpbGRfc3BhY2VbYnVpbGRfc3BhY2VfbGVuKytdID0gY29sdW1uOyAvKiBjb2x1bW4gKi8KKyAgICBidWlsZF9vaWRfbm9hbGxvYyhidWlsZF9zcGFjZSArIGJ1aWxkX3NwYWNlX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICBNQVhfT0lEX0xFTiAtIGJ1aWxkX3NwYWNlX2xlbiwgJmluZGV4X29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgaW5kZXhlcyk7CisgICAgc25tcF9zZXRfdmFyX29iamlkKHJlcXVlc3QtPnJlcXVlc3R2YiwgYnVpbGRfc3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3NwYWNlX2xlbiArIGluZGV4X29pZF9sZW4pOworCisgICAgLyogIEZpbmFsbHksIHJldHVybiB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoaXMgcm93ICovCisgICAgcmV0dXJuIHJvdzsKK30KKworCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlICRpIHRhYmxlICovCitzdGF0aWMgaW50Ciske2l9X2hhbmRsZXIoCisgICAgbmV0c25tcF9taWJfaGFuZGxlciAgICAgICAgICAgICAgICpoYW5kbGVyLAorICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgICAqcmVnaW5mbywKKyAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICAgICAgKnJlcWluZm8sCisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAgICAgICpyZXF1ZXN0cykgeworCisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgKnJlcXVlc3Q7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisgICAgc3RydWN0ICR7aX1fZW50cnkgICAgICAgICAgKnRhYmxlX2VudHJ5OworICAgIEBpZiAkaS5zZXR0YWJsZUAKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgcmV0OworICAgIEBlbmRACisKKyAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogUmVhZC1zdXBwb3J0CisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5yZWFkYWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuKTsKKyAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyk7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9HRVRORVhUOgorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfbmV4dF9lbnRyeSggcmVnaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfaW5mby0+Y29sbnVtLCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnJlYWRhYmxlQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICAgICAgaWYgKCAhdGFibGVfZW50cnkgKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOworICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjKTsKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCitAaWYgJGkuc2V0dGFibGVACisgICAgICAgIC8qCisgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKKyAgICAgICAgICovCisgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnNldHRhYmxlQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICBAaWYgJGMucm93c3RhdHVzQAorICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfcm93c3RhdHVzKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAodGFibGVfZW50cnkgPyBSU19BQ1RJVkUgOiBSU19OT05FWElTVEVOVCApKTsKKyAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACisJICAgICAgICAvKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLworICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAqLworICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfaW50KCByZXF1ZXN0LT5yZXF1ZXN0dmIgKTsKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGlmICggcmV0ICE9IFNOTVBfRVJSX05PRVJST1IgKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3QsIHJldCApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSApOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKK0BpZiAkaS5jcmVhdGFibGVACisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CitAaWYgJGkucm93c3RhdHVzQAorICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFOREdPOgorICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5EV0FJVDoKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnkgPSAke2l9X2NyZWF0ZUVudHJ5KCAwCisgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICAgICAgICAgICwgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICwgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbF9sZW4KKyAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICAgICAgICAgICwgKnRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5pbnRlZ2VyCisgICAgQGVuZEAKKyAgQGVuZEAKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACitAZWxzZUAKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5jcmVhdGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICR7aX1fY3JlYXRlRW50cnkoIDAKKyAgQGZvcmVhY2ggJGlkeCBpbmRleEAKKyAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgICAgICAgICAgLCAgdGFibGVfaW5mby0+aW5kZXhlcy0+dmFsLnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgLCAgdGFibGVfaW5mby0+aW5kZXhlcy0+dmFsX2xlbgorICAgIEBlbHNlQAorICAgICAgICAgICAgICAgICAgICAgICAgLCAqdGFibGVfaW5mby0+aW5kZXhlcy0+dmFsLmludGVnZXIKKyAgICBAZW5kQAorICBAZW5kQAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAhdGFibGVfZW50cnkgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKCByZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSApOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CitAZW5kQAorICAgICAgICAgICAgfQorICAgICAgICB9CitAZW5kQAorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKK0BpZiAkaS5jcmVhdGFibGVACisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKK0BpZiAkaS5yb3dzdGF0dXNACisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMucm93c3RhdHVzQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICAgICAgc3dpdGNoICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikgeworICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5ER086CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRXQUlUOgorICAgICAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKK0BlbHNlQAorICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLmNyZWF0YWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICAgICAgaWYgKCB0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkICkgeworICAgICAgICAgICAgICAgICAgICAke2l9X3JlbW92ZUVudHJ5KHRhYmxlX2VudHJ5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CitAZW5kQAorICAgICAgICAgICAgfQorICAgICAgICB9CitAZW5kQAorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMuc2V0dGFibGVACisgICAgICAgICAgICBAaWYgISRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIG1lbWNweSggdGFibGVfZW50cnktPm9sZF8kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyR7Y31fbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbjsKKyAgICAgICAgICAgICAgICBtZW1zZXQoIHRhYmxlX2VudHJ5LT4kYywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoIHRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsX2xlbik7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsX2xlbjsKKyAgICAgICAgICAgICAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyRjID0gdGFibGVfZW50cnktPiRjOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyAgICAgPSAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgfQorICAgICAgICB9CitAaWYgJGkucm93c3RhdHVzQAorICAgICAgICAvKiBDaGVjayB0aGUgaW50ZXJuYWwgY29uc2lzdGVuY3kgb2YgYW4gYWN0aXZlIHJvdyAqLworICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMucm93c3RhdHVzQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICAgICAgc3dpdGNoICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikgeworICAgICAgICAgICAgICAgIGNhc2UgUlNfQUNUSVZFOgorICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5ER086CisgICAgICAgICAgICAgICAgICAgIGlmICgvKiBYWFggKi8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9JTkNPTlNJU1RFTlRWQUxVRSApOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGVuZEAKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5zZXR0YWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorQGlmICRpLnJvd3N0YXR1c0AKKyAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRHTzoKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFORFdBSVQ6CisgICAgICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAke2l9X3JlbW92ZUVudHJ5KHRhYmxlX2VudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgQGVsc2VACisgICAgICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACisgICAgICAgICAgICAgICAgbWVtY3B5KCB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyRjLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgIG1lbXNldCggdGFibGVfZW50cnktPm9sZF8kYywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8ke2N9X2xlbjsKKyAgICAgICAgICAgICAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgICAgID0gdGFibGVfZW50cnktPm9sZF8kYzsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyRjID0gMDsKKyAgICAgICAgICAgICAgICBAZW5kQAorICBAZW5kQAorQGVsc2VACisgIEBpZiAkYy5jcmVhdGFibGVACisgICAgICAgICAgICAgICAgaWYgKCB0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkICkgeworICAgICAgICAgICAgICAgICAgICAke2l9X3JlbW92ZUVudHJ5KHRhYmxlX2VudHJ5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCggdGFibGVfZW50cnktPm9sZF8kYywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8ke2N9X2xlbjsKKyAgICAgICAgICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyAgICAgPSB0YWJsZV9lbnRyeS0+b2xkXyRjOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyRjID0gMDsKKyAgICAgICAgICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICB9CisgIEBlbHNlQAorICAgICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIG1lbWNweSggdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoIHRhYmxlX2VudHJ5LT5vbGRfJGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJHtjfV9sZW47CisgICAgICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjICAgICA9IHRhYmxlX2VudHJ5LT5vbGRfJGM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IDA7CisgICAgICAgICAgICAgICAgQGVuZEAKKyAgQGVuZEAKK0BlbmRACisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorQGlmICRpLmNyZWF0YWJsZUAKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCAgICByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworQGlmICRpLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5yb3dzdGF0dXNACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRHTzoKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnZhbGlkID0gMTsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFsbC10aHJvdWdoICovCisgICAgICAgICAgICAgICAgY2FzZSBSU19BQ1RJVkU6CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyA9IFJTX0FDVElWRTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFORFdBSVQ6CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT52YWxpZCA9IDE7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhbGwtdGhyb3VnaCAqLworICAgICAgICAgICAgICAgIGNhc2UgUlNfTk9USU5TRVJWSUNFOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgPSBSU19OT1RJTlNFUlZJQ0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBSU19ERVNUUk9ZOgorICAgICAgICAgICAgICAgICAgICAke2l9X3JlbW92ZUVudHJ5KHRhYmxlX2VudHJ5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKK0BlbHNlQAorICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLmNyZWF0YWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICAgICAgaWYgKCB0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkICkgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+dmFsaWQgPSAxOworICAgICAgICAgICAgICAgIH0KK0BlbmRACisgICAgICAgICAgICB9CisgICAgICAgIH0KK0BlbmRACisgICAgICAgIGJyZWFrOworQGVuZEAKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKy8qKiBJbml0aWFsaXplIHRoZSAkaSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3N0YXRpYyB2b2lkCitpbml0aWFsaXplX3RhYmxlXyRpKHZvaWQpCit7CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICIkaSIsICAgICAke2l9X2hhbmRsZXIsCisgICAgICAgICAgICAgICR7aX1fb2lkLCBPSURfTEVOR1RIKCR7aX1fb2lkKSwKK0BpZiAkaS5zZXR0YWJsZUAKKyAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFCitAZWxzZUAKKyAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkKK0BlbmRACisgICAgICAgICAgICAgICk7CisKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyApOworICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCisgICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZHgudHlwZSwgIC8qIGluZGV4OiAkaWR4ICovCisgICAgQGVuZEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl8kZmlyc3RfY29sdW1uLnVjOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fJGxhc3RfY29sdW1uLnVjOworCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSggcmVnLCB0YWJsZV9pbmZvICk7CisKKyAgICAvKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZSAqLworfQorCitAZW5kQAorLyoqIEluaXRpYWxpemVzIHRoZSAkbmFtZSBtb2R1bGUgKi8KK3ZvaWQKK2luaXRfJG5hbWUodm9pZCkKK3sKKyAgLyogaGVyZSB3ZSBpbml0aWFsaXplIGFsbCB0aGUgdGFibGVzIHdlJ3JlIHBsYW5uaW5nIG9uIHN1cHBvcnRpbmcgKi8KKyAgQGZvcmVhY2ggJGkgdGFibGVACisgICAgaW5pdGlhbGl6ZV90YWJsZV8kaSgpOworICBAZW5kQAorfQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMucm93LmNvbmYgYi9sb2NhbC9taWIyYy5yb3cuY29uZgppbmRleCA0NjYxNWMwLi5mNzM2YmFhIDEwMDc1NQotLS0gYS9sb2NhbC9taWIyYy5yb3cuY29uZgorKysgYi9sb2NhbC9taWIyYy5yb3cuY29uZgpAQCAtMTE3LDE2ICsxMTcsMTcgQEAKIHZvaWQKIGluaXRpYWxpemVfdGFibGVfJGkodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OwotICAgIHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7CiAgICAgc3RydWN0ICR7aX1fZW50cnkgICAgICAgICAgICAgICAqcm93OwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAgICAgICAgICAgKmlkeHM7CiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAorICAgIERFQlVHTVNHVEwoKCIke25hbWV9OmluaXQiLCAiaW5pdGlhbGl6aW5nIHRhYmxlICRpXG4iKSk7CisKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgIiRpIiwgICAgICR7aX1faGFuZGxlciwKLSAgICAgICAgICAgICAgJHtpfV9vaWQsICR7aX1fb2lkX2xlbiwKKyAgICAgICAgICAgICAgJHtpfV9vaWQsIE9JRF9MRU5HVEgoJHtpfV9vaWQpLAogQGlmICRpLnNldHRhYmxlQAogICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUKIEBlbHNlQApAQCAtMjEyLDEwICsyMTMsOSBAQAogICAgIHYyID0gdjItPm5leHRfdmFyaWFibGU7CiAgICBAZW5kQAogICAgQGlmICRpZHgubmVlZGxlbmd0aEAKLSAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoIHYyLCAkaWR4LnR5cGUsICh1X2NoYXIqKXJvdy0+JGlkeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+JHtpZHh9X2xlbik7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCB2MiwgJGlkeC50eXBlLCByb3ctPiRpZHgsIHJvdy0+JHtpZHh9X2xlbik7CiAgICBAZWxzZUAKLSAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggdjIsICRpZHgudHlwZSwgKHVfY2hhciopcm93LT4kaWR4KTsKKyAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggdjIsICRpZHgudHlwZSwgcm93LT4kaWR4KTsKICAgIEBlbmRACiAgICBAZXZhbCAkZmlyc3Q9MEAKICAgQGVuZEAKQEAgLTIzNyw2ICsyMzcsOCBAQAogICAgIHN0cnVjdCAke2l9X2VudHJ5ICAgICAgICAgICp0YWJsZV9lbnRyeTsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgcmV0OwogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOworCiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFJlYWQtc3VwcG9ydCAoYWxzbyBjb3ZlcnMgR2V0TmV4dCByZXF1ZXN0cykKQEAgLTI1Miw3ICsyNTQsNyBAQAogICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIqKXRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbik7CiAgICAgICAgICAgICBAZWxzZUAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYgYi9sb2NhbC9taWIyYy5zY2FsYXIuY29uZgppbmRleCA0MzgzNjFiLi4zMDI0ZmE0IDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy5zY2FsYXIuY29uZgorKysgYi9sb2NhbC9taWIyYy5zY2FsYXIuY29uZgpAQCAtMzYsNyArMzYsNyBAQAogaW5pdF8kbmFtZSh2b2lkKQogewogICBAZm9yZWFjaCAkaSBzY2FsYXJACi0gICAgc3RhdGljIG9pZCAke2l9X29pZFtdID0geyAkaS5jb21tYW9pZCB9OworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyAkaS5jb21tYW9pZCB9OwogICBAZW5kQAogCiAgIERFQlVHTVNHVEwoKCIkbmFtZSIsICJJbml0aWFsaXppbmdcbiIpKTsKQEAgLTc1LDcgKzc1LDcgQEAKIAogICAgICAgICBjYXNlIE1PREVfR0VUOgogICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsICRpLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAvKiBYWFg6IGEgcG9pbnRlciB0byB0aGUgc2NhbGFyJ3MgZGF0YSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFg6IGEgcG9pbnRlciB0byB0aGUgc2NhbGFyJ3MgZGF0YSAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFg6IHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgaW4gYnl0ZXMgKi8pOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZiBiL2xvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZgppbmRleCBlZGZmMDZjLi43NzVjMDIxIDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYKKysrIGIvbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mCkBAIC03MCw4ICs3MCw4IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlXyRpKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKLSAgICBzaXplX3QgJHtpfV9vaWRfbGVuICAgPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CisgICAgY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIG5ldHNubXBfdGRhdGEgICAgICAgICAgICAgICAgICAgKnRhYmxlX2RhdGE7CiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKQEAgLTc5LDYgKzc5LDggQEAKICAgICBuZXRzbm1wX2NhY2hlICAgICAgICAgICAgICAgICAgICpjYWNoZTsKIEBlbmRACiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTppbml0IiwgImluaXRpYWxpemluZyB0YWJsZSAkaVxuIikpOworCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICIkaSIsICAgICAke2l9X2hhbmRsZXIsCiAgICAgICAgICAgICAgICR7aX1fb2lkLCAke2l9X29pZF9sZW4sCkBAIC0yODUsNiArMjg3LDggQEAKICAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAgICAgICAgICAqdGFibGVfZW50cnk7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldDsKIAorICAgIERFQlVHTVNHVEwoKCIke25hbWV9OmhhbmRsZXIiLCAiUHJvY2Vzc2luZyByZXF1ZXN0ICglZClcbiIsIHJlcWluZm8tPm1vZGUpKTsKKwogICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewogICAgICAgICAvKgogICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCkBAIC0zMDksNyArMzEzLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIqKXRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbik7CiAgICAgICAgICAgICBAZWxzZUAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLApAQCAtMzQ4LDcgKzM1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYmxlX2VudHJ5ID8gUlNfQUNUSVZFIDogUlNfTk9ORVhJU1RFTlQgKSk7CiAgICAgICAgICAgICBAZWxzZUAKICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAotCSAgICAgICAgLyogb3IgcG9zc2libGMgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KKwkgICAgICAgIC8qIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUnICovCiAgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLCBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CiAgICAgICAgICAgICBAZWxzZUAKZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDI3ZDQ5OGEuLmIzNmM0YWQKLS0tIGEvbHRtYWluLnNoCisrKyBiL2x0bWFpbi5zaApAQCAtMSw1MiArMSw4MyBAQAotIyBsdG1haW4uc2ggLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLSMgTk9URTogQ2hhbmdpbmcgdGhpcyBmaWxlIHdpbGwgbm90IGFmZmVjdCBhbnl0aGluZyB1bnRpbCB5b3UgcmVydW4gY29uZmlndXJlLgotIwotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCi0jIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIyBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KKworIyBsdG1haW4uc2ggKEdOVSBsaWJ0b29sKSAyLjIuNgorIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTworIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworIyBHTlUgTGlidG9vbCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAjCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisjIGlmIHlvdSBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQKKyMgaXMgYnVpbHQgdXNpbmcgR05VIExpYnRvb2wsIHlvdSBtYXkgaW5jbHVkZSB0aGlzIGZpbGUgdW5kZXIgdGhlCisjIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorIworIyBHTlUgTGlidG9vbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKICMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIyBhbG9uZyB3aXRoIEdOVSBMaWJ0b29sOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgYSBjb3B5CisjIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sLAorIyBvciBvYnRhaW5lZCBieSB3cml0aW5nIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCisjIFVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gW01PREUtQVJHXS4uLgogIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0jIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgotIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0KLWJhc2VuYW1lPSJzLF4uKi8sLGciCi0KLSMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAotIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCi0jIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKLSMgZnVuY3Rpb24uCi1wcm9ncGF0aD0iJDAiCi0KLSMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgotcHJvZ25hbWU9YGVjaG8gIiRwcm9ncGF0aCIgfCAkU0VEICRiYXNlbmFtZWAKLW1vZGVuYW1lPSIkcHJvZ25hbWUiCi0KLSMgR2xvYmFsIHZhcmlhYmxlczoKLUVYSVRfU1VDQ0VTUz0wCi1FWElUX0ZBSUxVUkU9MQorIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KKyMKKyMgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisjICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCisjIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworIyAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisjICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorIyAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcworIyAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgLS10YWc9VEFHICAgICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRworIyAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKKyMgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KKyMgLWgsIC0taGVscCAgICAgICAgICAgICAgIHByaW50IHNob3J0IG9yIGxvbmcgaGVscCBtZXNzYWdlCisjCisjIE1PREUgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyMKKyMgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKKyMgICAgICAgY29tcGlsZSAgICAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKKyMgICAgICAgZXhlY3V0ZSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCisjICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCisjICAgICAgIGluc3RhbGwgICAgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcworIyAgICAgICBsaW5rICAgICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCisjICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQorIworIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuCisjIFRyeSBgJHByb2duYW1lIC0taGVscCAtLW1vZGU9TU9ERScgZm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBNT0RFLgorIworIyBXaGVuIHJlcG9ydGluZyBhIGJ1ZywgcGxlYXNlIGRlc2NyaWJlIGEgdGVzdCBjYXNlIHRvIHJlcHJvZHVjZSBpdCBhbmQKKyMgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorIworIyAgICAgICBob3N0LXRyaXBsZXQ6CSRob3N0CisjICAgICAgIHNoZWxsOgkJJFNIRUxMCisjICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKKyMgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKKyMgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKyMgICAgICAgJHByb2duYW1lOgkJKEdOVSBsaWJ0b29sKSAyLjIuNgorIyAgICAgICBhdXRvbWFrZToJCSRhdXRvbWFrZV92ZXJzaW9uCisjICAgICAgIGF1dG9jb25mOgkJJGF1dG9jb25mX3ZlcnNpb24KKyMKKyMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgogCiBQUk9HUkFNPWx0bWFpbi5zaAogUEFDS0FHRT1saWJ0b29sCi1WRVJTSU9OPTEuNS4yNgotVElNRVNUQU1QPSIgKDEuMTIyMC4yLjQ5MiAyMDA4LzAxLzMwIDA2OjQwOjU2KSIKK1ZFUlNJT049Mi4yLjYKK1RJTUVTVEFNUD0iIgorcGFja2FnZV9yZXZpc2lvbj0xLjMwMTIKIAotIyBCZSBCb3VybmUgY29tcGF0aWJsZSAodGFrZW4gZnJvbSBBdXRvY29uZjpfQVNfQk9VUk5FX0NPTVBBVElCTEUpLgorIyBCZSBCb3VybmUgY29tcGF0aWJsZQogaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgIGVtdWxhdGUgc2gKICAgTlVMTENNRD06CkBAIC02MCwxOCArOTEsNDgzIEBACiBCSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAogRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAogCi0jIENoZWNrIHRoYXQgd2UgaGF2ZSBhIHdvcmtpbmcgJGVjaG8uCisjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgorIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KKyMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCisjIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCitsdF91c2VyX2xvY2FsZT0KK2x0X3NhZmVfbG9jYWxlPQorZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCitkbworICBldmFsICJpZiB0ZXN0IFwiXCR7JGx0X3ZhcitzZXR9XCIgPSBzZXQ7IHRoZW4KKyAgICAgICAgICBzYXZlXyRsdF92YXI9XCQkbHRfdmFyCisgICAgICAgICAgJGx0X3Zhcj1DCisJICBleHBvcnQgJGx0X3ZhcgorCSAgbHRfdXNlcl9sb2NhbGU9XCIkbHRfdmFyPVxcXCRzYXZlX1wkbHRfdmFyOyBcJGx0X3VzZXJfbG9jYWxlXCIKKwkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKKwlmaSIKK2RvbmUKKworJGx0X3Vuc2V0IENEUEFUSAorCisKKworCisKKzogJHtDUD0iY3AgLWYifQorOiAke0VDSE89ImVjaG8ifQorOiAke0VHUkVQPSIvdXNyL2Jpbi9ncmVwIC1FIn0KKzogJHtGR1JFUD0iL3Vzci9iaW4vZ3JlcCAtRiJ9Cis6ICR7R1JFUD0iL3Vzci9iaW4vZ3JlcCJ9Cis6ICR7TE5fUz0ibG4gLXMifQorOiAke01BS0U9Im1ha2UifQorOiAke01LRElSPSJta2RpciJ9Cis6ICR7TVY9Im12IC1mIn0KKzogJHtSTT0icm0gLWYifQorOiAke1NFRD0iL29wdC9sb2NhbC9iaW4vZ3NlZCJ9Cis6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KKzogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQorCisjIEdsb2JhbCB2YXJpYWJsZXM6CitFWElUX1NVQ0NFU1M9MAorRVhJVF9GQUlMVVJFPTEKK0VYSVRfTUlTTUFUQ0g9NjMgICMgJD8gPSA2MyBpcyB1c2VkIHRvIGluZGljYXRlIHZlcnNpb24gbWlzbWF0Y2ggdG8gbWlzc2luZy4KK0VYSVRfU0tJUD03NwkgICMgJD8gPSA3NyBpcyB1c2VkIHRvIGluZGljYXRlIGEgc2tpcHBlZCB0ZXN0IHRvIGF1dG9tYWtlLgorCitleGl0X3N0YXR1cz0kRVhJVF9TVUNDRVNTCisKKyMgTWFrZSBzdXJlIElGUyBoYXMgYSBzZW5zaWJsZSBkZWZhdWx0CitsdF9ubD0nCisnCitJRlM9IiAJJGx0X25sIgorCitkaXJuYW1lPSJzLC9bXi9dKiQsLCIKK2Jhc2VuYW1lPSJzLF4uKi8sLCIKKworIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorIyBjYWxsOgorIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKyMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisjIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKyMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKyMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQoreworICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICBlbHNlCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICBmaQorICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorfQorCisjIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS4KKworIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCisjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKKyMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQorIyBmdW5jdGlvbi4KK3Byb2dwYXRoPSIkMCIKKworIyBUaGUgbmFtZSBvZiB0aGlzIHByb2dyYW06CisjIEluIHRoZSB1bmxpa2VseSBldmVudCAkcHJvZ25hbWUgYmVnYW4gd2l0aCBhICctJywgaXQgd291bGQgcGxheSBoYXZvYyB3aXRoCisjIGZ1bmNfZWNobyAoaW1hZ2luZSBwcm9nbmFtZT0tbiksIHNvIHdlIHByZXBlbmQgLi8gaW4gdGhhdCBjYXNlOgorZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJHByb2dwYXRoIgorcHJvZ25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CitjYXNlICRwcm9nbmFtZSBpbgorICAtKikgcHJvZ25hbWU9Li8kcHJvZ25hbWUgOzsKK2VzYWMKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciByZWV4ZWN1dGlvbjoKK2Nhc2UgJHByb2dwYXRoIGluCisgIFtcXC9dKnxbQS1aYS16XTpcXCopIDs7CisgICpbXFwvXSopCisgICAgIHByb2dkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAgICAgcHJvZ2Rpcj1gY2QgIiRwcm9nZGlyIiAmJiBwd2RgCisgICAgIHByb2dwYXRoPSIkcHJvZ2Rpci8kcHJvZ25hbWUiCisgICAgIDs7CisgICopCisgICAgIHNhdmVfSUZTPSIkSUZTIgorICAgICBJRlM9OgorICAgICBmb3IgcHJvZ2RpciBpbiAkUEFUSDsgZG8KKyAgICAgICBJRlM9IiRzYXZlX0lGUyIKKyAgICAgICB0ZXN0IC14ICIkcHJvZ2Rpci8kcHJvZ25hbWUiICYmIGJyZWFrCisgICAgIGRvbmUKKyAgICAgSUZTPSIkc2F2ZV9JRlMiCisgICAgIHRlc3QgLW4gIiRwcm9nZGlyIiB8fCBwcm9nZGlyPWBwd2RgCisgICAgIHByb2dwYXRoPSIkcHJvZ2Rpci8kcHJvZ25hbWUiCisgICAgIDs7Citlc2FjCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKKyMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitYc2VkPSIke1NFRH0iJyAtZSAxcy9eWC8vJworc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCisKKyMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCisjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCisjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KKyMgU2luY2UgZWFjaCBpbnB1dCBgXCcgaXMgbm93IHR3byBgXCdzLCBsb29rIGZvciBhbnkgbnVtYmVyIG9mIHJ1bnMgb2YKKyMgZm91ciBgXCdzIGZvbGxvd2VkIGJ5IHR3byBgXCdzIGFuZCB0aGVuIGEgJyQnLiAgYFwnIHRoYXQgJyQnLgorYnM9J1xcJworYnMyPSdcXFxcJworYnM0PSdcXFxcXFxcXCcKK2RvbGxhcj0nXCQnCitzZWRfZG91YmxlX2JhY2tzbGFzaD0iXAorICBzLyRiczQvJlxcCisvZworICBzL14kYnMyJGRvbGxhci8kYnMmLworICBzL1xcKFteJGJzXVxcKSRiczIkZG9sbGFyL1xcMSRiczIkYnMkZG9sbGFyL2cKKyAgcy9cbi8vZyIKKworIyBTdGFuZGFyZCBvcHRpb25zOgorb3B0X2RyeV9ydW49ZmFsc2UKK29wdF9oZWxwPWZhbHNlCitvcHRfcXVpZXQ9ZmFsc2UKK29wdF92ZXJib3NlPWZhbHNlCitvcHRfd2FybmluZz06CisKKyMgZnVuY19lY2hvIGFyZy4uLgorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlLCBhbG9uZyB3aXRoIHRoZSBjdXJyZW50IG1vZGUKKyMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgorZnVuY19lY2hvICgpCit7CisgICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCit9CisKKyMgZnVuY192ZXJib3NlIGFyZy4uLgorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIGluIHZlcmJvc2UgbW9kZSBvbmx5LgorZnVuY192ZXJib3NlICgpCit7CisgICAgJG9wdF92ZXJib3NlICYmIGZ1bmNfZWNobyAkezErIiRAIn0KKworICAgICMgQSBidWcgaW4gYmFzaCBoYWx0cyB0aGUgc2NyaXB0IGlmIHRoZSBsYXN0IGxpbmUgb2YgYSBmdW5jdGlvbgorICAgICMgZmFpbHMgd2hlbiBzZXQgLWUgaXMgaW4gZm9yY2UsIHNvIHdlIG5lZWQgYW5vdGhlciBjb21tYW5kIHRvCisgICAgIyB3b3JrIGFyb3VuZCB0aGF0OgorICAgIDoKK30KKworIyBmdW5jX2Vycm9yIGFyZy4uLgorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorZnVuY19lcnJvciAoKQoreworICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorfQorCisjIGZ1bmNfd2FybmluZyBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorZnVuY193YXJuaW5nICgpCit7CisgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorCisgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKKyAgICA6Cit9CisKKyMgZnVuY19mYXRhbF9lcnJvciBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgYW5kIGV4aXQuCitmdW5jX2ZhdGFsX2Vycm9yICgpCit7CisgICAgZnVuY19lcnJvciAkezErIiRAIn0KKyAgICBleGl0ICRFWElUX0ZBSUxVUkUKK30KKworIyBmdW5jX2ZhdGFsX2hlbHAgYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisjIGEgaGVscCBoaW50LCBhbmQgZXhpdC4KK2Z1bmNfZmF0YWxfaGVscCAoKQoreworICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9CisgICAgZnVuY19mYXRhbF9lcnJvciAiJGhlbHAiCit9CitoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICAjIyBkZWZhdWx0CisKKworIyBmdW5jX2dyZXAgZXhwcmVzc2lvbiBmaWxlbmFtZQorIyBDaGVjayB3aGV0aGVyIEVYUFJFU1NJT04gbWF0Y2hlcyBhbnkgbGluZSBvZiBGSUxFTkFNRSwgd2l0aG91dCBvdXRwdXQuCitmdW5jX2dyZXAgKCkKK3sKKyAgICAkR1JFUCAiJDEiICIkMiIgPi9kZXYvbnVsbCAyPiYxCit9CisKKworIyBmdW5jX21rZGlyX3AgZGlyZWN0b3J5LXBhdGgKKyMgTWFrZSBzdXJlIHRoZSBlbnRpcmUgcGF0aCB0byBESVJFQ1RPUlktUEFUSCBpcyBhdmFpbGFibGUuCitmdW5jX21rZGlyX3AgKCkKK3sKKyAgICBteV9kaXJlY3RvcnlfcGF0aD0iJDEiCisgICAgbXlfZGlyX2xpc3Q9CisKKyAgICBpZiB0ZXN0IC1uICIkbXlfZGlyZWN0b3J5X3BhdGgiICYmIHRlc3QgIiRvcHRfZHJ5X3J1biIgIT0gIjoiOyB0aGVuCisKKyAgICAgICMgUHJvdGVjdCBkaXJlY3RvcnkgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScKKyAgICAgIGNhc2UgJG15X2RpcmVjdG9yeV9wYXRoIGluCisgICAgICAgIC0qKSBteV9kaXJlY3RvcnlfcGF0aD0iLi8kbXlfZGlyZWN0b3J5X3BhdGgiIDs7CisgICAgICBlc2FjCisKKyAgICAgICMgV2hpbGUgc29tZSBwb3J0aW9uIG9mIERJUiBkb2VzIG5vdCB5ZXQgZXhpc3QuLi4KKyAgICAgIHdoaWxlIHRlc3QgISAtZCAiJG15X2RpcmVjdG9yeV9wYXRoIjsgZG8KKyAgICAgICAgIyAuLi5tYWtlIGEgbGlzdCBpbiB0b3Btb3N0IGZpcnN0IG9yZGVyLiAgVXNlIGEgY29sb24gZGVsaW1pdGVkCisJIyBsaXN0IGluY2FzZSBzb21lIHBvcnRpb24gb2YgcGF0aCBjb250YWlucyB3aGl0ZXNwYWNlLgorICAgICAgICBteV9kaXJfbGlzdD0iJG15X2RpcmVjdG9yeV9wYXRoOiRteV9kaXJfbGlzdCIKKworICAgICAgICAjIElmIHRoZSBsYXN0IHBvcnRpb24gYWRkZWQgaGFzIG5vIHNsYXNoIGluIGl0LCB0aGUgbGlzdCBpcyBkb25lCisgICAgICAgIGNhc2UgJG15X2RpcmVjdG9yeV9wYXRoIGluICovKikgOzsgKikgYnJlYWsgOzsgZXNhYworCisgICAgICAgICMgLi4ub3RoZXJ3aXNlIHRocm93IGF3YXkgdGhlIGNoaWxkIGRpcmVjdG9yeSBhbmQgbG9vcAorICAgICAgICBteV9kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIlgkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgICAgIGRvbmUKKyAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiWCRteV9kaXJfbGlzdCIgfCAkWHNlZCAtZSAncyw6KiQsLCdgCisKKyAgICAgIHNhdmVfbWtkaXJfcF9JRlM9IiRJRlMiOyBJRlM9JzonCisgICAgICBmb3IgbXlfZGlyIGluICRteV9kaXJfbGlzdDsgZG8KKwlJRlM9IiRzYXZlX21rZGlyX3BfSUZTIgorICAgICAgICAjIG1rZGlyIGNhbiBmYWlsIHdpdGggYSBgRmlsZSBleGlzdCcgZXJyb3IgaWYgdHdvIHByb2Nlc3NlcworICAgICAgICAjIHRyeSB0byBjcmVhdGUgb25lIG9mIHRoZSBkaXJlY3RvcmllcyBjb25jdXJyZW50bHkuICBEb24ndAorICAgICAgICAjIHN0b3AgaW4gdGhhdCBjYXNlIQorICAgICAgICAkTUtESVIgIiRteV9kaXIiIDI+L2Rldi9udWxsIHx8IDoKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJHNhdmVfbWtkaXJfcF9JRlMiCisKKyAgICAgICMgQmFpbCBvdXQgaWYgd2UgKG9yIHNvbWUgb3RoZXIgcHJvY2VzcykgZmFpbGVkIHRvIGNyZWF0ZSBhIGRpcmVjdG9yeS4KKyAgICAgIHRlc3QgLWQgIiRteV9kaXJlY3RvcnlfcGF0aCIgfHwgXAorICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJGYWlsZWQgdG8gY3JlYXRlIFxgJDEnIgorICAgIGZpCit9CisKKworIyBmdW5jX21rdGVtcGRpciBbc3RyaW5nXQorIyBNYWtlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGF0IHdvbid0IGNsYXNoIHdpdGggb3RoZXIgcnVubmluZworIyBsaWJ0b29sIHByb2Nlc3NlcywgYW5kIGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgaWYgcG9zc2libGUuICBJZgorIyBnaXZlbiwgU1RSSU5HIGlzIHRoZSBiYXNlbmFtZSBmb3IgdGhhdCBkaXJlY3RvcnkuCitmdW5jX21rdGVtcGRpciAoKQoreworICAgIG15X3RlbXBsYXRlPSIke1RNUERJUi0vdG1wfS8kezEtJHByb2duYW1lfSIKKworICAgIGlmIHRlc3QgIiRvcHRfZHJ5X3J1biIgPSAiOiI7IHRoZW4KKyAgICAgICMgUmV0dXJuIGEgZGlyZWN0b3J5IG5hbWUsIGJ1dCBkb24ndCBjcmVhdGUgaXQgaW4gZHJ5LXJ1biBtb2RlCisgICAgICBteV90bXBkaXI9IiR7bXlfdGVtcGxhdGV9LSQkIgorICAgIGVsc2UKKworICAgICAgIyBJZiBta3RlbXAgd29ya3MsIHVzZSB0aGF0IGZpcnN0IGFuZCBmb3JlbW9zdAorICAgICAgbXlfdG1wZGlyPWBta3RlbXAgLWQgIiR7bXlfdGVtcGxhdGV9LVhYWFhYWFhYIiAyPi9kZXYvbnVsbGAKKworICAgICAgaWYgdGVzdCAhIC1kICIkbXlfdG1wZGlyIjsgdGhlbgorICAgICAgICAjIEZhaWxpbmcgdGhhdCwgYXQgbGVhc3QgdHJ5IGFuZCB1c2UgJFJBTkRPTSB0byBhdm9pZCBhIHJhY2UKKyAgICAgICAgbXlfdG1wZGlyPSIke215X3RlbXBsYXRlfS0ke1JBTkRPTS0wfSQkIgorCisgICAgICAgIHNhdmVfbWt0ZW1wZGlyX3VtYXNrPWB1bWFza2AKKyAgICAgICAgdW1hc2sgMDA3NworICAgICAgICAkTUtESVIgIiRteV90bXBkaXIiCisgICAgICAgIHVtYXNrICRzYXZlX21rdGVtcGRpcl91bWFzaworICAgICAgZmkKKworICAgICAgIyBJZiB3ZSdyZSBub3QgaW4gZHJ5LXJ1biBtb2RlLCBib21iIG91dCBvbiBmYWlsdXJlCisgICAgICB0ZXN0IC1kICIkbXlfdG1wZGlyIiB8fCBcCisgICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBcYCRteV90bXBkaXInIgorICAgIGZpCisKKyAgICAkRUNITyAiWCRteV90bXBkaXIiIHwgJFhzZWQKK30KKworCisjIGZ1bmNfcXVvdGVfZm9yX2V2YWwgYXJnCisjIEFlc3RoZXRpY2FsbHkgcXVvdGUgQVJHIHRvIGJlIGV2YWxlZCBsYXRlci4KKyMgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHR3byB2YWx1ZXM6IEZVTkNfUVVPVEVfRk9SX0VWQUxfUkVTVUxUCisjIGlzIGRvdWJsZS1xdW90ZWQsIHN1aXRhYmxlIGZvciBhIHN1YnNlcXVlbnQgZXZhbCwgd2hlcmVhcworIyBGVU5DX1FVT1RFX0ZPUl9FVkFMX1VOUVVPVEVEX1JFU1VMVCBoYXMgbWVyZWx5IGFsbCBjaGFyYWN0ZXJzCisjIHdoaWNoIGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZSBxdW90ZXMgYmFja3NsYXNoaWZpZWQuCitmdW5jX3F1b3RlX2Zvcl9ldmFsICgpCit7CisgICAgY2FzZSAkMSBpbgorICAgICAgKltcXFxgXCJcJF0qKQorCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiWCQxIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PSIkMSIgOzsKKyAgICBlc2FjCisKKyAgICBjYXNlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdCBpbgorICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHRvIGRlbGF5CisgICAgICAjIHdvcmQgc3BsaXR0aW5nLCBjb21tYW5kIHN1YnN0aXR1dGlvbiBhbmQgYW5kIHZhcmlhYmxlCisgICAgICAjIGV4cGFuc2lvbiBmb3IgYSBzdWJzZXF1ZW50IGV2YWwuCisgICAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQorICAgICAgIyBpbiBzY2FuIHNldHMsIHNvIHdlIHNwZWNpZnkgaXQgc2VwYXJhdGVseS4KKyAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdD0iXCIkZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHRcIiIKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0PSIkZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQiCisgICAgZXNhYworfQorCisKKyMgZnVuY19xdW90ZV9mb3JfZXhwYW5kIGFyZworIyBBZXN0aGV0aWNhbGx5IHF1b3RlIEFSRyB0byBiZSBldmFsZWQgbGF0ZXI7IHNhbWUgYXMgYWJvdmUsCisjIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KK2Z1bmNfcXVvdGVfZm9yX2V4cGFuZCAoKQoreworICAgIGNhc2UgJDEgaW4KKyAgICAgICpbXFxcYFwiXSopCisJbXlfYXJnPWAkRUNITyAiWCQxIiB8ICRYc2VkIFwKKwkgICAgLWUgIiRkb3VibGVfcXVvdGVfc3Vic3QiIC1lICIkc2VkX2RvdWJsZV9iYWNrc2xhc2giYCA7OworICAgICAgKikKKyAgICAgICAgbXlfYXJnPSIkMSIgOzsKKyAgICBlc2FjCisKKyAgICBjYXNlICRteV9hcmcgaW4KKyAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycyB0byBkZWxheQorICAgICAgIyB3b3JkIHNwbGl0dGluZyBhbmQgY29tbWFuZCBzdWJzdGl0dXRpb24gZm9yIGEgc3Vic2VxdWVudCBldmFsLgorICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0cyBjb3JyZWN0bHkKKyAgICAgICMgaW4gc2NhbiBzZXRzLCBzbyB3ZSBzcGVjaWZ5IGl0IHNlcGFyYXRlbHkuCisgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKyAgICAgICAgbXlfYXJnPSJcIiRteV9hcmdcIiIKKyAgICAgICAgOzsKKyAgICBlc2FjCisKKyAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0PSIkbXlfYXJnIgorfQorCisKKyMgZnVuY19zaG93X2V2YWwgY21kIFtmYWlsX2V4cF0KKyMgVW5sZXNzIG9wdF9zaWxlbnQgaXMgdHJ1ZSwgdGhlbiBvdXRwdXQgQ01ELiAgVGhlbiwgaWYgb3B0X2RyeXJ1biBpcworIyBub3QgdHJ1ZSwgZXZhbHVhdGUgQ01ELiAgSWYgdGhlIGV2YWx1YXRpb24gb2YgQ01EIGZhaWxzLCBhbmQgRkFJTF9FWFAKKyMgaXMgZ2l2ZW4sIHRoZW4gZXZhbHVhdGUgaXQuCitmdW5jX3Nob3dfZXZhbCAoKQoreworICAgIG15X2NtZD0iJDEiCisgICAgbXlfZmFpbF9leHA9IiR7Mi06fSIKKworICAgICR7b3B0X3NpbGVudC1mYWxzZX0gfHwgeworICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkbXlfY21kIgorICAgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorICAgIH0KKworICAgIGlmICR7b3B0X2RyeV9ydW4tZmFsc2V9OyB0aGVuIDo7IGVsc2UKKyAgICAgIGV2YWwgIiRteV9jbWQiCisgICAgICBteV9zdGF0dXM9JD8KKyAgICAgIGlmIHRlc3QgIiRteV9zdGF0dXMiIC1lcSAwOyB0aGVuIDo7IGVsc2UKKwlldmFsICIoZXhpdCAkbXlfc3RhdHVzKTsgJG15X2ZhaWxfZXhwIgorICAgICAgZmkKKyAgICBmaQorfQorCisKKyMgZnVuY19zaG93X2V2YWxfbG9jYWxlIGNtZCBbZmFpbF9leHBdCisjIFVubGVzcyBvcHRfc2lsZW50IGlzIHRydWUsIHRoZW4gb3V0cHV0IENNRC4gIFRoZW4sIGlmIG9wdF9kcnlydW4gaXMKKyMgbm90IHRydWUsIGV2YWx1YXRlIENNRC4gIElmIHRoZSBldmFsdWF0aW9uIG9mIENNRCBmYWlscywgYW5kIEZBSUxfRVhQCisjIGlzIGdpdmVuLCB0aGVuIGV2YWx1YXRlIGl0LiAgVXNlIHRoZSBzYXZlZCBsb2NhbGUgZm9yIGV2YWx1YXRpb24uCitmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKK3sKKyAgICBteV9jbWQ9IiQxIgorICAgIG15X2ZhaWxfZXhwPSIkezItOn0iCisKKyAgICAke29wdF9zaWxlbnQtZmFsc2V9IHx8IHsKKyAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJG15X2NtZCIKKyAgICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKKyAgICB9CisKKyAgICBpZiAke29wdF9kcnlfcnVuLWZhbHNlfTsgdGhlbiA6OyBlbHNlCisgICAgICBldmFsICIkbHRfdXNlcl9sb2NhbGUKKwkgICAgJG15X2NtZCIKKyAgICAgIG15X3N0YXR1cz0kPworICAgICAgZXZhbCAiJGx0X3NhZmVfbG9jYWxlIgorICAgICAgaWYgdGVzdCAiJG15X3N0YXR1cyIgLWVxIDA7IHRoZW4gOjsgZWxzZQorCWV2YWwgIihleGl0ICRteV9zdGF0dXMpOyAkbXlfZmFpbF9leHAiCisgICAgICBmaQorICAgIGZpCit9CisKKworCisKKworIyBmdW5jX3ZlcnNpb24KKyMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorZnVuY192ZXJzaW9uICgpCit7CisgICAgJFNFRCAtbiAnL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKKyAgICAgICAgcy9eIyAvLworCXMvXiMgKiQvLworICAgICAgICBzL1woKEMpXClbIDAtOSwtXSpcKCBbMS05XVswLTldKlwpL1wxXDIvCisgICAgICAgIHAKKyAgICAgfScgPCAiJHByb2dwYXRoIgorICAgICBleGl0ICQ/Cit9CisKKyMgZnVuY191c2FnZQorIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCitmdW5jX3VzYWdlICgpCit7CisgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgLWgvIHsKKyAgICAgICAgcy9eIyAvLworCXMvXiMgKiQvLworCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KKwlwCisgICAgfScgPCAiJHByb2dwYXRoIgorICAgICRFQ0hPCisgICAgJEVDSE8gInJ1biBcYCRwcm9nbmFtZSAtLWhlbHAgfCBtb3JlJyBmb3IgZnVsbCB1c2FnZSIKKyAgICBleGl0ICQ/Cit9CisKKyMgZnVuY19oZWxwCisjIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorZnVuY19oZWxwICgpCit7CisgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKyAgICAgICAgcy9eIyAvLworCXMvXiMgKiQvLworCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKKwlzKlwkaG9zdConIiRob3N0IicqCisJcypcJFNIRUxMKiciJFNIRUxMIicqCisJcypcJExUQ0MqJyIkTFRDQyInKgorCXMqXCRMVENGTEFHUyonIiRMVENGTEFHUyInKgorCXMqXCRMRConIiRMRCInKgorCXMvXCR3aXRoX2dudV9sZC8nIiR3aXRoX2dudV9sZCInLworCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworCXAKKyAgICAgfScgPCAiJHByb2dwYXRoIgorICAgIGV4aXQgJD8KK30KKworIyBmdW5jX21pc3NpbmdfYXJnIGFyZ25hbWUKKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciBhbmQgc2V0IGdsb2JhbAorIyBleGl0X2NtZC4KK2Z1bmNfbWlzc2luZ19hcmcgKCkKK3sKKyAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMSIKKyAgICBleGl0X2NtZD1leGl0Cit9CisKK2V4aXRfY21kPToKKworCisKKworCisjIENoZWNrIHRoYXQgd2UgaGF2ZSBhIHdvcmtpbmcgJEVDSE8uCiBpZiB0ZXN0ICJYJDEiID0gWC0tbm8tcmVleGVjOyB0aGVuCiAgICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgogICBzaGlmdAogZWxpZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgogICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCiAgIDoKLWVsaWYgdGVzdCAiWGAoJGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0gICMgWWlwcGVlLCAkZWNobyB3b3JrcyEKK2VsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCisgICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKICAgOgogZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlICRlY2hvIHdpbGwgd29yay4KKyAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkRUNITyB3aWxsIHdvcmsuCiAgIGV4ZWMgJFNIRUxMICIkcHJvZ3BhdGgiIC0tbm8tcmVleGVjICR7MSsiJEAifQogZmkKIApAQCAtODQsMTYxICs1ODAsNDI0IEBACiAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogZmkKIAotZGVmYXVsdF9tb2RlPQotaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgogbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgotbWtkaXI9Im1rZGlyIgotbXY9Im12IC1mIgotcm09InJtIC1mIgotCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotWHNlZD0iJHtTRUR9IicgLWUgMXMvXlgvLycKLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFtcXGBcXCIkXFxcXF1cKS9cXFwxL2cnCi0jIHRlc3QgRUJDRElDIG9yIEFTQ0lJCi1jYXNlIGBlY2hvIFh8dHIgWCAnXDEwMSdgIGluCi0gQSkgIyBBU0NJSSBiYXNlZCBzeXN0ZW0KLSAgICAjIFxuIGlzIG5vdCBpbnRlcnByZXRlZCBjb3JyZWN0bHkgYnkgU29sYXJpcyA4IC91c3IvdWNiL3RyCi0gIFNQMk5MPSd0ciBcMDQwIFwwMTInCi0gIE5MMlNQPSd0ciBcMDE1XDAxMiBcMDQwXDA0MCcKLSAgOzsKLSAqKSAjIEVCQ0RJQyBiYXNlZCBzeXN0ZW0KLSAgU1AyTkw9J3RyIFwxMDAgXG4nCi0gIE5MMlNQPSd0ciBcclxuIFwxMDBcMTAwJwotICA7OwotZXNhYwotCi0jIE5MUyBudWlzYW5jZXMuCi0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgotIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KLSMgV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi1sdF9lbnY9Ci1mb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKLWRvCi0gIGV2YWwgImlmIHRlc3QgXCJcJHskbHRfdmFyK3NldH1cIiA9IHNldDsgdGhlbgotCSAgc2F2ZV8kbHRfdmFyPVwkJGx0X3ZhcgotCSAgbHRfZW52PVwiJGx0X3Zhcj1cJCRsdF92YXIgXCRsdF9lbnZcIgotCSAgJGx0X3Zhcj1DCi0JICBleHBvcnQgJGx0X3ZhcgotCWZpIgotZG9uZQotCi1pZiB0ZXN0IC1uICIkbHRfZW52IjsgdGhlbgotICBsdF9lbnY9ImVudiAkbHRfZW52IgotZmkKLQotIyBNYWtlIHN1cmUgSUZTIGhhcyBhIHNlbnNpYmxlIGRlZmF1bHQKLWx0X25sPScKLScKLUlGUz0iIAkkbHRfbmwiCi0KLWlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotICAkZWNobyAiJG1vZGVuYW1lOiBub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IiAxPiYyCi0gICRlY2hvICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiAgU2VlIHRoZSAkUEFDS0FHRSBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgMT4mMgotICBleGl0ICRFWElUX0ZBSUxVUkUKLWZpCittYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKIAogIyBHbG9iYWwgdmFyaWFibGVzLgotbW9kZT0kZGVmYXVsdF9tb2RlCisjICRtb2RlIGlzIHVuc2V0CiBub25vcHQ9Ci1wcmV2PQotcHJldm9wdD0KLXJ1bj0KLXNob3c9IiRlY2hvIgotc2hvd19oZWxwPQogZXhlY3V0ZV9kbGZpbGVzPQotZHVwbGljYXRlX2RlcHM9bm8KIHByZXNlcnZlX2FyZ3M9CiBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCiBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCiBleHRyYWN0ZWRfYXJjaGl2ZXM9CiBleHRyYWN0ZWRfc2VyaWFsPTAKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBTaGVsbCBmdW5jdGlvbiBkZWZpbml0aW9uczoKLSMgVGhpcyBzZWVtcyB0byBiZSB0aGUgYmVzdCBwbGFjZSBmb3IgdGhlbQorb3B0X2RyeV9ydW49ZmFsc2UKK29wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQorb3B0X3NpbGVudD1mYWxzZQorb3B0X2RlYnVnPToKIAotIyBmdW5jX21rdGVtcGRpciBbc3RyaW5nXQotIyBNYWtlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGF0IHdvbid0IGNsYXNoIHdpdGggb3RoZXIgcnVubmluZwotIyBsaWJ0b29sIHByb2Nlc3NlcywgYW5kIGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgaWYgcG9zc2libGUuICBJZgotIyBnaXZlbiwgU1RSSU5HIGlzIHRoZSBiYXNlbmFtZSBmb3IgdGhhdCBkaXJlY3RvcnkuCi1mdW5jX21rdGVtcGRpciAoKQorIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CisjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKKyMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KK2V4ZWNfY21kPQorCisjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKKyMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCitmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gKCkKIHsKLSAgICBteV90ZW1wbGF0ZT0iJHtUTVBESVItL3RtcH0vJHsxLSRwcm9nbmFtZX0iCi0KLSAgICBpZiB0ZXN0ICIkcnVuIiA9ICI6IjsgdGhlbgotICAgICAgIyBSZXR1cm4gYSBkaXJlY3RvcnkgbmFtZSwgYnV0IGRvbid0IGNyZWF0ZSBpdCBpbiBkcnktcnVuIG1vZGUKLSAgICAgIG15X3RtcGRpcj0iJHtteV90ZW1wbGF0ZX0tJCQiCi0gICAgZWxzZQotCi0gICAgICAjIElmIG1rdGVtcCB3b3JrcywgdXNlIHRoYXQgZmlyc3QgYW5kIGZvcmVtb3N0Ci0gICAgICBteV90bXBkaXI9YG1rdGVtcCAtZCAiJHtteV90ZW1wbGF0ZX0tWFhYWFhYWFgiIDI+L2Rldi9udWxsYAotCi0gICAgICBpZiB0ZXN0ICEgLWQgIiRteV90bXBkaXIiOyB0aGVuCi0JIyBGYWlsaW5nIHRoYXQsIGF0IGxlYXN0IHRyeSBhbmQgdXNlICRSQU5ET00gdG8gYXZvaWQgYSByYWNlCi0JbXlfdG1wZGlyPSIke215X3RlbXBsYXRlfS0ke1JBTkRPTS0wfSQkIgotCi0Jc2F2ZV9ta3RlbXBkaXJfdW1hc2s9YHVtYXNrYAotCXVtYXNrIDAwNzcKLQkkbWtkaXIgIiRteV90bXBkaXIiCi0JdW1hc2sgJHNhdmVfbWt0ZW1wZGlyX3VtYXNrCi0gICAgICBmaQotCi0gICAgICAjIElmIHdlJ3JlIG5vdCBpbiBkcnktcnVuIG1vZGUsIGJvbWIgb3V0IG9uIGZhaWx1cmUKLSAgICAgIHRlc3QgLWQgIiRteV90bXBkaXIiIHx8IHsKLSAgICAgICAgJGVjaG8gImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBcYCRteV90bXBkaXInIiAxPiYyCi0JZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgICB9Ci0gICAgZmkKLQotICAgICRlY2hvICJYJG15X3RtcGRpciIgfCAkWHNlZAorICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9CisgICAgZnVuY19lcnJvciAiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgICBmdW5jX2ZhdGFsX2Vycm9yICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiIKIH0KIAogCi0jIGZ1bmNfd2luMzJfbGliaWQgYXJnCi0jIHJldHVybiB0aGUgbGlicmFyeSB0eXBlIG9mIGZpbGUgJ2FyZycKLSMKLSMgTmVlZCBhIGxvdCBvZiBnb28gdG8gaGFuZGxlICpib3RoKiBETExzIGFuZCBpbXBvcnQgbGlicwotIyBIYXMgdG8gYmUgYSBzaGVsbCBmdW5jdGlvbiBpbiBvcmRlciB0byAnZWF0JyB0aGUgYXJndW1lbnQKLSMgdGhhdCBpcyBzdXBwbGllZCB3aGVuICRmaWxlX21hZ2ljX2NvbW1hbmQgaXMgY2FsbGVkLgotZnVuY193aW4zMl9saWJpZCAoKQorIyBmdW5jX2NvbmZpZworIyBEaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGZvciBhbGwgdGhlIHRhZ3MgaW4gdGhpcyBzY3JpcHQuCitmdW5jX2NvbmZpZyAoKQogewotICB3aW4zMl9saWJpZF90eXBlPSJ1bmtub3duIgotICB3aW4zMl9maWxlcmVzPWBmaWxlIC1MICQxIDI+L2Rldi9udWxsYAotICBjYXNlICR3aW4zMl9maWxlcmVzIGluCi0gICphclwgYXJjaGl2ZVwgaW1wb3J0XCBsaWJyYXJ5KikgIyBkZWZpbml0ZWx5IGltcG9ydAotICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKLSAgICA7OwotICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCi0gICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfCBcCi0gICAgICAkRUdSRVAgLWUgJ2ZpbGUgZm9ybWF0IHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycgPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSAkMSB8IFwKLQkkU0VEIC1uIC1lICcxLDEwMHsKLQkJLyBJIC97Ci0JCQlzLC4qLGltcG9ydCwKLQkJCXAKLQkJCXEKLQkJCX0KLQkJfSdgCi0gICAgICBjYXNlICR3aW4zMl9ubXJlcyBpbgotICAgICAgaW1wb3J0KikgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCI7OwotICAgICAgKikgICAgICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIHN0YXRpYyI7OwotICAgICAgZXNhYworICAgIHJlX2JlZ2luY2Y9J14jICMjIyBCRUdJTiBMSUJUT09MJworICAgIHJlX2VuZGNmPSdeIyAjIyMgRU5EIExJQlRPT0wnCisKKyAgICAjIERlZmF1bHQgY29uZmlndXJhdGlvbi4KKyAgICAkU0VEICIxLC8kcmVfYmVnaW5jZiBDT05GSUcvZDsvJHJlX2VuZGNmIENPTkZJRy8sXCRkIiA8ICIkcHJvZ3BhdGgiCisKKyAgICAjIE5vdyBwcmludCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB0YWdzLgorICAgIGZvciB0YWduYW1lIGluICR0YWdsaXN0OyBkbworICAgICAgJFNFRCAtbiAiLyRyZV9iZWdpbmNmIFRBRyBDT05GSUc6ICR0YWduYW1lXCQvLC8kcmVfZW5kY2YgVEFHIENPTkZJRzogJHRhZ25hbWVcJC9wIiA8ICIkcHJvZ3BhdGgiCisgICAgZG9uZQorCisgICAgZXhpdCAkPworfQorCisjIGZ1bmNfZmVhdHVyZXMKKyMgRGlzcGxheSB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0LgorZnVuY19mZWF0dXJlcyAoKQoreworICAgICRFQ0hPICJob3N0OiAkaG9zdCIKKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgICAgJEVDSE8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgIGVsc2UKKyAgICAgICRFQ0hPICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICAgZmkKLSAgICA7OwotICAqRExMKikKLSAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgRExMIgotICAgIDs7Ci0gICpleGVjdXRhYmxlKikgIyBidXQgc2hlbGwgc2NyaXB0cyBhcmUgImV4ZWN1dGFibGUiIHRvby4uLgotICAgIGNhc2UgJHdpbjMyX2ZpbGVyZXMgaW4KLSAgICAqTVNcIFdpbmRvd3NcIFBFXCBJbnRlbCopCi0gICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgRExMIgorICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgICRFQ0hPICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICBlbHNlCisgICAgICAkRUNITyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgIGZpCisKKyAgICBleGl0ICQ/Cit9CisKKyMgZnVuY19lbmFibGVfdGFnIHRhZ25hbWUKKyMgVmVyaWZ5IHRoYXQgVEFHTkFNRSBpcyB2YWxpZCwgYW5kIGVpdGhlciBmbGFnIGFuIGVycm9yIGFuZCBleGl0LCBvcgorIyBlbmFibGUgdGhlIFRBR05BTUUgdGFnLiAgV2UgYWxzbyBhZGQgVEFHTkFNRSB0byB0aGUgZ2xvYmFsICR0YWdsaXN0CisjIHZhcmlhYmxlIGhlcmUuCitmdW5jX2VuYWJsZV90YWcgKCkKK3sKKyAgIyBHbG9iYWwgdmFyaWFibGU6CisgIHRhZ25hbWU9IiQxIgorCisgIHJlX2JlZ2luY2Y9Il4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXCQiCisgIHJlX2VuZGNmPSJeIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVcJCIKKyAgc2VkX2V4dHJhY3RjZj0iLyRyZV9iZWdpbmNmLywvJHJlX2VuZGNmL3AiCisKKyAgIyBWYWxpZGF0ZSB0YWduYW1lLgorICBjYXNlICR0YWduYW1lIGluCisgICAgKlshLV9BLVphLXowLTksL10qKQorICAgICAgZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCB0YWcgbmFtZTogJHRhZ25hbWUiCiAgICAgICA7OwotICAgIGVzYWMKKyAgZXNhYworCisgICMgRG9uJ3QgdGVzdCBmb3IgdGhlICJkZWZhdWx0IiBDIHRhZywgYXMgd2Uga25vdyBpdCdzCisgICMgdGhlcmUgYnV0IG5vdCBzcGVjaWFsbHkgbWFya2VkLgorICBjYXNlICR0YWduYW1lIGluCisgICAgQ0MpIDs7CisgICAgKikKKyAgICAgIGlmICRHUkVQICIkcmVfYmVnaW5jZiIgIiRwcm9ncGF0aCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJdGFnbGlzdD0iJHRhZ2xpc3QgJHRhZ25hbWUiCisKKwkjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLiAgQmUgY2FyZWZ1bCB0byBxdW90ZSB0aGUgcGF0aAorCSMgYW5kIHRoZSBzZWQgc2NyaXB0LCB0byBhdm9pZCBzcGxpdHRpbmcgb24gd2hpdGVzcGFjZSwgYnV0CisJIyBhbHNvIGRvbid0IHVzZSBub24tcG9ydGFibGUgcXVvdGVzIHdpdGhpbiBiYWNrcXVvdGVzIHdpdGhpbgorCSMgcXVvdGVzIHdlIGhhdmUgdG8gZG8gaXQgaW4gMiBzdGVwczoKKwlleHRyYWN0ZWRjZj1gJFNFRCAtbiAtZSAiJHNlZF9leHRyYWN0Y2YiIDwgIiRwcm9ncGF0aCJgCisJZXZhbCAiJGV4dHJhY3RlZGNmIgorICAgICAgZWxzZQorCWZ1bmNfZXJyb3IgImlnbm9yaW5nIHVua25vd24gdGFnICR0YWduYW1lIgorICAgICAgZmkKKyAgICAgIDs7CisgIGVzYWMKK30KKworIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KKyMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCit7CisKKyAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CisgIGNhc2UgJDEgaW4KKyAgY2xlYW58Y2xlYXxjbGV8Y2wpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorICAgIDs7CisgIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CisgICAgOzsKKyAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKyAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKyAgICA7OworICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKyAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorICAgIDs7CisgIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgICAgOzsKKyAgbGlua3xsaW58bGl8bCkKKyAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKyAgICA7OworICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKyAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAogICAgIDs7CiAgIGVzYWMKLSAgJGVjaG8gJHdpbjMyX2xpYmlkX3R5cGUKKworICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKKyAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbworICAgIG9wdD0iJDEiCisgICAgc2hpZnQKKworICAgIGNhc2UgJG9wdCBpbgorICAgICAgLS1jb25maWcpCQlmdW5jX2NvbmZpZwkJCQkJOzsKKworICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCisJCQlvcHRfZGVidWc9J3NldCAteCcKKwkJCSRvcHRfZGVidWcKKwkJCTs7CisKKyAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKwkJCWV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkMSIKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtLWRyeS1ydW4gfCAtbikJb3B0X2RyeV9ydW49OgkJCQkJOzsKKyAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7CisgICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7CisKKyAgICAgIC0tbW9kZSkJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhaworCQkJY2FzZSAkMSBpbgorCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorCQkJICBjbGVhbikJOzsKKwkJCSAgY29tcGlsZSkJOzsKKwkJCSAgZXhlY3V0ZSkJOzsKKwkJCSAgZmluaXNoKQk7OworCQkJICBpbnN0YWxsKQk7OworCQkJICBsaW5rKQkJOzsKKwkJCSAgcmVsaW5rKQk7OworCQkJICB1bmluc3RhbGwpCTs7CisKKwkJCSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCisJCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCisJCQkgICAgIGV4aXRfY21kPWV4aXQKKwkJCSAgICAgYnJlYWsKKwkJCSAgICAgOzsKKwkJICAgICAgICBlc2FjCisKKwkJCW1vZGU9IiQxIgorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCisJCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OworCisgICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorCQkJb3B0X3NpbGVudD06CisJCQk7OworCisgICAgICAtLXZlcmJvc2V8IC12KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorCQkJb3B0X3NpbGVudD1mYWxzZQorCQkJOzsKKworICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKwkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQgJDEiCisJCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCisJCQlmdW5jX29wdF9zcGxpdCAiJG9wdCIKKwkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJCTs7CisgICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OworICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7CisKKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7CisKKyAgICAgICopCQlub25vcHQ9IiRvcHQiCisJCQlicmVhaworCQkJOzsKKyAgICBlc2FjCisgIGRvbmUKKworCisgIGNhc2UgJGhvc3QgaW4KKyAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQorICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgOzsKKyAgICAqKQorICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCisgICAgICA7OworICBlc2FjCisKKyAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCisgICMgYW55dGhpbmcgd2FzIHdyb25nLgorICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorfQorCisjIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQorIyByZWxlYXNlIG9mIGxpYnRvb2wuCitmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKK3sKKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCisgICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCiskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCiskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCitfTFRfRU9GCisgICAgICBlbHNlCisgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCiskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCiskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCiskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCiskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCitfTFRfRU9GCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCiskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKKyRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKyRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KK19MVF9FT0YKKyAgICBmaQorCisgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorICBmaQorfQorCisKKyMjIC0tLS0tLS0tLS0tICMjCisjIyAgICBNYWluLiAgICAjIworIyMgLS0tLS0tLS0tLS0gIyMKKworJG9wdF9oZWxwIHx8IHsKKyAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKworICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisgIGZpCisKKyAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCisKKworICAjIERhcndpbiBzdWNrcworICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorCisKKyAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKyAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgIGZpCisKKyAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorICBnZW5lcmljX2hlbHA9IiRoZWxwIgorICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorfQorCisKKyMgZnVuY19sYWxpYl9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KKyMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKKyMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCitmdW5jX2xhbGliX3AgKCkKK3sKKyAgICB0ZXN0IC1mICIkMSIgJiYKKyAgICAgICRTRUQgLWUgNHEgIiQxIiAyPi9kZXYvbnVsbCBcCisgICAgICAgIHwgJEdSRVAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIiA+IC9kZXYvbnVsbCAyPiYxCit9CisKKyMgZnVuY19sYWxpYl91bnNhZmVfcCBmaWxlCisjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCisjIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgc2FtZSBjaGVjayBhcyBmdW5jX2xhbGliX3Agd2l0aG91dAorIyByZXNvcnRpbmcgdG8gZXh0ZXJuYWwgcHJvZ3JhbXMuICBUbyB0aGlzIGVuZCwgaXQgcmVkaXJlY3RzIHN0ZGluIGFuZAorIyBjbG9zZXMgaXQgYWZ0ZXJ3YXJkcywgd2l0aG91dCBzYXZpbmcgdGhlIG9yaWdpbmFsIGZpbGUgZGVzY3JpcHRvci4KKyMgQXMgYSBzYWZldHkgbWVhc3VyZSwgdXNlIGl0IG9ubHkgd2hlcmUgYSBuZWdhdGl2ZSByZXN1bHQgd291bGQgYmUKKyMgZmF0YWwgYW55d2F5LiAgV29ya3MgaWYgYGZpbGUnIGRvZXMgbm90IGV4aXN0LgorZnVuY19sYWxpYl91bnNhZmVfcCAoKQoreworICAgIGxhbGliX3A9bm8KKyAgICBpZiB0ZXN0IC1mICIkMSIgJiYgdGVzdCAtciAiJDEiICYmIGV4ZWMgNTwmMCA8IiQxIjsgdGhlbgorCWZvciBsYWxpYl9wX2wgaW4gMSAyIDMgNAorCWRvCisJICAgIHJlYWQgbGFsaWJfcF9saW5lCisJICAgIGNhc2UgIiRsYWxpYl9wX2xpbmUiIGluCisJCVwjXCBHZW5lcmF0ZWRcIGJ5XCAqJFBBQ0tBR0UqICkgbGFsaWJfcD15ZXM7IGJyZWFrOzsKKwkgICAgZXNhYworCWRvbmUKKwlleGVjIDA8JjUgNTwmLQorICAgIGZpCisgICAgdGVzdCAiJGxhbGliX3AiID0geWVzCit9CisKKyMgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgZmlsZQorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdAorIyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYSBiYXNpYyBzYW5pdHkgY2hlY2s7IGl0IHdpbGwgaGFyZGx5IGZsdXNoIG91dAorIyBkZXRlcm1pbmVkIGltcG9zdGVycy4KK2Z1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICgpCit7CisgICAgZnVuY19sYWxpYl9wICIkMSIKK30KKworIyBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgZmlsZQorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCB3cmFwcGVyIGV4ZWN1dGFibGUKKyMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKKyMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCitmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgKCkKK3sKKyAgICBmdW5jX2x0d3JhcHBlcl9leGVjX3N1ZmZpeD0KKyAgICBjYXNlICQxIGluCisgICAgKi5leGUpIDs7CisgICAgKikgZnVuY19sdHdyYXBwZXJfZXhlY19zdWZmaXg9LmV4ZSA7OworICAgIGVzYWMKKyAgICAkR1JFUCAiJG1hZ2ljX2V4ZSIgIiQxJGZ1bmNfbHR3cmFwcGVyX2V4ZWNfc3VmZml4IiA+L2Rldi9udWxsIDI+JjEKK30KKworIyBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lIGZpbGUKKyMgQXNzdW1lcyBmaWxlIGlzIGFuIGx0d3JhcHBlcl9leGVjdXRhYmxlCisjIHVzZXMgJGZpbGUgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBmaWxlbmFtZSBmb3IgYQorIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KK2Z1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKK3sKKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgorICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCisJZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKKyAgICBmaQorfQorCisjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvciB3cmFwcGVyIGV4ZWN1dGFibGUKKyMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKKyMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCitmdW5jX2x0d3JhcHBlcl9wICgpCit7CisgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiQxIiB8fCBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIgorfQorCisKKyMgZnVuY19leGVjdXRlX2NtZHMgY29tbWFuZHMgZmFpbF9jbWQKKyMgRXhlY3V0ZSB0aWxkZS1kZWxpbWl0ZWQgQ09NTUFORFMuCisjIElmIEZBSUxfQ01EIGlzIGdpdmVuLCBldmFsIHRoYXQgdXBvbiBmYWlsdXJlLgorIyBGQUlMX0NNRCBtYXkgcmVhZC1hY2Nlc3MgdGhlIGN1cnJlbnQgY29tbWFuZCBpbiB2YXJpYWJsZSBDTUQhCitmdW5jX2V4ZWN1dGVfY21kcyAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCisgICAgZm9yIGNtZCBpbiAkMTsgZG8KKyAgICAgIElGUz0kc2F2ZV9pZnMKKyAgICAgIGV2YWwgY21kPVwiJGNtZFwiCisgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKKyAgICBkb25lCisgICAgSUZTPSRzYXZlX2lmcworfQorCisKKyMgZnVuY19zb3VyY2UgZmlsZQorIyBTb3VyY2UgRklMRSwgYWRkaW5nIGRpcmVjdG9yeSBjb21wb25lbnQgaWYgbmVjZXNzYXJ5LgorIyBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBvbiBjeWd3aW4vbWluZ3cgdG8gYXBwZW5kIGEgZG90IHRvCisjIEZJTEUgZXZlbiBpZiBib3RoIEZJTEUgYW5kIEZJTEUuZXhlIGV4aXN0OiBhdXRvbWF0aWMtYXBwZW5kLS5leGUKKyMgYmVoYXZpb3IgaGFwcGVucyBvbmx5IGZvciBleGVjKDMpLCBub3QgZm9yIG9wZW4oMikhICBBbHNvLCBzb3VyY2luZworIyBgRklMRS4nIGRvZXMgbm90IHdvcmsgb24gY3lnd2luIG1hbmFnZWQgbW91bnRzLgorZnVuY19zb3VyY2UgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgY2FzZSAkMSBpbgorICAgICovKiB8ICpcXCopCS4gIiQxIiA7OworICAgICopCQkuICIuLyQxIiA7OworICAgIGVzYWMKIH0KIAogCkBAIC0yNTAsMzkgKzEwMDksMzIgQEAKICMgYXJnIGlzIHVzdWFsbHkgb2YgdGhlIGZvcm0gJ2djYyAuLi4nCiBmdW5jX2luZmVyX3RhZyAoKQogeworICAgICRvcHRfZGVidWcKICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgogICAgICAgQ0NfcXVvdGVkPQogICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0JY2FzZSAkYXJnIGluCi0JICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgIGFyZz0iXCIkYXJnXCIiCi0JICA7OwotCWVzYWMKLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGFyZyIKKyAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgICAgZG9uZQogICAgICAgY2FzZSAkQCBpbgogICAgICAgIyBCbGFua3MgaW4gdGhlIGNvbW1hbmQgbWF5IGhhdmUgYmVlbiBzdHJpcHBlZCBieSB0aGUgY2FsbGluZyBzaGVsbCwKICAgICAgICMgYnV0IG5vdCBmcm9tIHRoZSBDQyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGNvbmZpZ3VyZSB3YXMgcnVuLgotICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJGVjaG8gJENDYCAiKiB8ICJgJGVjaG8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkZWNobyAkQ0NfcXVvdGVkYCAiKiB8ICJgJGVjaG8gJENDX3F1b3RlZGAgIiopIDs7CisgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikgOzsKICAgICAgICMgQmxhbmtzIGF0IHRoZSBzdGFydCBvZiAkYmFzZV9jb21waWxlIHdpbGwgY2F1c2UgdGhpcyB0byBmYWlsCiAgICAgICAjIGlmIHdlIGRvbid0IGNoZWNrIGZvciB0aGVtIGFzIHdlbGwuCiAgICAgICAqKQogCWZvciB6IGluICRhdmFpbGFibGVfdGFnczsgZG8KLQkgIGlmIGdyZXAgIl4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR6JCIgPCAiJHByb2dwYXRoIiA+IC9kZXYvbnVsbDsgdGhlbgorCSAgaWYgJEdSRVAgIl4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR6JCIgPCAiJHByb2dwYXRoIiA+IC9kZXYvbnVsbDsgdGhlbgogCSAgICAjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLgogCSAgICBldmFsICJgJHtTRUR9IC1uIC1lICcvXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvLC9eIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvcCcgPCAkcHJvZ3BhdGhgIgogCSAgICBDQ19xdW90ZWQ9CiAJICAgIGZvciBhcmcgaW4gJENDOyBkbwotCSAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0JICAgIGNhc2UgJGFyZyBpbgotCSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCSAgICAgIGFyZz0iXCIkYXJnXCIiCi0JICAgICAgOzsKLQkgICAgZXNhYwotCSAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGFyZyIKLQkgIGRvbmUKKwkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCisJICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgICBkb25lCiAJICAgIGNhc2UgIiRAICIgaW4KLQkgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkZWNobyAkQ0NgICIqIHwgImAkZWNobyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRlY2hvICRDQ19xdW90ZWRgICIqIHwgImAkZWNobyAkQ0NfcXVvdGVkYCAiKikKKwkgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikKIAkgICAgICAjIFRoZSBjb21waWxlciBpbiB0aGUgYmFzZSBjb21waWxlIGNvbW1hbmQgbWF0Y2hlcwogCSAgICAgICMgdGhlIG9uZSBpbiB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24uCiAJICAgICAgIyBBc3N1bWUgdGhpcyBpcyB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gd2Ugd2FudC4KQEAgLTI5NiwxMSArMTA0OCwxMCBAQAogCSMgd2FzIGZvdW5kIGFuZCBsZXQgdGhlIHVzZXIga25vdyB0aGF0IHRoZSAiLS10YWciIGNvbW1hbmQKIAkjIGxpbmUgb3B0aW9uIG11c3QgYmUgdXNlZC4KIAlpZiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiIKLQkgICRlY2hvICIkbW9kZW5hbWU6IHNwZWNpZnkgYSB0YWcgd2l0aCBcYC0tdGFnJyIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICRlY2hvICIkbW9kZW5hbWU6IHVzaW5nICR0YWduYW1lIHRhZ2dlZCBjb25maWd1cmF0aW9uIgorCSAgZnVuY19lY2hvICJ1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24iCisJICBmdW5jX2ZhdGFsX2Vycm9yICJzcGVjaWZ5IGEgdGFnIHdpdGggXGAtLXRhZyciCisjCWVsc2UKKyMJICBmdW5jX3ZlcmJvc2UgInVzaW5nICR0YWduYW1lIHRhZ2dlZCBjb25maWd1cmF0aW9uIgogCWZpCiAJOzsKICAgICAgIGVzYWMKQEAgLTMwOCwzNTQgKzEwNTksNDggQEAKIH0KIAogCi0jIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlIGRpciBvbGRsaWIKLWZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICgpCisKKyMgZnVuY193cml0ZV9saWJ0b29sX29iamVjdCBvdXRwdXRfbmFtZSBwaWNfbmFtZSBub25waWNfbmFtZQorIyBDcmVhdGUgYSBsaWJ0b29sIG9iamVjdCBmaWxlIChhbmFsb2dvdXMgdG8gYSAiLmxhIiBmaWxlKSwKKyMgYnV0IGRvbid0IGNyZWF0ZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGRyeSBydW4uCitmdW5jX3dyaXRlX2xpYnRvb2xfb2JqZWN0ICgpCiB7Ci0gICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKLSAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCi0KLSAgICAkc2hvdyAiKGNkICRmX2V4X2FuX2FyX2RpciAmJiAkQVIgeCAkZl9leF9hbl9hcl9vbGRsaWIpIgotICAgICRydW4gZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCRmX2V4X2FuX2FyX29sZGxpYikiIHx8IGV4aXQgJD8KLSAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgotICAgICA6Ci0gICAgZWxzZQotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogRVJST1I6IG9iamVjdCBuYW1lIGNvbmZsaWN0czogJGZfZXhfYW5fYXJfZGlyLyRmX2V4X2FuX2FyX29sZGxpYiIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLX0KLQotIyBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgZ2VudG9wIG9sZGxpYiAuLi4KLWZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQotewotICAgIG15X2dlbnRvcD0iJDEiOyBzaGlmdAotICAgIG15X29sZGxpYnM9JHsxKyIkQCJ9Ci0gICAgbXlfb2xkb2Jqcz0iIgotICAgIG15X3hsaWI9IiIKLSAgICBteV94YWJzPSIiCi0gICAgbXlfeGRpcj0iIgotICAgIG15X3N0YXR1cz0iIgotCi0gICAgJHNob3cgIiR7cm19ciAkbXlfZ2VudG9wIgotICAgICRydW4gJHtybX1yICIkbXlfZ2VudG9wIgotICAgICRzaG93ICIkbWtkaXIgJG15X2dlbnRvcCIKLSAgICAkcnVuICRta2RpciAiJG15X2dlbnRvcCIKLSAgICBteV9zdGF0dXM9JD8KLSAgICBpZiB0ZXN0ICIkbXlfc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiRteV9nZW50b3AiOyB0aGVuCi0gICAgICBleGl0ICRteV9zdGF0dXMKLSAgICBmaQotCi0gICAgZm9yIG15X3hsaWIgaW4gJG15X29sZGxpYnM7IGRvCi0gICAgICAjIEV4dHJhY3QgdGhlIG9iamVjdHMuCi0gICAgICBjYXNlICRteV94bGliIGluCi0JW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBteV94YWJzPSIkbXlfeGxpYiIgOzsKLQkqKSBteV94YWJzPWBwd2RgIi8kbXlfeGxpYiIgOzsKLSAgICAgIGVzYWMKLSAgICAgIG15X3hsaWI9YCRlY2hvICJYJG15X3hsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLSAgICAgIG15X3hsaWJfdT0kbXlfeGxpYgotICAgICAgd2hpbGUgOjsgZG8KLSAgICAgICAgY2FzZSAiICRleHRyYWN0ZWRfYXJjaGl2ZXMgIiBpbgotCSoiICRteV94bGliX3UgIiopCi0JICBleHRyYWN0ZWRfc2VyaWFsPWBleHByICRleHRyYWN0ZWRfc2VyaWFsICsgMWAKLQkgIG15X3hsaWJfdT1sdCRleHRyYWN0ZWRfc2VyaWFsLSRteV94bGliIDs7Ci0JKikgYnJlYWsgOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICBleHRyYWN0ZWRfYXJjaGl2ZXM9IiRleHRyYWN0ZWRfYXJjaGl2ZXMgJG15X3hsaWJfdSIKLSAgICAgIG15X3hkaXI9IiRteV9nZW50b3AvJG15X3hsaWJfdSIKLQotICAgICAgJHNob3cgIiR7cm19ciAkbXlfeGRpciIKLSAgICAgICRydW4gJHtybX1yICIkbXlfeGRpciIKLSAgICAgICRzaG93ICIkbWtkaXIgJG15X3hkaXIiCi0gICAgICAkcnVuICRta2RpciAiJG15X3hkaXIiCi0gICAgICBleGl0X3N0YXR1cz0kPwotICAgICAgaWYgdGVzdCAiJGV4aXRfc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiRteV94ZGlyIjsgdGhlbgotCWV4aXQgJGV4aXRfc3RhdHVzCi0gICAgICBmaQotICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgKi1kYXJ3aW4qKQotCSRzaG93ICJFeHRyYWN0aW5nICRteV94YWJzIgotCSMgRG8gbm90IGJvdGhlciBkb2luZyBhbnl0aGluZyBpZiBqdXN0IGEgZHJ5IHJ1bgotCWlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JICBkYXJ3aW5fb3JpZ19kaXI9YHB3ZGAKLQkgIGNkICRteV94ZGlyIHx8IGV4aXQgJD8KLQkgIGRhcndpbl9hcmNoaXZlPSRteV94YWJzCi0JICBkYXJ3aW5fY3VyZGlyPWBwd2RgCi0JICBkYXJ3aW5fYmFzZV9hcmNoaXZlPWAkZWNobyAiWCRkYXJ3aW5fYXJjaGl2ZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgZGFyd2luX2FyY2hlcz1gbGlwbyAtaW5mbyAiJGRhcndpbl9hcmNoaXZlIiAyPi9kZXYvbnVsbCB8ICRFR1JFUCBBcmNoaXRlY3R1cmVzIDI+L2Rldi9udWxsYAotCSAgaWYgdGVzdCAtbiAiJGRhcndpbl9hcmNoZXMiOyB0aGVuIAotCSAgICBkYXJ3aW5fYXJjaGVzPWBlY2hvICIkZGFyd2luX2FyY2hlcyIgfCAkU0VEIC1lICdzLy4qYXJlOi8vJ2AKLQkgICAgZGFyd2luX2FyY2g9Ci0JICAgICRzaG93ICIkZGFyd2luX2Jhc2VfYXJjaGl2ZSBoYXMgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyAkZGFyd2luX2FyY2hlcyIKLQkgICAgZm9yIGRhcndpbl9hcmNoIGluICAkZGFyd2luX2FyY2hlcyA7IGRvCi0JICAgICAgbWtkaXIgLXAgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0iCi0JICAgICAgbGlwbyAtdGhpbiAkZGFyd2luX2FyY2ggLW91dHB1dCAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofS8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9IiAiJHtkYXJ3aW5fYXJjaGl2ZX0iCi0JICAgICAgY2QgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0iCi0JICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgImBwd2RgIiAiJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIKLQkgICAgICBjZCAiJGRhcndpbl9jdXJkaXIiCi0JICAgICAgJHJtICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9LyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCi0JICAgIGRvbmUgIyAkZGFyd2luX2FyY2hlcwotICAgICAgIyMgT2theSBub3cgd2UgaGF2ZSBhIGJ1bmNoIG9mIHRoaW4gb2JqZWN0cywgZ290dGEgZmF0dGVuIHRoZW0gdXAgOikKLQkgICAgZGFyd2luX2ZpbGVsaXN0PWBmaW5kIHVuZmF0LSQkIC10eXBlIGYgLW5hbWUgXCoubyAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50fCB4YXJncyBiYXNlbmFtZSB8IHNvcnQgLXUgfCAkTkwyU1BgCi0JICAgIGRhcndpbl9maWxlPQotCSAgICBkYXJ3aW5fZmlsZXM9Ci0JICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwotCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgJE5MMlNQYAotCSAgICAgIGxpcG8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKLQkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKLQkgICAgJHtybX1yIHVuZmF0LSQkCi0JICAgIGNkICIkZGFyd2luX29yaWdfZGlyIgotCSAgZWxzZQotCSAgICBjZCAiJGRhcndpbl9vcmlnX2RpciIKLSAJICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgotCSAgZmkgIyAkZGFyd2luX2FyY2hlcwotCWZpICMgJHJ1bgotCTs7Ci0gICAgICAqKQotICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKLSAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCi0gICAgZG9uZQotICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgotfQotIyBFbmQgb2YgU2hlbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBEYXJ3aW4gc3Vja3MKLWV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0KLWRpc2FibGVfbGlicz1ubwotCi0jIFBhcnNlIG91ciBjb21tYW5kIGxpbmUgb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5Lgotd2hpbGUgdGVzdCAiJCMiIC1ndCAwCi1kbwotICBhcmc9IiQxIgotICBzaGlmdAotCi0gIGNhc2UgJGFyZyBpbgotICAtKj0qKSBvcHRhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9bLV9hLXpBLVowLTldKj0vLydgIDs7Ci0gICopIG9wdGFyZz0gOzsKLSAgZXNhYwotCi0gICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgotICBpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KLSAgICBjYXNlICRwcmV2IGluCi0gICAgZXhlY3V0ZV9kbGZpbGVzKQotICAgICAgZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICRhcmciCi0gICAgICA7OwotICAgIHRhZykKLSAgICAgIHRhZ25hbWU9IiRhcmciCi0gICAgICBwcmVzZXJ2ZV9hcmdzPSIke3ByZXNlcnZlX2FyZ3N9PSRhcmciCi0KLSAgICAgICMgQ2hlY2sgd2hldGhlciB0YWduYW1lIGNvbnRhaW5zIG9ubHkgdmFsaWQgY2hhcmFjdGVycwotICAgICAgY2FzZSAkdGFnbmFtZSBpbgotICAgICAgKlshLV9BLVphLXowLTksL10qKQotCSRlY2hvICIkcHJvZ25hbWU6IGludmFsaWQgdGFnIG5hbWU6ICR0YWduYW1lIiAxPiYyCi0JZXhpdCAkRVhJVF9GQUlMVVJFCi0JOzsKLSAgICAgIGVzYWMKLQotICAgICAgY2FzZSAkdGFnbmFtZSBpbgotICAgICAgQ0MpCi0JIyBEb24ndCB0ZXN0IGZvciB0aGUgImRlZmF1bHQiIEMgdGFnLCBhcyB3ZSBrbm93LCBpdCdzIHRoZXJlLCBidXQKLQkjIG5vdCBzcGVjaWFsbHkgbWFya2VkLgotCTs7Ci0gICAgICAqKQotCWlmIGdyZXAgIl4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lJCIgPCAiJHByb2dwYXRoIiA+IC9kZXYvbnVsbDsgdGhlbgotCSAgdGFnbGlzdD0iJHRhZ2xpc3QgJHRhZ25hbWUiCi0JICAjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLgotCSAgZXZhbCAiYCR7U0VEfSAtbiAtZSAnL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICckdGFnbmFtZSckLywvXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICckdGFnbmFtZSckL3AnIDwgJHByb2dwYXRoYCIKLQllbHNlCi0JICAkZWNobyAiJHByb2duYW1lOiBpZ25vcmluZyB1bmtub3duIHRhZyAkdGFnbmFtZSIgMT4mMgotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIGV2YWwgIiRwcmV2PVwkYXJnIgotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICBwcmV2PQotICAgIHByZXZvcHQ9Ci0gICAgY29udGludWUKLSAgZmkKLQotICAjIEhhdmUgd2Ugc2VlbiBhIG5vbi1vcHRpb25hbCBhcmd1bWVudCB5ZXQ/Ci0gIGNhc2UgJGFyZyBpbgotICAtLWhlbHApCi0gICAgc2hvd19oZWxwPXllcwotICAgIDs7Ci0KLSAgLS12ZXJzaW9uKQotICAgIGVjaG8gIlwKLSRQUk9HUkFNIChHTlUgJFBBQ0tBR0UpICRWRVJTSU9OJFRJTUVTVEFNUAotCi1Db3B5cmlnaHQgKEMpIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KLXdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKLSAgICBleGl0ICQ/Ci0gICAgOzsKLQotICAtLWNvbmZpZykKLSAgICAke1NFRH0gLWUgJzEsL14jICMjIyBCRUdJTiBMSUJUT09MIENPTkZJRy9kJyAtZSAnL14jICMjIyBFTkQgTElCVE9PTCBDT05GSUcvLCRkJyAkcHJvZ3BhdGgKLSAgICAjIE5vdyBwcmludCB0aGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB0YWdzLgotICAgIGZvciB0YWduYW1lIGluICR0YWdsaXN0OyBkbwotICAgICAgJHtTRUR9IC1uIC1lICIvXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWUkLywvXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lJC9wIiA8ICIkcHJvZ3BhdGgiCi0gICAgZG9uZQotICAgIGV4aXQgJD8KLSAgICA7OwotCi0gIC0tZGVidWcpCi0gICAgJGVjaG8gIiRwcm9nbmFtZTogZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLSAgICBzZXQgLXgKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkYXJnIgotICAgIDs7Ci0KLSAgLS1kcnktcnVuIHwgLW4pCi0gICAgcnVuPToKLSAgICA7OwotCi0gIC0tZmVhdHVyZXMpCi0gICAgJGVjaG8gImhvc3Q6ICRob3N0IgorICAgIHdyaXRlX2xpYm9iaj0kezF9CiAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgICRlY2hvICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIHdyaXRlX2xvYmo9XCckezJ9XCcKICAgICBlbHNlCi0gICAgICAkZWNobyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgd3JpdGVfbG9iaj1ub25lCiAgICAgZmkKKwogICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgICRlY2hvICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIHdyaXRlX29sZG9iaj1cJyR7M31cJwogICAgIGVsc2UKLSAgICAgICRlY2hvICJkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICB3cml0ZV9vbGRvYmo9bm9uZQogICAgIGZpCi0gICAgZXhpdCAkPwotICAgIDs7CiAKLSAgLS1maW5pc2gpIG1vZGU9ImZpbmlzaCIgOzsKKyAgICAkb3B0X2RyeV9ydW4gfHwgeworICAgICAgY2F0ID4ke3dyaXRlX2xpYm9ian1UIDw8RU9GCisjICR3cml0ZV9saWJvYmogLSBhIGxpYnRvb2wgb2JqZWN0IGZpbGUKKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIworIyBQbGVhc2UgRE8gTk9UIGRlbGV0ZSB0aGlzIGZpbGUhCisjIEl0IGlzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyB0aGUgbGlicmFyeS4KIAotICAtLW1vZGUpIHByZXZvcHQ9Ii0tbW9kZSIgcHJldj1tb2RlIDs7Ci0gIC0tbW9kZT0qKSBtb2RlPSIkb3B0YXJnIiA7OworIyBOYW1lIG9mIHRoZSBQSUMgb2JqZWN0LgorcGljX29iamVjdD0kd3JpdGVfbG9iagogCi0gIC0tcHJlc2VydmUtZHVwLWRlcHMpIGR1cGxpY2F0ZV9kZXBzPSJ5ZXMiIDs7CisjIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Citub25fcGljX29iamVjdD0kd3JpdGVfb2xkb2JqCiAKLSAgLS1xdWlldCB8IC0tc2lsZW50KQotICAgIHNob3c9OgotICAgIHByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRhcmciCi0gICAgOzsKK0VPRgorICAgICAgJE1WICIke3dyaXRlX2xpYm9ian1UIiAiJHt3cml0ZV9saWJvYmp9IgorICAgIH0KK30KIAotICAtLXRhZykKLSAgICBwcmV2b3B0PSItLXRhZyIKLSAgICBwcmV2PXRhZwotICAgIHByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzIC0tdGFnIgotICAgIDs7Ci0gIC0tdGFnPSopCi0gICAgc2V0IHRhZyAiJG9wdGFyZyIgJHsxKyIkQCJ9Ci0gICAgc2hpZnQKLSAgICBwcmV2PXRhZwotICAgIHByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzIC0tdGFnIgotICAgIDs7Ci0KLSAgLWRsb3BlbikKLSAgICBwcmV2b3B0PSItZGxvcGVuIgotICAgIHByZXY9ZXhlY3V0ZV9kbGZpbGVzCi0gICAgOzsKLQotICAtKikKLSAgICAkZWNobyAiJG1vZGVuYW1lOiB1bnJlY29nbml6ZWQgb3B0aW9uIFxgJGFyZyciIDE+JjIKLSAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICA7OwotCi0gICopCi0gICAgbm9ub3B0PSIkYXJnIgotICAgIGJyZWFrCi0gICAgOzsKLSAgZXNhYwotZG9uZQotCi1pZiB0ZXN0IC1uICIkcHJldm9wdCI7IHRoZW4KLSAgJGVjaG8gIiRtb2RlbmFtZTogb3B0aW9uIFxgJHByZXZvcHQnIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiAxPiYyCi0gICRlY2hvICIkaGVscCIgMT4mMgotICBleGl0ICRFWElUX0ZBSUxVUkUKLWZpCi0KLWNhc2UgJGRpc2FibGVfbGlicyBpbgotbm8pIAotICA7Owotc2hhcmVkKQotICBidWlsZF9saWJ0b29sX2xpYnM9bm8KLSAgYnVpbGRfb2xkX2xpYnM9eWVzCi0gIDs7Ci1zdGF0aWMpCi0gIGJ1aWxkX29sZF9saWJzPWBjYXNlICRidWlsZF9saWJ0b29sX2xpYnMgaW4geWVzKSBlY2hvIG5vOzsgKikgZWNobyB5ZXM7OyBlc2FjYAotICA7OwotZXNhYwotCi0jIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKLSMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZwotIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgotZXhlY19jbWQ9Ci0KLWlmIHRlc3QgLXogIiRzaG93X2hlbHAiOyB0aGVuCi0KLSAgIyBJbmZlciB0aGUgb3BlcmF0aW9uIG1vZGUuCi0gIGlmIHRlc3QgLXogIiRtb2RlIjsgdGhlbgotICAgICRlY2hvICIqKiogV2FybmluZzogaW5mZXJyaW5nIHRoZSBtb2RlIG9mIG9wZXJhdGlvbiBpcyBkZXByZWNhdGVkLiIgMT4mMgotICAgICRlY2hvICIqKiogRnV0dXJlIHZlcnNpb25zIG9mIExpYnRvb2wgd2lsbCByZXF1aXJlIC0tbW9kZT1NT0RFIGJlIHNwZWNpZmllZC4iIDE+JjIKLSAgICBjYXNlICRub25vcHQgaW4KLSAgICAqY2MgfCBjYyogfCAqKysgfCBnY2MqIHwgKi1nY2MqIHwgZysrKiB8IHhsYyopCi0gICAgICBtb2RlPWxpbmsKLSAgICAgIGZvciBhcmcKLSAgICAgIGRvCi0JY2FzZSAkYXJnIGluCi0JLWMpCi0JICAgbW9kZT1jb21waWxlCi0JICAgYnJlYWsKLQkgICA7OwotCWVzYWMKLSAgICAgIGRvbmUKLSAgICAgIDs7Ci0gICAgKmRiIHwgKmRieCB8ICpzdHJhY2UgfCAqdHJ1c3MpCi0gICAgICBtb2RlPWV4ZWN1dGUKLSAgICAgIDs7Ci0gICAgKmluc3RhbGwqfGNwfG12KQotICAgICAgbW9kZT1pbnN0YWxsCi0gICAgICA7OwotICAgICpybSkKLSAgICAgIG1vZGU9dW5pbnN0YWxsCi0gICAgICA7OwotICAgICopCi0gICAgICAjIElmIHdlIGhhdmUgbm8gbW9kZSwgYnV0IGRsZmlsZXMgd2VyZSBzcGVjaWZpZWQsIHRoZW4gZG8gZXhlY3V0ZSBtb2RlLgotICAgICAgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgbW9kZT1leGVjdXRlCi0KLSAgICAgICMgSnVzdCB1c2UgdGhlIGRlZmF1bHQgb3BlcmF0aW9uIG1vZGUuCi0gICAgICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KLQlpZiB0ZXN0IC1uICIkbm9ub3B0IjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGluZmVyIG9wZXJhdGlvbiBtb2RlIGZyb20gXGAkbm9ub3B0JyIgMT4mMgotCWVsc2UKLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBpbmZlciBvcGVyYXRpb24gbW9kZSB3aXRob3V0IE1PREUtQVJHUyIgMT4mMgotCWZpCi0gICAgICBmaQotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi0KLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSAgICAkZWNobyAiJG1vZGVuYW1lOiB1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciIDE+JjIKLSAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgZmkKLQotICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0gIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0gIGhlbHA9IlRyeSBcYCRtb2RlbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0KLSAgIyBUaGVzZSBtb2RlcyBhcmUgaW4gb3JkZXIgb2YgZXhlY3V0aW9uIGZyZXF1ZW5jeSBzbyB0aGF0IHRoZXkgcnVuIHF1aWNrbHkuCi0gIGNhc2UgJG1vZGUgaW4KLSAgIyBsaWJ0b29sIGNvbXBpbGUgbW9kZQotICBjb21waWxlKQotICAgIG1vZGVuYW1lPSIkbW9kZW5hbWU6IGNvbXBpbGUiCisjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgorZnVuY19tb2RlX2NvbXBpbGUgKCkKK3sKKyAgICAkb3B0X2RlYnVnCiAgICAgIyBHZXQgdGhlIGNvbXBpbGF0aW9uIGNvbW1hbmQgYW5kIHRoZSBzb3VyY2UgZmlsZS4KICAgICBiYXNlX2NvbXBpbGU9CiAgICAgc3JjZmlsZT0iJG5vbm9wdCIgICMgIGFsd2F5cyBrZWVwIGEgbm9uLWVtcHR5IHZhbHVlIGluICJzcmNmaWxlIgpAQCAtNjY0LDYgKzExMDksNyBAQAogICAgIGFyZ19tb2RlPW5vcm1hbAogICAgIGxpYm9iaj0KICAgICBsYXRlcj0KKyAgICBwaWVfZmxhZz0KIAogICAgIGZvciBhcmcKICAgICBkbwpAQCAtNjg0LDE1ICsxMTMwLDE4IEBACiAJIyBBY2NlcHQgYW55IGNvbW1hbmQtbGluZSBvcHRpb25zLgogCWNhc2UgJGFyZyBpbgogCS1vKQotCSAgaWYgdGVzdCAtbiAiJGxpYm9iaiIgOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBjYW5ub3Qgc3BlY2lmeSBcYC1vJyBtb3JlIHRoYW4gb25jZSIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCisJICB0ZXN0IC1uICIkbGlib2JqIiAmJiBcCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgInlvdSBjYW5ub3Qgc3BlY2lmeSBcYC1vJyBtb3JlIHRoYW4gb25jZSIKIAkgIGFyZ19tb2RlPXRhcmdldAogCSAgY29udGludWUKIAkgIDs7CiAKLQktc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCisJLXBpZSB8IC1mcGllIHwgLWZQSUUpCisgICAgICAgICAgcGllX2ZsYWc9IiRwaWVfZmxhZyAkYXJnIgorCSAgY29udGludWUKKwkgIDs7CisKKwktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQogCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CkBAIC03MDgsMzEgKzExNTcsMjUgQEAKIAkgIDs7ICAgICAgICAgICAgIyAgcmVwbGFjZWQgbGF0ZXIuICBJIHdvdWxkIGd1ZXNzIHRoYXQgd291bGQgYmUgYSBidWcuCiAKIAktV2MsKikKLQkgIGFyZ3M9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAicy9eLVdjLC8vImAKKwkgIGZ1bmNfc3RyaXBuYW1lICctV2MsJyAnJyAiJGFyZyIKKwkgIGFyZ3M9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgbGFzdGFyZz0KIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwotIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCisJICBmb3IgYXJnIGluICRhcmdzOyBkbwogCSAgICBJRlM9IiRzYXZlX2lmcyIKLQotCSAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0JICAgICMgTWFueSBCb3VybmUgc2hlbGxzIGNhbm5vdCBoYW5kbGUgY2xvc2UgYnJhY2tldHMgY29ycmVjdGx5Ci0JICAgICMgaW4gc2NhbiBzZXRzLCBzbyB3ZSBzcGVjaWZ5IGl0IHNlcGFyYXRlbHkuCi0JICAgIGNhc2UgJGFyZyBpbgotCSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCSAgICAgIGFyZz0iXCIkYXJnXCIiCi0JICAgICAgOzsKLQkgICAgZXNhYwotCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkYXJnIgorCSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJICBkb25lCiAJICBJRlM9IiRzYXZlX2lmcyIKLQkgIGxhc3Rhcmc9YCRlY2hvICJYJGxhc3RhcmciIHwgJFhzZWQgLWUgInMvXiAvLyJgCisJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgorCSAgbGFzdGFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAKIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgogCSAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKLQkqICkKKwkqKQogCSAgIyBBY2NlcHQgdGhlIGN1cnJlbnQgYXJndW1lbnQgYXMgdGhlIHNvdXJjZSBmaWxlLgogCSAgIyBUaGUgcHJldmlvdXMgInNyY2ZpbGUiIGJlY29tZXMgdGhlIGN1cnJlbnQgYXJndW1lbnQuCiAJICAjCkBAIC03NDQsNjYgKzExODcsNDIgQEAKICAgICAgIGVzYWMgICAgIyAgY2FzZSAkYXJnX21vZGUKIAogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KLSAgICAgIGxhc3Rhcmc9YCRlY2hvICJYJGxhc3RhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotCi0gICAgICBjYXNlICRsYXN0YXJnIGluCi0gICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0gICAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQotICAgICAgIyBpbiBzY2FuIHNldHMsIGFuZCBzb21lIFN1bk9TIGtzaCBtaXN0cmVhdCBiYWNrc2xhc2gtZXNjYXBpbmcKLSAgICAgICMgaW4gc2NhbiBzZXRzICh3b3JrZWQgYXJvdW5kIHdpdGggdmFyaWFibGUgZXhwYW5zaW9uKSwKLSAgICAgICMgYW5kIGZ1cnRoZXJtb3JlIGNhbm5vdCBoYW5kbGUgJ3wnICcmJyAnKCcgJyknIGluIHNjYW4gc2V0cyAKLSAgICAgICMgYXQgYWxsLCBzbyB3ZSBzcGVjaWZ5IHRoZW0gc2VwYXJhdGVseS4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCWxhc3Rhcmc9IlwiJGxhc3RhcmdcIiIKLQk7OwotICAgICAgZXNhYwotCi0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKKyAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAgICAgZG9uZSAjIGZvciBhcmcKIAogICAgIGNhc2UgJGFyZ19tb2RlIGluCiAgICAgYXJnKQotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBhcmd1bWVudCBmb3IgLVhjb21waWxlIgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJ5b3UgbXVzdCBzcGVjaWZ5IGFuIGFyZ3VtZW50IGZvciAtWGNvbXBpbGUiCiAgICAgICA7OwogICAgIHRhcmdldCkKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYSB0YXJnZXQgd2l0aCBcYC1vJyIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJ5b3UgbXVzdCBzcGVjaWZ5IGEgdGFyZ2V0IHdpdGggXGAtbyciCiAgICAgICA7OwogICAgICopCiAgICAgICAjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSBvYmplY3QuCi0gICAgICBbIC16ICIkbGlib2JqIiBdICYmIGxpYm9iaj1gJGVjaG8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorICAgICAgdGVzdCAteiAiJGxpYm9iaiIgJiYgeworCWZ1bmNfYmFzZW5hbWUgIiRzcmNmaWxlIgorCWxpYm9iaj0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgICAgfQogICAgICAgOzsKICAgICBlc2FjCiAKICAgICAjIFJlY29nbml6ZSBzZXZlcmFsIGRpZmZlcmVudCBmaWxlIHN1ZmZpeGVzLgogICAgICMgSWYgdGhlIHVzZXIgc3BlY2lmaWVzIC1vIGZpbGUubywgaXQgaXMgcmVwbGFjZWQgd2l0aCBmaWxlLmxvCi0gICAgeGZvcm09J1tjQ0ZTaWZtc29dJwogICAgIGNhc2UgJGxpYm9iaiBpbgotICAgICouYWRhKSB4Zm9ybT1hZGEgOzsKLSAgICAqLmFkYikgeGZvcm09YWRiIDs7Ci0gICAgKi5hZHMpIHhmb3JtPWFkcyA7OwotICAgICouYXNtKSB4Zm9ybT1hc20gOzsKLSAgICAqLmMrKykgeGZvcm09YysrIDs7Ci0gICAgKi5jYykgeGZvcm09Y2MgOzsKLSAgICAqLmlpKSB4Zm9ybT1paSA7OwotICAgICouY2xhc3MpIHhmb3JtPWNsYXNzIDs7Ci0gICAgKi5jcHApIHhmb3JtPWNwcCA7OwotICAgICouY3h4KSB4Zm9ybT1jeHggOzsKLSAgICAqLltmRl1bMDldPykgeGZvcm09W2ZGXVswOV0uIDs7Ci0gICAgKi5mb3IpIHhmb3JtPWZvciA7OwotICAgICouamF2YSkgeGZvcm09amF2YSA7OwotICAgICoub2JqKSB4Zm9ybT1vYmogOzsKLSAgICAqLnN4KSB4Zm9ybT1zeCA7OworICAgICouW2NDRlNpZm1zb10gfCBcCisgICAgKi5hZGEgfCAqLmFkYiB8ICouYWRzIHwgKi5hc20gfCBcCisgICAgKi5jKysgfCAqLmNjIHwgKi5paSB8ICouY2xhc3MgfCAqLmNwcCB8ICouY3h4IHwgXAorICAgICouW2ZGXVswOV0/IHwgKi5mb3IgfCAqLmphdmEgfCAqLm9iaiB8ICouc3gpCisgICAgICBmdW5jX3hmb3JtICIkbGlib2JqIgorICAgICAgbGlib2JqPSRmdW5jX3hmb3JtX3Jlc3VsdAorICAgICAgOzsKICAgICBlc2FjCiAKLSAgICBsaWJvYmo9YCRlY2hvICJYJGxpYm9iaiIgfCAkWHNlZCAtZSAicy9cLiR4Zm9ybSQvLmxvLyJgCi0KICAgICBjYXNlICRsaWJvYmogaW4KLSAgICAqLmxvKSBvYmo9YCRlY2hvICJYJGxpYm9iaiIgfCAkWHNlZCAtZSAiJGxvMm8iYCA7OworICAgICoubG8pIGZ1bmNfbG8ybyAiJGxpYm9iaiI7IG9iaj0kZnVuY19sbzJvX3Jlc3VsdCA7OwogICAgICopCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZGV0ZXJtaW5lIG5hbWUgb2YgbGlicmFyeSBvYmplY3QgZnJvbSBcYCRsaWJvYmonIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBkZXRlcm1pbmUgbmFtZSBvZiBsaWJyYXJ5IG9iamVjdCBmcm9tIFxgJGxpYm9iaiciCiAgICAgICA7OwogICAgIGVzYWMKIApAQCAtODExLDcgKzEyMzAsMTUgQEAKIAogICAgIGZvciBhcmcgaW4gJGxhdGVyOyBkbwogICAgICAgY2FzZSAkYXJnIGluCisgICAgICAtc2hhcmVkKQorCXRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBcCisJICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbiBub3QgYnVpbGQgYSBzaGFyZWQgbGlicmFyeSIKKwlidWlsZF9vbGRfbGlicz1ubworCWNvbnRpbnVlCisJOzsKKwogICAgICAgLXN0YXRpYykKKwlidWlsZF9saWJ0b29sX2xpYnM9bm8KIAlidWlsZF9vbGRfbGlicz15ZXMKIAljb250aW51ZQogCTs7CkBAIC04MjgsMjggKzEyNTUsMTcgQEAKICAgICAgIGVzYWMKICAgICBkb25lCiAKLSAgICBxbGlib2JqPWAkZWNobyAiWCRsaWJvYmoiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgIGNhc2UgJHFsaWJvYmogaW4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCXFsaWJvYmo9IlwiJHFsaWJvYmpcIiIgOzsKLSAgICBlc2FjCi0gICAgdGVzdCAiWCRsaWJvYmoiICE9ICJYJHFsaWJvYmoiIFwKLQkmJiAkZWNobyAiWCRsaWJvYmoiIHwgZ3JlcCAnW11+I14qe307PD4/IiciJyInIAkmKCl8YCRbXScgXAotCSYmICRlY2hvICIkbW9kZW5hbWU6IGxpYm9iaiBuYW1lIFxgJGxpYm9iaicgbWF5IG5vdCBjb250YWluIHNoZWxsIHNwZWNpYWwgY2hhcmFjdGVycy4iCi0gICAgb2JqbmFtZT1gJGVjaG8gIlgkb2JqIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0gICAgeGRpcj1gJGVjaG8gIlgkb2JqIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0gICAgaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJG9iaiI7IHRoZW4KLSAgICAgIHhkaXI9Ci0gICAgZWxzZQotICAgICAgeGRpcj0keGRpci8KLSAgICBmaQorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsaWJvYmoiCisgICAgdGVzdCAiWCRsaWJvYmoiICE9ICJYJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IiBcCisgICAgICAmJiAkRUNITyAiWCRsaWJvYmoiIHwgJEdSRVAgJ1tdfiNeKnt9Ozw+PyInIiciJwkgJigpfGAkW10nIFwKKyAgICAgICYmIGZ1bmNfd2FybmluZyAibGlib2JqIG5hbWUgXGAkbGlib2JqJyBtYXkgbm90IGNvbnRhaW4gc2hlbGwgc3BlY2lhbCBjaGFyYWN0ZXJzLiIKKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkb2JqIiAiLyIgIiIKKyAgICBvYmpuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisgICAgeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAgICAgbG9iaj0ke3hkaXJ9JG9iamRpci8kb2JqbmFtZQogCi0gICAgaWYgdGVzdCAteiAiJGJhc2VfY29tcGlsZSI7IHRoZW4KLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYSBjb21waWxhdGlvbiBjb21tYW5kIiAxPiYyCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCisgICAgdGVzdCAteiAiJGJhc2VfY29tcGlsZSIgJiYgXAorICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgY29tcGlsYXRpb24gY29tbWFuZCIKIAogICAgICMgRGVsZXRlIGFueSBsZWZ0b3ZlciBsaWJyYXJ5IG9iamVjdHMuCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgpAQCAtODU4LDEyICsxMjc0LDkgQEAKICAgICAgIHJlbW92ZWxpc3Q9IiRsb2JqICRsaWJvYmogJHtsaWJvYmp9VCIKICAgICBmaQogCi0gICAgJHJ1biAkcm0gJHJlbW92ZWxpc3QKLSAgICB0cmFwICIkcnVuICRybSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKLQogICAgICMgT24gQ3lnd2luIHRoZXJlJ3Mgbm8gInJlYWwiIFBJQyBmbGFnIHNvIHdlIG11c3QgYnVpbGQgYm90aCBvYmplY3QgdHlwZXMKICAgICBjYXNlICRob3N0X29zIGluCi0gICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgb3MyKikKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQogICAgICAgcGljX21vZGU9ZGVmYXVsdAogICAgICAgOzsKICAgICBlc2FjCkBAIC04NzUsMTAgKzEyODgsOCBAQAogICAgICMgQ2FsY3VsYXRlIHRoZSBmaWxlbmFtZSBvZiB0aGUgb3V0cHV0IG9iamVjdCBpZiBjb21waWxlciBkb2VzCiAgICAgIyBub3Qgc3VwcG9ydCAtbyB3aXRoIC1jCiAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSBubzsgdGhlbgotICAgICAgb3V0cHV0X29iaj1gJGVjaG8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnIC1lICdzJVwuW14uXSokJSUnYC4ke29iamV4dH0KKyAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJyAtZSAncyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CiAgICAgICBsb2NrZmlsZT0iJG91dHB1dF9vYmoubG9jayIKLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqICRsb2NrZmlsZSIKLSAgICAgIHRyYXAgIiRydW4gJHJtICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUiIDEgMiAxNQogICAgIGVsc2UKICAgICAgIG91dHB1dF9vYmo9CiAgICAgICBuZWVkX2xvY2tzPW5vCkBAIC04ODgsMTMgKzEyOTksMTMgQEAKICAgICAjIExvY2sgdGhpcyBjcml0aWNhbCBzZWN0aW9uIGlmIGl0IGlzIG5lZWRlZAogICAgICMgV2UgdXNlIHRoaXMgc2NyaXB0IGZpbGUgdG8gbWFrZSB0aGUgbGluaywgaXQgYXZvaWRzIGNyZWF0aW5nIGEgbmV3IGZpbGUKICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB5ZXM7IHRoZW4KLSAgICAgIHVudGlsICRydW4gbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCi0JJHNob3cgIldhaXRpbmcgZm9yICRsb2NrZmlsZSB0byBiZSByZW1vdmVkIgorICAgICAgdW50aWwgJG9wdF9kcnlfcnVuIHx8IGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbworCWZ1bmNfZWNobyAiV2FpdGluZyBmb3IgJGxvY2tmaWxlIHRvIGJlIHJlbW92ZWQiCiAJc2xlZXAgMgogICAgICAgZG9uZQogICAgIGVsaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0gd2FybjsgdGhlbgogICAgICAgaWYgdGVzdCAtZiAiJGxvY2tmaWxlIjsgdGhlbgotCSRlY2hvICJcCisJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGV4aXN0cyBhbmQgY29udGFpbnM6CiBgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAKIApAQCAtOTA1LDM0ICsxMzE2LDIyIEBACiBhdm9pZCBwYXJhbGxlbCBidWlsZHMgKG1ha2UgLWopIGluIHRoaXMgcGxhdGZvcm0sIG9yIGdldCBhIGJldHRlcgogY29tcGlsZXIuIgogCi0JJHJ1biAkcm0gJHJlbW92ZWxpc3QKKwkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CiAJZXhpdCAkRVhJVF9GQUlMVVJFCiAgICAgICBmaQotICAgICAgJGVjaG8gIiRzcmNmaWxlIiA+ICIkbG9ja2ZpbGUiCisgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKKyAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgogICAgIGZpCiAKKyAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CisgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgorICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1CisKICAgICBpZiB0ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KICAgICAgIGV2YWwgc3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIKICAgICBmaQotICAgIHFzcmNmaWxlPWAkZWNobyAiWCRzcmNmaWxlIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICBjYXNlICRxc3JjZmlsZSBpbgotICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0gICAgICBxc3JjZmlsZT0iXCIkcXNyY2ZpbGVcIiIgOzsKLSAgICBlc2FjCi0KLSAgICAkcnVuICRybSAiJGxpYm9iaiIgIiR7bGlib2JqfVQiCi0KLSAgICAjIENyZWF0ZSBhIGxpYnRvb2wgb2JqZWN0IGZpbGUgKGFuYWxvZ291cyB0byBhICIubGEiIGZpbGUpLAotICAgICMgYnV0IGRvbid0IGNyZWF0ZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGRyeSBydW4uCi0gICAgdGVzdCAteiAiJHJ1biIgJiYgY2F0ID4gJHtsaWJvYmp9VCA8PEVPRgotIyAkbGlib2JqIC0gYSBsaWJ0b29sIG9iamVjdCBmaWxlCi0jIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RBTVAKLSMKLSMgUGxlYXNlIERPIE5PVCBkZWxldGUgdGhpcyBmaWxlIQotIyBJdCBpcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCi0KLSMgTmFtZSBvZiB0aGUgUElDIG9iamVjdC4KLUVPRgorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgorICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAogCiAgICAgIyBPbmx5IGJ1aWxkIGEgUElDIG9iamVjdCBpZiB3ZSBhcmUgYnVpbGRpbmcgbGlidG9vbCBsaWJyYXJpZXMuCiAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KQEAgLTk0NiwzMiArMTM0NSwxOSBAQAogCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlIgogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAhIC1kICIke3hkaXJ9JG9iamRpciI7IHRoZW4KLQkkc2hvdyAiJG1rZGlyICR7eGRpcn0kb2JqZGlyIgotCSRydW4gJG1rZGlyICR7eGRpcn0kb2JqZGlyCi0JZXhpdF9zdGF0dXM9JD8KLQlpZiB0ZXN0ICIkZXhpdF9zdGF0dXMiIC1uZSAwICYmIHRlc3QgISAtZCAiJHt4ZGlyfSRvYmpkaXIiOyB0aGVuCi0JICBleGl0ICRleGl0X3N0YXR1cwotCWZpCi0gICAgICBmaQorICAgICAgZnVuY19ta2Rpcl9wICIkeGRpciRvYmpkaXIiCiAKICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgogCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgogCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgogICAgICAgZmkKIAotICAgICAgJHJ1biAkcm0gIiRsb2JqIiAiJG91dHB1dF9vYmoiCi0KLSAgICAgICRzaG93ICIkY29tbWFuZCIKLSAgICAgIGlmICRydW4gZXZhbCAkbHRfZW52ICIkY29tbWFuZCI7IHRoZW4gOgotICAgICAgZWxzZQotCXRlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiAkcnVuICRybSAkcmVtb3ZlbGlzdAotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgZmkKKyAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKKyAgICAgICAgICAndGVzdCAtbiAiJG91dHB1dF9vYmoiICYmICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwogCiAgICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB3YXJuICYmCiAJIHRlc3QgIlhgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAiICE9ICJYJHNyY2ZpbGUiOyB0aGVuCi0JJGVjaG8gIlwKKwkkRUNITyAiXAogKioqIEVSUk9SLCAkbG9ja2ZpbGUgY29udGFpbnM6CiBgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAKIApAQCAtOTg1LDQ1ICsxMzcxLDI3IEBACiBhdm9pZCBwYXJhbGxlbCBidWlsZHMgKG1ha2UgLWopIGluIHRoaXMgcGxhdGZvcm0sIG9yIGdldCBhIGJldHRlcgogY29tcGlsZXIuIgogCi0JJHJ1biAkcm0gJHJlbW92ZWxpc3QKKwkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CiAJZXhpdCAkRVhJVF9GQUlMVVJFCiAgICAgICBmaQogCiAgICAgICAjIEp1c3QgbW92ZSB0aGUgb2JqZWN0IGlmIG5lZWRlZCwgdGhlbiBnbyBvbiB0byBjb21waWxlIHRoZSBuZXh0IG9uZQogICAgICAgaWYgdGVzdCAtbiAiJG91dHB1dF9vYmoiICYmIHRlc3QgIlgkb3V0cHV0X29iaiIgIT0gIlgkbG9iaiI7IHRoZW4KLQkkc2hvdyAiJG12ICRvdXRwdXRfb2JqICRsb2JqIgotCWlmICRydW4gJG12ICRvdXRwdXRfb2JqICRsb2JqOyB0aGVuIDoKLQllbHNlCi0JICBlcnJvcj0kPwotCSAgJHJ1biAkcm0gJHJlbW92ZWxpc3QKLQkgIGV4aXQgJGVycm9yCi0JZmkKKwlmdW5jX3Nob3dfZXZhbCAnJE1WICIkb3V0cHV0X29iaiIgIiRsb2JqIicgXAorCSAgJ2Vycm9yPSQ/OyAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRlcnJvcicKICAgICAgIGZpCiAKLSAgICAgICMgQXBwZW5kIHRoZSBuYW1lIG9mIHRoZSBQSUMgb2JqZWN0IHRvIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlLgotICAgICAgdGVzdCAteiAiJHJ1biIgJiYgY2F0ID4+ICR7bGlib2JqfVQgPDxFT0YKLXBpY19vYmplY3Q9JyRvYmpkaXIvJG9iam5hbWUnCi0KLUVPRgotCiAgICAgICAjIEFsbG93IGVycm9yIG1lc3NhZ2VzIG9ubHkgZnJvbSB0aGUgZmlyc3QgY29tcGlsYXRpb24uCiAgICAgICBpZiB0ZXN0ICIkc3VwcHJlc3Nfb3B0IiA9IHllczsgdGhlbgotICAgICAgICBzdXBwcmVzc19vdXRwdXQ9JyA+L2Rldi9udWxsIDI+JjEnCisJc3VwcHJlc3Nfb3V0cHV0PScgPi9kZXYvbnVsbCAyPiYxJwogICAgICAgZmkKLSAgICBlbHNlCi0gICAgICAjIE5vIFBJQyBvYmplY3Qgc28gaW5kaWNhdGUgaXQgZG9lc24ndCBleGlzdCBpbiB0aGUgbGlidG9vbAotICAgICAgIyBvYmplY3QgZmlsZS4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi1waWNfb2JqZWN0PW5vbmUKLQotRU9GCiAgICAgZmkKIAogICAgICMgT25seSBidWlsZCBhIHBvc2l0aW9uLWRlcGVuZGVudCBvYmplY3QgaWYgd2UgYnVpbGQgb2xkIGxpYnJhcmllcy4KICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCiAgICAgICBpZiB0ZXN0ICIkcGljX21vZGUiICE9IHllczsgdGhlbgogCSMgRG9uJ3QgYnVpbGQgUElDIGNvZGUKLQljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSIKKwljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSRwaWVfZmxhZyIKICAgICAgIGVsc2UKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCiAgICAgICBmaQpAQCAtMTAzMywxNyArMTQwMSwxMiBAQAogCiAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KICAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKLSAgICAgICRydW4gJHJtICIkb2JqIiAiJG91dHB1dF9vYmoiCi0gICAgICAkc2hvdyAiJGNvbW1hbmQiCi0gICAgICBpZiAkcnVuIGV2YWwgJGx0X2VudiAiJGNvbW1hbmQiOyB0aGVuIDoKLSAgICAgIGVsc2UKLQkkcnVuICRybSAkcmVtb3ZlbGlzdAotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgZmkKKyAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKKyAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIAogICAgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0gd2FybiAmJgogCSB0ZXN0ICJYYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgIiAhPSAiWCRzcmNmaWxlIjsgdGhlbgotCSRlY2hvICJcCisJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGNvbnRhaW5zOgogYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCiAKQEAgLTEwNTcsNTMgKzE0MjAsMjYyMCBAQAogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKIAotCSRydW4gJHJtICRyZW1vdmVsaXN0CisJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKIAogICAgICAgIyBKdXN0IG1vdmUgdGhlIG9iamVjdCBpZiBuZWVkZWQKICAgICAgIGlmIHRlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiB0ZXN0ICJYJG91dHB1dF9vYmoiICE9ICJYJG9iaiI7IHRoZW4KLQkkc2hvdyAiJG12ICRvdXRwdXRfb2JqICRvYmoiCi0JaWYgJHJ1biAkbXYgJG91dHB1dF9vYmogJG9iajsgdGhlbiA6Ci0JZWxzZQotCSAgZXJyb3I9JD8KLQkgICRydW4gJHJtICRyZW1vdmVsaXN0Ci0JICBleGl0ICRlcnJvcgotCWZpCisJZnVuY19zaG93X2V2YWwgJyRNViAiJG91dHB1dF9vYmoiICIkb2JqIicgXAorCSAgJ2Vycm9yPSQ/OyAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRlcnJvcicKICAgICAgIGZpCi0KLSAgICAgICMgQXBwZW5kIHRoZSBuYW1lIG9mIHRoZSBub24tUElDIG9iamVjdCB0aGUgbGlidG9vbCBvYmplY3QgZmlsZS4KLSAgICAgICMgT25seSBhcHBlbmQgaWYgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUgZXhpc3RzLgotICAgICAgdGVzdCAteiAiJHJ1biIgJiYgY2F0ID4+ICR7bGlib2JqfVQgPDxFT0YKLSMgTmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QuCi1ub25fcGljX29iamVjdD0nJG9iam5hbWUnCi0KLUVPRgotICAgIGVsc2UKLSAgICAgICMgQXBwZW5kIHRoZSBuYW1lIG9mIHRoZSBub24tUElDIG9iamVjdCB0aGUgbGlidG9vbCBvYmplY3QgZmlsZS4KLSAgICAgICMgT25seSBhcHBlbmQgaWYgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUgZXhpc3RzLgotICAgICAgdGVzdCAteiAiJHJ1biIgJiYgY2F0ID4+ICR7bGlib2JqfVQgPDxFT0YKLSMgTmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QuCi1ub25fcGljX29iamVjdD1ub25lCi0KLUVPRgogICAgIGZpCiAKLSAgICAkcnVuICRtdiAiJHtsaWJvYmp9VCIgIiR7bGlib2JqfSIKKyAgICAkb3B0X2RyeV9ydW4gfHwgeworICAgICAgZnVuY193cml0ZV9saWJ0b29sX29iamVjdCAiJGxpYm9iaiIgIiRvYmpkaXIvJG9iam5hbWUiICIkb2JqbmFtZSIKIAotICAgICMgVW5sb2NrIHRoZSBjcml0aWNhbCBzZWN0aW9uIGlmIGl0IHdhcyBsb2NrZWQKLSAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KLSAgICAgICRydW4gJHJtICIkbG9ja2ZpbGUiCi0gICAgZmkKKyAgICAgICMgVW5sb2NrIHRoZSBjcml0aWNhbCBzZWN0aW9uIGlmIGl0IHdhcyBsb2NrZWQKKyAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgorCXJlbW92ZWxpc3Q9JGxvY2tmaWxlCisgICAgICAgICRSTSAiJGxvY2tmaWxlIgorICAgICAgZmkKKyAgICB9CiAKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSAgICA7OworfQogCi0gICMgbGlidG9vbCBsaW5rIG1vZGUKLSAgbGluayB8IHJlbGluaykKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBsaW5rIgorJG9wdF9oZWxwIHx8IHsKK3Rlc3QgIiRtb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9Cit9CisKK2Z1bmNfbW9kZV9oZWxwICgpCit7CisgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCisgICAgY2FzZSAkbW9kZSBpbgorICAgICAgIiIpCisgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cworICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCisgICAgICAgIGZ1bmNfaGVscAorICAgICAgICA7OworCisgICAgICBjbGVhbikKKyAgICAgICAgJEVDSE8gXAorIlVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gLS1tb2RlPWNsZWFuIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KKworUmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKworUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCisodHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCit0byBSTS4KKworSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgb2JqZWN0IG9yIHByb2dyYW0sIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZAord2l0aCBpdCBhcmUgZGVsZXRlZC4gT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorICAgICAgICA7OworCisgICAgICBjb21waWxlKQorICAgICAgJEVDSE8gXAorIlVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gLS1tb2RlPWNvbXBpbGUgQ09NUElMRS1DT01NQU5ELi4uIFNPVVJDRUZJTEUKKworQ29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIGxpYnJhcnkgb2JqZWN0LgorCitUaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKKworICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKKyAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCisgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5CisgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKworQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKK2Zyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCisKK1RoZSBvdXRwdXQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYnkgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgZnJvbQorU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhlIEMgc291cmNlIGNvZGUgc3VmZml4IFxgLmMnIHdpdGggdGhlCitsaWJyYXJ5IG9iamVjdCBzdWZmaXgsIFxgLmxvJy4iCisgICAgICAgIDs7CisKKyAgICAgIGV4ZWN1dGUpCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1leGVjdXRlIENPTU1BTkQgW0FSR1NdLi4uCisKK0F1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtLgorCitUaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKKworICAtZGxvcGVuIEZJTEUgICAgICBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIEZJTEUgdG8gdGhlIGxpYnJhcnkgcGF0aAorCitUaGlzIG1vZGUgc2V0cyB0aGUgbGlicmFyeSBwYXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byBcYC1kbG9wZW4nCitmbGFncy4KKworSWYgYW55IG9mIHRoZSBBUkdTIGFyZSBsaWJ0b29sIGV4ZWN1dGFibGUgd3JhcHBlcnMsIHRoZW4gdGhleSBhcmUgdHJhbnNsYXRlZAoraW50byB0aGVpciBjb3JyZXNwb25kaW5nIHVuaW5zdGFsbGVkIGJpbmFyeSwgYW5kIGFueSBvZiB0aGVpciByZXF1aXJlZCBsaWJyYXJ5CitkaXJlY3RvcmllcyBhcmUgYWRkZWQgdG8gdGhlIGxpYnJhcnkgcGF0aC4KKworVGhlbiwgQ09NTUFORCBpcyBleGVjdXRlZCwgd2l0aCBBUkdTIGFzIGFyZ3VtZW50cy4iCisgICAgICAgIDs7CisKKyAgICAgIGZpbmlzaCkKKyAgICAgICAgJEVDSE8gXAorIlVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gLS1tb2RlPWZpbmlzaCBbTElCRElSXS4uLgorCitDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzLgorCitFYWNoIExJQkRJUiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGxpYnRvb2wgbGlicmFyaWVzLgorCitUaGUgY29tbWFuZHMgdGhhdCB0aGlzIG1vZGUgZXhlY3V0ZXMgbWF5IHJlcXVpcmUgc3VwZXJ1c2VyIHByaXZpbGVnZXMuICBVc2UKK3RoZSBcYC0tZHJ5LXJ1bicgb3B0aW9uIGlmIHlvdSBqdXN0IHdhbnQgdG8gc2VlIHdoYXQgd291bGQgYmUgZXhlY3V0ZWQuIgorICAgICAgICA7OworCisgICAgICBpbnN0YWxsKQorICAgICAgICAkRUNITyBcCisiVXNhZ2U6ICRwcm9nbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9aW5zdGFsbCBJTlNUQUxMLUNPTU1BTkQuLi4KKworSW5zdGFsbCBleGVjdXRhYmxlcyBvciBsaWJyYXJpZXMuCisKK0lOU1RBTEwtQ09NTUFORCBpcyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICBUaGUgZmlyc3QgY29tcG9uZW50IHNob3VsZCBiZQorZWl0aGVyIHRoZSBcYGluc3RhbGwnIG9yIFxgY3AnIHByb2dyYW0uCisKK1RoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBJTlNUQUxMLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgorCisgIC1pbnN0LXByZWZpeCBQUkVGSVgtRElSICBVc2UgUFJFRklYLURJUiBhcyBhIHN0YWdpbmcgYXJlYSBmb3IgaW5zdGFsbGF0aW9uCisKK1RoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVudHMgdG8gdGhhdCBjb21tYW5kIChvbmx5CitCU0QtY29tcGF0aWJsZSBpbnN0YWxsIG9wdGlvbnMgYXJlIHJlY29nbml6ZWQpLiIKKyAgICAgICAgOzsKKworICAgICAgbGluaykKKyAgICAgICAgJEVDSE8gXAorIlVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gLS1tb2RlPWxpbmsgTElOSy1DT01NQU5ELi4uCisKK0xpbmsgb2JqZWN0IGZpbGVzIG9yIGxpYnJhcmllcyB0b2dldGhlciB0byBmb3JtIGFub3RoZXIgbGlicmFyeSwgb3IgdG8KK2NyZWF0ZSBhbiBleGVjdXRhYmxlIHByb2dyYW0uCisKK0xJTkstQ09NTUFORCBpcyBhIGNvbW1hbmQgdXNpbmcgdGhlIEMgY29tcGlsZXIgdGhhdCB5b3Ugd291bGQgdXNlIHRvIGNyZWF0ZQorYSBwcm9ncmFtIGZyb20gc2V2ZXJhbCBvYmplY3QgZmlsZXMuCisKK1RoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBMSU5LLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgorCisgIC1hbGwtc3RhdGljICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIGF0IGFsbAorICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKKyAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCisgIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCisgIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCisgIC1leHBvcnQtc3ltYm9scyBTWU1GSUxFCisgICAgICAgICAgICAgICAgICAgIHRyeSB0byBleHBvcnQgb25seSB0aGUgc3ltYm9scyBsaXN0ZWQgaW4gU1lNRklMRQorICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggUkVHRVgKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIGV4cG9ydCBvbmx5IHRoZSBzeW1ib2xzIG1hdGNoaW5nIFJFR0VYCisgIC1MTElCRElSICAgICAgICAgIHNlYXJjaCBMSUJESVIgZm9yIHJlcXVpcmVkIGluc3RhbGxlZCBsaWJyYXJpZXMKKyAgLWxOQU1FICAgICAgICAgICAgT1VUUFVULUZJTEUgcmVxdWlyZXMgdGhlIGluc3RhbGxlZCBsaWJyYXJ5IGxpYk5BTUUKKyAgLW1vZHVsZSAgICAgICAgICAgYnVpbGQgYSBsaWJyYXJ5IHRoYXQgY2FuIGRsb3BlbmVkCisgIC1uby1mYXN0LWluc3RhbGwgIGRpc2FibGUgdGhlIGZhc3QtaW5zdGFsbCBtb2RlCisgIC1uby1pbnN0YWxsICAgICAgIGxpbmsgYSBub3QtaW5zdGFsbGFibGUgZXhlY3V0YWJsZQorICAtbm8tdW5kZWZpbmVkICAgICBkZWNsYXJlIHRoYXQgYSBsaWJyYXJ5IGRvZXMgbm90IHJlZmVyIHRvIGV4dGVybmFsIHN5bWJvbHMKKyAgLW8gT1VUUFVULUZJTEUgICAgY3JlYXRlIE9VVFBVVC1GSUxFIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RzCisgIC1vYmplY3RsaXN0IEZJTEUgIFVzZSBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGZvdW5kIGluIEZJTEUgdG8gc3BlY2lmeSBvYmplY3RzCisgIC1wcmVjaW91cy1maWxlcy1yZWdleCBSRUdFWAorICAgICAgICAgICAgICAgICAgICBkb24ndCByZW1vdmUgb3V0cHV0IGZpbGVzIG1hdGNoaW5nIFJFR0VYCisgIC1yZWxlYXNlIFJFTEVBU0UgIHNwZWNpZnkgcGFja2FnZSByZWxlYXNlIGluZm9ybWF0aW9uCisgIC1ycGF0aCBMSUJESVIgICAgIHRoZSBjcmVhdGVkIGxpYnJhcnkgd2lsbCBldmVudHVhbGx5IGJlIGluc3RhbGxlZCBpbiBMSUJESVIKKyAgLVJbIF1MSUJESVIgICAgICAgYWRkIExJQkRJUiB0byB0aGUgcnVudGltZSBwYXRoIG9mIHByb2dyYW1zIGFuZCBsaWJyYXJpZXMKKyAgLXNoYXJlZCAgICAgICAgICAgb25seSBkbyBkeW5hbWljIGxpbmtpbmcgb2YgbGlidG9vbCBsaWJyYXJpZXMKKyAgLXNocmV4dCBTVUZGSVggICAgb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIHNoYXJlZCBsaWJyYXJ5IGZpbGUgZXh0ZW5zaW9uCisgIC1zdGF0aWMgICAgICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIG9mIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCisgIC1zdGF0aWMtbGlidG9vbC1saWJzCisgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIG9mIGxpYnRvb2wgbGlicmFyaWVzCisgIC12ZXJzaW9uLWluZm8gQ1VSUkVOVFs6UkVWSVNJT05bOkFHRV1dCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgbGlicmFyeSB2ZXJzaW9uIGluZm8gW2VhY2ggdmFyaWFibGUgZGVmYXVsdHMgdG8gMF0KKyAgLXdlYWsgTElCTkFNRSAgICAgZGVjbGFyZSB0aGF0IHRoZSB0YXJnZXQgcHJvdmlkZXMgdGhlIExJQk5BTUUgaW50ZXJmYWNlCisKK0FsbCBvdGhlciBvcHRpb25zIChhcmd1bWVudHMgYmVnaW5uaW5nIHdpdGggXGAtJykgYXJlIGlnbm9yZWQuCisKK0V2ZXJ5IG90aGVyIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZS4gIEZpbGVzIGVuZGluZyBpbiBcYC5sYScgYXJlCit0cmVhdGVkIGFzIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzLCBvdGhlciBmaWxlcyBhcmUgc3RhbmRhcmQgb3IgbGlicmFyeQorb2JqZWN0IGZpbGVzLgorCitJZiB0aGUgT1VUUFVULUZJTEUgZW5kcyBpbiBcYC5sYScsIHRoZW4gYSBsaWJ0b29sIGxpYnJhcnkgaXMgY3JlYXRlZCwKK29ubHkgbGlicmFyeSBvYmplY3RzIChcYC5sbycgZmlsZXMpIG1heSBiZSBzcGVjaWZpZWQsIGFuZCBcYC1ycGF0aCcgaXMKK3JlcXVpcmVkLCBleGNlcHQgd2hlbiBjcmVhdGluZyBhIGNvbnZlbmllbmNlIGxpYnJhcnkuCisKK0lmIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAuYScgb3IgXGAubGliJywgdGhlbiBhIHN0YW5kYXJkIGxpYnJhcnkgaXMgY3JlYXRlZAordXNpbmcgXGBhcicgYW5kIFxgcmFubGliJywgb3Igb24gV2luZG93cyB1c2luZyBcYGxpYicuCisKK0lmIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubG8nIG9yIFxgLiR7b2JqZXh0fScsIHRoZW4gYSByZWxvYWRhYmxlIG9iamVjdCBmaWxlCitpcyBjcmVhdGVkLCBvdGhlcndpc2UgYW4gZXhlY3V0YWJsZSBwcm9ncmFtIGlzIGNyZWF0ZWQuIgorICAgICAgICA7OworCisgICAgICB1bmluc3RhbGwpCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT11bmluc3RhbGwgUk0gW1JNLU9QVElPTl0uLi4gRklMRS4uLgorCitSZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KKworUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCisodHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCit0byBSTS4KKworSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgYWxsIHRoZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggaXQgYXJlIGRlbGV0ZWQuCitPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCisgICAgICAgIDs7CisKKyAgICAgICopCisgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAkRUNITworICAgICRFQ0hPICJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCisKKyAgICBleGl0ICQ/Cit9CisKKyAgIyBOb3cgdGhhdCB3ZSd2ZSBjb2xsZWN0ZWQgYSBwb3NzaWJsZSAtLW1vZGUgYXJnLCBzaG93IGhlbHAgaWYgbmVjZXNzYXJ5CisgICRvcHRfaGVscCAmJiBmdW5jX21vZGVfaGVscAorCisKKyMgZnVuY19tb2RlX2V4ZWN1dGUgYXJnLi4uCitmdW5jX21vZGVfZXhlY3V0ZSAoKQoreworICAgICRvcHRfZGVidWcKKyAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29tbWFuZCBuYW1lLgorICAgIGNtZD0iJG5vbm9wdCIKKyAgICB0ZXN0IC16ICIkY21kIiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgorCisgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KKyAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKKwl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCisKKyAgICAgIGRpcj0KKyAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICoubGEpCisJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKwlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKworCSMgUmVhZCB0aGUgbGlidG9vbCBsaWJyYXJ5LgorCWRsbmFtZT0KKwlsaWJyYXJ5X25hbWVzPQorCWZ1bmNfc291cmNlICIkZmlsZSIKKworCSMgU2tpcCB0aGlzIGxpYnJhcnkgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkLgorCWlmIHRlc3QgLXogIiRkbG5hbWUiOyB0aGVuCisJICAjIFdhcm4gaWYgaXQgd2FzIGEgc2hhcmVkIGxpYnJhcnkuCisJICB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYgXAorCSAgICBmdW5jX3dhcm5pbmcgIlxgJGZpbGUnIHdhcyBub3QgbGlua2VkIHdpdGggXGAtZXhwb3J0LWR5bmFtaWMnIgorCSAgY29udGludWUKKwlmaQorCisJZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCisJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKworCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgorCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisJZWxzZQorCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCisJICBmaQorCWZpCisJOzsKKworICAgICAgKi5sbykKKwkjIEp1c3QgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgLmxvIGZpbGUuCisJZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCisJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwk7OworCisgICAgICAqKQorCWZ1bmNfd2FybmluZyAiXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBub24tbGlidG9vbCBsaWJyYXJpZXMgYW5kIG9iamVjdHMiCisJY29udGludWUKKwk7OworICAgICAgZXNhYworCisgICAgICAjIEdldCB0aGUgYWJzb2x1dGUgcGF0aG5hbWUuCisgICAgICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCisgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCisKKyAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCisgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgorCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKKyAgICAgIGVsc2UKKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKKyAgICAgIGZpCisgICAgZG9uZQorCisgICAgIyBUaGlzIHZhcmlhYmxlIHRlbGxzIHdyYXBwZXIgc2NyaXB0cyBqdXN0IHRvIHNldCBzaGxpYnBhdGhfdmFyCisgICAgIyByYXRoZXIgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgorICAgIGxpYnRvb2xfZXhlY3V0ZV9tYWdpYz0iJG1hZ2ljIgorCisgICAgIyBDaGVjayBpZiBhbnkgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIHdyYXBwZXIgc2NyaXB0LgorICAgIGFyZ3M9CisgICAgZm9yIGZpbGUKKyAgICBkbworICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgLSopIDs7CisgICAgICAqKQorCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KKwlpZiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAiJGZpbGUiOyB0aGVuCisJICBmdW5jX3NvdXJjZSAiJGZpbGUiCisJICAjIFRyYW5zZm9ybSBhcmcgdG8gd3JhcHBlZCBuYW1lLgorCSAgZmlsZT0iJHByb2dkaXIvJHByb2dyYW0iCisJZWxpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiRmaWxlIjsgdGhlbgorCSAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCisJICBmdW5jX3NvdXJjZSAiJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorCSAgIyBUcmFuc2Zvcm0gYXJnIHRvIHdyYXBwZWQgbmFtZS4KKwkgIGZpbGU9IiRwcm9nZGlyLyRwcm9ncmFtIgorCWZpCisJOzsKKyAgICAgIGVzYWMKKyAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCisgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKKyAgICAgIGFyZ3M9IiRhcmdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBkb25lCisKKyAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJIyBFeHBvcnQgdGhlIHNobGlicGF0aF92YXIuCisJZXZhbCAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorICAgICAgZmkKKworICAgICAgIyBSZXN0b3JlIHNhdmVkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCisgICAgICBkbworCWV2YWwgImlmIHRlc3QgXCJcJHtzYXZlXyRsdF92YXIrc2V0fVwiID0gc2V0OyB0aGVuCisgICAgICAgICAgICAgICAgJGx0X3Zhcj1cJHNhdmVfJGx0X3ZhcjsgZXhwb3J0ICRsdF92YXIKKwkgICAgICBlbHNlCisJCSRsdF91bnNldCAkbHRfdmFyCisJICAgICAgZmkiCisgICAgICBkb25lCisKKyAgICAgICMgTm93IHByZXBhcmUgdG8gYWN0dWFsbHkgZXhlYyB0aGUgY29tbWFuZC4KKyAgICAgIGV4ZWNfY21kPSJcJGNtZCRhcmdzIgorICAgIGVsc2UKKyAgICAgICMgRGlzcGxheSB3aGF0IHdvdWxkIGJlIGRvbmUuCisgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKwlldmFsICJcJEVDSE8gXCJcJHNobGlicGF0aF92YXI9XCQkc2hsaWJwYXRoX3ZhclwiIgorCSRFQ0hPICJleHBvcnQgJHNobGlicGF0aF92YXIiCisgICAgICBmaQorICAgICAgJEVDSE8gIiRjbWQkYXJncyIKKyAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworICAgIGZpCit9CisKK3Rlc3QgIiRtb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9CisKKworIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgorZnVuY19tb2RlX2ZpbmlzaCAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBsaWJkaXJzPSIkbm9ub3B0IgorICAgIGFkbWluY21kcz0KKworICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisgICAgICBmb3IgZGlyCisgICAgICBkbworCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCisgICAgICBkb25lCisKKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgorCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkZmluaXNoX2NtZHMiICdhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKyciJGNtZCInIicKKwlmaQorCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KKwkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KKwkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworICAgICAgICRjbWRzIgorCWZpCisgICAgICBkb25lCisgICAgZmkKKworICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgorICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUworCisgICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCisgICAgJEVDSE8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKyAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCisgICAgZG9uZQorICAgICRFQ0hPCisgICAgJEVDSE8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorICAgICRFQ0hPICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKyAgICAkRUNITyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKyAgICAkRUNITyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisgICAgICAkRUNITyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorICAgIGZpCisgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGxpbmtpbmciCisgICAgZmkKKyAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKyAgICAgIGxpYmRpcj1MSUJESVIKKyAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKworICAgICAgJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCisgICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCisgICAgZmkKKyAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorICAgIGZpCisgICAgJEVDSE8KKworICAgICRFQ0hPICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKICAgICBjYXNlICRob3N0IGluCi0gICAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiopCisgICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKwkkRUNITyAicGFnZXMuIgorCTs7CisgICAgICAqKQorICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisgICAgICAgIDs7CisgICAgZXNhYworICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworfQorCit0ZXN0ICIkbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KKworCisjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgorZnVuY19tb2RlX2luc3RhbGwgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgIyBUaGVyZSBtYXkgYmUgYW4gb3B0aW9uYWwgc2goMSkgYXJndW1lbnQgYXQgdGhlIGJlZ2lubmluZyBvZgorICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgorICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8CisgICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCisgICAgICAgJEVDSE8gIlgkbm9ub3B0IiB8ICRHUkVQIHNodG9vbCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbm9ub3B0IgorICAgICAgaW5zdGFsbF9wcm9nPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQgIgorICAgICAgYXJnPSQxCisgICAgICBzaGlmdAorICAgIGVsc2UKKyAgICAgIGluc3RhbGxfcHJvZz0KKyAgICAgIGFyZz0kbm9ub3B0CisgICAgZmkKKworICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KKyAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisKKyAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCisgICAgZGVzdD0KKyAgICBmaWxlcz0KKyAgICBvcHRzPQorICAgIHByZXY9CisgICAgaW5zdGFsbF90eXBlPQorICAgIGlzZGlyPW5vCisgICAgc3RyaXBtZT0KKyAgICBmb3IgYXJnCisgICAgZG8KKyAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgorCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisJZGVzdD0kYXJnCisJY29udGludWUKKyAgICAgIGZpCisKKyAgICAgIGNhc2UgJGFyZyBpbgorICAgICAgLWQpIGlzZGlyPXllcyA7OworICAgICAgLWYpCisJY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgorCSpbXFxcIC9dY3BcICopIDs7CisJKikgcHJldj0kYXJnIDs7CisJZXNhYworCTs7CisgICAgICAtZyB8IC1tIHwgLW8pCisJcHJldj0kYXJnCisJOzsKKyAgICAgIC1zKQorCXN0cmlwbWU9IiAtcyIKKwljb250aW51ZQorCTs7CisgICAgICAtKikKKwk7OworICAgICAgKikKKwkjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZGVkIGFuIGFyZ3VtZW50LCB0aGVuIHNraXAgaXQuCisJaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCisJICBwcmV2PQorCWVsc2UKKwkgIGRlc3Q9JGFyZworCSAgY29udGludWUKKwlmaQorCTs7CisgICAgICBlc2FjCisKKyAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCisgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBkb25lCisKKyAgICB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYW4gaW5zdGFsbCBwcm9ncmFtIgorCisgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKKworICAgIGlmIHRlc3QgLXogIiRmaWxlcyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLXogIiRkZXN0IjsgdGhlbgorCWZ1bmNfZmF0YWxfaGVscCAibm8gZmlsZSBvciBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiCisgICAgICBlbHNlCisJZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgZGVzdGluYXRpb24iCisgICAgICBmaQorICAgIGZpCisKKyAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0IgorICAgIGRlc3Q9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCisgICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnkuCisgICAgdGVzdCAtZCAiJGRlc3QiICYmIGlzZGlyPXllcworICAgIGlmIHRlc3QgIiRpc2RpciIgPSB5ZXM7IHRoZW4KKyAgICAgIGRlc3RkaXI9IiRkZXN0IgorICAgICAgZGVzdG5hbWU9CisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJGRlc3QiICIiICIuIgorICAgICAgZGVzdGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisgICAgICBkZXN0bmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCisgICAgICAjIE5vdCBhIGRpcmVjdG9yeSwgc28gY2hlY2sgdG8gc2VlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZmlsZSBzcGVjaWZpZWQuCisgICAgICBzZXQgZHVtbXkgJGZpbGVzOyBzaGlmdAorICAgICAgdGVzdCAiJCMiIC1ndCAxICYmIFwKKwlmdW5jX2ZhdGFsX2hlbHAgIlxgJGRlc3QnIGlzIG5vdCBhIGRpcmVjdG9yeSIKKyAgICBmaQorICAgIGNhc2UgJGRlc3RkaXIgaW4KKyAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CisgICAgKikKKyAgICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KKwljYXNlICRmaWxlIGluCisJKi5sbykgOzsKKwkqKQorCSAgZnVuY19mYXRhbF9oZWxwICJcYCRkZXN0ZGlyJyBtdXN0IGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIgorCSAgOzsKKwllc2FjCisgICAgICBkb25lCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgdmFyaWFibGVzIHJhdGhlcgorICAgICMgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgorICAgIGxpYnRvb2xfaW5zdGFsbF9tYWdpYz0iJG1hZ2ljIgorCisgICAgc3RhdGljbGlicz0KKyAgICBmdXR1cmVfbGliZGlycz0KKyAgICBjdXJyZW50X2xpYmRpcnM9CisgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbworCisgICAgICAjIERvIGVhY2ggaW5zdGFsbGF0aW9uLgorICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgKi4kbGliZXh0KQorCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCisJc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCisJOzsKKworICAgICAgKi5sYSkKKwkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCisJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKworCWxpYnJhcnlfbmFtZXM9CisJb2xkX2xpYnJhcnk9CisJcmVsaW5rX2NvbW1hbmQ9CisJZnVuY19zb3VyY2UgIiRmaWxlIgorCisJIyBBZGQgdGhlIGxpYmRpciB0byBjdXJyZW50X2xpYmRpcnMgaWYgaXQgaXMgdGhlIGRlc3RpbmF0aW9uLgorCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCisJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KKwkgICoiICRsaWJkaXIgIiopIDs7CisJICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgIGVzYWMKKwllbHNlCisJICAjIE5vdGUgdGhlIGxpYmRpciBhcyBhIGZ1dHVyZSBsaWJkaXIuCisJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgorCSAgKiIgJGxpYmRpciAiKikgOzsKKwkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgIGVzYWMKKwlmaQorCisJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCisJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwlkaXI9IiRkaXIkb2JqZGlyIgorCisJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIlgkZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkbGliZGlyXCQlJSJgCisKKwkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKKwkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKKwkgICMgYXJlIGluc3RhbGxlZCB0byB0aGUgc2FtZSBwcmVmaXguCisJICAjIEF0IHByZXNlbnQsIHRoaXMgY2hlY2sgZG9lc24ndCBhZmZlY3Qgd2luZG93cyAuZGxsJ3MgdGhhdAorCSAgIyBhcmUgaW5zdGFsbGVkIGludG8gJGxpYmRpci8uLi9iaW4gKGN1cnJlbnRseSwgdGhhdCB3b3JrcyBmaW5lKQorCSAgIyBidXQgaXQncyBzb21ldGhpbmcgdG8ga2VlcCBhbiBleWUgb24uCisJICB0ZXN0ICIkaW5zdF9wcmVmaXhfZGlyIiA9ICIkZGVzdGRpciIgJiYgXAorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogY2Fubm90IGluc3RhbGwgXGAkZmlsZScgdG8gYSBkaXJlY3Rvcnkgbm90IGVuZGluZyBpbiAkbGliZGlyIgorCisJICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKKwkgIGVsc2UKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAorCSAgZmkKKworCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgXGAkZmlsZSciCisJICBmdW5jX3Nob3dfZXZhbCAiJHJlbGlua19jb21tYW5kIiBcCisJICAgICdmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogcmVsaW5rIFxgJGZpbGUnXCcnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiJworCWZpCisKKwkjIFNlZSB0aGUgbmFtZXMgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5LgorCXNldCBkdW1teSAkbGlicmFyeV9uYW1lczsgc2hpZnQKKwlpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKwkgIHJlYWxuYW1lPSIkMSIKKwkgIHNoaWZ0CisKKwkgIHNyY25hbWU9IiRyZWFsbmFtZSIKKwkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0iJHJlYWxuYW1lIlQKKworCSAgIyBJbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeSBhbmQgYnVpbGQgdGhlIHN5bWxpbmtzLgorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIFwKKwkgICAgICAnZXhpdCAkPycKKwkgIHRzdHJpcG1lPSIkc3RyaXBtZSIKKwkgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKwkgICAgY2FzZSAkcmVhbG5hbWUgaW4KKwkgICAgKi5kbGwuYSkKKwkgICAgICB0c3RyaXBtZT0iIgorCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgIGVzYWMKKwkgIGlmIHRlc3QgLW4gIiR0c3RyaXBtZSIgJiYgdGVzdCAtbiAiJHN0cmlwbGliIjsgdGhlbgorCSAgICBmdW5jX3Nob3dfZXZhbCAiJHN0cmlwbGliICRkZXN0ZGlyLyRyZWFsbmFtZSIgJ2V4aXQgJD8nCisJICBmaQorCisJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKwkgICAgIyBEZWxldGUgdGhlIG9sZCBzeW1saW5rcywgYW5kIGNyZWF0ZSBuZXcgb25lcy4KKwkgICAgIyBUcnkgYGxuIC1zZicgZmlyc3QsIGJlY2F1c2UgdGhlIGBsbicgYmluYXJ5IG1pZ2h0IGRlcGVuZCBvbgorCSAgICAjIHRoZSBzeW1saW5rIHdlIHJlcGxhY2UhICBTb2xhcmlzIC9iaW4vbG4gZG9lcyBub3QgdW5kZXJzdGFuZCAtZiwKKwkgICAgIyBzbyB3ZSBhbHNvIG5lZWQgdG8gdHJ5IHJtICYmIGxuIC1zLgorCSAgICBmb3IgbGlua25hbWUKKwkgICAgZG8KKwkgICAgICB0ZXN0ICIkbGlua25hbWUiICE9ICIkcmVhbG5hbWUiIFwKKwkJJiYgZnVuY19zaG93X2V2YWwgIihjZCAkZGVzdGRpciAmJiB7ICRMTl9TIC1mICRyZWFsbmFtZSAkbGlua25hbWUgfHwgeyAkUk0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWU7IH07IH0pIgorCSAgICBkb25lCisJICBmaQorCisJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCisJICBsaWI9IiRkZXN0ZGlyLyRyZWFsbmFtZSIKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGluc3RhbGxfY21kcyIgJ2V4aXQgJD8nCisJZmkKKworCSMgSW5zdGFsbCB0aGUgcHNldWRvLWxpYnJhcnkgZm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzLgorCWZ1bmNfYmFzZW5hbWUgIiRmaWxlIgorCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwlpbnN0bmFtZT0iJGRpci8kbmFtZSJpCisJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKKworCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorCTs7CisKKyAgICAgICoubG8pCisJIyBJbnN0YWxsIChpLmUuIGNvcHkpIGEgbGlidG9vbCBvYmplY3QuCisKKwkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCisJaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKKwllbHNlCisJICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKwkgIGRlc3RmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RmaWxlIgorCWZpCisKKwkjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gb2xkLXN0eWxlIG9iamVjdCBmaWxlLgorCWNhc2UgJGRlc3RmaWxlIGluCisJKi5sbykKKwkgIGZ1bmNfbG8ybyAiJGRlc3RmaWxlIgorCSAgc3RhdGljZGVzdD0kZnVuY19sbzJvX3Jlc3VsdAorCSAgOzsKKwkqLiRvYmpleHQpCisJICBzdGF0aWNkZXN0PSIkZGVzdGZpbGUiCisJICBkZXN0ZmlsZT0KKwkgIDs7CisJKikKKwkgIGZ1bmNfZmF0YWxfaGVscCAiY2Fubm90IGNvcHkgYSBsaWJ0b29sIG9iamVjdCB0byBcYCRkZXN0ZmlsZSciCisJICA7OworCWVzYWMKKworCSMgSW5zdGFsbCB0aGUgbGlidG9vbCBvYmplY3QgaWYgcmVxdWVzdGVkLgorCXRlc3QgLW4gIiRkZXN0ZmlsZSIgJiYgXAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJGRlc3RmaWxlIiAnZXhpdCAkPycKKworCSMgSW5zdGFsbCB0aGUgb2xkIG9iamVjdCBpZiBlbmFibGVkLgorCWlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKwkgICMgRGVkdWNlIHRoZSBuYW1lIG9mIHRoZSBvbGQtc3R5bGUgb2JqZWN0IGZpbGUuCisJICBmdW5jX2xvMm8gIiRmaWxlIgorCSAgc3RhdGljb2JqPSRmdW5jX2xvMm9fcmVzdWx0CisJICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyBcJHN0YXRpY29iaiBcJHN0YXRpY2Rlc3QiICdleGl0ICQ/JworCWZpCisJZXhpdCAkRVhJVF9TVUNDRVNTCisJOzsKKworICAgICAgKikKKwkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCisJaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKKwllbHNlCisJICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKwkgIGRlc3RmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RmaWxlIgorCWZpCisKKwkjIElmIHRoZSBmaWxlIGlzIG1pc3NpbmcsIGFuZCB0aGVyZSBpcyBhIC5leGUgb24gdGhlIGVuZCwgc3RyaXAgaXQKKwkjIGJlY2F1c2UgaXQgaXMgbW9zdCBsaWtlbHkgYSBsaWJ0b29sIHNjcmlwdCB3ZSBhY3R1YWxseSB3YW50IHRvCisJIyBpbnN0YWxsCisJc3RyaXBwZWRfZXh0PSIiCisJY2FzZSAkZmlsZSBpbgorCSAgKi5leGUpCisJICAgIGlmIHRlc3QgISAtZiAiJGZpbGUiOyB0aGVuCisJICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZmlsZSIKKwkgICAgICBmaWxlPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgICAgICBzdHJpcHBlZF9leHQ9Ii5leGUiCisJICAgIGZpCisJICAgIDs7CisJZXNhYworCisJIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGlidG9vbCBwcm9ncmFtLgorCWNhc2UgJGhvc3QgaW4KKwkqY3lnd2luKiB8ICptaW5ndyopCisJICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJGZpbGUiOyB0aGVuCisJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCisJICAgICAgd3JhcHBlcj0kZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKKwkgICAgZWxzZQorCSAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZpbGUiCisJICAgICAgd3JhcHBlcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICAgIGZpCisJICAgIDs7CisJKikKKwkgICAgd3JhcHBlcj0kZmlsZQorCSAgICA7OworCWVzYWMKKwlpZiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAiJHdyYXBwZXIiOyB0aGVuCisJICBub3RpbnN0X2RlcGxpYnM9CisJICByZWxpbmtfY29tbWFuZD0KKworCSAgZnVuY19zb3VyY2UgIiR3cmFwcGVyIgorCisJICAjIENoZWNrIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNldC4KKwkgIHRlc3QgLXogIiRnZW5lcmF0ZWRfYnlfbGlidG9vbF92ZXJzaW9uIiAmJiBcCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBcYCR3cmFwcGVyJyIKKworCSAgZmluYWxpemU9eWVzCisJICBmb3IgbGliIGluICRub3RpbnN0X2RlcGxpYnM7IGRvCisJICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgZWFjaCBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KKwkgICAgbGliZGlyPQorCSAgICBpZiB0ZXN0IC1mICIkbGliIjsgdGhlbgorCSAgICAgIGZ1bmNfc291cmNlICIkbGliIgorCSAgICBmaQorCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKwkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KKwkgICAgICBmdW5jX3dhcm5pbmcgIlxgJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBcYCRsaWJkaXInIgorCSAgICAgIGZpbmFsaXplPW5vCisJICAgIGZpCisJICBkb25lCisKKwkgIHJlbGlua19jb21tYW5kPQorCSAgZnVuY19zb3VyY2UgIiR3cmFwcGVyIgorCisJICBvdXRwdXRuYW1lPQorCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSBubyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgaWYgdGVzdCAiJGZpbmFsaXplIiA9IHllczsgdGhlbgorCSAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKKwkJZnVuY19iYXNlbmFtZSAiJGZpbGUkc3RyaXBwZWRfZXh0IgorCQlmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICAgICAgICBvdXRwdXRuYW1lPSIkdG1wZGlyLyRmaWxlIgorCSAgICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgorCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKKworCSAgICAgICAgJG9wdF9zaWxlbnQgfHwgeworCSAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRyZWxpbmtfY29tbWFuZCIKKwkJICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisJICAgICAgICB9CisJICAgICAgICBpZiBldmFsICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuIDoKKwkgICAgICAgICAgZWxzZQorCQkgIGZ1bmNfZXJyb3IgImVycm9yOiByZWxpbmsgXGAkZmlsZScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCIKKwkJICAkb3B0X2RyeV9ydW4gfHwgJHtSTX1yICIkdG1wZGlyIgorCQkgIGNvbnRpbnVlCisJICAgICAgICBmaQorCSAgICAgICAgZmlsZT0iJG91dHB1dG5hbWUiCisJICAgICAgZWxzZQorCSAgICAgICAgZnVuY193YXJuaW5nICJjYW5ub3QgcmVsaW5rIFxgJGZpbGUnIgorCSAgICAgIGZpCisJICAgIH0KKwkgIGVsc2UKKwkgICAgIyBJbnN0YWxsIHRoZSBiaW5hcnkgdGhhdCB3ZSBjb21waWxlZCBlYXJsaWVyLgorCSAgICBmaWxlPWAkRUNITyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKKwkgIGZpCisJZmkKKworCSMgcmVtb3ZlIC5leGUgc2luY2UgY3lnd2luIC91c3IvYmluL2luc3RhbGwgd2lsbCBhcHBlbmQgYW5vdGhlcgorCSMgb25lIGFueXdheQorCWNhc2UgJGluc3RhbGxfcHJvZywkaG9zdCBpbgorCSovdXNyL2Jpbi9pbnN0YWxsKiwqY3lnd2luKikKKwkgIGNhc2UgJGZpbGU6JGRlc3RmaWxlIGluCisJICAqLmV4ZToqLmV4ZSkKKwkgICAgIyB0aGlzIGlzIG9rCisJICAgIDs7CisJICAqLmV4ZToqKQorCSAgICBkZXN0ZmlsZT0kZGVzdGZpbGUuZXhlCisJICAgIDs7CisJICAqOiouZXhlKQorCSAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRkZXN0ZmlsZSIKKwkgICAgZGVzdGZpbGU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICA7OworCSAgZXNhYworCSAgOzsKKwllc2FjCisJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2dcJHN0cmlwbWUgXCRmaWxlIFwkZGVzdGZpbGUiICdleGl0ICQ/JworCSRvcHRfZHJ5X3J1biB8fCBpZiB0ZXN0IC1uICIkb3V0cHV0bmFtZSI7IHRoZW4KKwkgICR7Uk19ciAiJHRtcGRpciIKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgZG9uZQorCisgICAgZm9yIGZpbGUgaW4gJHN0YXRpY2xpYnM7IGRvCisgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKyAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKworICAgICAgIyBTZXQgdXAgdGhlIHJhbmxpYiBwYXJhbWV0ZXJzLgorICAgICAgb2xkbGliPSIkZGVzdGRpci8kbmFtZSIKKworICAgICAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgXCRmaWxlIFwkb2xkbGliIiAnZXhpdCAkPycKKworICAgICAgaWYgdGVzdCAtbiAiJHN0cmlwbWUiICYmIHRlc3QgLW4gIiRvbGRfc3RyaXBsaWIiOyB0aGVuCisJZnVuY19zaG93X2V2YWwgIiRvbGRfc3RyaXBsaWIgJG9sZGxpYiIgJ2V4aXQgJD8nCisgICAgICBmaQorCisgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCisgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiAnZXhpdCAkPycKKyAgICBkb25lCisKKyAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKKyAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKKworICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCisgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgorICAgICAgJG9wdF9kcnlfcnVuICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1cnJlbnRfbGliZGlycyIKKyAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKKyAgICBlbHNlCisgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICBmaQorfQorCit0ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorCisKKyMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCisjIEV4dHJhY3Qgc3ltYm9scyBmcm9tIGRscHJlZmlsZXMgYW5kIGNyZWF0ZSAke291dHB1dG5hbWV9Uy5vIHdpdGgKKyMgYSBkbHByZW9wZW4gc3ltYm9sIHRhYmxlLgorZnVuY19nZW5lcmF0ZV9kbHN5bXMgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgbXlfb3V0cHV0bmFtZT0iJDEiCisgICAgbXlfb3JpZ2luYXRvcj0iJDIiCisgICAgbXlfcGljX3A9IiR7My1ub30iCisgICAgbXlfcHJlZml4PWAkRUNITyAiJG15X29yaWdpbmF0b3IiIHwgc2VkICdzJVteYS16QS1aMC05XSVfJWcnYAorICAgIG15X2Rsc3ltcz0KKworICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkTk0iICYmIHRlc3QgLW4gIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisJbXlfZGxzeW1zPSIke215X291dHB1dG5hbWV9Uy5jIgorICAgICAgZWxzZQorCWZ1bmNfZXJyb3IgIm5vdCBjb25maWd1cmVkIHRvIGV4dHJhY3QgZ2xvYmFsIHN5bWJvbHMgZnJvbSBkbHByZW9wZW5lZCBmaWxlcyIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgLW4gIiRteV9kbHN5bXMiOyB0aGVuCisgICAgICBjYXNlICRteV9kbHN5bXMgaW4KKyAgICAgICIiKSA7OworICAgICAgKi5jKQorCSMgRGlzY292ZXIgdGhlIG5saXN0IG9mIGVhY2ggb2YgdGhlIGRsZmlsZXMuCisJbmxpc3Q9IiRvdXRwdXRfb2JqZGlyLyR7bXlfb3V0cHV0bmFtZX0ubm0iCisKKwlmdW5jX3Nob3dfZXZhbCAiJFJNICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgorCisJIyBQYXJzZSB0aGUgbmFtZSBsaXN0IGludG8gYSBzb3VyY2UgZmlsZS4KKwlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisKKwkkb3B0X2RyeV9ydW4gfHwgJEVDSE8gPiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy8qICRteV9kbHN5bXMgLSBzeW1ib2wgcmVzb2x1dGlvbiB0YWJsZSBmb3IgXGAkbXlfb3V0cHV0bmFtZScgZGxzeW0gZW11bGF0aW9uLiAqLworLyogR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTiAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiBcIkNcIiB7CisjZW5kaWYKKworLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKKyIKKworCWlmIHRlc3QgIiRkbHNlbGYiID0geWVzOyB0aGVuCisJICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJG91dHB1dCciCisKKwkgICRvcHRfZHJ5X3J1biB8fCBlY2hvICc6IEBQUk9HUkFNQCAnID4gIiRubGlzdCIKKworCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgorCSAgcHJvZ2ZpbGVzPWAkRUNITyAiWCRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRwcm9nZmlsZSciCisJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgIGRvbmUKKworCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICBldmFsICckRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworCSAgICB9CisJICBmaQorCisJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJworCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCisJICAgIH0KKwkgIGZpCisKKwkgICMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCisJICBpZiB0ZXN0IC16ICIkZXhwb3J0X3N5bWJvbHMiOyB0aGVuCisJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgJFJNICRleHBvcnRfc3ltYm9scworCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJworCSAgICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKyAgICAgICAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworICAgICAgICAgICAgICAgIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKwkgICAgICAgIDs7CisJICAgICAgZXNhYworCSAgICB9CisJICBlbHNlCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgZXZhbCAiJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCisJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworCSAgICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICAgICpjeWd3aW4gfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKwkgICAgICAgICAgOzsKKwkgICAgICBlc2FjCisJICAgIH0KKwkgIGZpCisJZmkKKworCWZvciBkbHByZWZpbGUgaW4gJGRscHJlZmlsZXM7IGRvCisJICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGRscHJlZmlsZSciCisJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgorCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgfQorCWRvbmUKKworCSRvcHRfZHJ5X3J1biB8fCB7CisJICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGF0IGxlYXN0IGFuIGVtcHR5IGZpbGUuCisJICB0ZXN0IC1mICIkbmxpc3QiIHx8IDogPiAiJG5saXN0IgorCisJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgorCSAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAorCSAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisJICBmaQorCisJICAjIFRyeSBzb3J0aW5nIGFuZCB1bmlxdWlmeWluZyB0aGUgb3V0cHV0LgorCSAgaWYgJEdSRVAgLXYgIl46ICIgPCAiJG5saXN0IiB8CisJICAgICAgaWYgc29ydCAtayAzIDwvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCXNvcnQgLWsgMworCSAgICAgIGVsc2UKKwkJc29ydCArMgorCSAgICAgIGZpIHwKKwkgICAgICB1bmlxID4gIiRubGlzdCJTOyB0aGVuCisJICAgIDoKKwkgIGVsc2UKKwkgICAgJEdSRVAgLXYgIl46ICIgPCAiJG5saXN0IiA+ICIkbmxpc3QiUworCSAgZmkKKworCSAgaWYgdGVzdCAtZiAiJG5saXN0IlM7IHRoZW4KKwkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY2RlY2wiJyA8ICIkbmxpc3QiUyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyInCisJICBlbHNlCisJICAgICRFQ0hPICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgIGZpCisKKwkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCisvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCit0eXBlZGVmIHN0cnVjdCB7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisgIHZvaWQgKmFkZHJlc3M7Cit9IGx0X2Rsc3ltbGlzdDsKKyIKKwkgIGNhc2UgJGhvc3QgaW4KKwkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKKyAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCisgICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCisJICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworCSAgKm9zZjUqKQorCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKKwkgICAgbHRfZGxzeW1fY29uc3Q9IDs7CisJICAqKQorCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OworCSAgZXNhYworCisJICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKK2V4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CitsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107CiskbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CitsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQore1wKKyAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCisKKwkgIGNhc2UgJG5lZWRfbGliX3ByZWZpeCBpbgorCSAgbm8pCisJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiA8ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCSAgICA7OworCSAgKikKKwkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgPCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgICAgOzsKKwkgIGVzYWMKKwkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorICB7MCwgKHZvaWQgKikgMH0KK307CisKKy8qIFRoaXMgd29ya3MgYXJvdW5kIGEgcHJvYmxlbSBpbiBGcmVlQlNEIGxpbmtlciAqLworI2lmZGVmIEZSRUVCU0RfV09SS0FST1VORAorc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyAgcmV0dXJuIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHM7Cit9CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWZcCisiCisJfSAjICEkb3B0X2RyeV9ydW4KKworCXBpY19mbGFnX2Zvcl9zeW10YWJsZT0KKwljYXNlICIkY29tcGlsZV9jb21tYW5kICIgaW4KKwkqIiAtc3RhdGljICIqKSA7OworCSopCisJICBjYXNlICRob3N0IGluCisJICAjIGNvbXBpbGluZyB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgd2l0aCBwaWNfZmxhZyB3b3JrcyBhcm91bmQKKwkgICMgYSBGcmVlQlNEIGJ1ZyB0aGF0IGNhdXNlcyBwcm9ncmFtcyB0byBjcmFzaCB3aGVuIC1sbSBpcworCSAgIyBsaW5rZWQgYmVmb3JlIGFueSBvdGhlciBQSUMgb2JqZWN0LiAgQnV0IHdlIG11c3Qgbm90IHVzZQorCSAgIyBwaWNfZmxhZyB3aGVuIGxpbmtpbmcgd2l0aCAtc3RhdGljLiAgVGhlIHByb2JsZW0gZXhpc3RzIGluCisJICAjIEZyZWVCU0QgMi4yLjYgYW5kIGlzIGZpeGVkIGluIEZyZWVCU0QgMy4xLgorCSAgKi0qLWZyZWVic2QyKnwqLSotZnJlZWJzZDMuMCp8Ki0qLWZyZWVic2RlbGYzLjAqKQorCSAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWcgLURGUkVFQlNEX1dPUktBUk9VTkQiIDs7CisJICAqLSotaHB1eCopCisJICAgIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyIgIDs7CisJICAqKQorCSAgICBpZiB0ZXN0ICJYJG15X3BpY19wIiAhPSBYbm87IHRoZW4KKwkgICAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciCisJICAgIGZpCisJICAgIDs7CisJICBlc2FjCisJICA7OworCWVzYWMKKwlzeW10YWJfY2ZsYWdzPQorCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbworCSAgY2FzZSAkYXJnIGluCisJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKKwkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7CisJICBlc2FjCisJZG9uZQorCisJIyBOb3cgY29tcGlsZSB0aGUgZHluYW1pYyBzeW1ib2wgZmlsZS4KKwlmdW5jX3Nob3dfZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRMVENDJHN5bXRhYl9jZmxhZ3MgLWMkbm9fYnVpbHRpbl9mbGFnJHBpY19mbGFnX2Zvcl9zeW10YWJsZSAiJG15X2Rsc3ltcyIpJyAnZXhpdCAkPycKKworCSMgQ2xlYW4gdXAgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKwlmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiJG5saXN0IiAiJHtubGlzdH1TIiAiJHtubGlzdH1UIicKKworCSMgVHJhbnNmb3JtIHRoZSBzeW1ib2wgZmlsZSBpbnRvIHRoZSBjb3JyZWN0IG5hbWUuCisJc3ltZmlsZW9iaj0iJG91dHB1dF9vYmpkaXIvJHtteV9vdXRwdXRuYW1lfVMuJG9iamV4dCIKKwljYXNlICRob3N0IGluCisJKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYiOyB0aGVuCisJICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICBlbHNlCisJICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgZmkKKwkgIDs7CisJKikKKwkgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIDs7CisJZXNhYworCTs7CisgICAgICAqKQorCWZ1bmNfZmF0YWxfZXJyb3IgInVua25vd24gc3VmZml4IGZvciBcYCRteV9kbHN5bXMnIgorCTs7CisgICAgICBlc2FjCisgICAgZWxzZQorICAgICAgIyBXZSBrZWVwIGdvaW5nIGp1c3QgaW4gY2FzZSB0aGUgdXNlciBkaWRuJ3QgcmVmZXIgdG8KKyAgICAgICMgbHRfcHJlbG9hZGVkX3N5bWJvbHMuICBUaGUgbGlua2VyIHdpbGwgZmFpbCBpZiBnbG9iYWxfc3ltYm9sX3BpcGUKKyAgICAgICMgcmVhbGx5IHdhcyByZXF1aXJlZC4KKworICAgICAgIyBOdWxsaWZ5IHRoZSBzeW1ib2wgZmlsZS4KKyAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCisgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCisgICAgZmkKK30KKworIyBmdW5jX3dpbjMyX2xpYmlkIGFyZworIyByZXR1cm4gdGhlIGxpYnJhcnkgdHlwZSBvZiBmaWxlICdhcmcnCisjCisjIE5lZWQgYSBsb3Qgb2YgZ29vIHRvIGhhbmRsZSAqYm90aCogRExMcyBhbmQgaW1wb3J0IGxpYnMKKyMgSGFzIHRvIGJlIGEgc2hlbGwgZnVuY3Rpb24gaW4gb3JkZXIgdG8gJ2VhdCcgdGhlIGFyZ3VtZW50CisjIHRoYXQgaXMgc3VwcGxpZWQgd2hlbiAkZmlsZV9tYWdpY19jb21tYW5kIGlzIGNhbGxlZC4KK2Z1bmNfd2luMzJfbGliaWQgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICB3aW4zMl9saWJpZF90eXBlPSJ1bmtub3duIgorICB3aW4zMl9maWxlcmVzPWBmaWxlIC1MICQxIDI+L2Rldi9udWxsYAorICBjYXNlICR3aW4zMl9maWxlcmVzIGluCisgICphclwgYXJjaGl2ZVwgaW1wb3J0XCBsaWJyYXJ5KikgIyBkZWZpbml0ZWx5IGltcG9ydAorICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKKyAgICA7OworICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCisgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAorICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgcGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JyA+L2Rldi9udWxsIDsgdGhlbgorICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BICQxIHwKKwkkU0VEIC1uIC1lICcKKwkgICAgMSwxMDB7CisJCS8gSSAveworCQkgICAgcywuKixpbXBvcnQsCisJCSAgICBwCisJCSAgICBxCisJCX0KKwkgICAgfSdgCisgICAgICBjYXNlICR3aW4zMl9ubXJlcyBpbgorICAgICAgaW1wb3J0KikgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCI7OworICAgICAgKikgICAgICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIHN0YXRpYyI7OworICAgICAgZXNhYworICAgIGZpCisgICAgOzsKKyAgKkRMTCopCisgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IERMTCIKKyAgICA7OworICAqZXhlY3V0YWJsZSopICMgYnV0IHNoZWxsIHNjcmlwdHMgYXJlICJleGVjdXRhYmxlIiB0b28uLi4KKyAgICBjYXNlICR3aW4zMl9maWxlcmVzIGluCisgICAgKk1TXCBXaW5kb3dzXCBQRVwgSW50ZWwqKQorICAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IERMTCIKKyAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGVzYWMKKyAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgorfQorCisKKworIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCitmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBmX2V4X2FuX2FyX2Rpcj0iJDEiOyBzaGlmdAorICAgIGZfZXhfYW5fYXJfb2xkbGliPSIkMSIKKyAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiAnZXhpdCAkPycKKyAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgorICAgICA6CisgICAgZWxzZQorICAgICAgZnVuY19mYXRhbF9lcnJvciAib2JqZWN0IG5hbWUgY29uZmxpY3RzIGluIGFyY2hpdmU6ICRmX2V4X2FuX2FyX2Rpci8kZl9leF9hbl9hcl9vbGRsaWIiCisgICAgZmkKK30KKworCisjIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyBnZW50b3Agb2xkbGliIC4uLgorZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIG15X2dlbnRvcD0iJDEiOyBzaGlmdAorICAgIG15X29sZGxpYnM9JHsxKyIkQCJ9CisgICAgbXlfb2xkb2Jqcz0iIgorICAgIG15X3hsaWI9IiIKKyAgICBteV94YWJzPSIiCisgICAgbXlfeGRpcj0iIgorCisgICAgZm9yIG15X3hsaWIgaW4gJG15X29sZGxpYnM7IGRvCisgICAgICAjIEV4dHJhY3QgdGhlIG9iamVjdHMuCisgICAgICBjYXNlICRteV94bGliIGluCisJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBteV94YWJzPSIkbXlfeGxpYiIgOzsKKwkqKSBteV94YWJzPWBwd2RgIi8kbXlfeGxpYiIgOzsKKyAgICAgIGVzYWMKKyAgICAgIGZ1bmNfYmFzZW5hbWUgIiRteV94bGliIgorICAgICAgbXlfeGxpYj0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgICAgbXlfeGxpYl91PSRteV94bGliCisgICAgICB3aGlsZSA6OyBkbworICAgICAgICBjYXNlICIgJGV4dHJhY3RlZF9hcmNoaXZlcyAiIGluCisJKiIgJG15X3hsaWJfdSAiKikKKwkgIGZ1bmNfYXJpdGggJGV4dHJhY3RlZF9zZXJpYWwgKyAxCisJICBleHRyYWN0ZWRfc2VyaWFsPSRmdW5jX2FyaXRoX3Jlc3VsdAorCSAgbXlfeGxpYl91PWx0JGV4dHJhY3RlZF9zZXJpYWwtJG15X3hsaWIgOzsKKwkqKSBicmVhayA7OworCWVzYWMKKyAgICAgIGRvbmUKKyAgICAgIGV4dHJhY3RlZF9hcmNoaXZlcz0iJGV4dHJhY3RlZF9hcmNoaXZlcyAkbXlfeGxpYl91IgorICAgICAgbXlfeGRpcj0iJG15X2dlbnRvcC8kbXlfeGxpYl91IgorCisgICAgICBmdW5jX21rZGlyX3AgIiRteV94ZGlyIgorCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAqLWRhcndpbiopCisJZnVuY192ZXJib3NlICJFeHRyYWN0aW5nICRteV94YWJzIgorCSMgRG8gbm90IGJvdGhlciBkb2luZyBhbnl0aGluZyBpZiBqdXN0IGEgZHJ5IHJ1bgorCSRvcHRfZHJ5X3J1biB8fCB7CisJICBkYXJ3aW5fb3JpZ19kaXI9YHB3ZGAKKwkgIGNkICRteV94ZGlyIHx8IGV4aXQgJD8KKwkgIGRhcndpbl9hcmNoaXZlPSRteV94YWJzCisJICBkYXJ3aW5fY3VyZGlyPWBwd2RgCisJICBkYXJ3aW5fYmFzZV9hcmNoaXZlPWBiYXNlbmFtZSAiJGRhcndpbl9hcmNoaXZlImAKKwkgIGRhcndpbl9hcmNoZXM9YCRMSVBPIC1pbmZvICIkZGFyd2luX2FyY2hpdmUiIDI+L2Rldi9udWxsIHwgJEdSRVAgQXJjaGl0ZWN0dXJlcyAyPi9kZXYvbnVsbCB8fCB0cnVlYAorCSAgaWYgdGVzdCAtbiAiJGRhcndpbl9hcmNoZXMiOyB0aGVuCisJICAgIGRhcndpbl9hcmNoZXM9YCRFQ0hPICIkZGFyd2luX2FyY2hlcyIgfCAkU0VEIC1lICdzLy4qYXJlOi8vJ2AKKwkgICAgZGFyd2luX2FyY2g9CisJICAgIGZ1bmNfdmVyYm9zZSAiJGRhcndpbl9iYXNlX2FyY2hpdmUgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgJGRhcndpbl9hcmNoZXMiCisJICAgIGZvciBkYXJ3aW5fYXJjaCBpbiAgJGRhcndpbl9hcmNoZXMgOyBkbworCSAgICAgIGZ1bmNfbWtkaXJfcCAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofSIKKwkgICAgICAkTElQTyAtdGhpbiAkZGFyd2luX2FyY2ggLW91dHB1dCAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofS8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9IiAiJHtkYXJ3aW5fYXJjaGl2ZX0iCisJICAgICAgY2QgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0iCisJICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgImBwd2RgIiAiJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIKKwkgICAgICBjZCAiJGRhcndpbl9jdXJkaXIiCisJICAgICAgJFJNICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9LyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCisJICAgIGRvbmUgIyAkZGFyd2luX2FyY2hlcworICAgICAgICAgICAgIyMgT2theSBub3cgd2UndmUgYSBidW5jaCBvZiB0aGluIG9iamVjdHMsIGdvdHRhIGZhdHRlbiB0aGVtIHVwIDopCisJICAgIGRhcndpbl9maWxlbGlzdD1gZmluZCB1bmZhdC0kJCAtdHlwZSBmIC1uYW1lIFwqLm8gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICRTRUQgLWUgIiRiYXNlbmFtZSIgfCBzb3J0IC11YAorCSAgICBkYXJ3aW5fZmlsZT0KKwkgICAgZGFyd2luX2ZpbGVzPQorCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KKwkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKKwkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcworCSAgICBkb25lICMgJGRhcndpbl9maWxlbGlzdAorCSAgICAkUk0gLXJmIHVuZmF0LSQkCisJICAgIGNkICIkZGFyd2luX29yaWdfZGlyIgorCSAgZWxzZQorCSAgICBjZCAkZGFyd2luX29yaWdfZGlyCisJICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgorCSAgZmkgIyAkZGFyd2luX2FyY2hlcworCX0gIyAhJG9wdF9kcnlfcnVuCisJOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgorCTs7CisgICAgICBlc2FjCisgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAorICAgIGRvbmUKKworICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgorfQorCisKKworIyBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSBbYXJnPW5vXQorIworIyBFbWl0IHRoZSBmaXJzdCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAorIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KK2Z1bmNfZW1pdF93cmFwcGVyX3BhcnQxICgpCit7CisJZnVuY19lbWl0X3dyYXBwZXJfcGFydDFfYXJnMT1ubworCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKwkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9JDEKKwlmaQorCisJJEVDSE8gIlwKKyMhICRTSEVMTAorCisjICRvdXRwdXQgLSB0ZW1wb3Jhcnkgd3JhcHBlciBzY3JpcHQgZm9yICRvYmpkaXIvJG91dHB1dG5hbWUKKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIworIyBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKKyMgbGlicmFyaWVzIHRoYXQgaXQgZGVwZW5kcyBvbiBhcmUgaW5zdGFsbGVkLgorIworIyBUaGlzIHdyYXBwZXIgc2NyaXB0IHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyMgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorWHNlZD0nJHtTRUR9IC1lIDFzL15YLy8nCitzZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCisKKyMgQmUgQm91cm5lIGNvbXBhdGlibGUKK2lmIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFpzaCAzLnggYW5kIDQueCBwZXJmb3JtcyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRAXCJ9LCB3aGljaAorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgorICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCisgIHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICpwb3NpeCopIHNldCAtbyBwb3NpeDs7IGVzYWMKK2ZpCitCSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAorCisjIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAorIyBpZiBDRFBBVEggaXMgc2V0LgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCityZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiCisKKyMgVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBkZXRlcm1pbmVzIG91ciBvcGVyYXRpb24gbW9kZS4KK2lmIHRlc3QgXCJcJGxpYnRvb2xfaW5zdGFsbF9tYWdpY1wiID0gXCIkbWFnaWNcIjsgdGhlbgorICAjIGluc3RhbGwgbW9kZSBuZWVkcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKKyAgZ2VuZXJhdGVkX2J5X2xpYnRvb2xfdmVyc2lvbj0nJG1hY3JvX3ZlcnNpb24nCisgIG5vdGluc3RfZGVwbGlicz0nJG5vdGluc3RfZGVwbGlicycKK2Vsc2UKKyAgIyBXaGVuIHdlIGFyZSBzb3VyY2VkIGluIGV4ZWN1dGUgbW9kZSwgXCRmaWxlIGFuZCBcJEVDSE8gYXJlIGFscmVhZHkgc2V0LgorICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCisgICAgRUNITz1cIiRxZWNob1wiCisgICAgZmlsZT1cIlwkMFwiCisgICAgIyBNYWtlIHN1cmUgZWNobyB3b3Jrcy4KKyAgICBpZiB0ZXN0IFwiWFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCisgICAgICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KKyAgICAgIHNoaWZ0CisgICAgZWxpZiB0ZXN0IFwiWFxgeyBcJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgorICAgICAgIyBZaXBwZWUsIFwkRUNITyB3b3JrcyEKKyAgICAgIDoKKyAgICBlbHNlCisgICAgICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlIFwkRUNITyB3aWxsIHdvcmsuCisgICAgICBleGVjICRTSEVMTCBcIlwkMFwiIC0tbm8tcmVleGVjIFwkezErXCJcJEBcIn0KKyAgICBmaQorICBmaVwKKyIKKwkkRUNITyAiXAorCisgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCisgIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qJCUlJ1xgCisgIHRlc3QgXCJ4XCR0aGlzZGlyXCIgPSBcInhcJGZpbGVcIiAmJiB0aGlzZGlyPS4KKworICAjIEZvbGxvdyBzeW1ib2xpYyBsaW5rcyB1bnRpbCB3ZSBnZXQgdG8gdGhlIHJlYWwgdGhpc2Rpci4KKyAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KKyAgICBkZXN0ZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKlwkJSUnXGAKKworICAgICMgSWYgdGhlcmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KKyAgICBpZiB0ZXN0IFwieFwkZGVzdGRpclwiICE9IFwieFwkZmlsZVwiOyB0aGVuCisgICAgICBjYXNlIFwiXCRkZXN0ZGlyXCIgaW4KKyAgICAgIFtcXFxcL10qIHwgW0EtWmEtel06W1xcXFwvXSopIHRoaXNkaXI9XCJcJGRlc3RkaXJcIiA7OworICAgICAgKikgdGhpc2Rpcj1cIlwkdGhpc2Rpci9cJGRlc3RkaXJcIiA7OworICAgICAgZXNhYworICAgIGZpCisKKyAgICBmaWxlPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAorICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgZG9uZQorIgorfQorIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxCisKKyMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgW2FyZz1ub10KKyMKKyMgRW1pdCB0aGUgc2Vjb25kIHBhcnQgb2YgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KKyMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgZGVzY3JpcHRpb24gYXNzb2NpYXRlZCB3aXRoCisjIGZ1bmNfZW1pdF93cmFwcGVyKCksIGJlbG93LgorZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgKCkKK3sKKwlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxPW5vCisJaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgorCSAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT0kMQorCWZpCisKKwkkRUNITyAiXAorCisgICMgVXN1YWxseSAnbm8nLCBleGNlcHQgb24gY3lnd2luL21pbmd3IHdoZW4gZW1iZWRkZWQgaW50bworICAjIHRoZSBjd3JhcHBlci4KKyAgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVI9JGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzEKKyAgaWYgdGVzdCBcIlwkV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVJcIiA9IFwieWVzXCI7IHRoZW4KKyAgICAjIHNwZWNpYWwgY2FzZSBmb3IgJy4nCisgICAgaWYgdGVzdCBcIlwkdGhpc2RpclwiID0gXCIuXCI7IHRoZW4KKyAgICAgIHRoaXNkaXI9XGBwd2RcYAorICAgIGZpCisgICAgIyByZW1vdmUgLmxpYnMgZnJvbSB0aGlzZGlyCisgICAgY2FzZSBcIlwkdGhpc2RpclwiIGluCisgICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJHRoaXNkaXJcIiB8IFwkWHNlZCAtZSAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CisgICAgJG9iamRpciApICAgdGhpc2Rpcj0uIDs7CisgICAgZXNhYworICBmaQorCisgICMgVHJ5IHRvIGdldCB0aGUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUuCisgIGFic2Rpcj1cYGNkIFwiXCR0aGlzZGlyXCIgJiYgcHdkXGAKKyAgdGVzdCAtbiBcIlwkYWJzZGlyXCIgJiYgdGhpc2Rpcj1cIlwkYWJzZGlyXCIKKyIKKworCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCisJICAkRUNITyAiXAorICBwcm9ncmFtPWx0LSckb3V0cHV0bmFtZSckZXhlZXh0CisgIHByb2dkaXI9XCJcJHRoaXNkaXIvJG9iamRpclwiCisKKyAgaWYgdGVzdCAhIC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIHx8CisgICAgIHsgZmlsZT1cYGxzIC0xZHQgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCJcJHByb2dkaXIvLi4vXCRwcm9ncmFtXCIgMj4vZGV2L251bGwgfCAke1NFRH0gMXFcYDsgXFwKKyAgICAgICB0ZXN0IFwiWFwkZmlsZVwiICE9IFwiWFwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgfTsgdGhlbgorCisgICAgZmlsZT1cIlwkXCQtXCRwcm9ncmFtXCIKKworICAgIGlmIHRlc3QgISAtZCBcIlwkcHJvZ2RpclwiOyB0aGVuCisgICAgICAkTUtESVIgXCJcJHByb2dkaXJcIgorICAgIGVsc2UKKyAgICAgICRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgorICAgIGZpIgorCisJICAkRUNITyAiXAorCisgICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKKyAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCisgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKKyAgICAgIGVsc2UKKwkkRUNITyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCisJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCisJZXhpdCAxCisgICAgICBmaQorICAgIGZpCisKKyAgICAkTVYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgMj4vZGV2L251bGwgfHwKKyAgICB7ICRSTSBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsKKyAgICAgICRNViBcIlwkcHJvZ2Rpci9cJGZpbGVcIiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgfQorICAgICRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgorICBmaSIKKwllbHNlCisJICAkRUNITyAiXAorICBwcm9ncmFtPSckb3V0cHV0bmFtZScKKyAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKKyIKKwlmaQorCisJJEVDSE8gIlwKKworICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgorCisJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCisJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorCSAgJEVDSE8gIlwKKyAgICAjIEFkZCBvdXIgb3duIGxpYnJhcnkgcGF0aCB0byAkc2hsaWJwYXRoX3ZhcgorICAgICRzaGxpYnBhdGhfdmFyPVwiJHRlbXBfcnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIKKworICAgICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBjb3BlIHdpdGggY29sb24tdGVybWluYXRlZCAkc2hsaWJwYXRoX3ZhcgorICAgICMgVGhlIHNlY29uZCBjb2xvbiBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIEJlT1MgUjQgc2VkCisgICAgJHNobGlicGF0aF92YXI9XGBcJEVDSE8gXCJYXCQkc2hsaWJwYXRoX3ZhclwiIHwgXCRYc2VkIC1lICdzLzo6KlwkLy8nXGAKKworICAgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgorIgorCWZpCisKKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorCSAgJEVDSE8gIlwKKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisiCisJZmkKKworCSRFQ0hPICJcCisgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KKyIKKwljYXNlICRob3N0IGluCisJIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCisJKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKwkgICRFQ0hPICJcCisgICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKwkgIDs7CisKKwkqKQorCSAgJEVDSE8gIlwKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorCSAgOzsKKwllc2FjCisJJEVDSE8gIlwKKyAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisgIGVsc2UKKyAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCisgICAgXCRFQ0hPIFwiXCQwOiBlcnJvcjogXFxcYFwkcHJvZ2Rpci9cJHByb2dyYW0nIGRvZXMgbm90IGV4aXN0XCIgMT4mMgorICAgIFwkRUNITyBcIlRoaXMgc2NyaXB0IGlzIGp1c3QgYSB3cmFwcGVyIGZvciBcJHByb2dyYW0uXCIgMT4mMgorICAgICRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKKyAgICBleGl0IDEKKyAgZmkKK2ZpXAorIgorfQorIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyCisKKworIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQorIworIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KKyMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKKyMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgorIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCisjIHNldCB0aGVyZWluLgorIworIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCisjIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAorIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCisjIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKKyMgYmVoYXZpb3IuCitmdW5jX2VtaXRfd3JhcHBlciAoKQoreworCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9bm8KKwlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCisJICBmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSQxCisJZmkKKworCSMgc3BsaXQgdGhpcyB1cCBzbyB0aGF0IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKKwkjIGNhbiBjYWxsIGVhY2ggcGFydCBpbmRlcGVuZGVudGx5LgorCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgorCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgorfQorCisKKyMgZnVuY190b19ob3N0X3BhdGggYXJnCisjCisjIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCisjIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKKyMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCisjIGJ1aWxkIGVudmlyb25tZW50czoKKyMgICAgJGJ1aWxkICAgICAgICAgICRob3N0CisjICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQorIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKyMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3CisjIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgorIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQorIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKKyMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KKyMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKKyMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCisjICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KKyMKKyMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bworIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKKyMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfdG9faG9zdF9wYXRoICgpCit7CisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgICBjYXNlICRob3N0IGluCisgICAgICAqbWluZ3cqICkKKyAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworICAgICAgICBjYXNlICRidWlsZCBpbgorICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCisgICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKyAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWAoIGNtZCAvL2MgZWNobyAiJDEiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAorICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgICAgICAgICA7OworICAgICAgICAgICpjeWd3aW4qICkKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YGN5Z3BhdGggLXcgIiQxImAKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKiApCisgICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCisgICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAorICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisgICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKKyAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucworICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCisgICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKKyAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIiCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKKyAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAgICAgICAjIEZhbGxiYWNrOgorICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYworICBmaQorfQorIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCisKKyMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZworIworIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKyMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQorIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKKyMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6CisjICAgICRidWlsZCAgICAgICAgICAkaG9zdAorIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKyMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CisjICAgICpuaXggKyB3aW5lICAgICBtaW5ndworIworIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bworIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKKyMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQorIyBvbiBvdXRwdXQuCisjCisjIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bworIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KK2Z1bmNfdG9faG9zdF9wYXRobGlzdCAoKQoreworICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgorICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICptaW5ndyogKQorICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisgICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQorICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCisgICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPSIkMSIKKyAgICAgICAgIyBPbmNlIHNldCBmb3IgdGhpcyBjYWxsLCB0aGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUKKyAgICAgICAgIyByZWFzc2lnbmVkLiBJdCBpcyB1c2VkIGluIHRoYSBmYWxsYmFjayBjYXNlLgorICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAorICAgICAgICAgICRTRUQgLWUgJ3N8XjoqfHwnIC1lICdzfDoqJHx8J2AKKyAgICAgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KKyAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KKyAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKKyAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKKyAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAgICAgOzsKKyAgICAgICAgICAqY3lnd2luKiApCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxImAKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKKyAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAgICAgOzsKKyAgICAgICAgICAqICkKKyAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cworICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCisgICAgICAgICAgICBJRlM9OgorICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCisgICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUworICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgorICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCisgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIElGUz06CisgICAgICAgICAgICBkb25lCisgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgorICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgorICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKKyAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKKyAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCisgICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgorICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3CisgICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgorICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgorICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKKyAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCisgICAgICAgIGZpCisgICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCisgICAgICAgIGNhc2UgIiQxIiBpbgorICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgICAqOiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyIKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGZpCit9CisjIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0CisKKyMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYworIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CisjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQorIyBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlIHNldCB0aGVyZWluLgorZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQoreworCWNhdCA8PEVPRgorCisvKiAkY3dyYXBwZXJzb3VyY2UgLSB0ZW1wb3Jhcnkgd3JhcHBlciBleGVjdXRhYmxlIGZvciAkb2JqZGlyLyRvdXRwdXRuYW1lCisgICBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisKKyAgIFRoZSAkb3V0cHV0IHByb2dyYW0gY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkIHVudGlsIGFsbCB0aGUgbGlidG9vbAorICAgbGlicmFyaWVzIHRoYXQgaXQgZGVwZW5kcyBvbiBhcmUgaW5zdGFsbGVkLgorCisgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCisKKyAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCisgICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCisgICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCisqLworRU9GCisJICAgIGNhdCA8PCJFT0YiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpZmRlZiBfTVNDX1ZFUgorIyBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgaW5jbHVkZSA8cHJvY2Vzcy5oPgorIyBpbmNsdWRlIDxpby5oPgorIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQorI2Vsc2UKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGluY2x1ZGUgPHN0ZGludC5oPgorIyBpZmRlZiBfX0NZR1dJTl9fCisjICBpbmNsdWRlIDxpby5oPgorIyAgZGVmaW5lIEhBVkVfU0VURU5WCisjICBpZmRlZiBfX1NUUklDVF9BTlNJX18KK2NoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7CitpbnQgcHV0ZW52IChjaGFyICopOworaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2lmIGRlZmluZWQoUEFUSF9NQVgpCisjIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCisjZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCisjIGRlZmluZSBMVF9QQVRITUFYIE1BWFBBVEhMRU4KKyNlbHNlCisjIGRlZmluZSBMVF9QQVRITUFYIDEwMjQKKyNlbmRpZgorCisjaWZuZGVmIFNfSVhPVEgKKyMgZGVmaW5lIFNfSVhPVEggMAorI2VuZGlmCisjaWZuZGVmIFNfSVhHUlAKKyMgZGVmaW5lIFNfSVhHUlAgMAorI2VuZGlmCisKKyNpZmRlZiBfTVNDX1ZFUgorIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQworIyBkZWZpbmUgc3RhdCBfc3RhdAorIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBpbnRwdHJfdCBpbnQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIERJUl9TRVBBUkFUT1IKKyMgZGVmaW5lIERJUl9TRVBBUkFUT1IgJy8nCisjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX1dJTjMyKSB8fCBkZWZpbmVkIChfX01TRE9TX18pIHx8IGRlZmluZWQgKF9fREpHUFBfXykgfHwgXAorICBkZWZpbmVkIChfX09TMl9fKQorIyBkZWZpbmUgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0KKyMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKKyMgaWZuZGVmIERJUl9TRVBBUkFUT1JfMgorIyAgZGVmaW5lIERJUl9TRVBBUkFUT1JfMiAnXFwnCisjIGVuZGlmCisjIGlmbmRlZiBQQVRIX1NFUEFSQVRPUl8yCisjICBkZWZpbmUgUEFUSF9TRVBBUkFUT1JfMiAnOycKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIERJUl9TRVBBUkFUT1JfMgorIyBkZWZpbmUgSVNfRElSX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gRElSX1NFUEFSQVRPUikKKyNlbHNlIC8qIERJUl9TRVBBUkFUT1JfMiAqLworIyBkZWZpbmUgSVNfRElSX1NFUEFSQVRPUihjaCkgXAorCSgoKGNoKSA9PSBESVJfU0VQQVJBVE9SKSB8fCAoKGNoKSA9PSBESVJfU0VQQVJBVE9SXzIpKQorI2VuZGlmIC8qIERJUl9TRVBBUkFUT1JfMiAqLworCisjaWZuZGVmIFBBVEhfU0VQQVJBVE9SXzIKKyMgZGVmaW5lIElTX1BBVEhfU0VQQVJBVE9SKGNoKSAoKGNoKSA9PSBQQVRIX1NFUEFSQVRPUikKKyNlbHNlIC8qIFBBVEhfU0VQQVJBVE9SXzIgKi8KKyMgZGVmaW5lIElTX1BBVEhfU0VQQVJBVE9SKGNoKSAoKGNoKSA9PSBQQVRIX1NFUEFSQVRPUl8yKQorI2VuZGlmIC8qIFBBVEhfU0VQQVJBVE9SXzIgKi8KKworI2lmZGVmIF9fQ1lHV0lOX18KKyMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKKyNlbmRpZgorCisjaWZuZGVmIEZPUEVOX1dCCisjIGRlZmluZSBGT1BFTl9XQiAidyIKKyNlbmRpZgorI2lmbmRlZiBfT19CSU5BUlkKKyMgZGVmaW5lIF9PX0JJTkFSWSAwCisjZW5kaWYKKworI2RlZmluZSBYTUFMTE9DKHR5cGUsIG51bSkgICAgICAoKHR5cGUgKikgeG1hbGxvYyAoKG51bSkgKiBzaXplb2YodHlwZSkpKQorI2RlZmluZSBYRlJFRShzdGFsZSkgZG8geyBcCisgIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCit9IHdoaWxlICgwKQorCisjdW5kZWYgTFRXUkFQUEVSX0RFQlVHUFJJTlRGCisjaWYgZGVmaW5lZCBERUJVR1dSQVBQRVIKKyMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncworc3RhdGljIHZvaWQKK2x0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworICAgIHZhX2VuZCAoYXJncyk7Cit9CisjZWxzZQorIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCisjZW5kaWYKKworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKKwordm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CitjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOworY29uc3QgY2hhciAqYmFzZV9uYW1lIChjb25zdCBjaGFyICpuYW1lKTsKK2NoYXIgKmZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcik7CitjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOworaW50IG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CitpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CitjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cit2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKK3ZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKTsKK3ZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Cit2b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7CitpbnQgbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKTsKK3ZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Cit2b2lkIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworCitzdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDEgPQorRU9GCisKKwkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgeWVzIHwKKwkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAorCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCisJICAgIGVjaG8gIjsiCisJICAgIGNhdCA8PEVPRgorCitzdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDIgPQorRU9GCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIHllcyB8CisJICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKKwkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJworCSAgICBlY2hvICI7IgorCisJICAgIGNhdCA8PEVPRgorY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQVJOQU1FID0gIiRzaGxpYnBhdGhfdmFyIjsKK0VPRgorCisJICAgIGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKKwkgICAgICBjYXQgPDxFT0YKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK0VPRgorCSAgICBlbHNlCisJICAgICAgY2F0IDw8IkVPRiIKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiI7CitFT0YKKwkgICAgZmkKKworCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkZGxsc2VhcmNocGF0aDoiCisJICAgICAgY2F0IDw8RU9GCitjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICJQQVRIIjsKK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK0VPRgorCSAgICBlbHNlCisJICAgICAgY2F0IDw8IkVPRiIKK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIiI7Citjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIiOworRU9GCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KKwkgICAgICBjYXQgPDxFT0YKK2NvbnN0IGNoYXIgKiBUQVJHRVRfUFJPR1JBTV9OQU1FID0gImx0LSRvdXRwdXRuYW1lIjsgLyogaG9wZWZ1bGx5LCBubyAuZXhlICovCitFT0YKKwkgICAgZWxzZQorCSAgICAgIGNhdCA8PEVPRgorY29uc3QgY2hhciAqIFRBUkdFVF9QUk9HUkFNX05BTUUgPSAiJG91dHB1dG5hbWUiOyAvKiBob3BlZnVsbHksIG5vIC5leGUgKi8KK0VPRgorCSAgICBmaQorCisKKwkgICAgY2F0IDw8IkVPRiIKKworI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAgICAgICAgICItLWx0LSIKKyNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1CisKK3N0YXRpYyBjb25zdCBzaXplX3Qgb3B0X3ByZWZpeF9sZW4gICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSDsKK3N0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOworCitzdGF0aWMgY29uc3QgY2hhciAqZHVtcHNjcmlwdF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZHVtcC1zY3JpcHQiOworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9zZXRfb3B0X2xlbiAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyA3Oworc3RhdGljIGNvbnN0IGNoYXIgKmVudl9zZXRfb3B0ICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1zZXQiOworICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCB2YWx1ZSBvZiBmb28gaXMgc2V0IHRvIGJhciAqLworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9wcmVwZW5kX29wdF9sZW4gPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMTsKK3N0YXRpYyBjb25zdCBjaGFyICplbnZfcHJlcGVuZF9vcHQgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtcHJlcGVuZCI7CisgIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIG5ldyB2YWx1ZSBvZiBmb28gaXMgYmFyJHtmb299ICovCisKK3N0YXRpYyBjb25zdCBzaXplX3QgZW52X2FwcGVuZF9vcHRfbGVuICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDEwOworc3RhdGljIGNvbnN0IGNoYXIgKmVudl9hcHBlbmRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1hcHBlbmQiOworICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzICR7Zm9vfWJhciAqLworCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIGNoYXIgKipuZXdhcmd6OworICBpbnQgIG5ld2FyZ2M7CisgIGNoYXIgKnRtcF9wYXRoc3BlYzsKKyAgY2hhciAqYWN0dWFsX2N3cmFwcGVyX3BhdGg7CisgIGNoYXIgKmFjdHVhbF9jd3JhcHBlcl9uYW1lOworICBjaGFyICp0YXJnZXRfbmFtZTsKKyAgY2hhciAqbHRfYXJndl96ZXJvOworICBpbnRwdHJfdCBydmFsID0gMTI3OworCisgIGludCBpOworCisgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7CisgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOworCisgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCisgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisgICAgeworICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpID09IDApCisJeworRU9GCisJICAgIGNhc2UgIiRob3N0IiBpbgorCSAgICAgICptaW5ndyogfCAqY3lnd2luKiApCisJCSMgbWFrZSBzdGRvdXQgdXNlICJ1bml4IiBsaW5lIGVuZGluZ3MKKwkJZWNobyAiICAgICAgICAgIHNldG1vZGUoMSxfT19CSU5BUlkpOyIKKwkJOzsKKwkgICAgICBlc2FjCisKKwkgICAgY2F0IDw8IkVPRiIKKwkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDEpOworCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0Mik7CisJICByZXR1cm4gMDsKKwl9CisgICAgfQorCisgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKyAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKKyAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQorICAgIGx0X2ZhdGFsICgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCisJCQkgIHRtcF9wYXRoc3BlYykpOworCisgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7CisgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAorCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKworICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgc3RyZW5kemFwIChhY3R1YWxfY3dyYXBwZXJfcGF0aCwgYWN0dWFsX2N3cmFwcGVyX25hbWUpOworCisgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCisgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX25hbWUsICIuZXhlIik7CisgIHRtcF9wYXRoc3BlYyA9IGx0X2V4dGVuZF9zdHIgKGFjdHVhbF9jd3JhcHBlcl9uYW1lLCAiLmV4ZSIsIDEpOworICBYRlJFRSAoYWN0dWFsX2N3cmFwcGVyX25hbWUpOworICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHRtcF9wYXRoc3BlYzsKKyAgdG1wX3BhdGhzcGVjID0gMDsKKworICAvKiB0YXJnZXRfbmFtZSB0cmFuc2Zvcm1zIC0tIHVzZSBhY3R1YWwgdGFyZ2V0IHByb2dyYW0gbmFtZTsgbWlnaHQgaGF2ZSBsdC0gcHJlZml4ICovCisgIHRhcmdldF9uYW1lID0geHN0cmR1cCAoYmFzZV9uYW1lIChUQVJHRVRfUFJPR1JBTV9OQU1FKSk7CisgIHN0cmVuZHphcCAodGFyZ2V0X25hbWUsICIuZXhlIik7CisgIHRtcF9wYXRoc3BlYyA9IGx0X2V4dGVuZF9zdHIgKHRhcmdldF9uYW1lLCAiLmV4ZSIsIDEpOworICBYRlJFRSAodGFyZ2V0X25hbWUpOworICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKKyAgdG1wX3BhdGhzcGVjID0gMDsKKworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorCQkJICB0YXJnZXRfbmFtZSkpOworRU9GCisKKwkgICAgY2F0IDw8RU9GCisgIG5ld2FyZ3pbMF0gPQorICAgIFhNQUxMT0MgKGNoYXIsIChzdHJsZW4gKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSArCisJCSAgICBzdHJsZW4gKCIkb2JqZGlyIikgKyAxICsgc3RybGVuIChhY3R1YWxfY3dyYXBwZXJfbmFtZSkgKyAxKSk7CisgIHN0cmNweSAobmV3YXJnelswXSwgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOworICBzdHJjYXQgKG5ld2FyZ3pbMF0sICIkb2JqZGlyIik7CisgIHN0cmNhdCAobmV3YXJnelswXSwgIi8iKTsKK0VPRgorCisJICAgIGNhdCA8PCJFT0YiCisgIC8qIHN0b3AgaGVyZSwgYW5kIGNvcHkgc28gd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGlzIHR3aWNlICovCisgIHRtcF9wYXRoc3BlYyA9IHhzdHJkdXAgKG5ld2FyZ3pbMF0pOworCisgIC8qIGRvIE5PVCB3YW50IHRoZSBsdC0gcHJlZml4IGhlcmUsIHNvIHVzZSBhY3R1YWxfY3dyYXBwZXJfbmFtZSAqLworICBzdHJjYXQgKG5ld2FyZ3pbMF0sIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKworICAvKiBETyB3YW50IHRoZSBsdC0gcHJlZml4IGhlcmUgaWYgaXQgZXhpc3RzLCBzbyB1c2UgdGFyZ2V0X25hbWUgKi8KKyAgbHRfYXJndl96ZXJvID0gbHRfZXh0ZW5kX3N0ciAodG1wX3BhdGhzcGVjLCB0YXJnZXRfbmFtZSwgMSk7CisgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworICB0bXBfcGF0aHNwZWMgPSBOVUxMOworRU9GCisKKwkgICAgY2FzZSAkaG9zdF9vcyBpbgorCSAgICAgIG1pbmd3KikKKwkgICAgY2F0IDw8IkVPRiIKKyAgeworICAgIGNoYXIqIHA7CisgICAgd2hpbGUgKChwID0gc3RyY2hyIChuZXdhcmd6WzBdLCAnXFwnKSkgIT0gTlVMTCkKKyAgICAgIHsKKwkqcCA9ICcvJzsKKyAgICAgIH0KKyAgICB3aGlsZSAoKHAgPSBzdHJjaHIgKGx0X2FyZ3ZfemVybywgJ1xcJykpICE9IE5VTEwpCisgICAgICB7CisJKnAgPSAnLyc7CisgICAgICB9CisgIH0KK0VPRgorCSAgICA7OworCSAgICBlc2FjCisKKwkgICAgY2F0IDw8IkVPRiIKKyAgWEZSRUUgKHRhcmdldF9uYW1lKTsKKyAgWEZSRUUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKKyAgWEZSRUUgKGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKworICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KKyAgbHRfc2V0ZW52ICgiRFVBTENBU0UiLCAiMSIpOyAgLyogZm9yIE1TSyBzaCAqLworICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKyAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisKKyAgbmV3YXJnYz0wOworICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQorICAgIHsKKyAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfc2V0X29wdCwgZW52X3NldF9vcHRfbGVuKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnPScpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X3NldF9vcHRfbGVuICsgMTsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAocCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfc2V0X29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3NldF9vcHQpOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3ByZXBlbmRfb3B0LCBlbnZfcHJlcGVuZF9vcHRfbGVuKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJz0nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9wcmVwZW5kX29wdF9sZW4gKyAxOworICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAocCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfcHJlcGVuZF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfcHJlcGVuZF9vcHQpOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X2FwcGVuZF9vcHQsIGVudl9hcHBlbmRfb3B0X2xlbikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJz0nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9hcHBlbmRfb3B0X2xlbiArIDE7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKHApOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X2FwcGVuZF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9hcHBlbmRfb3B0KTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBvcHRfcHJlZml4X2xlbikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCisgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKyAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCisgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorICAgICAgICAgICAqLworICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAorICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisgICAgICAgIH0KKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOworICAgIH0KKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKKworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOworICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQorICAgIHsKKyAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKyAgICB9CisKK0VPRgorCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJCWNhdCA8PCJFT0YiCisgIC8qIGV4ZWN2IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBvbiBtaW5ndyBhcyBleHBlY3RlZCBvbiB1bml4ICovCisgIHJ2YWwgPSBfc3Bhd252IChfUF9XQUlULCBsdF9hcmd2X3plcm8sIChjb25zdCBjaGFyICogY29uc3QgKikgbmV3YXJneik7CisgIGlmIChydmFsID09IC0xKQorICAgIHsKKyAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCisgICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOworICAgICAgcmV0dXJuIDEyNzsKKyAgICB9CisgIHJldHVybiBydmFsOworRU9GCisJCTs7CisJICAgICAgKikKKwkJY2F0IDw8IkVPRiIKKyAgZXhlY3YgKGx0X2FyZ3ZfemVybywgbmV3YXJneik7CisgIHJldHVybiBydmFsOyAvKiA9MTI3LCBidXQgYXZvaWRzIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5nICovCitFT0YKKwkJOzsKKwkgICAgZXNhYworCisJICAgIGNhdCA8PCJFT0YiCit9CisKK3ZvaWQgKgoreG1hbGxvYyAoc2l6ZV90IG51bSkKK3sKKyAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKKyAgaWYgKCFwKQorICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworCisgIHJldHVybiBwOworfQorCitjaGFyICoKK3hzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZykKK3sKKyAgcmV0dXJuIHN0cmluZyA/IHN0cmNweSAoKGNoYXIgKikgeG1hbGxvYyAoc3RybGVuIChzdHJpbmcpICsgMSksCisJCQkgIHN0cmluZykgOiBOVUxMOworfQorCitjb25zdCBjaGFyICoKK2Jhc2VfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgY29uc3QgY2hhciAqYmFzZTsKKworI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorICAvKiBTa2lwIG92ZXIgdGhlIGRpc2sgbmFtZSBpbiBNU0RPUyBwYXRobmFtZXMuICovCisgIGlmIChpc2FscGhhICgodW5zaWduZWQgY2hhcikgbmFtZVswXSkgJiYgbmFtZVsxXSA9PSAnOicpCisgICAgbmFtZSArPSAyOworI2VuZGlmCisKKyAgZm9yIChiYXNlID0gbmFtZTsgKm5hbWU7IG5hbWUrKykKKyAgICBpZiAoSVNfRElSX1NFUEFSQVRPUiAoKm5hbWUpKQorICAgICAgYmFzZSA9IG5hbWUgKyAxOworICByZXR1cm4gYmFzZTsKK30KKworaW50CitjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQoreworICBzdHJ1Y3Qgc3RhdCBzdDsKKworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAorCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgcmV0dXJuIDA7CisKKyAgaWYgKChzdGF0IChwYXRoLCAmc3QpID49IDApCisgICAgICAmJiAoc3Quc3RfbW9kZSAmIChTX0lYVVNSIHwgU19JWEdSUCB8IFNfSVhPVEgpKSkKKyAgICByZXR1cm4gMTsKKyAgZWxzZQorICAgIHJldHVybiAwOworfQorCitpbnQKK21ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgaW50IHJ2YWwgPSAwOworICBzdHJ1Y3Qgc3RhdCBzdDsKKworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgcmV0dXJuIDA7CisKKyAgaWYgKHN0YXQgKHBhdGgsICZzdCkgPj0gMCkKKyAgICB7CisgICAgICBydmFsID0gY2htb2QgKHBhdGgsIHN0LnN0X21vZGUgfCBTX0lYT1RIIHwgU19JWEdSUCB8IFNfSVhVU1IpOworICAgIH0KKyAgcmV0dXJuIHJ2YWw7Cit9CisKKy8qIFNlYXJjaGVzIGZvciB0aGUgZnVsbCBwYXRoIG9mIHRoZSB3cmFwcGVyLiAgUmV0dXJucworICAgbmV3bHkgYWxsb2NhdGVkIGZ1bGwgcGF0aCBuYW1lIGlmIGZvdW5kLCBOVUxMIG90aGVyd2lzZQorICAgRG9lcyBub3QgY2hhc2Ugc3ltbGlua3MsIGV2ZW4gb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGVtLgorKi8KK2NoYXIgKgorZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQoreworICBpbnQgaGFzX3NsYXNoID0gMDsKKyAgY29uc3QgY2hhciAqcDsKKyAgY29uc3QgY2hhciAqcF9uZXh0OworICAvKiBzdGF0aWMgYnVmZmVyIGZvciBnZXRjd2QgKi8KKyAgY2hhciB0bXBbTFRfUEFUSE1BWCArIDFdOworICBpbnQgdG1wX2xlbjsKKyAgY2hhciAqY29uY2F0X25hbWU7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKwkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisKKyAgaWYgKCh3cmFwcGVyID09IE5VTEwpIHx8ICgqd3JhcHBlciA9PSAnXDAnKSkKKyAgICByZXR1cm4gTlVMTDsKKworICAvKiBBYnNvbHV0ZSBwYXRoPyAqLworI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIHdyYXBwZXJbMF0pICYmIHdyYXBwZXJbMV0gPT0gJzonKQorICAgIHsKKyAgICAgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7CisgICAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZSAoY29uY2F0X25hbWUpKQorCXJldHVybiBjb25jYXRfbmFtZTsKKyAgICAgIFhGUkVFIChjb25jYXRfbmFtZSk7CisgICAgfQorICBlbHNlCisgICAgeworI2VuZGlmCisgICAgICBpZiAoSVNfRElSX1NFUEFSQVRPUiAod3JhcHBlclswXSkpCisJeworCSAgY29uY2F0X25hbWUgPSB4c3RyZHVwICh3cmFwcGVyKTsKKwkgIGlmIChjaGVja19leGVjdXRhYmxlIChjb25jYXRfbmFtZSkpCisJICAgIHJldHVybiBjb25jYXRfbmFtZTsKKwkgIFhGUkVFIChjb25jYXRfbmFtZSk7CisJfQorI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorICAgIH0KKyNlbmRpZgorCisgIGZvciAocCA9IHdyYXBwZXI7ICpwOyBwKyspCisgICAgaWYgKCpwID09ICcvJykKKyAgICAgIHsKKwloYXNfc2xhc2ggPSAxOworCWJyZWFrOworICAgICAgfQorICBpZiAoIWhhc19zbGFzaCkKKyAgICB7CisgICAgICAvKiBubyBzbGFzaGVzOyBzZWFyY2ggUEFUSCAqLworICAgICAgY29uc3QgY2hhciAqcGF0aCA9IGdldGVudiAoIlBBVEgiKTsKKyAgICAgIGlmIChwYXRoICE9IE5VTEwpCisJeworCSAgZm9yIChwID0gcGF0aDsgKnA7IHAgPSBwX25leHQpCisJICAgIHsKKwkgICAgICBjb25zdCBjaGFyICpxOworCSAgICAgIHNpemVfdCBwX2xlbjsKKwkgICAgICBmb3IgKHEgPSBwOyAqcTsgcSsrKQorCQlpZiAoSVNfUEFUSF9TRVBBUkFUT1IgKCpxKSkKKwkJICBicmVhazsKKwkgICAgICBwX2xlbiA9IHEgLSBwOworCSAgICAgIHBfbmV4dCA9ICgqcSA9PSAnXDAnID8gcSA6IHEgKyAxKTsKKwkgICAgICBpZiAocF9sZW4gPT0gMCkKKwkJeworCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCisJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorCQkgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKwkJICBjb25jYXRfbmFtZSA9CisJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKKwkJICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOworCQkgIGNvbmNhdF9uYW1lW3RtcF9sZW5dID0gJy8nOworCQkgIHN0cmNweSAoY29uY2F0X25hbWUgKyB0bXBfbGVuICsgMSwgd3JhcHBlcik7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBjb25jYXRfbmFtZSA9CisJCSAgICBYTUFMTE9DIChjaGFyLCBwX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CisJCSAgbWVtY3B5IChjb25jYXRfbmFtZSwgcCwgcF9sZW4pOworCQkgIGNvbmNhdF9uYW1lW3BfbGVuXSA9ICcvJzsKKwkJICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgcF9sZW4gKyAxLCB3cmFwcGVyKTsKKwkJfQorCSAgICAgIGlmIChjaGVja19leGVjdXRhYmxlIChjb25jYXRfbmFtZSkpCisJCXJldHVybiBjb25jYXRfbmFtZTsKKwkgICAgICBYRlJFRSAoY29uY2F0X25hbWUpOworCSAgICB9CisJfQorICAgICAgLyogbm90IGZvdW5kIGluIFBBVEg7IGFzc3VtZSBjdXJkaXIgKi8KKyAgICB9CisgIC8qIFJlbGF0aXZlIHBhdGggfCBub3QgZm91bmQgaW4gcGF0aDogcHJlcGVuZCBjd2QgKi8KKyAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworICB0bXBfbGVuID0gc3RybGVuICh0bXApOworICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOworICBjb25jYXRfbmFtZVt0bXBfbGVuXSA9ICcvJzsKKyAgc3RyY3B5IChjb25jYXRfbmFtZSArIHRtcF9sZW4gKyAxLCB3cmFwcGVyKTsKKworICBpZiAoY2hlY2tfZXhlY3V0YWJsZSAoY29uY2F0X25hbWUpKQorICAgIHJldHVybiBjb25jYXRfbmFtZTsKKyAgWEZSRUUgKGNvbmNhdF9uYW1lKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKgorY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQoreworI2lmbmRlZiBTX0lTTE5LCisgIHJldHVybiB4c3RyZHVwIChwYXRoc3BlYyk7CisjZWxzZQorICBjaGFyIGJ1ZltMVF9QQVRITUFYXTsKKyAgc3RydWN0IHN0YXQgczsKKyAgY2hhciAqdG1wX3BhdGhzcGVjID0geHN0cmR1cCAocGF0aHNwZWMpOworICBjaGFyICpwOworICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKKyAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQorICAgIHsKKyAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCisJeworCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKKwkgICAgeworCSAgICAgIGhhc19zeW1saW5rcyA9IDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKworCSAgLyogc2VhcmNoIGJhY2t3YXJkcyBmb3IgbGFzdCBESVJfU0VQQVJBVE9SICovCisJICBwID0gdG1wX3BhdGhzcGVjICsgc3RybGVuICh0bXBfcGF0aHNwZWMpIC0gMTsKKwkgIHdoaWxlICgocCA+IHRtcF9wYXRoc3BlYykgJiYgKCFJU19ESVJfU0VQQVJBVE9SICgqcCkpKQorCSAgICBwLS07CisJICBpZiAoKHAgPT0gdG1wX3BhdGhzcGVjKSAmJiAoIUlTX0RJUl9TRVBBUkFUT1IgKCpwKSkpCisJICAgIHsKKwkgICAgICAvKiBubyBtb3JlIERJUl9TRVBBUkFUT1JTIGxlZnQgKi8KKwkgICAgICBicmVhazsKKwkgICAgfQorCSAgKnAgPSAnXDAnOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOworCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOworCX0KKyAgICB9CisgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworCisgIGlmICghaGFzX3N5bWxpbmtzKQorICAgIHsKKyAgICAgIHJldHVybiB4c3RyZHVwIChwYXRoc3BlYyk7CisgICAgfQorCisgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKKyAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQorICAgIHsKKyAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgfQorICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKKyNlbmRpZgorfQorCitjaGFyICoKK3N0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCit7CisgIHNpemVfdCBsZW4sIHBhdGxlbjsKKworICBhc3NlcnQgKHN0ciAhPSBOVUxMKTsKKyAgYXNzZXJ0IChwYXQgIT0gTlVMTCk7CisKKyAgbGVuID0gc3RybGVuIChzdHIpOworICBwYXRsZW4gPSBzdHJsZW4gKHBhdCk7CisKKyAgaWYgKHBhdGxlbiA8PSBsZW4pCisgICAgeworICAgICAgc3RyICs9IGxlbiAtIHBhdGxlbjsKKyAgICAgIGlmIChzdHJjbXAgKHN0ciwgcGF0KSA9PSAwKQorCSpzdHIgPSAnXDAnOworICAgIH0KKyAgcmV0dXJuIHN0cjsKK30KKworc3RhdGljIHZvaWQKK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKKwkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKK3sKKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOworICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CisgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOworCisgIGlmIChleGl0X3N0YXR1cyA+PSAwKQorICAgIGV4aXQgKGV4aXRfc3RhdHVzKTsKK30KKwordm9pZAorbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKK3sKKyAgdmFfbGlzdCBhcDsKKyAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisgIHZhX2VuZCAoYXApOworfQorCit2b2lkCitsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgeworI2lmZGVmIEhBVkVfU0VURU5WCisgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KKyAgICBjaGFyICpzdHIgPSB4c3RyZHVwICh2YWx1ZSk7CisgICAgc2V0ZW52IChuYW1lLCBzdHIsIDEpOworI2Vsc2UKKyAgICBpbnQgbGVuID0gc3RybGVuIChuYW1lKSArIDEgKyBzdHJsZW4gKHZhbHVlKSArIDE7CisgICAgY2hhciAqc3RyID0gWE1BTExPQyAoY2hhciwgbGVuKTsKKyAgICBzcHJpbnRmIChzdHIsICIlcz0lcyIsIG5hbWUsIHZhbHVlKTsKKyAgICBpZiAocHV0ZW52IChzdHIpICE9IEVYSVRfU1VDQ0VTUykKKyAgICAgIHsKKyAgICAgICAgWEZSRUUgKHN0cik7CisgICAgICB9CisjZW5kaWYKKyAgfQorfQorCitjaGFyICoKK2x0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKK3sKKyAgY2hhciAqbmV3X3ZhbHVlOworICBpZiAob3JpZ192YWx1ZSAmJiAqb3JpZ192YWx1ZSkKKyAgICB7CisgICAgICBpbnQgb3JpZ192YWx1ZV9sZW4gPSBzdHJsZW4gKG9yaWdfdmFsdWUpOworICAgICAgaW50IGFkZF9sZW4gPSBzdHJsZW4gKGFkZCk7CisgICAgICBuZXdfdmFsdWUgPSBYTUFMTE9DIChjaGFyLCBhZGRfbGVuICsgb3JpZ192YWx1ZV9sZW4gKyAxKTsKKyAgICAgIGlmICh0b19lbmQpCisgICAgICAgIHsKKyAgICAgICAgICBzdHJjcHkgKG5ld192YWx1ZSwgb3JpZ192YWx1ZSk7CisgICAgICAgICAgc3RyY3B5IChuZXdfdmFsdWUgKyBvcmlnX3ZhbHVlX2xlbiwgYWRkKTsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgc3RyY3B5IChuZXdfdmFsdWUsIGFkZCk7CisgICAgICAgICAgc3RyY3B5IChuZXdfdmFsdWUgKyBhZGRfbGVuLCBvcmlnX3ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIG5ld192YWx1ZSA9IHhzdHJkdXAgKGFkZCk7CisgICAgfQorICByZXR1cm4gbmV3X3ZhbHVlOworfQorCitpbnQKK2x0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSkKK3sKKyAgY29uc3QgY2hhciAqcDsKKyAgaW50IGxlbjsKKyAgaWYgKCFhcmcgfHwgISphcmcpCisgICAgcmV0dXJuIDE7CisKKyAgcCA9IHN0cmNociAoYXJnLCAoaW50KSc9Jyk7CisKKyAgaWYgKCFwKQorICAgIHJldHVybiAxOworCisgICp2YWx1ZSA9IHhzdHJkdXAgKCsrcCk7CisKKyAgbGVuID0gc3RybGVuIChhcmcpIC0gc3RybGVuICgqdmFsdWUpOworICAqbmFtZSA9IFhNQUxMT0MgKGNoYXIsIGxlbik7CisgIHN0cm5jcHkgKCpuYW1lLCBhcmcsIGxlbi0xKTsKKyAgKCpuYW1lKVtsZW4gLSAxXSA9ICdcMCc7CisKKyAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK2x0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZykKK3sKKyAgY2hhciAqbmFtZSA9IE5VTEw7CisgIGNoYXIgKnZhbHVlID0gTlVMTDsKKworICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQorICAgIHsKKyAgICAgIFhGUkVFIChuYW1lKTsKKyAgICAgIFhGUkVFICh2YWx1ZSk7CisgICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfc2V0X29wdCwgYXJnKTsKKyAgICB9CisKKyAgbHRfc2V0ZW52IChuYW1lLCB2YWx1ZSk7CisgIFhGUkVFIChuYW1lKTsKKyAgWEZSRUUgKHZhbHVlKTsKK30KKwordm9pZAorbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZykKK3sKKyAgY2hhciAqbmFtZSA9IE5VTEw7CisgIGNoYXIgKnZhbHVlID0gTlVMTDsKKyAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKKworICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQorICAgIHsKKyAgICAgIFhGUkVFIChuYW1lKTsKKyAgICAgIFhGUkVFICh2YWx1ZSk7CisgICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfcHJlcGVuZF9vcHQsIGFyZyk7CisgICAgfQorCisgIG5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKKyAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOworICBYRlJFRSAobmV3X3ZhbHVlKTsKKyAgWEZSRUUgKG5hbWUpOworICBYRlJFRSAodmFsdWUpOworfQorCit2b2lkCitsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworICBjaGFyICp2YWx1ZSA9IE5VTEw7CisgIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7CisKKyAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKKyAgICB7CisgICAgICBYRlJFRSAobmFtZSk7CisgICAgICBYRlJFRSAodmFsdWUpOworICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X2FwcGVuZF9vcHQsIGFyZyk7CisgICAgfQorCisgIG5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAxKTsKKyAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOworICBYRlJFRSAobmV3X3ZhbHVlKTsKKyAgWEZSRUUgKG5hbWUpOworICBYRlJFRSAodmFsdWUpOworfQorCit2b2lkCitsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisKKyAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgIHsKKyAgICAgIGNoYXIgKm5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKKyAgICAgIC8qIHNvbWUgc3lzdGVtcyBjYW4ndCBjb3BlIHdpdGggYSAnOictdGVybWluYXRlZCBwYXRoICMnICovCisgICAgICBpbnQgbGVuID0gc3RybGVuIChuZXdfdmFsdWUpOworICAgICAgd2hpbGUgKCgobGVuID0gc3RybGVuIChuZXdfdmFsdWUpKSA+IDApICYmIElTX1BBVEhfU0VQQVJBVE9SIChuZXdfdmFsdWVbbGVuLTFdKSkKKyAgICAgICAgeworICAgICAgICAgIG5ld192YWx1ZVtsZW4tMV0gPSAnXDAnOworICAgICAgICB9CisgICAgICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7CisgICAgICBYRlJFRSAobmV3X3ZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQKK2x0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCit7CisgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKworICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgeworICAgICAgY2hhciAqbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDApOworICAgICAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOworICAgICAgWEZSRUUgKG5ld192YWx1ZSk7CisgICAgfQorfQorCisKK0VPRgorfQorIyBlbmQ6IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKKworIyBmdW5jX21vZGVfbGluayBhcmcuLi4KK2Z1bmNfbW9kZV9saW5rICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIGNhc2UgJGhvc3QgaW4KKyAgICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotY2VnY2MqKQogICAgICAgIyBJdCBpcyBpbXBvc3NpYmxlIHRvIGxpbmsgYSBkbGwgd2l0aG91dCB0aGlzIHNldHRpbmcsIGFuZAogICAgICAgIyB3ZSBzaG91bGRuJ3QgZm9yY2UgdGhlIG1ha2VmaWxlIG1haW50YWluZXIgdG8gZmlndXJlIG91dAogICAgICAgIyB3aGljaCBzeXN0ZW0gd2UgYXJlIGNvbXBpbGluZyBmb3IgaW4gb3JkZXIgdG8gcGFzcyBhbiBleHRyYQpAQCAtMTEyMSwxMCArNDA1MSwxMCBAQAogICAgICAgYWxsb3dfdW5kZWZpbmVkPXllcwogICAgICAgOzsKICAgICBlc2FjCi0gICAgbGlidG9vbF9hcmdzPSIkbm9ub3B0IgorICAgIGxpYnRvb2xfYXJncz0kbm9ub3B0CiAgICAgYmFzZV9jb21waWxlPSIkbm9ub3B0ICRAIgotICAgIGNvbXBpbGVfY29tbWFuZD0iJG5vbm9wdCIKLSAgICBmaW5hbGl6ZV9jb21tYW5kPSIkbm9ub3B0IgorICAgIGNvbXBpbGVfY29tbWFuZD0kbm9ub3B0CisgICAgZmluYWxpemVfY29tbWFuZD0kbm9ub3B0CiAKICAgICBjb21waWxlX3JwYXRoPQogICAgIGZpbmFsaXplX3JwYXRoPQpAQCAtMTEzOSw2ICs0MDY5LDcgQEAKICAgICBkbGxzZWFyY2hwYXRoPQogICAgIGxpYl9zZWFyY2hfcGF0aD1gcHdkYAogICAgIGluc3RfcHJlZml4X2Rpcj0KKyAgICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0KIAogICAgIGF2b2lkX3ZlcnNpb249bm8KICAgICBkbGZpbGVzPQpAQCAtMTE1NCw3ICs0MDg1LDYgQEAKICAgICBub19pbnN0YWxsPW5vCiAgICAgb2Jqcz0KICAgICBub25fcGljX29iamVjdHM9Ci0gICAgbm90aW5zdF9wYXRoPSAjIHBhdGhzIHRoYXQgY29udGFpbiBub3QtaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCiAgICAgcHJlY2lvdXNfZmlsZXNfcmVnZXg9CiAgICAgcHJlZmVyX3N0YXRpY19saWJzPW5vCiAgICAgcHJlbG9hZD1ubwpAQCAtMTE2OCwxOSArNDA5OCwyNSBAQAogICAgIHRocmVhZF9zYWZlPW5vCiAgICAgdmluZm89CiAgICAgdmluZm9fbnVtYmVyPW5vCisgICAgd2Vha19saWJzPQogICAgIHNpbmdsZV9tb2R1bGU9IiR7d2x9LXNpbmdsZV9tb2R1bGUiCi0KICAgICBmdW5jX2luZmVyX3RhZyAkYmFzZV9jb21waWxlCiAKICAgICAjIFdlIG5lZWQgdG8ga25vdyAtc3RhdGljLCB0byBnZXQgdGhlIHJpZ2h0IG91dHB1dCBmaWxlbmFtZXMuCiAgICAgZm9yIGFyZwogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KKyAgICAgIC1zaGFyZWQpCisJdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIFwKKwkgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiY2FuIG5vdCBidWlsZCBhIHNoYXJlZCBsaWJyYXJ5IgorCWJ1aWxkX29sZF9saWJzPW5vCisJYnJlYWsKKwk7OwogICAgICAgLWFsbC1zdGF0aWMgfCAtc3RhdGljIHwgLXN0YXRpYy1saWJ0b29sLWxpYnMpCiAJY2FzZSAkYXJnIGluCiAJLWFsbC1zdGF0aWMpCiAJICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0IC16ICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY29tcGxldGUgc3RhdGljIGxpbmtpbmcgaXMgaW1wb3NzaWJsZSBpbiB0aGlzIGNvbmZpZ3VyYXRpb24iIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJjb21wbGV0ZSBzdGF0aWMgbGlua2luZyBpcyBpbXBvc3NpYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbiIKIAkgIGZpCiAJICBpZiB0ZXN0IC1uICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KIAkgICAgZGxvcGVuX3NlbGY9JGRsb3Blbl9zZWxmX3N0YXRpYwpAQCAtMTIxNCwyMCArNDE1MCwxNiBAQAogICAgIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KICAgICAgIGFyZz0iJDEiCiAgICAgICBzaGlmdAotICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlxYXJnPVwiYCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgXCIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0Ci0JOzsKLSAgICAgICopIHFhcmc9JGFyZyA7OwotICAgICAgZXNhYwotICAgICAgbGlidG9vbF9hcmdzPSIkbGlidG9vbF9hcmdzICRxYXJnIgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAgICAgIHFhcmc9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0CisgICAgICBmdW5jX2FwcGVuZCBsaWJ0b29sX2FyZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAKICAgICAgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgogICAgICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCiAJY2FzZSAkcHJldiBpbgogCW91dHB1dCkKLQkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBAT1VUUFVUQCIKLQkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kIEBPVVRQVVRAIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgQE9VVFBVVEAiCisJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgQE9VVFBVVEAiCiAJICA7OwogCWVzYWMKIApAQCAtMTIzNSw4ICs0MTY3LDggQEAKIAlkbGZpbGVzfGRscHJlZmlsZXMpCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgotCSAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgQFNZTUZJTEVAIgotCSAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCBAU1lNRklMRUAiCisJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiIEBTWU1GSUxFQCIKKwkgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiIEBTWU1GSUxFQCIKIAkgICAgcHJlbG9hZD15ZXMKIAkgIGZpCiAJICBjYXNlICRhcmcgaW4KQEAgLTEyNzQsMTAgKzQyMDYsOCBAQAogCSAgOzsKIAlleHBzeW1zKQogCSAgZXhwb3J0X3N5bWJvbHM9IiRhcmciCi0JICBpZiB0ZXN0ICEgLWYgIiRhcmciOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHN5bWJvbCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgZmkKKwkgIHRlc3QgLWYgIiRhcmciIFwKKwkgICAgfHwgZnVuY19mYXRhbF9lcnJvciAic3ltYm9sIGZpbGUgXGAkYXJnJyBkb2VzIG5vdCBleGlzdCIKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKQEAgLTEyODYsNTggKzQyMTYsNTIgQEAKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKKwlmcmFtZXdvcmspCisJICBjYXNlICRob3N0IGluCisJICAgICotKi1kYXJ3aW4qKQorCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KKwkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7CisJCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKwkJICAgOzsKKwkgICAgICBlc2FjCisJICAgICAgOzsKKwkgIGVzYWMKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKIAlpbnN0X3ByZWZpeCkKIAkgIGluc3RfcHJlZml4X2Rpcj0iJGFyZyIKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKLQlwcmVjaW91c19yZWdleCkKLQkgIHByZWNpb3VzX2ZpbGVzX3JlZ2V4PSIkYXJnIgotCSAgcHJldj0KLQkgIGNvbnRpbnVlCi0JICA7OwotCXJlbGVhc2UpCi0JICByZWxlYXNlPSItJGFyZyIKLQkgIHByZXY9Ci0JICBjb250aW51ZQotCSAgOzsKIAlvYmplY3RsaXN0KQogCSAgaWYgdGVzdCAtZiAiJGFyZyI7IHRoZW4KIAkgICAgc2F2ZV9hcmc9JGFyZwogCSAgICBtb3JlYXJncz0KLQkgICAgZm9yIGZpbCBpbiBgY2F0ICRzYXZlX2FyZ2AKKwkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAogCSAgICBkbwogIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCiAJICAgICAgYXJnPSRmaWwKIAkgICAgICAjIEEgbGlidG9vbC1jb250cm9sbGVkIG9iamVjdC4KIAogCSAgICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIG9iamVjdC4KLQkgICAgICBpZiAoJHtTRUR9IC1lICcycScgJGFyZyB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICAgaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJGFyZyI7IHRoZW4KIAkJcGljX29iamVjdD0KIAkJbm9uX3BpY19vYmplY3Q9CiAKIAkJIyBSZWFkIHRoZSAubG8gZmlsZQotCQkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkJY2FzZSAkYXJnIGluCi0JCSovKiB8ICpcXCopIC4gJGFyZyA7OwotCQkqKSAuIC4vJGFyZyA7OwotCQllc2FjCisJCWZ1bmNfc291cmNlICIkYXJnIgogCi0JCWlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCBcCisJCWlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fAogCQkgICB0ZXN0IC16ICIkbm9uX3BpY19vYmplY3QiIHx8Ci0JCSAgIHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgJiYgXAorCQkgICB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lICYmCiAJCSAgIHRlc3QgIiRub25fcGljX29iamVjdCIgPSBub25lOyB0aGVuCi0JCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciIDE+JjIKLQkJICBleGl0ICRFWElUX0ZBSUxVUkUKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIG9iamVjdCBmb3IgXGAkYXJnJyIKIAkJZmkKIAogCQkjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotCQl4ZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkJaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJGFyZyI7IHRoZW4KLQkJICB4ZGlyPQotCQllbHNlCi0JCSAgeGRpcj0iJHhkaXIvIgotCQlmaQorCQlmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCQl4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCQlpZiB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgogCQkgICMgUHJlcGVuZCB0aGUgc3ViZGlyZWN0b3J5IHRoZSBvYmplY3QgaXMgZm91bmQgaW4uCkBAIC0xMzYyLDcgKzQyODYsNyBAQAogCQkgIGZpCiAKIAkJICAjIEEgUElDIG9iamVjdC4KLQkJICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKKwkJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCiAJCSAgYXJnPSIkcGljX29iamVjdCIKIAkJZmkKIApAQCAtMTM3Miw3ICs0Mjk2LDcgQEAKIAkJICBub25fcGljX29iamVjdD0iJHhkaXIkbm9uX3BpY19vYmplY3QiCiAKIAkJICAjIEEgc3RhbmRhcmQgbm9uLVBJQyBvYmplY3QKLQkJICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCQkgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKIAkJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSA7IHRoZW4KIAkJICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgogCQkgIGZpCkBAIC0xMzgwLDQ2ICs0MzA0LDQ4IEBACiAJCSAgIyBJZiB0aGUgUElDIG9iamVjdCBleGlzdHMsIHVzZSBpdCBpbnN0ZWFkLgogCQkgICMgJHhkaXIgd2FzIHByZXBlbmRlZCB0byAkcGljX29iamVjdCBhYm92ZS4KIAkJICBub25fcGljX29iamVjdD0iJHBpY19vYmplY3QiCi0JCSAgbm9uX3BpY19vYmplY3RzPSIkbm9uX3BpY19vYmplY3RzICRub25fcGljX29iamVjdCIKKwkJICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJCWZpCiAJICAgICAgZWxzZQogCQkjIE9ubHkgYW4gZXJyb3IgaWYgbm90IGRvaW5nIGEgZHJ5LXJ1bi4KLQkJaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KLQkJICAkZWNobyAiJG1vZGVuYW1lOiBcYCRhcmcnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgb2JqZWN0IiAxPiYyCi0JCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JCWVsc2UKLQkJICAjIERyeS1ydW4gY2FzZS4KLQorCQlpZiAkb3B0X2RyeV9ydW47IHRoZW4KIAkJICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotCQkgIHhkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotCQkgIGlmIHRlc3QgIlgkeGRpciIgPSAiWCRhcmciOyB0aGVuCi0JCSAgICB4ZGlyPQotCQkgIGVsc2UKLQkJICAgIHhkaXI9IiR4ZGlyLyIKLQkJICBmaQorCQkgIGZ1bmNfZGlybmFtZSAiJGFyZyIgIi8iICIiCisJCSAgeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKLQkJICBwaWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke29iamRpcn0vJHthcmd9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi0JCSAgbm9uX3BpY19vYmplY3Q9YCRlY2hvICJYJHt4ZGlyfSR7YXJnfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCQkgIGxpYm9ianM9IiRsaWJvYmpzICRwaWNfb2JqZWN0IgotCQkgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJCSAgZnVuY19sbzJvICIkYXJnIgorCQkgIHBpY19vYmplY3Q9JHhkaXIkb2JqZGlyLyRmdW5jX2xvMm9fcmVzdWx0CisJCSAgbm9uX3BpY19vYmplY3Q9JHhkaXIkZnVuY19sbzJvX3Jlc3VsdAorCQkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkcGljX29iamVjdCIKKwkJICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCisJICAgICAgICBlbHNlCisJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIKIAkJZmkKIAkgICAgICBmaQogCSAgICBkb25lCiAJICBlbHNlCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGxpbmsgaW5wdXQgZmlsZSBcYCRzYXZlX2FyZycgZG9lcyBub3QgZXhpc3QiCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJsaW5rIGlucHV0IGZpbGUgXGAkYXJnJyBkb2VzIG5vdCBleGlzdCIKIAkgIGZpCiAJICBhcmc9JHNhdmVfYXJnCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CisJcHJlY2lvdXNfcmVnZXgpCisJICBwcmVjaW91c19maWxlc19yZWdleD0iJGFyZyIKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKKwlyZWxlYXNlKQorCSAgcmVsZWFzZT0iLSRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CiAJcnBhdGggfCB4cnBhdGgpCiAJICAjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAkgIGNhc2UgJGFyZyBpbgogCSAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwogCSAgKikKLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogb25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgogCSAgICA7OwogCSAgZXNhYwogCSAgaWYgdGVzdCAiJHByZXYiID0gcnBhdGg7IHRoZW4KQEAgLTE0MzYsMzkgKzQzNjIsMzcgQEAKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKLQl4Y29tcGlsZXIpCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCXNocmV4dCkKKwkgIHNocmV4dF9jbWRzPSIkYXJnIgogCSAgcHJldj0KLQkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkcWFyZyIKLQkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7Ci0JeGxpbmtlcikKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCisJd2VhaykKKwkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgogCSAgcHJldj0KLQkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkd2wkcWFyZyIKLQkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR3bCRxYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAJeGNjbGlua2VyKQogCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgogCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKIAkgIHByZXY9Ci0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHFhcmciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7Ci0Jc2hyZXh0KQotICAJICBzaHJleHRfY21kcz0iJGFyZyIKKwl4Y29tcGlsZXIpCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgogCSAgcHJldj0KKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7Ci0JZGFyd2luX2ZyYW1ld29ya3xkYXJ3aW5fZnJhbWV3b3JrX3NraXApCi0JICB0ZXN0ICIkcHJldiIgPSAiZGFyd2luX2ZyYW1ld29yayIgJiYgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorCXhsaW5rZXIpCisJICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgogCSAgcHJldj0KKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAJKikKQEAgLTE0ODQsMTYgKzQ0MDgsMTYgQEAKICAgICAgIGNhc2UgJGFyZyBpbgogICAgICAgLWFsbC1zdGF0aWMpCiAJaWYgdGVzdCAtbiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCi0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGxpbmtfc3RhdGljX2ZsYWciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkbGlua19zdGF0aWNfZmxhZyIKKwkgICMgU2VlIGNvbW1lbnQgZm9yIC1zdGF0aWMgZmxhZyBiZWxvdywgZm9yIG1vcmUgZGV0YWlscy4KKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRsaW5rX3N0YXRpY19mbGFnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRsaW5rX3N0YXRpY19mbGFnIgogCWZpCiAJY29udGludWUKIAk7OwogCiAgICAgICAtYWxsb3ctdW5kZWZpbmVkKQogCSMgRklYTUU6IHJlbW92ZSB0aGlzIGZsYWcgc29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KLQkkZWNobyAiJG1vZGVuYW1lOiBcYC1hbGxvdy11bmRlZmluZWQnIGlzIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCIgMT4mMgotCWNvbnRpbnVlCisJZnVuY19mYXRhbF9lcnJvciAiXGAtYWxsb3ctdW5kZWZpbmVkJyBtdXN0IG5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQiCiAJOzsKIAogICAgICAgLWF2b2lkLXZlcnNpb24pCkBAIC0xNTE4LDggKzQ0NDIsNyBAQAogCiAgICAgICAtZXhwb3J0LXN5bWJvbHMgfCAtZXhwb3J0LXN5bWJvbHMtcmVnZXgpCiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiB8fCB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiBtb3JlIHRoYW4gb25lIC1leHBvcnRlZC1zeW1ib2xzIGFyZ3VtZW50IGlzIG5vdCBhbGxvd2VkIgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2ZhdGFsX2Vycm9yICJtb3JlIHRoYW4gb25lIC1leHBvcnRlZC1zeW1ib2xzIGFyZ3VtZW50IGlzIG5vdCBhbGxvd2VkIgogCWZpCiAJaWYgdGVzdCAiWCRhcmciID0gIlgtZXhwb3J0LXN5bWJvbHMiOyB0aGVuCiAJICBwcmV2PWV4cHN5bXMKQEAgLTE1MjksMTUgKzQ0NTIsOCBAQAogCWNvbnRpbnVlCiAJOzsKIAotICAgICAgLWZyYW1ld29ya3wtYXJjaHwtaXN5c3Jvb3QpCi0JY2FzZSAiICRDQyAiIGluCi0JICAqIiAke2FyZ30gJHsxfSAiKiB8ICoiICR7YXJnfQkkezF9ICIqKSAKLQkJcHJldj1kYXJ3aW5fZnJhbWV3b3JrX3NraXAgOzsKLQkgICopIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLQkgICAgIHByZXY9ZGFyd2luX2ZyYW1ld29yayA7OwotCWVzYWMKLQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQlmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorICAgICAgLWZyYW1ld29yaykKKwlwcmV2PWZyYW1ld29yawogCWNvbnRpbnVlCiAJOzsKIApAQCAtMTU1MSwyNSArNDQ2NywzMCBAQAogICAgICAgLUxbQS1aXVtBLVpdKjoqKQogCWNhc2UgJHdpdGhfZ2NjLyRob3N0IGluCiAJbm8vKi0qLWlyaXgqIHwgLyotKi1pcml4KikKLQkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYXJnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAkgIDs7CiAJZXNhYwogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgLUwqKQotCWRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzL14tTC8vJ2AKKwlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgorCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KKwkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgorCSAgZWxzZQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKKwkgIGZpCisJZmkKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRkaXIgaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CiAJKikKIAkgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKLQkgIGlmIHRlc3QgLXogIiRhYnNkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkZGlyJyIgMT4mMgotCSAgICBhYnNkaXI9IiRkaXIiCi0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkZGlyIgotCSAgZmkKKwkgIHRlc3QgLXogIiRhYnNkaXIiICYmIFwKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIgogCSAgZGlyPSIkYWJzZGlyIgogCSAgOzsKIAllc2FjCkBAIC0xNTgxLDE0ICs0NTAyLDE2IEBACiAJICA7OwogCWVzYWMKIAljYXNlICRob3N0IGluCi0JKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiopCi0JICB0ZXN0YmluZGlyPWAkZWNobyAiWCRkaXIiIHwgJFhzZWQgLWUgJ3MqL2xpYiQqL2JpbionYAorCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi1jZWdjYyopCisJICB0ZXN0YmluZGlyPWAkRUNITyAiWCRkaXIiIHwgJFhzZWQgLWUgJ3MqL2xpYiQqL2JpbionYAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokZGlyOiIqKSA7OworCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7CiAJICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwogCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CkBAIC0xNTk5LDcgKzQ1MjIsNyBAQAogICAgICAgLWwqKQogCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiB8fCB0ZXN0ICJYJGFyZyIgPSAiWC1sbSI7IHRoZW4KIAkgIGNhc2UgJGhvc3QgaW4KLQkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1iZW9zKikKKwkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQogCSAgICAjIFRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIEMgb3IgbWF0aCBsaWJyYXJ5IChhcyBzdWNoKQogCSAgICBjb250aW51ZQogCSAgICA7OwpAQCAtMTYxMyw3ICs0NTM2LDcgQEAKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgLWZyYW1ld29yayBTeXN0ZW0iCisJICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKIAkgICAgY29udGludWUKIAkgICAgOzsKIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKQEAgLTE2MzcsNjMgKzQ1NjAsMzUgQEAKIAljb250aW51ZQogCTs7CiAKLSAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKLSAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KLSAgICAgIC1tb2RlbCkKLQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0JZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKLQlwcmV2PXhjb21waWxlcgotCWNvbnRpbnVlCi0JOzsKLQotICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQotCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQlmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgotCWNvbnRpbnVlCi0JOzsKLQotICAgICAgLW11bHRpX21vZHVsZSkKLQlzaW5nbGVfbW9kdWxlPSIke3dsfS1tdWx0aV9tb2R1bGUiCi0JY29udGludWUKLQk7OwotCiAgICAgICAtbW9kdWxlKQogCW1vZHVsZT15ZXMKIAljb250aW51ZQogCTs7CiAKLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCi0gICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgotICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKLSAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0gICAgICAjIC1tKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQwotICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKLSAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAotICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqKQorICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKworICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgorICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCisJY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisJcHJldj14Y29tcGlsZXIKKwljb250aW51ZQorCTs7CiAKLQkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKLQkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQljYXNlICRhcmcgaW4KLQkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgIGFyZz0iXCIkYXJnXCIiCi0JICA7OworICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKwljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKwlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKwljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorCSAgICAqIiAkYXJnICIqKSA7OworCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OwogCWVzYWMKLSAgICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0gICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSAgICAgICAgY29udGludWUKLSAgICAgICAgOzsKKwljb250aW51ZQorCTs7CiAKLSAgICAgIC1zaHJleHQpCi0JcHJldj1zaHJleHQKKyAgICAgIC1tdWx0aV9tb2R1bGUpCisJc2luZ2xlX21vZHVsZT0iJHt3bH0tbXVsdGlfbW9kdWxlIgogCWNvbnRpbnVlCiAJOzsKIApAQCAtMTcwNCwxMSArNDU5OSwxMSBAQAogCiAgICAgICAtbm8taW5zdGFsbCkKIAljYXNlICRob3N0IGluCi0JKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotZGFyd2luKikKKwkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1kYXJ3aW4qIHwgKi1jZWdjYyopCiAJICAjIFRoZSBQQVRIIGhhY2tlcnkgaW4gd3JhcHBlciBzY3JpcHRzIGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MKIAkgICMgYW5kIERhcndpbiBpbiBvcmRlciBmb3IgdGhlIGxvYWRlciB0byBmaW5kIGFueSBkbGxzIGl0IG5lZWRzLgotCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtbm8taW5zdGFsbCcgaXMgaWdub3JlZCBmb3IgJGhvc3QiIDE+JjIKLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGFzc3VtaW5nIFxgLW5vLWZhc3QtaW5zdGFsbCcgaW5zdGVhZCIgMT4mMgorCSAgZnVuY193YXJuaW5nICJcYC1uby1pbnN0YWxsJyBpcyBpZ25vcmVkIGZvciAkaG9zdCIKKwkgIGZ1bmNfd2FybmluZyAiYXNzdW1pbmcgXGAtbm8tZmFzdC1pbnN0YWxsJyBpbnN0ZWFkIgogCSAgZmFzdF9pbnN0YWxsPW5vCiAJICA7OwogCSopIG5vX2luc3RhbGw9eWVzIDs7CkBAIC0xNzQ5LDEzICs0NjQ0LDEzIEBACiAJOzsKIAogICAgICAgLVIqKQotCWRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzL14tUi8vJ2AKKwlmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkYXJnIgorCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiR4cnBhdGggIiBpbgpAQCAtMTc2NSw2ICs0NjYwLDE2IEBACiAJY29udGludWUKIAk7OwogCisgICAgICAtc2hhcmVkKQorCSMgVGhlIGVmZmVjdHMgb2YgLXNoYXJlZCBhcmUgZGVmaW5lZCBpbiBhIHByZXZpb3VzIGxvb3AuCisJY29udGludWUKKwk7OworCisgICAgICAtc2hyZXh0KQorCXByZXY9c2hyZXh0CisJY29udGludWUKKwk7OworCiAgICAgICAtc3RhdGljIHwgLXN0YXRpYy1saWJ0b29sLWxpYnMpCiAJIyBUaGUgZWZmZWN0cyBvZiAtc3RhdGljIGFyZSBkZWZpbmVkIGluIGEgcHJldmlvdXMgbG9vcC4KIAkjIFdlIHVzZWQgdG8gZG8gdGhlIHNhbWUgYXMgLWFsbC1zdGF0aWMgb24gcGxhdGZvcm1zIHRoYXQKQEAgLTE3ODMsNDcgKzQ2ODgsNDkgQEAKIAlwcmV2PXZpbmZvCiAJY29udGludWUKIAk7OworCiAgICAgICAtdmVyc2lvbi1udW1iZXIpCiAJcHJldj12aW5mbwogCXZpbmZvX251bWJlcj15ZXMKIAljb250aW51ZQogCTs7CiAKKyAgICAgIC13ZWFrKQorICAgICAgICBwcmV2PXdlYWsKKwljb250aW51ZQorCTs7CisKICAgICAgIC1XYywqKQotCWFyZ3M9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCIgLWUgJ3MvXi1XYywvLydgCisJZnVuY19zdHJpcG5hbWUgJy1XYywnICcnICIkYXJnIgorCWFyZ3M9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCWFyZz0KIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgotCSAgY2FzZSAkZmxhZyBpbgotCSAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgZmxhZz0iXCIkZmxhZ1wiIgotCSAgICA7OwotCSAgZXNhYwotCSAgYXJnPSIkYXJnICR3bCRmbGFnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZmxhZyIKKyAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKKwkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCi0JYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgInMvXiAvLyJgCisJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgorCWFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJOzsKIAogICAgICAgLVdsLCopCi0JYXJncz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0IiAtZSAncy9eLVdsLC8vJ2AKKwlmdW5jX3N0cmlwbmFtZSAnLVdsLCcgJycgIiRhcmciCisJYXJncz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJYXJnPQogCXNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCi0JICBjYXNlICRmbGFnIGluCi0JICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCSAgICBmbGFnPSJcIiRmbGFnXCIiCi0JICAgIDs7Ci0JICBlc2FjCi0JICBhcmc9IiRhcmcgJHdsJGZsYWciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmbGFnIgotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCi0JYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgInMvXiAvLyJgCisJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgorCWFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJOzsKIAogICAgICAgLVhjb21waWxlcikKQEAgLTE4NDEsMTYgKzQ3NDgsMzYgQEAKIAljb250aW51ZQogCTs7CiAKKyAgICAgICMgLW1zZ18qIGZvciBvc2YgY2MKKyAgICAgIC1tc2dfKikKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCTs7CisKKyAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgorICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKKyAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKKyAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCisgICAgICAjIC1GL3BhdGggZ2l2ZXMgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCisgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCisgICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcworICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCisgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCopCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAgIGNvbnRpbnVlCisgICAgICAgIDs7CisKICAgICAgICMgU29tZSBvdGhlciBjb21waWxlciBmbGFnLgogICAgICAgLSogfCArKikKLQkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKLQkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQljYXNlICRhcmcgaW4KLQkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgIGFyZz0iXCIkYXJnXCIiCi0JICA7OwotCWVzYWMKKyAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAk7OwogCiAgICAgICAqLiRvYmpleHQpCkBAIC0xODYyLDMyICs0Nzg5LDIzIEBACiAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBvYmplY3QuCi0JaWYgKCR7U0VEfSAtZSAnMnEnICRhcmcgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRhcmciOyB0aGVuCiAJICBwaWNfb2JqZWN0PQogCSAgbm9uX3BpY19vYmplY3Q9CiAKIAkgICMgUmVhZCB0aGUgLmxvIGZpbGUKLQkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgotCSAgY2FzZSAkYXJnIGluCi0JICAqLyogfCAqXFwqKSAuICRhcmcgOzsKLQkgICopIC4gLi8kYXJnIDs7Ci0JICBlc2FjCisJICBmdW5jX3NvdXJjZSAiJGFyZyIKIAotCSAgaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IFwKKwkgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fAogCSAgICAgdGVzdCAteiAiJG5vbl9waWNfb2JqZWN0IiB8fAotCSAgICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJiBcCisJICAgICB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lICYmCiAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiID0gbm9uZTsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZmluZCBuYW1lIG9mIG9iamVjdCBmb3IgXGAkYXJnJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciCiAJICBmaQogCiAJICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotCSAgeGRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JICBpZiB0ZXN0ICJYJHhkaXIiID0gIlgkYXJnIjsgdGhlbgotCSAgICB4ZGlyPQotIAkgIGVsc2UKLQkgICAgeGRpcj0iJHhkaXIvIgotCSAgZmkKKwkgIGZ1bmNfZGlybmFtZSAiJGFyZyIgIi8iICIiCisJICB4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCSAgaWYgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KIAkgICAgIyBQcmVwZW5kIHRoZSBzdWJkaXJlY3RvcnkgdGhlIG9iamVjdCBpcyBmb3VuZCBpbi4KQEAgLTE5MTIsNyArNDgzMCw3IEBACiAJICAgIGZpCiAKIAkgICAgIyBBIFBJQyBvYmplY3QuCi0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRwaWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCiAJICAgIGFyZz0iJHBpY19vYmplY3QiCiAJICBmaQogCkBAIC0xOTIyLDcgKzQ4NDAsNyBAQAogCSAgICBub25fcGljX29iamVjdD0iJHhkaXIkbm9uX3BpY19vYmplY3QiCiAKIAkgICAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0Ci0JICAgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKIAkgICAgaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgOyB0aGVuCiAJICAgICAgYXJnPSIkbm9uX3BpY19vYmplY3QiCiAJICAgIGZpCkBAIC0xOTMwLDI4ICs0ODQ4LDIyIEBACiAJICAgICMgSWYgdGhlIFBJQyBvYmplY3QgZXhpc3RzLCB1c2UgaXQgaW5zdGVhZC4KIAkgICAgIyAkeGRpciB3YXMgcHJlcGVuZGVkIHRvICRwaWNfb2JqZWN0IGFib3ZlLgogCSAgICBub25fcGljX29iamVjdD0iJHBpY19vYmplY3QiCi0JICAgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKIAkgIGZpCiAJZWxzZQogCSAgIyBPbmx5IGFuIGVycm9yIGlmIG5vdCBkb2luZyBhIGRyeS1ydW4uCi0JICBpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBcYCRhcmcnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgb2JqZWN0IiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgZWxzZQotCSAgICAjIERyeS1ydW4gY2FzZS4KLQorCSAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCiAJICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0JICAgIHhkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotCSAgICBpZiB0ZXN0ICJYJHhkaXIiID0gIlgkYXJnIjsgdGhlbgotCSAgICAgIHhkaXI9Ci0JICAgIGVsc2UKLQkgICAgICB4ZGlyPSIkeGRpci8iCi0JICAgIGZpCisJICAgIGZ1bmNfZGlybmFtZSAiJGFyZyIgIi8iICIiCisJICAgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCi0JICAgIHBpY19vYmplY3Q9YCRlY2hvICJYJHt4ZGlyfSR7b2JqZGlyfS8ke2FyZ30iIHwgJFhzZWQgLWUgIiRsbzJvImAKLQkgICAgbm9uX3BpY19vYmplY3Q9YCRlY2hvICJYJHt4ZGlyfSR7YXJnfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKLQkgICAgbm9uX3BpY19vYmplY3RzPSIkbm9uX3BpY19vYmplY3RzICRub25fcGljX29iamVjdCIKKwkgICAgZnVuY19sbzJvICIkYXJnIgorCSAgICBwaWNfb2JqZWN0PSR4ZGlyJG9iamRpci8kZnVuY19sbzJvX3Jlc3VsdAorCSAgICBub25fcGljX29iamVjdD0keGRpciRmdW5jX2xvMm9fcmVzdWx0CisJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgorCSAgZWxzZQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRhcmcnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgb2JqZWN0IgogCSAgZmkKIAlmaQogCTs7CkBAIC0xOTg0LDcwICs0ODk2LDUxIEBACiAgICAgICAqKQogCSMgVW5rbm93biBhcmd1bWVudHMgaW4gYm90aCBmaW5hbGl6ZV9jb21tYW5kIGFuZCBjb21waWxlX2NvbW1hbmQgbmVlZAogCSMgdG8gYmUgYWVzdGhldGljYWxseSBxdW90ZWQgYmVjYXVzZSB0aGV5IGFyZSBldmFsZWQgbGF0ZXIuCi0JYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotCWNhc2UgJGFyZyBpbgotCSpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCSAgYXJnPSJcIiRhcmdcIiIKLQkgIDs7Ci0JZXNhYworCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJOzsKICAgICAgIGVzYWMgIyBhcmcKIAogICAgICAgIyBOb3cgYWN0dWFsbHkgc3Vic3RpdHV0ZSB0aGUgYXJndW1lbnQgaW50byB0aGUgY29tbWFuZHMuCiAgICAgICBpZiB0ZXN0IC1uICIkYXJnIjsgdGhlbgotCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYXJnIgotCWZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCisJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKwlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKICAgICAgIGZpCiAgICAgZG9uZSAjIGFyZ3VtZW50IHBhcnNpbmcgbG9vcAogCi0gICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiAxPiYyCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCisgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAogICAgIGlmIHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXMgJiYgdGVzdCAtbiAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyI7IHRoZW4KICAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCi0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCisgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAgICAgZmkKIAogICAgIG9sZGxpYnM9CiAgICAgIyBjYWxjdWxhdGUgdGhlIG5hbWUgb2YgdGhlIGZpbGUsIHdpdGhvdXQgaXRzIGRpcmVjdG9yeQotICAgIG91dHB1dG5hbWU9YCRlY2hvICJYJG91dHB1dCIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorICAgIGZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisgICAgb3V0cHV0bmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogICAgIGxpYm9ianNfc2F2ZT0iJGxpYm9ianMiCiAKICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KICAgICAgICMgZ2V0IHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJHNobGlicGF0aF92YXIKLSAgICAgIGV2YWwgc2hsaWJfc2VhcmNoX3BhdGg9XGBcJGVjaG8gXCJYXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRYc2VkIC1lIFwncy86LyAvZ1wnXGAKKyAgICAgIGV2YWwgc2hsaWJfc2VhcmNoX3BhdGg9XGBcJEVDSE8gXCJYXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRYc2VkIC1lIFwncy86LyAvZ1wnXGAKICAgICBlbHNlCiAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KICAgICBmaQogICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgogICAgIGV2YWwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIKIAotICAgIG91dHB1dF9vYmpkaXI9YCRlY2hvICJYJG91dHB1dCIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotICAgIGlmIHRlc3QgIlgkb3V0cHV0X29iamRpciIgPSAiWCRvdXRwdXQiOyB0aGVuCi0gICAgICBvdXRwdXRfb2JqZGlyPSIkb2JqZGlyIgotICAgIGVsc2UKLSAgICAgIG91dHB1dF9vYmpkaXI9IiRvdXRwdXRfb2JqZGlyLyRvYmpkaXIiCi0gICAgZmkKKyAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgorICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KLSAgICBpZiB0ZXN0ICEgLWQgIiRvdXRwdXRfb2JqZGlyIjsgdGhlbgotICAgICAgJHNob3cgIiRta2RpciAkb3V0cHV0X29iamRpciIKLSAgICAgICRydW4gJG1rZGlyICRvdXRwdXRfb2JqZGlyCi0gICAgICBleGl0X3N0YXR1cz0kPwotICAgICAgaWYgdGVzdCAiJGV4aXRfc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiRvdXRwdXRfb2JqZGlyIjsgdGhlbgotCWV4aXQgJGV4aXRfc3RhdHVzCi0gICAgICBmaQotICAgIGZpCisgICAgZnVuY19ta2Rpcl9wICIkb3V0cHV0X29iamRpciIKIAogICAgICMgRGV0ZXJtaW5lIHRoZSB0eXBlIG9mIG91dHB1dAogICAgIGNhc2UgJG91dHB1dCBpbgogICAgICIiKQotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQgZmlsZSIKICAgICAgIDs7CiAgICAgKi4kbGliZXh0KSBsaW5rbW9kZT1vbGRsaWIgOzsKICAgICAqLmxvIHwgKi4kb2JqZXh0KSBsaW5rbW9kZT1vYmogOzsKQEAgLTIwNTUsMjIgKzQ5NDgsMTMgQEAKICAgICAqKSBsaW5rbW9kZT1wcm9nIDs7ICMgQW55dGhpbmcgZWxzZSBzaG91bGQgYmUgYSBwcm9ncmFtLgogICAgIGVzYWMKIAotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiopCi0gICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcwotICAgICAgZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPXllcwotICAgICAgOzsKLSAgICAqKQotICAgICAgZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRkdXBsaWNhdGVfZGVwcwotICAgICAgOzsKLSAgICBlc2FjCiAgICAgc3BlY2lhbGRlcGxpYnM9CiAKICAgICBsaWJzPQogICAgICMgRmluZCBhbGwgaW50ZXJkZXBlbmRlbnQgZGVwbGlicyBieSBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcwogICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQogICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0gICAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKyAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCiAJY2FzZSAiJGxpYnMgIiBpbgogCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKIAllc2FjCkBAIC0yMDg1LDcgKzQ5NjksNyBAQAogICAgICAgIyAkcG9zdGRlcHMgYW5kIG1hcmsgdGhlbSBhcyBzcGVjaWFsIChpLmUuLCB3aG9zZSBkdXBsaWNhdGVzIGFyZQogICAgICAgIyBub3QgdG8gYmUgZWxpbWluYXRlZCkuCiAgICAgICBwcmVfcG9zdF9kZXBzPQotICAgICAgaWYgdGVzdCAiWCRkdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHMiID0gIlh5ZXMiIDsgdGhlbgorICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KIAkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7CkBAIC0yMTAxLDE1ICs0OTg1LDE2IEBACiAgICAgbmV3bGliX3NlYXJjaF9wYXRoPQogICAgIG5lZWRfcmVsaW5rPW5vICMgd2hldGhlciB3ZSdyZSBsaW5raW5nIGFueSB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcwogICAgIG5vdGluc3RfZGVwbGlicz0gIyBub3QtaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCisgICAgbm90aW5zdF9wYXRoPSAjIHBhdGhzIHRoYXQgY29udGFpbiBub3QtaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCisKICAgICBjYXNlICRsaW5rbW9kZSBpbgogICAgIGxpYikKLQlwYXNzZXM9ImNvbnYgbGluayIKKwlwYXNzZXM9ImNvbnYgZGxwcmVvcGVuIGxpbmsiCiAJZm9yIGZpbGUgaW4gJGRsZmlsZXMgJGRscHJlZmlsZXM7IGRvCiAJICBjYXNlICRmaWxlIGluCiAJICAqLmxhKSA7OwogCSAgKikKLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogbGlicmFyaWVzIGNhbiBcYC1kbG9wZW4nIG9ubHkgbGlidG9vbCBsaWJyYXJpZXM6ICRmaWxlIiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2hlbHAgImxpYnJhcmllcyBjYW4gXGAtZGxvcGVuJyBvbmx5IGxpYnRvb2wgbGlicmFyaWVzOiAkZmlsZSIKIAkgICAgOzsKIAkgIGVzYWMKIAlkb25lCkBAIC0yMTI1LDcgKzUwMTAsMjAgQEAKICAgICAqKSAgcGFzc2VzPSJjb252IgogCTs7CiAgICAgZXNhYworCiAgICAgZm9yIHBhc3MgaW4gJHBhc3NlczsgZG8KKyAgICAgICMgVGhlIHByZW9wZW4gcGFzcyBpbiBsaWIgbW9kZSByZXZlcnNlcyAkZGVwbGliczsgcHV0IGl0IGJhY2sgaGVyZQorICAgICAgIyBzbyB0aGF0IC1MIGNvbWVzIGJlZm9yZSBsaWJzIHRoYXQgbmVlZCBpdCBmb3IgaW5zdGFuY2UuLi4KKyAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiOyB0aGVuCisJIyMgRklYTUU6IEZpbmQgdGhlIHBsYWNlIHdoZXJlIHRoZSBsaXN0IGlzIHJlYnVpbHQgaW4gdGhlIHdyb25nCisJIyMgICAgICAgIG9yZGVyLCBhbmQgZml4IGl0IHRoZXJlIHByb3Blcmx5CisgICAgICAgIHRtcF9kZXBsaWJzPQorCWZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCisJICB0bXBfZGVwbGlicz0iJGRlcGxpYiAkdG1wX2RlcGxpYnMiCisJZG9uZQorCWRlcGxpYnM9IiR0bXBfZGVwbGlicyIKKyAgICAgIGZpCisKICAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CiAJIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIjsgdGhlbgogCWxpYnM9IiRkZXBsaWJzIgpAQCAtMjEzOCwxMSArNTAzNiwzMyBAQAogCWxpbmspIGxpYnM9IiRkZXBsaWJzICVERVBMSUJTJSAkZGVwZW5kZW5jeV9saWJzIiA7OwogCWVzYWMKICAgICAgIGZpCisgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixkbHByZW9wZW4iOyB0aGVuCisJIyBDb2xsZWN0IGFuZCBmb3J3YXJkIGRlcGxpYnMgb2YgcHJlb3BlbmVkIGxpYnRvb2wgbGlicworCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCisJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCisJICBkZXBlbmRlbmN5X2xpYnM9CisJICBjYXNlICRsaWIgaW4KKwkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworCSAgZXNhYworCisJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKKwkgICMgaGFzIGRlY2xhcmVkIGFzIHdlYWsgbGlicworCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworICAgICAgICAgICAgZGVwbGliX2Jhc2U9YCRFQ0hPICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKwkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgorCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7CisJICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgIGVzYWMKKwkgIGRvbmUKKwlkb25lCisJbGlicz0iJGRscHJlZmlsZXMiCisgICAgICBmaQogICAgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxvcGVuOyB0aGVuCiAJIyBDb2xsZWN0IGRscHJlb3BlbmVkIGxpYnJhcmllcwogCXNhdmVfZGVwbGlicz0iJGRlcGxpYnMiCiAJZGVwbGlicz0KICAgICAgIGZpCisKICAgICAgIGZvciBkZXBsaWIgaW4gJGxpYnM7IGRvCiAJbGliPQogCWZvdW5kPW5vCkBAIC0yMTUzLDE1ICs1MDczLDIyIEBACiAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBlbHNlCiAJICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYiIKKwkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKwkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKwkJICAgICoiICRkZXBsaWIgIiopIDs7CisJCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworCQllc2FjCisJICAgIGZpCiAJICBmaQogCSAgY29udGludWUKIAkgIDs7CiAJLWwqKQogCSAgaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWIgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJcYC1sJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgogCSAgICBjb250aW51ZQogCSAgZmkKLQkgIG5hbWU9YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLWwvLydgCisJICBmdW5jX3N0cmlwbmFtZSAnLWwnICcnICIkZGVwbGliIgorCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCiAJICAgIHNlYXJjaGRpcnM9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxpYl9zZWFyY2hfcGF0aCAkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aCIKIAkgIGVsc2UKQEAgLTIxOTcsMjEgKzUxMjQsMTcgQEAKIAkgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCSAgICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopCi0JCWlmICgke1NFRH0gLWUgJzJxJyAkbGliIHwKLSAgICAgICAgICAgICAgICAgICAgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJaWYgZnVuY19sYWxpYl9wICIkbGliIjsgdGhlbgogCQkgIGxpYnJhcnlfbmFtZXM9CiAJCSAgb2xkX2xpYnJhcnk9Ci0JCSAgY2FzZSAkbGliIGluCi0JCSAgKi8qIHwgKlxcKikgLiAkbGliIDs7Ci0JCSAgKikgLiAuLyRsaWIgOzsKLQkJICBlc2FjCisJCSAgZnVuY19zb3VyY2UgIiRsaWIiCiAJCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwogCQkgICAgbGw9IiRsIgogCQkgIGRvbmUKIAkJICBpZiB0ZXN0ICJYJGxsIiA9ICJYJG9sZF9saWJyYXJ5IiA7IHRoZW4gIyBvbmx5IHN0YXRpYyB2ZXJzaW9uIGF2YWlsYWJsZQogCQkgICAgZm91bmQ9bm8KLQkJICAgIGxhZGlyPWAkZWNobyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkJICAgIHRlc3QgIlgkbGFkaXIiID0gIlgkbGliIiAmJiBsYWRpcj0iLiIKKwkJICAgIGZ1bmNfZGlybmFtZSAiJGxpYiIgIiIgIi4iCisJCSAgICBsYWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAJCSAgICBsaWI9JGxhZGlyLyRvbGRfbGlicmFyeQogCQkgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCiAJCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgpAQCAtMjIyMywxOSArNTE0NiwzNSBAQAogCQkgICAgY29udGludWUKIAkJICBmaQogCQlmaQotCSAgICAgICAgOzsKKwkJOzsKIAkgICAgICAqKSA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGZpCiAJICA7OyAjIC1sCisJKi5sdGZyYW1ld29yaykKKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKwkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKwkgIGVsc2UKKwkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKwkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKwkJICAgICoiICRkZXBsaWIgIiopIDs7CisJCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworCQllc2FjCisJICAgIGZpCisJICBmaQorCSAgY29udGludWUKKwkgIDs7CiAJLUwqKQogCSAgY2FzZSAkbGlua21vZGUgaW4KIAkgIGxpYikKIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICJgJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tTC8vJ2AKKwkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKwkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCiAJICAgIDs7CiAJICBwcm9nKQogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCkBAIC0yMjQ4LDE3ICs1MTg3LDE5IEBACiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZmkKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICJgJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tTC8vJ2AKKwkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKwkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCiAJICAgIDs7CiAJICAqKQotCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKIAkgICAgOzsKIAkgIGVzYWMgIyBsaW5rbW9kZQogCSAgY29udGludWUKIAkgIDs7ICMgLUwKIAktUiopCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCi0JICAgIGRpcj1gJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tUi8vJ2AKKwkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKKwkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7CkBAIC0yMjc2LDM1ICs1MjE3LDQxIEBACiAJICBmaQogCSAgY2FzZSAkbGlua21vZGUgaW4KIAkgIGxpYikKLQkgICAgdmFsaWRfYV9saWI9bm8KLQkgICAgY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KLQkgICAgICBtYXRjaF9wYXR0ZXJuKikKLQkJc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZAotCSAgICAgICAgbWF0Y2hfcGF0dGVybl9yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMiBcKC4qXCkiYAotCQlpZiBldmFsICRlY2hvIFwiJGRlcGxpYlwiIDI+L2Rldi9udWxsIFwKLQkJICAgIHwgJFNFRCAxMHEgXAorCSAgICAjIExpbmtpbmcgY29udmVuaWVuY2UgbW9kdWxlcyBpbnRvIHNoYXJlZCBsaWJyYXJpZXMgaXMgYWxsb3dlZCwKKwkgICAgIyBidXQgbGlua2luZyBvdGhlciBzdGF0aWMgbGlicmFyaWVzIGlzIG5vbi1wb3J0YWJsZS4KKwkgICAgY2FzZSAiICRkbHByZWNvbnZlbmllbmNlbGlicyAiIGluCisJICAgICoiICRkZXBsaWIgIiopIDs7CisJICAgICopCisJICAgICAgdmFsaWRfYV9saWI9bm8KKwkgICAgICBjYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgorCQltYXRjaF9wYXR0ZXJuKikKKwkJICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kOyBzaGlmdAorCQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKKwkJICBpZiBldmFsICJcJEVDSE8gXCJYJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSBcCiAJCSAgICB8ICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCisJCSAgICB2YWxpZF9hX2xpYj15ZXMKKwkJICBmaQorCQk7OworCQlwYXNzX2FsbCkKIAkJICB2YWxpZF9hX2xpYj15ZXMKLQkJZmkKIAkJOzsKLQkgICAgICBwYXNzX2FsbCkKLQkJdmFsaWRfYV9saWI9eWVzCi0JCTs7Ci0gICAgICAgICAgICBlc2FjCi0JICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCi0JICAgICAgJGVjaG8KLQkgICAgICAkZWNobyAiKioqIFdhcm5pbmc6IFRyeWluZyB0byBsaW5rIHdpdGggc3RhdGljIGxpYiBhcmNoaXZlICRkZXBsaWIuIgotCSAgICAgICRlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCSAgICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCSAgICAgICRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JICAgICAgJGVjaG8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgotCSAgICAgICRlY2hvICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlZCBoZXJlLiIKLQkgICAgZWxzZQotCSAgICAgICRlY2hvCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIgotCSAgICAgICRlY2hvICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgotCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICAgIGZpCisJICAgICAgZXNhYworCSAgICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCisJCSRFQ0hPCisJCSRFQ0hPICIqKiogV2FybmluZzogVHJ5aW5nIHRvIGxpbmsgd2l0aCBzdGF0aWMgbGliIGFyY2hpdmUgJGRlcGxpYi4iCisJCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJJEVDSE8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgorCQkkRUNITyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZSBoZXJlLiIKKwkgICAgICBlbHNlCisJCSRFQ0hPCisJCSRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSIKKwkJJEVDSE8gIioqKiBzdGF0aWMgbGlicmFyeSAkZGVwbGliIGlzIG5vdCBwb3J0YWJsZSEiCisJCWRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgICAgZmkKKwkgICAgICA7OworCSAgICBlc2FjCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICBwcm9nKQpAQCAtMjMzOSwyMSArNTI4NiwxOCBAQAogCSAgY29udGludWUKIAkgIDs7CiAJZXNhYyAjIGNhc2UgJGRlcGxpYgorCiAJaWYgdGVzdCAiJGZvdW5kIiA9IHllcyB8fCB0ZXN0IC1mICIkbGliIjsgdGhlbiA6CiAJZWxzZQotCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgdGhlIGxpYnJhcnkgXGAkbGliJyBvciB1bmhhbmRsZWQgYXJndW1lbnQgXGAkZGVwbGliJyIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCB0aGUgbGlicmFyeSBcYCRsaWInIG9yIHVuaGFuZGxlZCBhcmd1bWVudCBcYCRkZXBsaWInIgogCWZpCiAKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotCWlmICgke1NFRH0gLWUgJzJxJyAkbGliIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotCWVsc2UKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKLQlmaQorCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRsaWIiIFwKKwkgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCi0JbGFkaXI9YCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotCXRlc3QgIlgkbGFkaXIiID0gIlgkbGliIiAmJiBsYWRpcj0iLiIKKwlmdW5jX2Rpcm5hbWUgIiRsaWIiICIiICIuIgorCWxhZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCWRsbmFtZT0KIAlkbG9wZW49CkBAIC0yMzYxLDYgKzUzMDUsNyBAQAogCWxpYmRpcj0KIAlsaWJyYXJ5X25hbWVzPQogCW9sZF9saWJyYXJ5PQorCWluaGVyaXRlZF9saW5rZXJfZmxhZ3M9CiAJIyBJZiB0aGUgbGlicmFyeSB3YXMgaW5zdGFsbGVkIHdpdGggYW4gb2xkIHJlbGVhc2Ugb2YgbGlidG9vbCwKIAkjIGl0IHdpbGwgbm90IHJlZGVmaW5lIHZhcmlhYmxlcyBpbnN0YWxsZWQsIG9yIHNob3VsZG5vdGxpbmsKIAlpbnN0YWxsZWQ9eWVzCkBAIC0yMzY5LDExICs1MzE0LDE5IEBACiAKIAogCSMgUmVhZCB0aGUgLmxhIGZpbGUKLQljYXNlICRsaWIgaW4KLQkqLyogfCAqXFwqKSAuICRsaWIgOzsKLQkqKSAuIC4vJGxpYiA7OwotCWVzYWMKKwlmdW5jX3NvdXJjZSAiJGxpYiIKIAorCSMgQ29udmVydCAiLWZyYW1ld29yayBmb28iIHRvICJmb28ubHRmcmFtZXdvcmsiCisJaWYgdGVzdCAtbiAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiOyB0aGVuCisJICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlgkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCisJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCisJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorCSAgICAgICoiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnICIqKSA7OworCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKwkgICAgZXNhYworCSAgZG9uZQorCWZpCisJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCAkZGVwZW5kZW5jeV9saWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CiAJICAgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iIHx8CiAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KQEAgLTIzODYsMjYgKzUzMzksMjQgQEAKIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCiAJICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciIDE+JjIKLQkgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAkgICAgZmkKIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgogCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKIAkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgdG1wX2xpYnM9Ci0JICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLQkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KLQkgICAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0JICAgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0JICAgICAgICBlc2FjCi0gICAgICAgICAgICAgIGZpCi0JICAgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotCSAgICBkb25lCiAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKIAkgIGZpCisJICB0bXBfbGlicz0KKwkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisJICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKwkgIGRvbmUKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGNvbnYKIApAQCAtMjQxNiwxNSArNTM2NywxMyBAQAogCSAgbGlua2xpYj0iJGwiCiAJZG9uZQogCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJZmkKIAogCSMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgogCWlmIHRlc3QgIiRwYXNzIiA9IGRsb3BlbjsgdGhlbgogCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IC1kbG9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgLWRsb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCiAJICBmaQogCSAgaWYgdGVzdCAteiAiJGRsbmFtZSIgfHwKIAkgICAgIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8CkBAIC0yNDQ2LDE4ICs1Mzk1LDE5IEBACiAJKikKIAkgIGFic19sYWRpcj1gY2QgIiRsYWRpciIgJiYgcHdkYAogCSAgaWYgdGVzdCAteiAiJGFic19sYWRpciI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRsYWRpciciIDE+JjIKLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogcGFzc2luZyBpdCBsaXRlcmFsbHkgdG8gdGhlIGxpbmtlciwgYWx0aG91Z2ggaXQgbWlnaHQgZmFpbCIgMT4mMgorCSAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkbGFkaXInIgorCSAgICBmdW5jX3dhcm5pbmcgInBhc3NpbmcgaXQgbGl0ZXJhbGx5IHRvIHRoZSBsaW5rZXIsIGFsdGhvdWdoIGl0IG1pZ2h0IGZhaWwiCiAJICAgIGFic19sYWRpcj0iJGxhZGlyIgogCSAgZmkKIAkgIDs7CiAJZXNhYwotCWxhbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisJZnVuY19iYXNlbmFtZSAiJGxpYiIKKwlsYW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKIAogCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgogCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KIAkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogbGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJsaWJyYXJ5IFxgJGxpYicgd2FzIG1vdmVkLiIKIAkgICAgZGlyPSIkbGFkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgpAQCAtMjQ3OSwxOCArNTQyOSwyMiBAQAogCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKIAkgIGZpCiAJZmkgIyAkaW5zdGFsbGVkID0geWVzCi0JbmFtZT1gJGVjaG8gIlgkbGFuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nIC1lICdzL15saWIvLydgCisJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCisJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAKIAkjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KIAlpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW47IHRoZW4KLQkgIGlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKIAkgIGZpCiAJICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKIAkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgogCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgogCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisJICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCiAJICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgogCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgogCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCkBAIC0yNTI2LDcgKzU0ODAsOSBAQAogCSAgdG1wX2xpYnM9CiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIGNhc2UgJGRlcGxpYiBpbgotCSAgICAtTCopIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAiYCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgOzsgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKwkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJIDs7CiAJICAgIGVzYWMKIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwogCSAgICBpZiB0ZXN0ICIkbGlua2FsbGRlcGxpYnMiID0geWVzOyB0aGVuCkBAIC0yNTM2LDcgKzU0OTIsNyBAQAogCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCiAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZpCi0JICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2RlcHMiID0gIlh5ZXMiIDsgdGhlbgorCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCiAJICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKQEAgLTI1NDksMTUgKzU1MDUsMTQgQEAKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KIAkgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIiAmJgogCSAgICAgeyB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0gbm8gfHwKLQkJIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQseWVzIjsgfSB8fAorCSAgICAgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQseWVzIjsgfSB8fAogCSAgICAgICB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB9OyB0aGVuCiAJICAgICMgV2UgbmVlZCB0byBoYXJkY29kZSB0aGUgbGlicmFyeSBwYXRoCiAJICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC16ICIkYXZvaWR0ZW1wcnBhdGgiIDsgdGhlbgogCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLQkgICAgICBjYXNlICIkdGVtcF9ycGF0aCAiIGluCi0JICAgICAgKiIgJGRpciAiKikgOzsKLQkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoICRhYnNkaXIiIDs7CisJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgorCSAgICAgICoiJGFic2RpcjoiKikgOzsKKwkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIApAQCAtMjU5NSwyNyArNTU1MCw0MyBAQAogCiAJbGlua19zdGF0aWM9bm8gIyBXaGV0aGVyIHRoZSBkZXBsaWIgd2lsbCBiZSBsaW5rZWQgc3RhdGljYWxseQogCXVzZV9zdGF0aWNfbGlicz0kcHJlZmVyX3N0YXRpY19saWJzCi0JaWYgdGVzdCAiJHVzZV9zdGF0aWNfbGlicyIgPSBidWlsdCAmJiB0ZXN0ICIkaW5zdGFsbGVkIiA9IHllcyA7IHRoZW4KKwlpZiB0ZXN0ICIkdXNlX3N0YXRpY19saWJzIiA9IGJ1aWx0ICYmIHRlc3QgIiRpbnN0YWxsZWQiID0geWVzOyB0aGVuCiAJICB1c2Vfc3RhdGljX2xpYnM9bm8KIAlmaQogCWlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIiAmJgogCSAgIHsgdGVzdCAiJHVzZV9zdGF0aWNfbGlicyIgPSBubyB8fCB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB9OyB0aGVuCi0JICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0JICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgotCSAgICBuZWVkX3JlbGluaz15ZXMKLQkgIGZpCisJICBjYXNlICRob3N0IGluCisJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQorCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKKwkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBuZWVkX3JlbGluaz1ubworCSAgICA7OworCSAgKikKKwkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgorCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorCSAgICAgIG5lZWRfcmVsaW5rPXllcworCSAgICBmaQorCSAgICA7OworCSAgZXNhYwogCSAgIyBUaGlzIGlzIGEgc2hhcmVkIGxpYnJhcnkKIAotCSAgIyBXYXJuIGFib3V0IHBvcnRhYmlsaXR5LCBjYW4ndCBsaW5rIGFnYWluc3QgLW1vZHVsZSdzIG9uCi0JICAjIHNvbWUgc3lzdGVtcyAoZGFyd2luKQotCSAgaWYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbmsgOyB0aGVuCi0JICAgICRlY2hvCi0JICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgotCSAgICBlbHNlCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKKwkgICMgV2FybiBhYm91dCBwb3J0YWJpbGl0eSwgY2FuJ3QgbGluayBhZ2FpbnN0IC1tb2R1bGUncyBvbiBzb21lCisJICAjIHN5c3RlbXMgKGRhcndpbikuICBEb24ndCBibGVhdCBhYm91dCBkbG9wZW5lZCBtb2R1bGVzIHRob3VnaCEKKwkgIGRsb3Blbm1vZHVsZT0iIgorCSAgZm9yIGRscHJlbW9kdWxldGVzdCBpbiAkZGxwcmVmaWxlczsgZG8KKwkgICAgaWYgdGVzdCAiWCRkbHByZW1vZHVsZXRlc3QiID0gIlgkbGliIjsgdGhlbgorCSAgICAgIGRsb3Blbm1vZHVsZT0iJGRscHJlbW9kdWxldGVzdCIKKwkgICAgICBicmVhawogCSAgICBmaQotCSAgICAkZWNobyAiKioqICRsaW5rbGliIGlzIG5vdCBwb3J0YWJsZSEiCisJICBkb25lCisJICBpZiB0ZXN0IC16ICIkZGxvcGVubW9kdWxlIiAmJiB0ZXN0ICIkc2hvdWxkbm90bGluayIgPSB5ZXMgJiYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgorCSAgICAkRUNITworCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgZXhlY3V0YWJsZSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKKwkgICAgZWxzZQorCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCisJICAgIGZpCisJICAgICRFQ0hPICIqKiogJGxpbmtsaWIgaXMgbm90IHBvcnRhYmxlISIKIAkgIGZpCiAJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliICYmCiAJICAgICB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiA9IHllczsgdGhlbgpAQCAtMjY0NSwxNyArNTYxNiwxOSBAQAogCSAgaWYgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIjsgdGhlbgogCSAgICAjIGZpZ3VyZSBvdXQgdGhlIHNvbmFtZQogCSAgICBzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKLQkgICAgcmVhbG5hbWU9IiQyIgotCSAgICBzaGlmdDsgc2hpZnQKLQkgICAgbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCSAgICBzaGlmdAorCSAgICByZWFsbmFtZT0iJDEiCisJICAgIHNoaWZ0CisJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAogCSAgICAjIHVzZSBkbG5hbWUgaWYgd2UgZ290IGl0LiBpdCdzIHBlcmZlY3RseSBnb29kLCBubz8KIAkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCiAJICAgIGVsaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgogCSAgICAgICMgYmxlaCB3aW5kb3dzCiAJICAgICAgY2FzZSAkaG9zdCBpbgotCSAgICAgICpjeWd3aW4qIHwgbWluZ3cqKQotCQltYWpvcj1gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICAgICAgKmN5Z3dpbiogfCBtaW5ndyogfCAqY2VnY2MqKQorCSAgICAgICAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkJbWFqb3I9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKIAkJOzsKIAkgICAgICBlc2FjCkBAIC0yNjY2LDM2ICs1NjM5LDIyIEBACiAKIAkgICAgIyBNYWtlIGEgbmV3IG5hbWUgZm9yIHRoZSBleHRyYWN0X2V4cHN5bXNfY21kcyB0byB1c2UKIAkgICAgc29yb290PSIkc29uYW1lIgotCSAgICBzb25hbWU9YCRlY2hvICRzb3Jvb3QgfCAke1NFRH0gLWUgJ3MvXi4qXC8vLydgCi0JICAgIG5ld2xpYj0ibGliaW1wLWAkZWNobyAkc29uYW1lIHwgJHtTRUR9ICdzL15saWIvLztzL1wuZGxsJC8vJ2AuYSIKKwkgICAgZnVuY19iYXNlbmFtZSAiJHNvcm9vdCIKKwkgICAgc29uYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfc3RyaXBuYW1lICdsaWInICcuZGxsJyAiJHNvbmFtZSIKKwkgICAgbmV3bGliPWxpYmltcC0kZnVuY19zdHJpcG5hbWVfcmVzdWx0LmEKIAogCSAgICAjIElmIHRoZSBsaWJyYXJ5IGhhcyBubyBleHBvcnQgbGlzdCwgdGhlbiBjcmVhdGUgb25lIG5vdwogCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kc29uYW1lLWRlZiI7IHRoZW4gOgogCSAgICBlbHNlCi0JICAgICAgJHNob3cgImV4dHJhY3RpbmcgZXhwb3J0ZWQgc3ltYm9sIGxpc3QgZnJvbSBcYCRzb25hbWUnIgotCSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICAgIGNtZHM9JGV4dHJhY3RfZXhwc3ltc19jbWRzCi0JICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQkJSUZTPSIkc2F2ZV9pZnMiCi0JCWV2YWwgY21kPVwiJGNtZFwiCi0JCSRzaG93ICIkY21kIgotCQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLQkgICAgICBkb25lCi0JICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gXGAkc29uYW1lJyIKKwkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJGV4dHJhY3RfZXhwc3ltc19jbWRzIiAnZXhpdCAkPycKIAkgICAgZmkKIAogCSAgICAjIENyZWF0ZSAkbmV3bGliCiAJICAgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyRuZXdsaWIiOyB0aGVuIDo7IGVsc2UKLQkgICAgICAkc2hvdyAiZ2VuZXJhdGluZyBpbXBvcnQgbGlicmFyeSBmb3IgXGAkc29uYW1lJyIKLQkgICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgICBjbWRzPSRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcwotCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JCUlGUz0iJHNhdmVfaWZzIgotCQlldmFsIGNtZD1cIiRjbWRcIgotCQkkc2hvdyAiJGNtZCIKLQkJJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/Ci0JICAgICAgZG9uZQotCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBpbXBvcnQgbGlicmFyeSBmb3IgXGAkc29uYW1lJyIKKwkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIiAnZXhpdCAkPycKIAkgICAgZmkKIAkgICAgIyBtYWtlIHN1cmUgdGhlIGxpYnJhcnkgdmFyaWFibGVzIGFyZSBwb2ludGluZyB0byB0aGUgbmV3IGxpYnJhcnkKIAkgICAgZGlyPSRvdXRwdXRfb2JqZGlyCkBAIC0yNzE3LDE3ICs1Njc2LDIxIEBACiAJCSAgKi0qLXN5c3Y1T3BlblVOSVgqIHwgKi0qLXN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCBcCiAJCSAgICAqLSotdW5peHdhcmU3KikgYWRkX2Rpcj0iLUwkZGlyIiA7OwogCQkgICotKi1kYXJ3aW4qICkKLQkJICAgICMgaWYgdGhlIGxpYiBpcyBhIG1vZHVsZSB0aGVuIHdlIGNhbiBub3QgbGluayBhZ2FpbnN0Ci0JCSAgICAjIGl0LCBzb21lb25lIGlzIGlnbm9yaW5nIHRoZSBuZXcgd2FybmluZ3MgSSBhZGRlZAorCQkgICAgIyBpZiB0aGUgbGliIGlzIGEgKG5vbi1kbG9wZW5lZCkgbW9kdWxlIHRoZW4gd2UgY2FuIG5vdAorCQkgICAgIyBsaW5rIGFnYWluc3QgaXQsIHNvbWVvbmUgaXMgaWdub3JpbmcgdGhlIGVhcmxpZXIgd2FybmluZ3MKIAkJICAgIGlmIC91c3IvYmluL2ZpbGUgLUwgJGFkZCAyPiAvZGV2L251bGwgfAotICAgICAgICAgICAgICAgICAgICAgICRFR1JFUCAiOiBbXjpdKiBidW5kbGUiID4vZGV2L251bGwgOyB0aGVuCi0JCSAgICAgICRlY2hvICIqKiBXYXJuaW5nLCBsaWIgJGxpbmtsaWIgaXMgYSBtb2R1bGUsIG5vdCBhIHNoYXJlZCBsaWJyYXJ5IgotCQkgICAgICBpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgotCQkgICAgICAgICRlY2hvCi0JCSAgICAgICAgJGVjaG8gIioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCi0JCSAgICAgICAgJGVjaG8gIioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCi0JCSAgICAgIGVsc2UKLQkJICAgICAgICBhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgorCQkJICRHUkVQICI6IFteOl0qIGJ1bmRsZSIgPi9kZXYvbnVsbCA7IHRoZW4KKwkJICAgICAgaWYgdGVzdCAiWCRkbG9wZW5tb2R1bGUiICE9ICJYJGxpYiI7IHRoZW4KKwkJCSRFQ0hPICIqKiogV2FybmluZzogbGliICRsaW5rbGliIGlzIGEgbW9kdWxlLCBub3QgYSBzaGFyZWQgbGlicmFyeSIKKwkJCWlmIHRlc3QgLXogIiRvbGRfbGlicmFyeSIgOyB0aGVuCisJCQkgICRFQ0hPCisJCQkgICRFQ0hPICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKKwkJCSAgJEVDSE8gIioqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgorCQkJZWxzZQorCQkJICBhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgorCQkJZmkKKwkJICAgICAgZWxpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCisJCQlhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgogCQkgICAgICBmaQogCQkgICAgZmkKIAkJZXNhYwpAQCAtMjc0NSw3ICs1NzA4LDggQEAKIAkgICAgICBmaQogCSAgICAgIDs7CiAJICAgIHJlbGluaykKLQkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorCSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzICYmCisJICAgICAgICAgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgPSBubzsgdGhlbgogCQlhZGQ9IiRkaXIvJGxpbmtsaWIiCiAJICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KIAkJYWRkX2Rpcj0iLUwkZGlyIgpAQCAtMjc2OSw4ICs1NzMzLDcgQEAKIAkgICAgZXNhYwogCiAJICAgIGlmIHRlc3QgIiRsaWJfbGlua2VkIiAhPSB5ZXM7IHRoZW4KLQkgICAgICAkZWNobyAiJG1vZGVuYW1lOiBjb25maWd1cmF0aW9uIGVycm9yOiB1bnN1cHBvcnRlZCBoYXJkY29kZSBwcm9wZXJ0aWVzIgotCSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAidW5zdXBwb3J0ZWQgaGFyZGNvZGUgcHJvcGVydGllcyIKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KQEAgLTI3ODUsOCArNTc0OCw4IEBACiAJICAgIGVsc2UKIAkgICAgICB0ZXN0IC1uICIkYWRkX2RpciIgJiYgZGVwbGlicz0iJGFkZF9kaXIgJGRlcGxpYnMiCiAJICAgICAgdGVzdCAtbiAiJGFkZCIgJiYgZGVwbGlicz0iJGFkZCAkZGVwbGlicyIKLQkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiAhPSB5ZXMgJiYgXAotCQkgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiICE9IHllcyAmJiBcCisJICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgIT0geWVzICYmCisJCSB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0geWVzICYmCiAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkJKiI6JGxpYmRpcjoiKikgOzsKQEAgLTI4MDEsNyArNTc2NCw4IEBACiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KIAkgICAgIyBGaW5hbGl6ZSBjb21tYW5kIGZvciBib3RoIGlzIHNpbXBsZToganVzdCBoYXJkY29kZSBpdC4KLQkgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KKwkgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXMgJiYKKwkgICAgICAgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgPSBubzsgdGhlbgogCSAgICAgIGFkZD0iJGxpYmRpci8kbGlua2xpYiIKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCkBAIC0yODE1LDkgKzU3NzksOSBAQAogCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCiAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciIgJiYKIAkJIHRlc3QgLWYgIiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIiA7IHRoZW4KLQkgICAgICAgIGFkZD0iJGluc3RfcHJlZml4X2RpciRsaWJkaXIvJGxpbmtsaWIiCisJCWFkZD0iJGluc3RfcHJlZml4X2RpciRsaWJkaXIvJGxpbmtsaWIiCiAJICAgICAgZWxzZQotCSAgICAgICAgYWRkPSIkbGliZGlyLyRsaW5rbGliIgorCQlhZGQ9IiRsaWJkaXIvJGxpbmtsaWIiCiAJICAgICAgZmkKIAkgICAgZWxzZQogCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCkBAIC0yODYxLDIxICs1ODI1LDIxIEBACiAKIAkgICAgIyBKdXN0IHByaW50IGEgd2FybmluZyBhbmQgYWRkIHRoZSBsaWJyYXJ5IHRvIGRlcGVuZGVuY3lfbGlicyBzbwogCSAgICAjIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IHRoZSBzdGF0aWMgbGlicmFyeS4KLQkgICAgJGVjaG8KLQkgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBUaGlzIHN5c3RlbSBjYW4gbm90IGxpbmsgdG8gc3RhdGljIGxpYiBhcmNoaXZlICRsaWIuIgotCSAgICAkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkgICAgJGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JICAgICRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgorCSAgICAkRUNITworCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IFRoaXMgc3lzdGVtIGNhbiBub3QgbGluayB0byBzdGF0aWMgbGliIGFyY2hpdmUgJGxpYi4iCisJICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCiAJICAgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICAgJGVjaG8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKLQkgICAgICAkZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCi0JICAgICAgJGVjaG8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKKwkgICAgICAkRUNITyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgorCSAgICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKKwkgICAgICAkRUNITyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgogCSAgICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JCSRlY2hvCi0JCSRlY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkJJGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JCSRlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JCSRlY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkJJEVDSE8KKwkJJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCQkkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkJJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKKwkJJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKQEAgLTI4OTksNyArNTg2Myw4IEBACiAJICAgIHRlbXBfZGVwbGlicz0KIAkgICAgZm9yIGxpYmRpciBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICAgIGNhc2UgJGxpYmRpciBpbgotCSAgICAgIC1SKikgdGVtcF94cnBhdGg9YCRlY2hvICJYJGxpYmRpciIgfCAkWHNlZCAtZSAncy9eLVIvLydgCisJICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkbGliZGlyIgorCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCQkgICBjYXNlICIgJHhycGF0aCAiIGluCiAJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKIAkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OwpAQCAtMjkxNyw3ICs1ODgyLDcgQEAKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLQkgICAgaWYgdGVzdCAiWCRkdXBsaWNhdGVfZGVwcyIgPSAiWHllcyIgOyB0aGVuCisJICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwpAQCAtMjkzMSw5NCArNTg5Niw3MSBAQAogCSAgICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKIAkgICAgICAqLmxhKQotCQlkaXI9YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotCQl0ZXN0ICJYJGRpciIgPSAiWCRkZXBsaWIiICYmIGRpcj0iLiIKKwkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCisJCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCQljYXNlICRkaXIgaW4KIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CiAJCSopCiAJCSAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAogCQkgIGlmIHRlc3QgLXogIiRhYnNkaXIiOyB0aGVuCi0JCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGRpciciIDE+JjIKKwkJICAgIGZ1bmNfd2FybmluZyAiY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIgogCQkgICAgYWJzZGlyPSIkZGlyIgogCQkgIGZpCiAJCSAgOzsKIAkJZXNhYwotCQlpZiBncmVwICJeaW5zdGFsbGVkPW5vIiAkZGVwbGliID4gL2Rldi9udWxsOyB0aGVuCi0JCSAgcGF0aD0iJGFic2Rpci8kb2JqZGlyIgotCQllbHNlCi0JCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLQkJICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCQkgICAgJGVjaG8gIiRtb2RlbmFtZTogXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkJICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotCQkgIGZpCi0JCSAgaWYgdGVzdCAiJGFic2RpciIgIT0gIiRsaWJkaXIiOyB0aGVuCi0JCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYCRkZXBsaWInIHNlZW1zIHRvIGJlIG1vdmVkIiAxPiYyCi0JCSAgZmkKLQkJICBwYXRoPSIkYWJzZGlyIgotCQlmaQotCQlkZXBkZXBsPQorCQlpZiAkR1JFUCAiXmluc3RhbGxlZD1ubyIgJGRlcGxpYiA+IC9kZXYvbnVsbDsgdGhlbgogCQljYXNlICRob3N0IGluCiAJCSotKi1kYXJ3aW4qKQotCQkgICMgd2UgZG8gbm90IHdhbnQgdG8gbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJzLAotCQkgICMgYnV0IG5lZWQgdG8gbGluayBhZ2FpbnN0IHNoYXJlZAorCQkgIGRlcGRlcGw9CiAJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotCQkgIGV2YWwgZGVwbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCiAJCSAgaWYgdGVzdCAtbiAiJGRlcGxpYnJhcnlfbmFtZXMiIDsgdGhlbgogCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCiAJCSAgICAgIGRlcGRlcGw9JHRtcAogCQkgICAgZG9uZQotCQkgICAgaWYgdGVzdCAtZiAiJGRlcGxpYmRpci8kZGVwZGVwbCIgOyB0aGVuCi0JCSAgICAgIGRlcGRlcGw9IiRkZXBsaWJkaXIvJGRlcGRlcGwiCi0JICAgICAgCSAgICBlbGlmIHRlc3QgLWYgIiRwYXRoLyRkZXBkZXBsIiA7IHRoZW4KLQkJICAgICAgZGVwZGVwbD0iJHBhdGgvJGRlcGRlcGwiCi0JCSAgICBlbHNlCi0JCSAgICAgICMgQ2FuJ3QgZmluZCBpdCwgb2ggd2VsbC4uLgotCQkgICAgICBkZXBkZXBsPQorCQkgICAgaWYgdGVzdCAtZiAiJGFic2Rpci8kb2JqZGlyLyRkZXBkZXBsIiA7IHRoZW4KKwkJICAgICAgZGVwZGVwbD0iJGFic2Rpci8kb2JqZGlyLyRkZXBkZXBsIgorCQkgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MfSAtTCAkZGVwZGVwbCB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCisgICAgICAgICAgICAgICAgICAgICAgZmkKKwkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBwYXRoPQogCQkgICAgZmkKLQkJICAgICMgZG8gbm90IGFkZCBwYXRocyB3aGljaCBhcmUgYWxyZWFkeSB0aGVyZQotCQkgICAgY2FzZSAiICRuZXdsaWJfc2VhcmNoX3BhdGggIiBpbgotCQkgICAgKiIgJHBhdGggIiopIDs7Ci0JCSAgICAqKSBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJHBhdGgiOzsKLQkJICAgIGVzYWMKIAkJICBmaQotCQkgIHBhdGg9IiIKIAkJICA7OwogCQkqKQotCQkgIHBhdGg9Ii1MJHBhdGgiCisJCSAgcGF0aD0iLUwkYWJzZGlyLyRvYmpkaXIiCiAJCSAgOzsKIAkJZXNhYworCQllbHNlCisJCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKwkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAorCQkgICAgZnVuY193YXJuaW5nICJcYCRkZXBsaWInIHNlZW1zIHRvIGJlIG1vdmVkIgorCisJCSAgcGF0aD0iLUwkYWJzZGlyIgorCQlmaQogCQk7OwotCSAgICAgIC1sKikKLQkJY2FzZSAkaG9zdCBpbgotCQkqLSotZGFyd2luKikKLQkJICAjIEFnYWluLCB3ZSBvbmx5IHdhbnQgdG8gbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJpZXMKLQkJICBldmFsIHRtcF9saWJzPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgInMsXlwtbCwsImAKLQkJICBmb3IgdG1wIGluICRuZXdsaWJfc2VhcmNoX3BhdGggOyBkbwotCQkgICAgaWYgdGVzdCAtZiAiJHRtcC9saWIkdG1wX2xpYnMuZHlsaWIiIDsgdGhlbgotCQkgICAgICBldmFsIGRlcGRlcGw9IiR0bXAvbGliJHRtcF9saWJzLmR5bGliIgotCQkgICAgICBicmVhawotCQkgICAgZmkKLQkJICBkb25lCi0JCSAgcGF0aD0iIgotCQkgIDs7Ci0JCSopIGNvbnRpbnVlIDs7Ci0JCWVzYWMKLQkJOzsKLQkgICAgICAqKSBjb250aW51ZSA7OwogCSAgICAgIGVzYWMKIAkgICAgICBjYXNlICIgJGRlcGxpYnMgIiBpbgogCSAgICAgICoiICRwYXRoICIqKSA7OwogCSAgICAgICopIGRlcGxpYnM9IiRwYXRoICRkZXBsaWJzIiA7OwogCSAgICAgIGVzYWMKLQkgICAgICBjYXNlICIgJGRlcGxpYnMgIiBpbgotCSAgICAgICoiICRkZXBkZXBsICIqKSA7OwotCSAgICAgICopIGRlcGxpYnM9IiRkZXBkZXBsICRkZXBsaWJzIiA7OwotCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgZmkgIyBsaW5rX2FsbF9kZXBsaWJzICE9IG5vCiAJZmkgIyBsaW5rbW9kZSA9IGxpYgogICAgICAgZG9uZSAjIGZvciBkZXBsaWIgaW4gJGxpYnMKKyAgICAgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkbGlua21vZGUiID0gInByb2ciOyB0aGVuCisJICBjb21waWxlX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkY29tcGlsZV9kZXBsaWJzIgorCSAgZmluYWxpemVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRmaW5hbGl6ZV9kZXBsaWJzIgorCWVsc2UKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiWCAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZmkKKyAgICAgIGZpCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCiAgICAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW47IHRoZW4KIAkjIExpbmsgdGhlIGRscHJlb3BlbmVkIGxpYnJhcmllcyBiZWZvcmUgb3RoZXIgbGlicmFyaWVzCkBAIC0zMTE3LDM5ICs2MDU5LDM2IEBACiAgICAgZG9uZSAjIGZvciBwYXNzCiAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KICAgICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorICAgIGZpCisgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgogICAgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAgICAgZmkKIAogICAgIGNhc2UgJGxpbmttb2RlIGluCiAgICAgb2xkbGliKQorICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KKwlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisgICAgICBmaQorCiAgICAgICBjYXNlICIgJGRlcGxpYnMiIGluCiAgICAgICAqXCAtbCogfCAqXCAtTCopCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtbCcgYW5kIFxgLUwnIGFyZSBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMiA7OworCWZ1bmNfd2FybmluZyAiXGAtbCcgYW5kIFxgLUwnIGFyZSBpZ25vcmVkIGZvciBhcmNoaXZlcyIgOzsKICAgICAgIGVzYWMKIAotICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAtbiAiJHJwYXRoIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1ycGF0aCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1ycGF0aCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkeHJwYXRoIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1SJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAotICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1SJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiR2aW5mbyIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiR2aW5mbyI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRyZWxlYXNlIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAotICAgICAgaWYgdGVzdCAtbiAiJHJlbGVhc2UiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCi0KLSAgICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtZXhwb3J0LXN5bWJvbHMnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwpAQCAtMzE2MSw0OCArNjEwMCw0OCBAQAogICAgICAgIyBNYWtlIHN1cmUgd2Ugb25seSBnZW5lcmF0ZSBsaWJyYXJpZXMgb2YgdGhlIGZvcm0gYGxpYk5BTUUubGEnLgogICAgICAgY2FzZSAkb3V0cHV0bmFtZSBpbgogICAgICAgbGliKikKLQluYW1lPWAkZWNobyAiWCRvdXRwdXRuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nIC1lICdzL15saWIvLydgCisJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgorCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCiAJZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCiAJOzsKICAgICAgICopCi0JaWYgdGVzdCAiJG1vZHVsZSIgPSBubzsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgbXVzdCBiZWdpbiB3aXRoIFxgbGliJyIgMT4mMgotCSAgJGVjaG8gIiRoZWxwIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKLQlmaQorCXRlc3QgIiRtb2R1bGUiID0gbm8gJiYgXAorCSAgZnVuY19mYXRhbF9oZWxwICJsaWJ0b29sIGxpYnJhcnkgXGAkb3V0cHV0JyBtdXN0IGJlZ2luIHdpdGggXGBsaWInIgorCiAJaWYgdGVzdCAiJG5lZWRfbGliX3ByZWZpeCIgIT0gbm87IHRoZW4KIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKLQkgIG5hbWU9YCRlY2hvICJYJG91dHB1dG5hbWUiIHwgJFhzZWQgLWUgJ3MvXC5sYSQvLydgCisJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisJICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCiAJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKIAllbHNlCi0JICBsaWJuYW1lPWAkZWNobyAiWCRvdXRwdXRuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nYAorCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorCSAgbGlibmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJZmkKIAk7OwogICAgICAgZXNhYwogCiAgICAgICBpZiB0ZXN0IC1uICIkb2JqcyI7IHRoZW4KIAlpZiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgYnVpbGQgbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIG9uIHRoaXMgaG9zdDokb2JqcyIgMj4mMQotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgYnVpbGQgbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIG9uIHRoaXMgaG9zdDokb2JqcyIKIAllbHNlCi0JICAkZWNobwotCSAgJGVjaG8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgotCSAgJGVjaG8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCisJICAkRUNITworCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgorCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCiAJICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKIAlmaQogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4gc2VsZicgaXMgaWdub3JlZCBmb3IgbGlidG9vbCBsaWJyYXJpZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0ICIkZGxzZWxmIiAhPSBubyAmJiBcCisJZnVuY193YXJuaW5nICJcYC1kbG9wZW4gc2VsZicgaXMgaWdub3JlZCBmb3IgbGlidG9vbCBsaWJyYXJpZXMiCiAKICAgICAgIHNldCBkdW1teSAkcnBhdGgKLSAgICAgIGlmIHRlc3QgIiQjIiAtZ3QgMjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IiAxPiYyCi0gICAgICBmaQotICAgICAgaW5zdGFsbF9saWJkaXI9IiQyIgorICAgICAgc2hpZnQKKyAgICAgIHRlc3QgIiQjIiAtZ3QgMSAmJiBcCisJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKKworICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgogCiAgICAgICBvbGRsaWJzPQogICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgpAQCAtMzIxNiwyNSArNjE1NSwyMSBAQAogCSAgYnVpbGRfb2xkX2xpYnM9eWVzCiAJZmkKIAotCWlmIHRlc3QgLW4gIiR2aW5mbyI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIgMT4mMgotCWZpCisJdGVzdCAtbiAiJHZpbmZvIiAmJiBcCisJICBmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIKIAotCWlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIiAxPiYyCi0JZmkKKwl0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAorCSAgZnVuY193YXJuaW5nICJcYC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiCiAgICAgICBlbHNlCiAKIAkjIFBhcnNlIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFyZ3VtZW50LgogCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSc6JwogCXNldCBkdW1teSAkdmluZm8gMCAwIDAKKwlzaGlmdAogCUlGUz0iJHNhdmVfaWZzIgogCi0JaWYgdGVzdCAtbiAiJDgiOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiB0b28gbWFueSBwYXJhbWV0ZXJzIHRvIFxgLXZlcnNpb24taW5mbyciIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKKwl0ZXN0IC1uICIkNyIgJiYgXAorCSAgZnVuY19mYXRhbF9oZWxwICJ0b28gbWFueSBwYXJhbWV0ZXJzIHRvIFxgLXZlcnNpb24taW5mbyciCiAKIAkjIGNvbnZlcnQgYWJzb2x1dGUgdmVyc2lvbiBudW1iZXJzIHRvIGxpYnRvb2wgYWdlcwogCSMgdGhpcyByZXRhaW5zIGNvbXBhdGliaWxpdHkgd2l0aCAubGEgZmlsZXMgYW5kIGF0dGVtcHRzCkBAIC0zMjQyLDkgKzYxNzcsOSBAQAogCiAJY2FzZSAkdmluZm9fbnVtYmVyIGluCiAJeWVzKQotCSAgbnVtYmVyX21ham9yPSIkMiIKLQkgIG51bWJlcl9taW5vcj0iJDMiCi0JICBudW1iZXJfcmV2aXNpb249IiQ0IgorCSAgbnVtYmVyX21ham9yPSIkMSIKKwkgIG51bWJlcl9taW5vcj0iJDIiCisJICBudW1iZXJfcmV2aXNpb249IiQzIgogCSAgIwogCSAgIyBUaGVyZSBhcmUgcmVhbGx5IG9ubHkgdHdvIGtpbmRzIC0tIHRob3NlIHRoYXQKIAkgICMgdXNlIHRoZSBjdXJyZW50IHJldmlzaW9uIGFzIHRoZSBtYWpvciB2ZXJzaW9uCkBAIC0zMjU0LDcgKzYxODksOCBAQAogCSAgIwogCSAgY2FzZSAkdmVyc2lvbl90eXBlIGluCiAJICBkYXJ3aW58bGludXh8b3NmfHdpbmRvd3N8bm9uZSkKLQkgICAgY3VycmVudD1gZXhwciAkbnVtYmVyX21ham9yICsgJG51bWJlcl9taW5vcmAKKwkgICAgZnVuY19hcml0aCAkbnVtYmVyX21ham9yICsgJG51bWJlcl9taW5vcgorCSAgICBjdXJyZW50PSRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgICBhZ2U9IiRudW1iZXJfbWlub3IiCiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX3JldmlzaW9uIgogCSAgICA7OwpAQCAtMzI2NCw3ICs2MjAwLDggQEAKIAkgICAgYWdlPSIwIgogCSAgICA7OwogCSAgaXJpeHxub25zdG9wdXgpCi0JICAgIGN1cnJlbnQ9YGV4cHIgJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3JgCisJICAgIGZ1bmNfYXJpdGggJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IKKwkgICAgY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKIAkgICAgbHRfaXJpeF9pbmNyZW1lbnQ9bm8KQEAgLTMyNzIsOSArNjIwOSw5IEBACiAJICBlc2FjCiAJICA7OwogCW5vKQotCSAgY3VycmVudD0iJDIiCi0JICByZXZpc2lvbj0iJDMiCi0JICBhZ2U9IiQ0IgorCSAgY3VycmVudD0iJDEiCisJICByZXZpc2lvbj0iJDIiCisJICBhZ2U9IiQzIgogCSAgOzsKIAllc2FjCiAKQEAgLTMyODIsMzQgKzYyMTksMzAgQEAKIAljYXNlICRjdXJyZW50IGluCiAJMHxbMS05XXxbMS05XVswLTldfFsxLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XVswLTldKSA7OwogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBDVVJSRU5UIFxgJGN1cnJlbnQnIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIiAxPiYyCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19lcnJvciAiQ1VSUkVOVCBcYCRjdXJyZW50JyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJY2FzZSAkcmV2aXNpb24gaW4KIAkwfFsxLTldfFsxLTldWzAtOV18WzEtOV1bMC05XVswLTldfFsxLTldWzAtOV1bMC05XVswLTldfFsxLTldWzAtOV1bMC05XVswLTldWzAtOV0pIDs7CiAJKikKLQkgICRlY2hvICIkbW9kZW5hbWU6IFJFVklTSU9OIFxgJHJldmlzaW9uJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIgMT4mMgotCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZXJyb3IgIlJFVklTSU9OIFxgJHJldmlzaW9uJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJY2FzZSAkYWdlIGluCiAJMHxbMS05XXxbMS05XVswLTldfFsxLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XVswLTldKSA7OwogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBBR0UgXGAkYWdlJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIgMT4mMgotCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZXJyb3IgIkFHRSBcYCRhZ2UnIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIgorCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIgogCSAgOzsKIAllc2FjCiAKIAlpZiB0ZXN0ICIkYWdlIiAtZ3QgIiRjdXJyZW50IjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogQUdFIFxgJGFnZScgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGludGVyZmFjZSBudW1iZXIgXGAkY3VycmVudCciIDE+JjIKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2Vycm9yICJBR0UgXGAkYWdlJyBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgaW50ZXJmYWNlIG51bWJlciBcYCRjdXJyZW50JyIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAlmaQogCiAJIyBDYWxjdWxhdGUgdGhlIHZlcnNpb24gdmFyaWFibGVzLgpAQCAtMzMyMiwxMCArNjI1NSwxMiBAQAogCWRhcndpbikKIAkgICMgTGlrZSBMaW51eCwgYnV0IHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbiBhdmFpbGFibGUgaW4KIAkgICMgdmVyc3RyaW5nIGZvciBjb2RpbmcgaXQgaW50byB0aGUgbGlicmFyeSBoZWFkZXIKLQkgIG1ham9yPS5gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQorCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCiAJICAjIERhcndpbiBsZCBkb2Vzbid0IGxpa2UgMCBmb3IgdGhlc2Ugb3B0aW9ucy4uLgotCSAgbWlub3JfY3VycmVudD1gZXhwciAkY3VycmVudCArIDFgCisJICBmdW5jX2FyaXRoICRjdXJyZW50ICsgMQorCSAgbWlub3JfY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKIAkgIHhsY3ZlcnN0cmluZz0iJHt3bH0tY29tcGF0aWJpbGl0eV92ZXJzaW9uICR7d2x9JG1pbm9yX2N1cnJlbnQgJHt3bH0tY3VycmVudF92ZXJzaW9uICR7d2x9JG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgogCSAgdmVyc3RyaW5nPSItY29tcGF0aWJpbGl0eV92ZXJzaW9uICRtaW5vcl9jdXJyZW50IC1jdXJyZW50X3ZlcnNpb24gJG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgogCSAgOzsKQEAgLTMzMzcsMTUgKzYyNzIsMTcgQEAKIAogCWZyZWVic2QtZWxmKQogCSAgbWFqb3I9Ii4kY3VycmVudCIKLQkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50IjsKKwkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50IgogCSAgOzsKIAogCWlyaXggfCBub25zdG9wdXgpCiAJICBpZiB0ZXN0ICJYJGx0X2lyaXhfaW5jcmVtZW50IiA9ICJYbm8iOyB0aGVuCi0JICAgIG1ham9yPWBleHByICRjdXJyZW50IC0gJGFnZWAKKwkgICAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIGVsc2UKLQkgICAgbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlICsgMWAKKwkgICAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UgKyAxCiAJICBmaQorCSAgbWFqb3I9JGZ1bmNfYXJpdGhfcmVzdWx0CisKIAkgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgogCSAgICBub25zdG9wdXgpIHZlcnN0cmluZ19wcmVmaXg9bm9uc3RvcHV4IDs7CiAJICAgICopICAgICAgICAgdmVyc3RyaW5nX3ByZWZpeD1zZ2kgOzsKQEAgLTMzNTUsOCArNjI5MiwxMCBAQAogCSAgIyBBZGQgaW4gYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQgd2UgYXJlIGNvbXBhdGlibGUgd2l0aC4KIAkgIGxvb3A9JHJldmlzaW9uCiAJICB3aGlsZSB0ZXN0ICIkbG9vcCIgLW5lIDA7IGRvCi0JICAgIGlmYWNlPWBleHByICRyZXZpc2lvbiAtICRsb29wYAotCSAgICBsb29wPWBleHByICRsb29wIC0gMWAKKwkgICAgZnVuY19hcml0aCAkcmV2aXNpb24gLSAkbG9vcAorCSAgICBpZmFjZT0kZnVuY19hcml0aF9yZXN1bHQKKwkgICAgZnVuY19hcml0aCAkbG9vcCAtIDEKKwkgICAgbG9vcD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nX3ByZWZpeCRtYWpvci4kaWZhY2U6JHZlcnN0cmluZyIKIAkgIGRvbmUKIApAQCAtMzM2NiwyMCArNjMwNSwyNCBAQAogCSAgOzsKIAogCWxpbnV4KQotCSAgbWFqb3I9LmBleHByICRjdXJyZW50IC0gJGFnZWAKKwkgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCisJICBtYWpvcj0uJGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB2ZXJzdWZmaXg9IiRtYWpvci4kYWdlLiRyZXZpc2lvbiIKIAkgIDs7CiAKIAlvc2YpCi0JICBtYWpvcj0uYGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKIAkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50LiRhZ2UuJHJldmlzaW9uIgogCSAgdmVyc3RyaW5nPSIkY3VycmVudC4kYWdlLiRyZXZpc2lvbiIKIAogCSAgIyBBZGQgaW4gYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQgd2UgYXJlIGNvbXBhdGlibGUgd2l0aC4KIAkgIGxvb3A9JGFnZQogCSAgd2hpbGUgdGVzdCAiJGxvb3AiIC1uZSAwOyBkbwotCSAgICBpZmFjZT1gZXhwciAkY3VycmVudCAtICRsb29wYAotCSAgICBsb29wPWBleHByICRsb29wIC0gMWAKKwkgICAgZnVuY19hcml0aCAkY3VycmVudCAtICRsb29wCisJICAgIGlmYWNlPSRmdW5jX2FyaXRoX3Jlc3VsdAorCSAgICBmdW5jX2FyaXRoICRsb29wIC0gMQorCSAgICBsb29wPSRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtpZmFjZX0uMCIKIAkgIGRvbmUKIApAQCAtMzM4Nyw2ICs2MzMwLDExIEBACiAJICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgogCSAgOzsKIAorCXFueCkKKwkgIG1ham9yPSIuJGN1cnJlbnQiCisJICB2ZXJzdWZmaXg9Ii4kY3VycmVudCIKKwkgIDs7CisKIAlzdW5vcykKIAkgIG1ham9yPSIuJGN1cnJlbnQiCiAJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kcmV2aXNpb24iCkBAIC0zMzk1LDE0ICs2MzQzLDEzIEBACiAJd2luZG93cykKIAkgICMgVXNlICctJyByYXRoZXIgdGhhbiAnLicsIHNpbmNlIHdlIG9ubHkgd2FudCBvbmUKIAkgICMgZXh0ZW5zaW9uIG9uIERPUyA4LjMgZmlsZXN5c3RlbXMuCi0JICBtYWpvcj1gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQorCSAgbWFqb3I9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB2ZXJzdWZmaXg9Ii0kbWFqb3IiCiAJICA7OwogCiAJKikKLQkgICRlY2hvICIkbW9kZW5hbWU6IHVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIgMT4mMgotCSAgJGVjaG8gIkZhdGFsIGNvbmZpZ3VyYXRpb24gZXJyb3IuICBTZWUgdGhlICRQQUNLQUdFIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAidW5rbm93biBsaWJyYXJ5IHZlcnNpb24gdHlwZSBcYCR2ZXJzaW9uX3R5cGUnIgogCSAgOzsKIAllc2FjCiAKQEAgLTM0MzYsNyArNjM4Myw3IEBACiAJIyBDaGVjayB0byBzZWUgaWYgdGhlIGFyY2hpdmUgd2lsbCBoYXZlIHVuZGVmaW5lZCBzeW1ib2xzLgogCWlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0geWVzOyB0aGVuCiAJICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciID0gdW5zdXBwb3J0ZWQ7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogdW5kZWZpbmVkIHN5bWJvbHMgbm90IGFsbG93ZWQgaW4gJGhvc3Qgc2hhcmVkIGxpYnJhcmllcyIgMT4mMgorCSAgICBmdW5jX3dhcm5pbmcgInVuZGVmaW5lZCBzeW1ib2xzIG5vdCBhbGxvd2VkIGluICRob3N0IHNoYXJlZCBsaWJyYXJpZXMiCiAJICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCSAgICBidWlsZF9vbGRfbGlicz15ZXMKIAkgIGZpCkBAIC0zNDQ0LDIxICs2MzkxLDI2IEBACiAJICAjIERvbid0IGFsbG93IHVuZGVmaW5lZCBzeW1ib2xzLgogCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9IiRub191bmRlZmluZWRfZmxhZyIKIAlmaQorCiAgICAgICBmaQogCisgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKKyAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgorICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKwogICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgogCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CiAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCiAJcmVtb3ZlbGlzdD0KLQl0ZW1wcmVtb3ZlbGlzdD1gJGVjaG8gIiRvdXRwdXRfb2JqZGlyLyoiYAorCXRlbXByZW1vdmVsaXN0PWAkRUNITyAiJG91dHB1dF9vYmpkaXIvKiJgCiAJZm9yIHAgaW4gJHRlbXByZW1vdmVsaXN0OyBkbwogCSAgY2FzZSAkcCBpbgotCSAgICAqLiRvYmpleHQpCisJICAgICouJG9iamV4dCB8ICouZ2NubykKIAkgICAgICAgOzsKIAkgICAgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgfCAkb3V0cHV0X29iamRpci8kbGlibmFtZS4qIHwgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfSR7cmVsZWFzZX0uKikKIAkgICAgICAgaWYgdGVzdCAiWCRwcmVjaW91c19maWxlc19yZWdleCIgIT0gIlgiOyB0aGVuCi0JICAgICAgICAgaWYgZWNobyAkcCB8ICRFR1JFUCAtZSAiJHByZWNpb3VzX2ZpbGVzX3JlZ2V4IiA+L2Rldi9udWxsIDI+JjEKLQkgICAgICAgICB0aGVuCisJCSBpZiAkRUNITyAiJHAiIHwgJEVHUkVQIC1lICIkcHJlY2lvdXNfZmlsZXNfcmVnZXgiID4vZGV2L251bGwgMj4mMQorCQkgdGhlbgogCQkgICBjb250aW51ZQogCQkgZmkKIAkgICAgICAgZmkKQEAgLTM0NjcsMTAgKzY0MTksOCBAQAogCSAgICAqKSA7OwogCSAgZXNhYwogCWRvbmUKLQlpZiB0ZXN0IC1uICIkcmVtb3ZlbGlzdCI7IHRoZW4KLQkgICRzaG93ICIke3JtfXIgJHJlbW92ZWxpc3QiCi0JICAkcnVuICR7cm19ciAkcmVtb3ZlbGlzdAotCWZpCisJdGVzdCAtbiAiJHJlbW92ZWxpc3QiICYmIFwKKwkgIGZ1bmNfc2hvd19ldmFsICIke1JNfXIgXCRyZW1vdmVsaXN0IgogICAgICAgZmkKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCkBAIC0zNDc4LDE0ICs2NDI4LDE0IEBACiAJb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAogCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLQlvbGRvYmpzPSIkb2JqcyAiYCRlY2hvICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSckL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCiAgICAgICAjIEVsaW1pbmF0ZSBhbGwgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzLgogICAgICAgI2ZvciBwYXRoIGluICRub3RpbnN0X3BhdGg7IGRvCi0gICAgICAjCWxpYl9zZWFyY2hfcGF0aD1gJGVjaG8gIiRsaWJfc2VhcmNoX3BhdGggIiB8ICR7U0VEfSAtZSAicyUgJHBhdGggJSAlZyJgCi0gICAgICAjCWRlcGxpYnM9YCRlY2hvICIkZGVwbGlicyAiIHwgJHtTRUR9IC1lICJzJSAtTCRwYXRoICUgJWciYAotICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRlY2hvICIkZGVwZW5kZW5jeV9saWJzICIgfCAke1NFRH0gLWUgInMlIC1MJHBhdGggJSAlZyJgCisgICAgICAjCWxpYl9zZWFyY2hfcGF0aD1gJEVDSE8gIlgkbGliX3NlYXJjaF9wYXRoICIgfCAkWHNlZCAtZSAicyUgJHBhdGggJSAlZyJgCisgICAgICAjCWRlcGxpYnM9YCRFQ0hPICJYJGRlcGxpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICJYJGRlcGVuZGVuY3lfbGlicyAiIHwgJFhzZWQgLWUgInMlIC1MJHBhdGggJSAlZyJgCiAgICAgICAjZG9uZQogCiAgICAgICBpZiB0ZXN0IC1uICIkeHJwYXRoIjsgdGhlbgpAQCAtMzUyNiwxMiArNjQ3NiwxMiBAQAogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKikKKwkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyopCiAJICAgICMgdGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgYyBsaWJyYXJ5IChhcyBzdWNoKSEKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgLWZyYW1ld29yayBTeXN0ZW0iCisJICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKIAkgICAgOzsKIAkgICotKi1uZXRic2QqKQogCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KQEAgLTM1NDUsNyArNjQ5NSw3IEBACiAJICAqLSotc3lzdjQuMnV3MiogfCAqLSotc3lzdjUqIHwgKi0qLXVuaXh3YXJlKiB8ICotKi1PcGVuVU5JWCopCiAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKIAkgICAgOzsKLSAJICAqKQorCSAgKikKIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KIAkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbmVlZF9sYyIgPSAieWVzIjsgdGhlbgogCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKQEAgLTM1ODIsMTcgKzY1MzIsMTggQEAKIAkgICMgbGltaXRzLiBNYXliZSBldmVuIGJyZWFrcyBpdC4gIFdlIGNvbXBpbGUgYSBwcm9ncmFtLCBsaW5raW5nIGl0CiAJICAjIGFnYWluc3QgdGhlIGRlcGxpYnMgYXMgYSBwcm94eSBmb3IgdGhlIGxpYnJhcnkuICBUaGVuIHdlIGNhbiBjaGVjawogCSAgIyB3aGV0aGVyIHRoZXkgbGlua2VkIGluIHN0YXRpY2FsbHkgb3IgZHluYW1pY2FsbHkgd2l0aCBsZGQuCi0JICAkcm0gY29uZnRlc3QuYworCSAgJG9wdF9kcnlfcnVuIHx8ICRSTSBjb25mdGVzdC5jCiAJICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GCiAJICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH0KIEVPRgotCSAgJHJtIGNvbmZ0ZXN0CisJICAkb3B0X2RyeV9ydW4gfHwgJFJNIGNvbmZ0ZXN0CiAJICBpZiAkTFRDQyAkTFRDRkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAkZGVwbGliczsgdGhlbgogCSAgICBsZGRfb3V0cHV0PWBsZGQgY29uZnRlc3RgCiAJICAgIGZvciBpIGluICRkZXBsaWJzOyBkbwotCSAgICAgIG5hbWU9YGV4cHIgJGkgOiAnLWxcKC4qXCknYAotCSAgICAgICMgSWYgJG5hbWUgaXMgZW1wdHkgd2UgYXJlIG9wZXJhdGluZyBvbiBhIC1MIGFyZ3VtZW50LgotICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgIT0gIiIgJiYgdGVzdCAiJG5hbWUiICE9ICIwIjsgdGhlbgorCSAgICAgIGNhc2UgJGkgaW4KKwkgICAgICAtbCopCisJCWZ1bmNfc3RyaXBuYW1lIC1sICcnICIkaSIKKwkJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAqIiAkaSAiKikKQEAgLTM2MDAsMzcgKzY1NTEsNDAgQEAKIAkJICAgIGk9IiIKIAkJICAgIDs7CiAJCSAgZXNhYwotCSAgICAgICAgZmkKKwkJZmkKIAkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotCQkgIGxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKLQkJICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCBcXCRlY2hvIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiYAotCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXMKLQkJICBkZXBsaWJfbWF0Y2g9JDIKKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKwkJICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCisJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKwkJICBkZXBsaWJfbWF0Y2g9JDEKIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCiAJCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKIAkJICBlbHNlCiAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICRlY2hvCi0JCSAgICAkZWNobyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgJGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKLQkJICAgICRlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCi0JCSAgICAkZWNobyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgJEVDSE8KKwkJICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKKwkJICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBJIGJlbGlldmUgeW91IGRvIG5vdCBoYXZlIgorCQkgICAgJEVDSE8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIGl0IGZvciIKKwkJICAgICRFQ0hPICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgZmkKIAkJZmkKLQkgICAgICBlbHNlCisJCTs7CisJICAgICAgKikKIAkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0JICAgICAgZmkKKwkJOzsKKwkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgIGVsc2UKIAkgICAgIyBFcnJvciBvY2N1cnJlZCBpbiB0aGUgZmlyc3QgY29tcGlsZS4gIExldCdzIHRyeSB0byBzYWx2YWdlCiAJICAgICMgdGhlIHNpdHVhdGlvbjogQ29tcGlsZSBhIHNlcGFyYXRlIHByb2dyYW0gZm9yIGVhY2ggbGlicmFyeS4KIAkgICAgZm9yIGkgaW4gJGRlcGxpYnM7IGRvCi0JICAgICAgbmFtZT1gZXhwciAkaSA6ICctbFwoLipcKSdgCi0JICAgICAgIyBJZiAkbmFtZSBpcyBlbXB0eSB3ZSBhcmUgb3BlcmF0aW5nIG9uIGEgLUwgYXJndW1lbnQuCi0gICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiAhPSAiIiAmJiB0ZXN0ICIkbmFtZSIgIT0gIjAiOyB0aGVuCi0JCSRybSBjb25mdGVzdAorCSAgICAgIGNhc2UgJGkgaW4KKwkgICAgICAtbCopCisJCWZ1bmNfc3RyaXBuYW1lIC1sICcnICIkaSIKKwkJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJCSRvcHRfZHJ5X3J1biB8fCAkUk0gY29uZnRlc3QKIAkJaWYgJExUQ0MgJExUQ0ZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGk7IHRoZW4KIAkJICBsZGRfb3V0cHV0PWBsZGQgY29uZnRlc3RgCiAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgpAQCAtMzY0Miw0NCArNjU5Niw0NyBAQAogCQkgICAgZXNhYwogCQkgIGZpCiAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotCQkgICAgbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAotCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgXFwkZWNobyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcImAKLQkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXMKLQkJICAgIGRlcGxpYl9tYXRjaD0kMgorCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCSAgICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCisJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorCQkgICAgZGVwbGliX21hdGNoPSQxCiAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCiAJCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgogCQkgICAgZWxzZQogCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICAgJGVjaG8KLQkJICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgICAkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICAgJGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSAgICAgICRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSAgICAgICRlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSB0aGlzIG9uZSIKLQkJICAgICAgJGVjaG8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgICAgJEVDSE8KKwkJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgorCQkgICAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSB0aGlzIG9uZSIKKwkJICAgICAgJEVDSE8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKIAkJICAgIGZpCiAJCSAgZmkKIAkJZWxzZQogCQkgIGRyb3BwZWRkZXBzPXllcwotCQkgICRlY2hvCi0JCSAgJGVjaG8gIioqKiBXYXJuaW5nISAgTGlicmFyeSAkaSBpcyBuZWVkZWQgYnkgdGhpcyBsaWJyYXJ5IGJ1dCBJIHdhcyBub3QgYWJsZSB0byIKLQkJICAkZWNobyAiKioqIG1ha2UgaXQgbGluayBpbiEgIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBpdCBvciBzb21lIgotCQkgICRlY2hvICIqKiogbGlicmFyeSB0aGF0IGl0IGRlcGVuZHMgb24gYmVmb3JlIHRoaXMgbGlicmFyeSB3aWxsIGJlIGZ1bGx5IgotCQkgICRlY2hvICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgorCQkgICRFQ0hPCisJCSAgJEVDSE8gIioqKiBXYXJuaW5nISAgTGlicmFyeSAkaSBpcyBuZWVkZWQgYnkgdGhpcyBsaWJyYXJ5IGJ1dCBJIHdhcyBub3QgYWJsZSB0byIKKwkJICAkRUNITyAiKioqIG1ha2UgaXQgbGluayBpbiEgIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBpdCBvciBzb21lIgorCQkgICRFQ0hPICIqKiogbGlicmFyeSB0aGF0IGl0IGRlcGVuZHMgb24gYmVmb3JlIHRoaXMgbGlicmFyeSB3aWxsIGJlIGZ1bGx5IgorCQkgICRFQ0hPICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgogCQlmaQotCSAgICAgIGVsc2UKKwkJOzsKKwkgICAgICAqKQogCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLQkgICAgICBmaQorCQk7OworCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgZmkKIAkgIDs7CiAJZmlsZV9tYWdpYyopCi0JICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kCi0JICBmaWxlX21hZ2ljX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQyIFwoLipcKSJgCisJICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kOyBzaGlmdAorCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMSBcKC4qXCkiYAogCSAgZm9yIGFfZGVwbGliIGluICRkZXBsaWJzOyBkbwotCSAgICBuYW1lPWBleHByICRhX2RlcGxpYiA6ICctbFwoLipcKSdgCi0JICAgICMgSWYgJG5hbWUgaXMgZW1wdHkgd2UgYXJlIG9wZXJhdGluZyBvbiBhIC1MIGFyZ3VtZW50LgotICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiICE9ICIiICYmIHRlc3QgICIkbmFtZSIgIT0gIjAiOyB0aGVuCisJICAgIGNhc2UgJGFfZGVwbGliIGluCisJICAgIC1sKikKKwkgICAgICBmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGFfZGVwbGliIgorCSAgICAgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKQEAgLTM2ODksMTMgKzY2NDYsMTMgQEAKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLQkJbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgotCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgXAotCQkJIHwgZ3JlcCAiIC0+ICIgPi9kZXYvbnVsbDsgdGhlbgorCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgfAorCQkJICRHUkVQICIgLT4gIiA+L2Rldi9udWxsOyB0aGVuCiAJCQljb250aW51ZQogCQkgICAgICBmaQogCQkgICAgICAjIFRoZSBzdGF0ZW1lbnQgYWJvdmUgdHJpZXMgdG8gYXZvaWQgZW50ZXJpbmcgYW4KQEAgLTM3MDgsMTIgKzY2NjUsMTIgQEAKIAkJCXBvdGxpYmxpbms9YGxzIC1sZCAkcG90bGliIHwgJHtTRUR9ICdzLy4qIC0+IC8vJ2AKIAkJCWNhc2UgJHBvdGxpYmxpbmsgaW4KIAkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSIkcG90bGlibGluayI7OwotCQkJKikgcG90bGliPWAkZWNobyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworCQkJKikgcG90bGliPWAkRUNITyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OwogCQkJZXNhYwogCQkgICAgICBkb25lCi0JCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCBcCi0JCQkgfCAke1NFRH0gMTBxIFwKLQkJCSB8ICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCisJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8CisJCQkgJFNFRCAtZSAxMHEgfAorCQkJICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCiAJCQlhX2RlcGxpYj0iIgogCQkJYnJlYWsgMgpAQCAtMzcyMywzMiArNjY4MCwzNSBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRlY2hvCi0JCSRlY2hvICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJJEVDSE8KKwkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgorCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KLQkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciBmaWxlIG1hZ2ljIHRlc3QpIgorCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIGZpbGUgbWFnaWMgdGVzdCkiCiAJCWVsc2UKLQkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYW5kIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgcGFzc2VkIGEgZmlsZSBmb3JtYXQgdGVzdCIKLQkJICAkZWNobyAiKioqIHVzaW5nIGEgZmlsZSBtYWdpYy4gTGFzdCBmaWxlIGNoZWNrZWQ6ICRwb3RsaWIiCisJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCisJCSAgJEVDSE8gIioqKiB1c2luZyBhIGZpbGUgbWFnaWMuIExhc3QgZmlsZSBjaGVja2VkOiAkcG90bGliIgogCQlmaQogCSAgICAgIGZpCi0JICAgIGVsc2UKKwkgICAgICA7OworCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCiAJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotCSAgICBmaQorCSAgICAgIDs7CisJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW1hdGNoX3BhdHRlcm4qKQotCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZAotCSAgbWF0Y2hfcGF0dGVybl9yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMiBcKC4qXCkiYAorCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKKwkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKIAkgIGZvciBhX2RlcGxpYiBpbiAkZGVwbGliczsgZG8KLQkgICAgbmFtZT1gZXhwciAkYV9kZXBsaWIgOiAnLWxcKC4qXCknYAotCSAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KLQkgICAgaWYgdGVzdCAtbiAiJG5hbWUiICYmIHRlc3QgIiRuYW1lIiAhPSAiMCI7IHRoZW4KKwkgICAgY2FzZSAkYV9kZXBsaWIgaW4KKwkgICAgLWwqKQorCSAgICAgIGZ1bmNfc3RyaXBuYW1lIC1sICcnICIkYV9kZXBsaWIiCisJICAgICAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQpAQCAtMzc1OCwxNCArNjcxOCwxMyBAQAogCQllc2FjCiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgotCQlsaWJuYW1lPWBldmFsIFxcJGVjaG8gXCIkbGlibmFtZV9zcGVjXCJgCisJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAogCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotCQkgICAgaWYgZXZhbCAkZWNobyBcIiRwb3RlbnRfbGliXCIgMj4vZGV2L251bGwgXAotCQkgICAgICAgIHwgJHtTRUR9IDEwcSBcCi0JCSAgICAgICAgfCAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIHwgXAorCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgogCQkgICAgICBhX2RlcGxpYj0iIgogCQkgICAgICBicmVhayAyCkBAIC0zNzc1LDQ0ICs2NzM0LDQ2IEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJGVjaG8KLQkJJGVjaG8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgotCQkkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRlY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgorCQkkRUNITworCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCisJCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCiAJCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgotCQkgICRlY2hvICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIHJlZ2V4IHBhdHRlcm4gdGVzdCkiCisJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgcmVnZXggcGF0dGVybiB0ZXN0KSIKIAkJZWxzZQotCQkgICRlY2hvICIqKiogd2l0aCAkbGlibmFtZSBhbmQgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBwYXNzZWQgYSBmaWxlIGZvcm1hdCB0ZXN0IgotCQkgICRlY2hvICIqKiogdXNpbmcgYSByZWdleCBwYXR0ZXJuLiBMYXN0IGZpbGUgY2hlY2tlZDogJHBvdGxpYiIKKwkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYW5kIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgcGFzc2VkIGEgZmlsZSBmb3JtYXQgdGVzdCIKKwkJICAkRUNITyAiKioqIHVzaW5nIGEgcmVnZXggcGF0dGVybi4gTGFzdCBmaWxlIGNoZWNrZWQ6ICRwb3RsaWIiCiAJCWZpCiAJICAgICAgZmkKLQkgICAgZWxzZQorCSAgICAgIDs7CisJICAgICopCiAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KIAkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0JICAgIGZpCisJICAgICAgOzsKKwkgICAgZXNhYwogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KIAkgIDs7CiAJbm9uZSB8IHVua25vd24gfCAqKQogCSAgbmV3ZGVwbGlicz0iIgotCSAgdG1wX2RlcGxpYnM9YCRlY2hvICJYICRkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMkLy8nIFwKLQkgICAgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAorCSAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICRkZXBsaWJzIiB8ICRYc2VkIFwKKwkgICAgICAtZSAncy8gLWxjJC8vJyAtZSAncy8gLVtMUl1bXiBdKi8vZydgCiAJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJICAgIGZvciBpIGluICRwcmVkZXBzICRwb3N0ZGVwcyA7IGRvCiAJICAgICAgIyBjYW4ndCB1c2UgWHNlZCBiZWxvdywgYmVjYXVzZSAkaSBtaWdodCBjb250YWluICcvJwotCSAgICAgIHRtcF9kZXBsaWJzPWAkZWNobyAiWCAkdG1wX2RlcGxpYnMiIHwgJHtTRUR9IC1lICIxcyxeWCwsIiAtZSAicywkaSwsImAKKwkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIlggJHRtcF9kZXBsaWJzIiB8ICRYc2VkIC1lICJzLCRpLCwiYAogCSAgICBkb25lCiAJICBmaQotCSAgaWYgJGVjaG8gIlggJHRtcF9kZXBsaWJzIiB8ICRYc2VkIC1lICdzL1sgCV0vL2cnIFwKLQkgICAgfCBncmVwIC4gPi9kZXYvbnVsbDsgdGhlbgotCSAgICAkZWNobworCSAgaWYgJEVDSE8gIlggJHRtcF9kZXBsaWJzIiB8ICRYc2VkIC1lICdzL1sJIF0vL2cnIHwKKwkgICAgICRHUkVQIC4gPi9kZXYvbnVsbDsgdGhlbgorCSAgICAkRUNITwogCSAgICBpZiB0ZXN0ICJYJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA9ICJYbm9uZSI7IHRoZW4KLQkgICAgICAkZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgorCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCiAJICAgIGVsc2UKLQkgICAgICAkZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKIAkgICAgZmkKLQkgICAgJGVjaG8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgorCSAgICAkRUNITyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCiAJICAgIGRyb3BwZWRkZXBzPXllcwogCSAgZmkKIAkgIDs7CkBAIC0zODI1LDI0ICs2Nzg2LDI0IEBACiAKIAljYXNlICRob3N0IGluCiAJKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQotCSAgIyBPbiBSaGFwc29keSByZXBsYWNlIHRoZSBDIGxpYnJhcnkgaXMgdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgIG5ld2RlcGxpYnM9YCRlY2hvICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyAtZnJhbWV3b3JrIFN5c3RlbSAvJ2AKKwkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IHdpdGggdGhlIFN5c3RlbSBmcmFtZXdvcmsKKwkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJICA7OwogCWVzYWMKIAogCWlmIHRlc3QgIiRkcm9wcGVkZGVwcyIgPSB5ZXM7IHRoZW4KIAkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICRlY2hvCi0JICAgICRlY2hvICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKLQkgICAgJGVjaG8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgotCSAgICAkZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCi0JICAgICRlY2hvICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCisJICAgICRFQ0hPCisJICAgICRFQ0hPICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKKwkgICAgJEVDSE8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgorCSAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCisJICAgICRFQ0hPICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCiAJICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JICAgICAgJGVjaG8KLQkgICAgICAkZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JICAgICAgJGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JICAgICAgJGVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkgICAgICAkZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJICAgICAgJEVDSE8KKwkgICAgICAkRUNITyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJICAgICAgJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJICAgICAgJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKKwkgICAgICAkRUNITyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCSAgICAgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCkBAIC0zODUyLDE2ICs2ODEzLDE2IEBACiAJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJICAgIGZpCiAJICBlbHNlCi0JICAgICRlY2hvICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgotCSAgICAkZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKLQkgICAgJGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKKwkgICAgJEVDSE8gIioqKiBUaGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBoYXZlIGJlZW4gZHJvcHBlZCBoZXJlIHdpbGwgYmUiCisJICAgICRFQ0hPICIqKiogYXV0b21hdGljYWxseSBhZGRlZCB3aGVuZXZlciBhIHByb2dyYW0gaXMgbGlua2VkIHdpdGggdGhpcyBsaWJyYXJ5IgorCSAgICAkRUNITyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgogCiAJICAgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0gbm87IHRoZW4KLQkgICAgICAkZWNobwotCSAgICAgICRlY2hvICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgotCSAgICAgICRlY2hvICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKLQkgICAgICAkZWNobyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgotCSAgICAgICRlY2hvICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgorCSAgICAgICRFQ0hPCisJICAgICAgJEVDSE8gIioqKiBTaW5jZSB0aGlzIGxpYnJhcnkgbXVzdCBub3QgY29udGFpbiB1bmRlZmluZWQgc3ltYm9scywiCisJICAgICAgJEVDSE8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgorCSAgICAgICRFQ0hPICIqKiogaXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdpdGggLW5vLXVuZGVmaW5lZCwiCisJICAgICAgJEVDSE8gIioqKiBsaWJ0b29sIHdpbGwgb25seSBjcmVhdGUgYSBzdGF0aWMgdmVyc2lvbiBvZiBpdC4iCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJCW9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKQEAgLTM4NzUsNyArNjgzNiwxNCBAQAogCSMgRG9uZSBjaGVja2luZyBkZXBsaWJzIQogCWRlcGxpYnM9JG5ld2RlcGxpYnMKICAgICAgIGZpCi0KKyAgICAgICMgVGltZSB0byBjaGFuZ2UgYWxsIG91ciAiZm9vLmx0ZnJhbWV3b3JrIiBzdHVmZiBiYWNrIHRvICItZnJhbWV3b3JrIGZvbyIKKyAgICAgIGNhc2UgJGhvc3QgaW4KKwkqLSotZGFyd2luKikKKwkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGRlcGxpYnM9YCRFQ0hPICJYICRkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgOzsKKyAgICAgIGVzYWMKIAogICAgICAgIyBtb3ZlIGxpYnJhcnkgc2VhcmNoIHBhdGhzIHRoYXQgY29pbmNpZGUgd2l0aCBwYXRocyB0byBub3QgeWV0CiAgICAgICAjIGluc3RhbGxlZCBsaWJyYXJpZXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlicmFyeSBzZWFyY2ggbGlzdApAQCAtMzkwNCw3ICs2ODcyLDYgQEAKICAgICAgIGRvbmUKICAgICAgIGRlcGxpYnM9IiRuZXdfbGlicyIKIAotCiAgICAgICAjIEFsbCB0aGUgbGlicmFyeS1zcGVjaWZpYyB2YXJpYWJsZXMgKGluc3RhbGxfbGliZGlyIGlzIHNldCBhYm92ZSkuCiAgICAgICBsaWJyYXJ5X25hbWVzPQogICAgICAgb2xkX2xpYnJhcnk9CkBAIC0zOTQ5LDEwICs2OTE2LDcgQEAKIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgogCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KLQkgICAgICBjYXNlICRhcmNoaXZlX2NtZHMgaW4KLQkgICAgICAqXCRMRCopIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiA7OwotCSAgICAgICopICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIDs7Ci0JICAgICAgZXNhYworCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgogCSAgICBlbHNlCiAJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAJICAgIGZpCkBAIC0zOTc4LDggKzY5NDIsOSBAQAogCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCiAJZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiCiAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCi0JcmVhbG5hbWU9IiQyIgotCXNoaWZ0OyBzaGlmdAorCXNoaWZ0CisJcmVhbG5hbWU9IiQxIgorCXNoaWZ0CiAKIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCiAJICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCkBAIC0zOTk4LDcxICs2OTYzLDEyMiBAQAogCWRvbmUKIAogCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCi0JdGVzdCAteiAiJHBpY19mbGFnIiAmJiBsaWJvYmpzPWAkZWNobyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJdGVzdCAteiAiJHBpY19mbGFnIiAmJiBsaWJvYmpzPWAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKworCWRlbGZpbGVzPQorCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKwkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgorCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCisJZmkKKworCW9yaWdfZXhwb3J0X3N5bWJvbHM9CisJY2FzZSAkaG9zdF9vcyBpbgorCWN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCisJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KKwkgICAgIyBleHBvcnRpbmcgdXNpbmcgdXNlciBzdXBwbGllZCBzeW1maWxlCisJICAgIGlmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiAhPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgICMgYW5kIGl0J3MgTk9UIGFscmVhZHkgYSAuZGVmIGZpbGUuIE11c3QgZmlndXJlIG91dAorCSAgICAgICMgd2hpY2ggb2YgdGhlIGdpdmVuIHN5bWJvbHMgYXJlIGRhdGEgc3ltYm9scyBhbmQgdGFnCisJICAgICAgIyB0aGVtIGFzIHN1Y2guIFNvLCB0cmlnZ2VyIHVzZSBvZiBleHBvcnRfc3ltYm9sc19jbWRzLgorCSAgICAgICMgZXhwb3J0X3N5bWJvbHMgZ2V0cyByZWFzc2lnbmVkIGluc2lkZSB0aGUgInByZXBhcmUKKwkgICAgICAjIHRoZSBsaXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMiIGlmIHN0YXRlbWVudCwgc28gdGhlCisJICAgICAgIyBpbmNsdWRlX2V4cHN5bXMgbG9naWMgc3RpbGwgd29ya3MuCisJICAgICAgb3JpZ19leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgorCSAgICAgIGV4cG9ydF9zeW1ib2xzPQorCSAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKwkgICAgZmkKKwkgIGZpCisJICA7OworCWVzYWMKIAogCSMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCiAJaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgogCSAgaWYgdGVzdCAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgPSB5ZXMgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCisJICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCiAJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCi0JICAgICRydW4gJHJtICRleHBvcnRfc3ltYm9scworCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCiAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwogCSAgICBmb3IgY21kIGluICRjbWRzOyBkbwogCSAgICAgIElGUz0iJHNhdmVfaWZzIgogCSAgICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICAgaWYgbGVuPWBleHByICJYJGNtZCIgOiAiLioiYCAmJgotCSAgICAgICB0ZXN0ICIkbGVuIiAtbGUgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KLQkgICAgICAgICRzaG93ICIkY21kIgotCSAgICAgICAgJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/Ci0JICAgICAgICBza2lwcGVkX2V4cG9ydD1mYWxzZQorCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKKwkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisJCXNraXBwZWRfZXhwb3J0PWZhbHNlCiAJICAgICAgZWxzZQotCSAgICAgICAgIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCi0JICAgICAgICAkc2hvdyAidXNpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZSBmb3IgZXhwb3J0IGxpc3QuLi4iCi0JICAgICAgICBza2lwcGVkX2V4cG9ydD06CisJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgorCQlmdW5jX3ZlcmJvc2UgInVzaW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUgZm9yIGV4cG9ydCBsaXN0Li4uIgorCQlza2lwcGVkX2V4cG9ydD06CiAJCSMgQnJlYWsgb3V0IGVhcmx5LCBvdGhlcndpc2Ugc2tpcHBlZF9leHBvcnQgbWF5IGJlCiAJCSMgc2V0IHRvIGZhbHNlIGJ5IGEgbGF0ZXIgYnV0IHNob3J0ZXIgY21kLgogCQlicmVhawogCSAgICAgIGZpCiAJICAgIGRvbmUKIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLQkgICAgICAkc2hvdyAiJEVHUkVQIC1lIFwiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4XCIgXCIkZXhwb3J0X3N5bWJvbHNcIiA+IFwiJHtleHBvcnRfc3ltYm9sc31UXCIiCi0JICAgICAgJHJ1biBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRleHBvcnRfc3ltYm9scyIgPiAiJHtleHBvcnRfc3ltYm9sc31UIicKLQkgICAgICAkc2hvdyAiJG12IFwiJHtleHBvcnRfc3ltYm9sc31UXCIgXCIkZXhwb3J0X3N5bWJvbHNcIiIKLQkgICAgICAkcnVuIGV2YWwgJyRtdiAiJHtleHBvcnRfc3ltYm9sc31UIiAiJGV4cG9ydF9zeW1ib2xzIicKKwkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiOyB0aGVuCisJICAgICAgZnVuY19zaG93X2V2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJGV4cG9ydF9zeW1ib2xzIiA+ICIke2V4cG9ydF9zeW1ib2xzfVQiJworCSAgICAgIGZ1bmNfc2hvd19ldmFsICckTVYgIiR7ZXhwb3J0X3N5bWJvbHN9VCIgIiRleHBvcnRfc3ltYm9scyInCiAJICAgIGZpCiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0JICAkcnVuIGV2YWwgJyRlY2hvICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiRleHBvcnRfc3ltYm9scyInCisJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKwkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgorCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJZmkKKworCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCisJICAjIFRoZSBnaXZlbiBleHBvcnRzX3N5bWJvbHMgZmlsZSBoYXMgdG8gYmUgZmlsdGVyZWQsIHNvIGZpbHRlciBpdC4KKwkgIGZ1bmNfdmVyYm9zZSAiZmlsdGVyIHN5bWJvbCBsaXN0IGZvciBcYCRsaWJuYW1lLmxhJyB0byB0YWcgREFUQSBleHBvcnRzIgorCSAgIyBGSVhNRTogJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIHBvdGVudGlhbGx5IGNvbnRhaW5zIGxvdHMgb2YKKwkgICMgJ3MnIGNvbW1hbmRzIHdoaWNoIG5vdCBhbGwgc2VkcyBjYW4gaGFuZGxlLiBHTlUgc2VkIHNob3VsZCBiZSBmaW5lCisJICAjIHRob3VnaC4gQWxzbywgdGhlIGZpbHRlciBzY2FsZXMgc3VwZXJsaW5lYXJseSB3aXRoIHRoZSBudW1iZXIgb2YKKwkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgorCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCisJICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKwkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCiAJZmkKIAogCXRtcF9kZXBsaWJzPQogCWZvciB0ZXN0X2RlcGxpYiBpbiAkZGVwbGliczsgZG8KLQkJY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCi0JCSoiICR0ZXN0X2RlcGxpYiAiKikgOzsKLQkJKikKLQkJCXRtcF9kZXBsaWJzPSIkdG1wX2RlcGxpYnMgJHRlc3RfZGVwbGliIgotCQkJOzsKLQkJZXNhYworCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCisJICAqIiAkdGVzdF9kZXBsaWIgIiopIDs7CisJICAqKQorCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKKwkgICAgOzsKKwkgIGVzYWMKIAlkb25lCiAJZGVwbGlicz0iJHRtcF9kZXBsaWJzIgogCiAJaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgorCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIiAmJgorCSAgICB0ZXN0ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiA9IHllcyAmJgorCSAgICB0ZXN0IC16ICIkbGlib2JqcyI7IHRoZW4KKwkgICAgIyBleHRyYWN0IHRoZSBhcmNoaXZlcywgc28gd2UgaGF2ZSBvYmplY3RzIHRvIGxpc3QuCisJICAgICMgVE9ETzogY291bGQgb3B0aW1pemUgdGhpcyB0byBqdXN0IGV4dHJhY3Qgb25lIGFyY2hpdmUuCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPQorCSAgZmkKIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZWxzZQogCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgogCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKIAogCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKIAkgICAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCWZpCi0JCisKIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKIAkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKQEAgLTQwNzAsNyArNzA4Niw3IEBACiAKIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKIAlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkgICRydW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAke3JlYWxuYW1lfVUgJiYgJG12ICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CiAJZmkKIAogCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KQEAgLTQwODMsMjIgKzcwOTksMjQgQEAKIAkgICAgY21kcz0kbW9kdWxlX2NtZHMKIAkgIGZpCiAJZWxzZQotCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCi0JICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIKLQkgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKLQllbHNlCi0JICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIgotCSAgY21kcz0kYXJjaGl2ZV9jbWRzCisJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIKKwkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcworCSAgZWxzZQorCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIgorCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKIAkgIGZpCiAJZmkKIAogCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYKLQkgICBsZW49YGV4cHIgIlgkdGVzdF9jbWRzIiA6ICIuKiIgMj4vZGV2L251bGxgICYmCi0JICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisJICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIiAmJgorCSAgIGxlbj0kZnVuY19sZW5fcmVzdWx0ICYmCisJICAgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCiAJICA6CiAJZWxzZQotCSAgIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgcGllY2V3aXNlLgotCSAgJGVjaG8gImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgorCSAgIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgcGllY2V3aXNlCisJICAjIG9yLCBpZiB1c2luZyBHTlUgbGQgYW5kIHNraXBwZWRfZXhwb3J0IGlzIG5vdCA6LCB1c2UgYSBsaW5rZXIKKwkgICMgc2NyaXB0LgogCiAJICAjIFNhdmUgdGhlIHZhbHVlIG9mICRvdXRwdXQgYW5kICRsaWJvYmpzIGJlY2F1c2Ugd2Ugd2FudCB0bwogCSAgIyB1c2UgdGhlbSBsYXRlci4gIElmIHdlIGhhdmUgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsIHdlCkBAIC00MTEyLDc3ICs3MTMwLDE2MiBAQAogCSAgICBzYXZlX2xpYm9ianM9JGxpYm9ianMKIAkgIGZpCiAJICBzYXZlX291dHB1dD0kb3V0cHV0Ci0JICBvdXRwdXRfbGE9YCRlY2hvICJYJG91dHB1dCIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKwkgIG91dHB1dF9sYT1gJEVDSE8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAogCiAJICAjIENsZWFyIHRoZSByZWxvYWRhYmxlIG9iamVjdCBjcmVhdGlvbiBjb21tYW5kIHF1ZXVlIGFuZAogCSAgIyBpbml0aWFsaXplIGsgdG8gb25lLgogCSAgdGVzdF9jbWRzPQogCSAgY29uY2F0X2NtZHM9CiAJICBvYmpsaXN0PQotCSAgZGVsZmlsZXM9CiAJICBsYXN0X3JvYmo9CiAJICBrPTEKLQkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCSAgIyBMb29wIG92ZXIgdGhlIGxpc3Qgb2Ygb2JqZWN0cyB0byBiZSBsaW5rZWQuCi0JICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKLQkgIGRvCi0JICAgIGV2YWwgdGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgotCSAgICBpZiB0ZXN0ICJYJG9iamxpc3QiID0gWCB8fAotCSAgICAgICB7IGxlbj1gZXhwciAiWCR0ZXN0X2NtZHMiIDogIi4qIiAyPi9kZXYvbnVsbGAgJiYKLQkJIHRlc3QgIiRsZW4iIC1sZSAiJG1heF9jbWRfbGVuIjsgfTsgdGhlbgotCSAgICAgIG9iamxpc3Q9IiRvYmpsaXN0ICRvYmoiCi0JICAgIGVsc2UKLQkgICAgICAjIFRoZSBjb21tYW5kICR0ZXN0X2NtZHMgaXMgYWxtb3N0IHRvbyBsb25nLCBhZGQgYQotCSAgICAgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCi0JICAgICAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgotCQkjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgotCQlldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgotCSAgICAgIGVsc2UKLQkJIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KLQkJIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLQkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgotCSAgICAgIGZpCi0JICAgICAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0JICAgICAgaz1gZXhwciAkayArIDFgCi0JICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0JICAgICAgb2JqbGlzdD0kb2JqCi0JICAgICAgbGVuPTEKKworCSAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmtzY3JpcHQKKwkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBHTlUgbGQgc2NyaXB0OiAkb3V0cHV0IgorCSAgICAkRUNITyAnSU5QVVQgKCcgPiAkb3V0cHV0CisJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworCSAgICBkbworCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgIGRvbmUKKwkgICAgJEVDSE8gJyknID4+ICRvdXRwdXQKKwkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KKwkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuaworCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCisJICAgIDogPiAkb3V0cHV0CisJICAgIHNldCB4ICRzYXZlX2xpYm9ianMKKwkgICAgc2hpZnQKKwkgICAgZmlyc3RvYmo9CisJICAgIGlmIHRlc3QgIiRjb21waWxlcl9uZWVkc19vYmplY3QiID0geWVzOyB0aGVuCisJICAgICAgZmlyc3RvYmo9IiQxICIKKwkgICAgICBzaGlmdAogCSAgICBmaQotCSAgZG9uZQotCSAgIyBIYW5kbGUgdGhlIHJlbWFpbmluZyBvYmplY3RzIGJ5IGNyZWF0aW5nIG9uZSBsYXN0Ci0JICAjIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUuICBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdAotCSAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLQkgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJICAgIGZvciBvYmoKKwkgICAgZG8KKwkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICBkb25lCisJICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCisJICBlbHNlCisJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCisJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKKwkgICAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCisJICAgICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgorCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAorCSAgICAgIGxlbj0kbGVuMAogCi0JICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgotCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCi0JICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCi0JICAgICRydW4gJHJtICRleHBvcnRfc3ltYm9scwotCSAgICBsaWJvYmpzPSRvdXRwdXQKLQkgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KLQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JGV4cG9ydF9zeW1ib2xzX2NtZHNcIgotICAgICAgICAgIGZpCisJICAgICAgIyBMb29wIG92ZXIgdGhlIGxpc3Qgb2Ygb2JqZWN0cyB0byBiZSBsaW5rZWQuCisJICAgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCisJICAgICAgZG8KKwkJZnVuY19sZW4gIiAkb2JqIgorCQlmdW5jX2FyaXRoICRsZW4gKyAkZnVuY19sZW5fcmVzdWx0CisJCWxlbj0kZnVuY19hcml0aF9yZXN1bHQKKwkJaWYgdGVzdCAiWCRvYmpsaXN0IiA9IFggfHwKKwkJICAgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iOyB0aGVuCisJCSAgZnVuY19hcHBlbmQgb2JqbGlzdCAiICRvYmoiCisJCWVsc2UKKwkJICAjIFRoZSBjb21tYW5kICR0ZXN0X2NtZHMgaXMgYWxtb3N0IHRvbyBsb25nLCBhZGQgYQorCQkgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCisJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgorCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJCSAgZWxzZQorCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KKwkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ian5cJFJNICRsYXN0X3JvYmpcIgorCQkgIGZpCisJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisJCSAgZnVuY19hcml0aCAkayArIDEKKwkJICBrPSRmdW5jX2FyaXRoX3Jlc3VsdAorCQkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorCQkgIG9iamxpc3Q9JG9iagorCQkgIGZ1bmNfbGVuICIgJGxhc3Rfcm9iaiIKKwkJICBmdW5jX2FyaXRoICRsZW4wICsgJGZ1bmNfbGVuX3Jlc3VsdAorCQkgIGxlbj0kZnVuY19hcml0aF9yZXN1bHQKKwkJZmkKKwkgICAgICBkb25lCisJICAgICAgIyBIYW5kbGUgdGhlIHJlbWFpbmluZyBvYmplY3RzIGJ5IGNyZWF0aW5nIG9uZSBsYXN0CisJICAgICAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKKwkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKwkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCisJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCisJICAgICAgZmkKKwkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCiAKLQkgICMgU2V0IHVwIGEgY29tbWFuZCB0byByZW1vdmUgdGhlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzCi0JICAjIGFmdGVyIHRoZXkgYXJlIHVzZWQuCi0JICBpPTAKLQkgIHdoaWxlIHRlc3QgIiRpIiAtbHQgIiRrIgotCSAgZG8KLQkgICAgaT1gZXhwciAkaSArIDFgCi0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2l9LiRvYmpleHQiCi0JICBkb25lCisJICAgIGVsc2UKKwkgICAgICBvdXRwdXQ9CisJICAgIGZpCiAKLQkgICRlY2hvICJjcmVhdGluZyBhIHRlbXBvcmFyeSByZWxvYWRhYmxlIG9iamVjdCBmaWxlOiAkb3V0cHV0IgorCSAgICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCisJICAgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmV4cCIKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scworCSAgICAgIGxpYm9ianM9JG91dHB1dAorCSAgICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCisJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCisJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KKwkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKwkgICAgICBmaQorCSAgICBmaQogCi0JICAjIExvb3AgdGhyb3VnaCB0aGUgY29tbWFuZHMgZ2VuZXJhdGVkIGFib3ZlIGFuZCBleGVjdXRlIHRoZW0uCi0JICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgIGZvciBjbWQgaW4gJGNvbmNhdF9jbWRzOyBkbworCSAgICB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVsb2FkYWJsZSBvYmplY3QgZmlsZTogJG91dHB1dCIKKworCSAgICAjIExvb3AgdGhyb3VnaCB0aGUgY29tbWFuZHMgZ2VuZXJhdGVkIGFib3ZlIGFuZCBleGVjdXRlIHRoZW0uCisJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworCSAgICBmb3IgY21kIGluICRjb25jYXRfY21kczsgZG8KKwkgICAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgICAkb3B0X3NpbGVudCB8fCB7CisJCSAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgorCQkgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKKwkgICAgICB9CisJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWQiIHx8IHsKKwkJbHRfZXhpdD0kPworCisJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorCQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKwkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCisJCWZpCisKKwkJZXhpdCAkbHRfZXhpdAorCSAgICAgIH0KKwkgICAgZG9uZQogCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgJHNob3cgIiRjbWQiCi0JICAgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCSAgZG9uZQotCSAgSUZTPSIkc2F2ZV9pZnMiCisKKwkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAmJiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgorCSAgICAgIGZ1bmNfc2hvd19ldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRleHBvcnRfc3ltYm9scyIgPiAiJHtleHBvcnRfc3ltYm9sc31UIicKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJE1WICIke2V4cG9ydF9zeW1ib2xzfVQiICIkZXhwb3J0X3N5bWJvbHMiJworCSAgICBmaQorCSAgZmkKKworICAgICAgICAgIGlmICR7c2tpcHBlZF9leHBvcnQtZmFsc2V9OyB0aGVuCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKwkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKwkgICAgZmkKKworCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KKwkgICAgICAjIFRoZSBnaXZlbiBleHBvcnRzX3N5bWJvbHMgZmlsZSBoYXMgdG8gYmUgZmlsdGVyZWQsIHNvIGZpbHRlciBpdC4KKwkgICAgICBmdW5jX3ZlcmJvc2UgImZpbHRlciBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYScgdG8gdGFnIERBVEEgZXhwb3J0cyIKKwkgICAgICAjIEZJWE1FOiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgcG90ZW50aWFsbHkgY29udGFpbnMgbG90cyBvZgorCSAgICAgICMgJ3MnIGNvbW1hbmRzIHdoaWNoIG5vdCBhbGwgc2VkcyBjYW4gaGFuZGxlLiBHTlUgc2VkIHNob3VsZCBiZSBmaW5lCisJICAgICAgIyB0aG91Z2guIEFsc28sIHRoZSBmaWx0ZXIgc2NhbGVzIHN1cGVybGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mCisJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKKwkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgorCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgorCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworCSAgICBmaQorCSAgZmkKIAogCSAgbGlib2Jqcz0kb3V0cHV0CiAJICAjIFJlc3RvcmUgdGhlIHZhbHVlIG9mIG91dHB1dC4KQEAgLTQxOTAsNiArNzI5Myw3IEBACiAKIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSIgJiYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKKwkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGZpCiAJICAjIEV4cGFuZCB0aGUgbGlicmFyeSBsaW5raW5nIGNvbW1hbmRzIGFnYWluIHRvIHJlc2V0IHRoZQogCSAgIyB2YWx1ZSBvZiAkbGlib2JqcyBmb3IgcGllY2V3aXNlIGxpbmtpbmcuCkBAIC00MjAyLDI4ICs3MzA2LDQ1IEBACiAJICAgICAgY21kcz0kbW9kdWxlX2NtZHMKIAkgICAgZmkKIAkgIGVsc2UKLQkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCi0JICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKLQkgIGVsc2UKLQkgICAgY21kcz0kYXJjaGl2ZV9jbWRzCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCisJICAgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcworCSAgICBlbHNlCisJICAgICAgY21kcz0kYXJjaGl2ZV9jbWRzCiAJICAgIGZpCiAJICBmaQotCi0JICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byByZW1vdmUgdGhlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzCi0JICAjIHRvIHRoZSBqdXN0LXJlc2V0ICRjbWRzLgotCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkcm0gJGRlbGZpbGVzXCIKIAlmaQorCisJaWYgdGVzdCAtbiAiJGRlbGZpbGVzIjsgdGhlbgorCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KKwkgIGV2YWwgY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiCisJZmkKKworCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCisJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworCSAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorCWZpCisKIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKIAlmb3IgY21kIGluICRjbWRzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAJICBldmFsIGNtZD1cIiRjbWRcIgotCSAgJHNob3cgIiRjbWQiCi0JICAkcnVuIGV2YWwgIiRjbWQiIHx8IHsKKwkgICRvcHRfc2lsZW50IHx8IHsKKwkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgorCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisJICB9CisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZCIgfHwgewogCSAgICBsdF9leGl0PSQ/CiAKIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CiAJICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotCSAgICAgICRydW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAke3JlYWxuYW1lfVQgJiYgJG12ICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJworCSAgICAgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCisJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAorCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQogCSAgICBmaQogCiAJICAgIGV4aXQgJGx0X2V4aXQKQEAgLTQyMzMsMTIgKzczNTQsMTEgQEAKIAogCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAogCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotCSAgJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICR7cmVhbG5hbWV9VCAmJiAkbXYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkbXYgIiRyZWFsbmFtZSJVICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KIAogCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0JICAgICAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSAgICAgICRydW4gJHtybX1yICIkZ2VudG9wIgorCSAgICAgIGZ1bmNfc2hvd19ldmFsICcke1JNfXIgIiRnZW50b3AiJwogCSAgICBmaQogCSAgZmkKIApAQCAtNDI0OCw4ICs3MzY4LDcgQEAKIAkjIENyZWF0ZSBsaW5rcyB0byB0aGUgcmVhbCBsaWJyYXJ5LgogCWZvciBsaW5rbmFtZSBpbiAkbGlua25hbWVzOyBkbwogCSAgaWYgdGVzdCAiJHJlYWxuYW1lIiAhPSAiJGxpbmtuYW1lIjsgdGhlbgotCSAgICAkc2hvdyAiKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAkbGlua25hbWUgJiYgJExOX1MgJHJlYWxuYW1lICRsaW5rbmFtZSkiCi0JICAgICRydW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAkbGlua25hbWUgJiYgJExOX1MgJHJlYWxuYW1lICRsaW5rbmFtZSknIHx8IGV4aXQgJD8KKwkgICAgZnVuY19zaG93X2V2YWwgJyhjZCAiJG91dHB1dF9vYmpkaXIiICYmICRSTSAiJGxpbmtuYW1lIiAmJiAkTE5fUyAiJHJlYWxuYW1lIiAiJGxpbmtuYW1lIiknICdleGl0ICQ/JwogCSAgZmkKIAlkb25lCiAKQEAgLTQyNjIsMzkgKzczODEsMzUgQEAKICAgICAgIDs7CiAKICAgICBvYmopCisgICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgorCWZ1bmNfd2FybmluZyAiXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgorICAgICAgZmkKKwogICAgICAgY2FzZSAiICRkZXBsaWJzIiBpbgogICAgICAgKlwgLWwqIHwgKlwgLUwqKQotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMiA7OworCWZ1bmNfd2FybmluZyAiXGAtbCcgYW5kIFxgLUwnIGFyZSBpZ25vcmVkIGZvciBvYmplY3RzIiA7OwogICAgICAgZXNhYwogCi0gICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRycGF0aCIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1ycGF0aCcgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiR4cnBhdGgiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLVInIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtUicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiR2aW5mbyIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0IC1uICIkcmVsZWFzZSI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCiAKICAgICAgIGNhc2UgJG91dHB1dCBpbgogICAgICAgKi5sbykKLQlpZiB0ZXN0IC1uICIkb2JqcyRvbGRfZGVwbGlicyI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBidWlsZCBsaWJyYXJ5IG9iamVjdCBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKLQlsaWJvYmo9IiRvdXRwdXQiCi0Jb2JqPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRsbzJvImAKKwl0ZXN0IC1uICIkb2JqcyRvbGRfZGVwbGlicyIgJiYgXAorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnJhcnkgb2JqZWN0IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIgorCisJbGlib2JqPSRvdXRwdXQKKwlmdW5jX2xvMm8gIiRsaWJvYmoiCisJb2JqPSRmdW5jX2xvMm9fcmVzdWx0CiAJOzsKICAgICAgICopCiAJbGlib2JqPQpAQCAtNDMwMyw3ICs3NDE4LDcgQEAKICAgICAgIGVzYWMKIAogICAgICAgIyBEZWxldGUgdGhlIG9sZCBvYmplY3RzLgotICAgICAgJHJ1biAkcm0gJG9iaiAkbGlib2JqCisgICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRvYmogJGxpYm9iagogCiAgICAgICAjIE9iamVjdHMgZnJvbSBjb252ZW5pZW5jZSBsaWJyYXJpZXMuICBUaGlzIGFzc3VtZXMKICAgICAgICMgc2luZ2xlLXZlcnNpb24gY29udmVuaWVuY2UgbGlicmFyaWVzLiAgV2hlbmV2ZXIgd2UgY3JlYXRlCkBAIC00MzE5LDcgKzc0MzQsNyBAQAogICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgogCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkZWNobyAiWCR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkWHNlZCAtZSAnc3wsfCB8ZydgCisJICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICJYJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRYc2VkIC1lICdzfCx8IHxnJ2AKIAllbHNlCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCiAJICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKQEAgLTQzMzAsMjQgKzc0NDUsMTUgQEAKICAgICAgIGZpCiAKICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJGVjaG8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JCcvZCcgLWUgJy9cLmxpYiQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAogICAgICAgb3V0cHV0PSIkb2JqIgotICAgICAgY21kcz0kcmVsb2FkX2NtZHMKLSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQlJRlM9IiRzYXZlX2lmcyIKLQlldmFsIGNtZD1cIiRjbWRcIgotCSRzaG93ICIkY21kIgotCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotICAgICAgZG9uZQotICAgICAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJHJlbG9hZF9jbWRzIiAnZXhpdCAkPycKIAogICAgICAgIyBFeGl0IGlmIHdlIGFyZW4ndCBkb2luZyBhIGxpYnJhcnkgb2JqZWN0IGZpbGUuCiAgICAgICBpZiB0ZXN0IC16ICIkbGlib2JqIjsgdGhlbgogCWlmIHRlc3QgLW4gIiRnZW50b3AiOyB0aGVuCi0JICAkc2hvdyAiJHtybX1yICRnZW50b3AiCi0JICAkcnVuICR7cm19ciAkZ2VudG9wCisJICBmdW5jX3Nob3dfZXZhbCAnJHtSTX1yICIkZ2VudG9wIicKIAlmaQogCiAJZXhpdCAkRVhJVF9TVUNDRVNTCkBAIC00MzU1LDE0ICs3NDYxLDEzIEBACiAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgogCWlmIHRlc3QgLW4gIiRnZW50b3AiOyB0aGVuCi0JICAkc2hvdyAiJHtybX1yICRnZW50b3AiCi0JICAkcnVuICR7cm19ciAkZ2VudG9wCisJICBmdW5jX3Nob3dfZXZhbCAnJHtSTX1yICIkZ2VudG9wIicKIAlmaQogCiAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKIAkjIGFjY2lkZW50YWxseSBsaW5rIGl0IGludG8gYSBwcm9ncmFtLgogCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKLQkjICRydW4gZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/CisJIyAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/CiAJZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICBmaQogCkBAIC00MzcwLDIwICs3NDc1LDExIEBACiAJIyBPbmx5IGRvIGNvbW1hbmRzIGlmIHdlIHJlYWxseSBoYXZlIGRpZmZlcmVudCBQSUMgb2JqZWN0cy4KIAlyZWxvYWRfb2Jqcz0iJGxpYm9ianMgJHJlbG9hZF9jb252X29ianMiCiAJb3V0cHV0PSIkbGlib2JqIgotCWNtZHM9JHJlbG9hZF9jbWRzCi0Jc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JZm9yIGNtZCBpbiAkY21kczsgZG8KLQkgIElGUz0iJHNhdmVfaWZzIgotCSAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICRzaG93ICIkY21kIgotCSAgJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/Ci0JZG9uZQotCUlGUz0iJHNhdmVfaWZzIgorCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcmVsb2FkX2NtZHMiICdleGl0ICQ/JwogICAgICAgZmkKIAogICAgICAgaWYgdGVzdCAtbiAiJGdlbnRvcCI7IHRoZW4KLQkkc2hvdyAiJHtybX1yICRnZW50b3AiCi0JJHJ1biAke3JtfXIgJGdlbnRvcAorCWZ1bmNfc2hvd19ldmFsICcke1JNfXIgIiRnZW50b3AiJwogICAgICAgZmkKIAogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCkBAIC00MzkxLDM5ICs3NDg3LDQ1IEBACiAKICAgICBwcm9nKQogICAgICAgY2FzZSAkaG9zdCBpbgotCSpjeWd3aW4qKSBvdXRwdXQ9YCRlY2hvICRvdXRwdXQgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLDtzLCQsLmV4ZSwnYCA7OworCSpjeWd3aW4qKSBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRvdXRwdXQiCisJICAgICAgICAgIG91dHB1dD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0LmV4ZTs7CiAgICAgICBlc2FjCi0gICAgICBpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBwcm9ncmFtcyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiR2aW5mbyIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBwcm9ncmFtcyIKIAotICAgICAgaWYgdGVzdCAtbiAiJHJlbGVhc2UiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiCiAKLSAgICAgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllczsgdGhlbgotCWlmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB1bmtub3duICYmIHRlc3QgIiRkbG9wZW5fc2VsZiIgPSB1bmtub3duICYmCi0JICAgdGVzdCAiJGRsb3Blbl9zZWxmX3N0YXRpYyIgPSB1bmtub3duOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYEFDX0xJQlRPT0xfRExPUEVOJyBub3QgdXNlZC4gQXNzdW1pbmcgbm8gZGxvcGVuIHN1cHBvcnQuIgotCWZpCi0gICAgICBmaQorICAgICAgdGVzdCAiJHByZWxvYWQiID0geWVzIFwKKyAgICAgICAgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHVua25vd24gXAorCSYmIHRlc3QgIiRkbG9wZW5fc2VsZiIgPSB1bmtub3duIFwKKwkmJiB0ZXN0ICIkZGxvcGVuX3NlbGZfc3RhdGljIiA9IHVua25vd24gJiYgXAorCSAgZnVuY193YXJuaW5nICJcYExUX0lOSVQoW2Rsb3Blbl0pJyBub3QgdXNlZC4gQXNzdW1pbmcgbm8gZGxvcGVuIHN1cHBvcnQuIgogCiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJIyBPbiBSaGFwc29keSByZXBsYWNlIHRoZSBDIGxpYnJhcnkgaXMgdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQljb21waWxlX2RlcGxpYnM9YCRlY2hvICJYICRjb21waWxlX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIC1mcmFtZXdvcmsgU3lzdGVtIC8nYAotCWZpbmFsaXplX2RlcGxpYnM9YCRlY2hvICJYICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyAtZnJhbWV3b3JrIFN5c3RlbSAvJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICJYICRjb21waWxlX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAogCTs7CiAgICAgICBlc2FjCiAKICAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICpkYXJ3aW4qKQotICAgICAgICAjIERvbid0IGFsbG93IGxhenkgbGlua2luZywgaXQgYnJlYWtzIEMrKyBnbG9iYWwgY29uc3RydWN0b3JzCi0gICAgICAgIGlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KLSAgICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLSAgICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotICAgICAgICBmaQotICAgICAgICA7OworICAgICAgKi0qLWRhcndpbiopCisJIyBEb24ndCBhbGxvdyBsYXp5IGxpbmtpbmcsIGl0IGJyZWFrcyBDKysgZ2xvYmFsIGNvbnN0cnVjdG9ycworCSMgQnV0IGlzIHN1cHBvc2VkbHkgZml4ZWQgb24gMTAuNCBvciBsYXRlciAoeWF5ISkuCisJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgorCSAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSBpbgorCSAgICAxMC5bMDEyM10pCisJICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgIDs7CisJICBlc2FjCisJZmkKKwkjIFRpbWUgdG8gY2hhbmdlIGFsbCBvdXIgImZvby5sdGZyYW1ld29yayIgc3R1ZmYgYmFjayB0byAiLWZyYW1ld29yayBmb28iCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICJYICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCTs7CiAgICAgICBlc2FjCiAKIApAQCAtNDQ5OCwxNCArNzYwMCwxNiBAQAogCSAgZXNhYwogCWZpCiAJY2FzZSAkaG9zdCBpbgotCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqKQotCSAgdGVzdGJpbmRpcj1gJGVjaG8gIlgkbGliZGlyIiB8ICRYc2VkIC1lICdzKi9saWIkKi9iaW4qJ2AKKwkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotY2VnY2MqKQorCSAgdGVzdGJpbmRpcj1gJHtFQ0hPfSAiJGxpYmRpciIgfCAke1NFRH0gLWUgJ3MqL2xpYiQqL2JpbionYAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokbGliZGlyOiIqKSA7OworCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7CiAJICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwogCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CkBAIC00NTU3LDI4MSArNzY2MSw1MSBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkbGlib2JqcyIgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogCSMgVHJhbnNmb3JtIGFsbCB0aGUgbGlicmFyeSBvYmplY3RzIGludG8gc3RhbmRhcmQgb2JqZWN0cy4KLQljb21waWxlX2NvbW1hbmQ9YCRlY2hvICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAotCWZpbmFsaXplX2NvbW1hbmQ9YCRlY2hvICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKLSAgICAgIGRsc3ltcz0KLSAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JaWYgdGVzdCAtbiAiJE5NIiAmJiB0ZXN0IC1uICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCSAgZGxzeW1zPSIke291dHB1dG5hbWV9Uy5jIgotCWVsc2UKLQkgICRlY2hvICIkbW9kZW5hbWU6IG5vdCBjb25maWd1cmVkIHRvIGV4dHJhY3QgZ2xvYmFsIHN5bWJvbHMgZnJvbSBkbHByZW9wZW5lZCBmaWxlcyIgMT4mMgotCWZpCisgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJG91dHB1dG5hbWUiICJAUFJPR1JBTUAiICJubyIKKworICAgICAgIyB0ZW1wbGF0ZSBwcmVsaW5raW5nIHN0ZXAKKyAgICAgIGlmIHRlc3QgLW4gIiRwcmVsaW5rX2NtZHMiOyB0aGVuCisJZnVuY19leGVjdXRlX2NtZHMgIiRwcmVsaW5rX2NtZHMiICdleGl0ICQ/JwogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAtbiAiJGRsc3ltcyI7IHRoZW4KLQljYXNlICRkbHN5bXMgaW4KLQkiIikgOzsKLQkqLmMpCi0JICAjIERpc2NvdmVyIHRoZSBubGlzdCBvZiBlYWNoIG9mIHRoZSBkbGZpbGVzLgotCSAgbmxpc3Q9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX0ubm0iCi0KLQkgICRzaG93ICIkcm0gJG5saXN0ICR7bmxpc3R9UyAke25saXN0fVQiCi0JICAkcnVuICRybSAiJG5saXN0IiAiJHtubGlzdH1TIiAiJHtubGlzdH1UIgotCi0JICAjIFBhcnNlIHRoZSBuYW1lIGxpc3QgaW50byBhIHNvdXJjZSBmaWxlLgotCSAgJHNob3cgImNyZWF0aW5nICRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiCi0KLQkgIHRlc3QgLXogIiRydW4iICYmICRlY2hvID4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0vKiAkZGxzeW1zIC0gc3ltYm9sIHJlc29sdXRpb24gdGFibGUgZm9yIFxgJG91dHB1dG5hbWUnIGRsc3ltIGVtdWxhdGlvbi4gKi8KLS8qIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RBTVAgKi8KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gXCJDXCIgewotI2VuZGlmCi0KLS8qIFByZXZlbnQgdGhlIG9ubHkga2luZCBvZiBkZWNsYXJhdGlvbiBjb25mbGljdHMgd2UgY2FuIG1ha2UuICovCi0jZGVmaW5lIGx0X3ByZWxvYWRlZF9zeW1ib2xzIHNvbWVfb3RoZXJfc3ltYm9sCi0KLS8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCi0iCi0KLQkgIGlmIHRlc3QgIiRkbHNlbGYiID0geWVzOyB0aGVuCi0JICAgICRzaG93ICJnZW5lcmF0aW5nIHN5bWJvbCBsaXN0IGZvciBcYCRvdXRwdXQnIgotCi0JICAgIHRlc3QgLXogIiRydW4iICYmICRlY2hvICc6IEBQUk9HUkFNQCAnID4gIiRubGlzdCIKLQotCSAgICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCi0JICAgIHByb2dmaWxlcz1gJGVjaG8gIlgkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAotCSAgICBmb3IgYXJnIGluICRwcm9nZmlsZXM7IGRvCi0JICAgICAgJHNob3cgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGFyZyciCi0JICAgICAgJHJ1biBldmFsICIkTk0gJGFyZyB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0JICAgIGRvbmUKLQotCSAgICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgICAgICRydW4gZXZhbCAnJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0JICAgICAgJHJ1biBldmFsICckbXYgIiRubGlzdCJUICIkbmxpc3QiJwotCSAgICBmaQotCi0JICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLQkgICAgICAkcnVuIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLQkgICAgICAkcnVuIGV2YWwgJyRtdiAiJG5saXN0IlQgIiRubGlzdCInCi0JICAgIGZpCi0KLQkgICAgIyBQcmVwYXJlIHRoZSBsaXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMKLQkgICAgaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgotCSAgICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCi0JICAgICAgJHJ1biAkcm0gJGV4cG9ydF9zeW1ib2xzCi0JICAgICAgJHJ1biBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKLSAgICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQotCSAgICAgICAgJHJ1biBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotCQkkcnVuIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICBlc2FjCi0JICAgIGVsc2UKLQkgICAgICAkcnVuIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJwotCSAgICAgICRydW4gZXZhbCAnZ3JlcCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJwotCSAgICAgICRydW4gZXZhbCAnbXYgIiRubGlzdCJUICIkbmxpc3QiJwotICAgICAgICAgICAgICBjYXNlICRob3N0IGluCi0gICAgICAgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiApCi0JICAgICAgICAkcnVuIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0JCSRydW4gZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAgIGVzYWMKLQkgICAgZmkKLQkgIGZpCi0KLQkgIGZvciBhcmcgaW4gJGRscHJlZmlsZXM7IGRvCi0JICAgICRzaG93ICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRhcmcnIgotCSAgICBuYW1lPWAkZWNobyAiJGFyZyIgfCAke1NFRH0gLWUgJ3MlXi4qLyUlJ2AKLQkgICAgJHJ1biBldmFsICckZWNobyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotCSAgICAkcnVuIGV2YWwgIiROTSAkYXJnIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLQkgIGRvbmUKLQotCSAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KLQkgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBhbiBlbXB0eSBmaWxlLgotCSAgICB0ZXN0IC1mICIkbmxpc3QiIHx8IDogPiAiJG5saXN0IgotCi0JICAgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCi0JICAgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKLQkgICAgICAkbXYgIiRubGlzdCJUICIkbmxpc3QiCi0JICAgIGZpCi0KLQkgICAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KLQkgICAgaWYgZ3JlcCAtdiAiXjogIiA8ICIkbmxpc3QiIHwKLQkJaWYgc29ydCAtayAzIDwvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JCSAgc29ydCAtayAzCi0JCWVsc2UKLQkJICBzb3J0ICsyCi0JCWZpIHwKLQkJdW5pcSA+ICIkbmxpc3QiUzsgdGhlbgotCSAgICAgIDoKLQkgICAgZWxzZQotCSAgICAgIGdyZXAgLXYgIl46ICIgPCAiJG5saXN0IiA+ICIkbmxpc3QiUwotCSAgICBmaQotCi0JICAgIGlmIHRlc3QgLWYgIiRubGlzdCJTOyB0aGVuCi0JICAgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY2RlY2wiJyA8ICIkbmxpc3QiUyA+PiAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyInCi0JICAgIGVsc2UKLQkgICAgICAkZWNobyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiCi0JICAgIGZpCi0KLQkgICAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0KLSN1bmRlZiBsdF9wcmVsb2FkZWRfc3ltYm9scwotCi0jaWYgZGVmaW5lZCAoX19TVERDX18pICYmIF9fU1REQ19fCi0jIGRlZmluZSBsdF9wdHIgdm9pZCAqCi0jZWxzZQotIyBkZWZpbmUgbHRfcHRyIGNoYXIgKgotIyBkZWZpbmUgY29uc3QKLSNlbmRpZgotCi0vKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gKi8KLSIKLQotCSAgICBjYXNlICRob3N0IGluCi0JICAgICpjeWd3aW4qIHwgKm1pbmd3KiApCi0JICAkZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIgIlwKLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY2FuJ3QgYmUgY29uc3QsIGJlY2F1c2UKLSAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCi0gICBvbiBwc2V1ZG8tcmVsb2NzICovCi1zdHJ1Y3QgewotIgotCSAgICAgIDs7Ci0JICAgICogKQotCSAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi1jb25zdCBzdHJ1Y3QgewotIgotCSAgICAgIDs7Ci0JICAgIGVzYWMKLQotCi0JICAkZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIgIlwKLSAgY29uc3QgY2hhciAqbmFtZTsKLSAgbHRfcHRyIGFkZHJlc3M7Ci19Ci1sdF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KLXtcCi0iCi0KLQkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiCi0KLQkgICAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0gIHswLCAobHRfcHRyKSAwfQotfTsKLQotLyogVGhpcyB3b3JrcyBhcm91bmQgYSBwcm9ibGVtIGluIEZyZWVCU0QgbGlua2VyICovCi0jaWZkZWYgRlJFRUJTRF9XT1JLQVJPVU5ECi1zdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotICByZXR1cm4gbHRfcHJlbG9hZGVkX3N5bWJvbHM7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWZcCi0iCi0JICBmaQotCi0JICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9Ci0JICBjYXNlICRob3N0IGluCi0JICAjIGNvbXBpbGluZyB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgd2l0aCBwaWNfZmxhZyB3b3JrcyBhcm91bmQKLQkgICMgYSBGcmVlQlNEIGJ1ZyB0aGF0IGNhdXNlcyBwcm9ncmFtcyB0byBjcmFzaCB3aGVuIC1sbSBpcwotCSAgIyBsaW5rZWQgYmVmb3JlIGFueSBvdGhlciBQSUMgb2JqZWN0LiAgQnV0IHdlIG11c3Qgbm90IHVzZQotCSAgIyBwaWNfZmxhZyB3aGVuIGxpbmtpbmcgd2l0aCAtc3RhdGljLiAgVGhlIHByb2JsZW0gZXhpc3RzIGluCi0JICAjIEZyZWVCU0QgMi4yLjYgYW5kIGlzIGZpeGVkIGluIEZyZWVCU0QgMy4xLgotCSAgKi0qLWZyZWVic2QyKnwqLSotZnJlZWJzZDMuMCp8Ki0qLWZyZWVic2RlbGYzLjAqKQotCSAgICBjYXNlICIkY29tcGlsZV9jb21tYW5kICIgaW4KLQkgICAgKiIgLXN0YXRpYyAiKikgOzsKLQkgICAgKikgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIC1ERlJFRUJTRF9XT1JLQVJPVU5EIjs7Ci0JICAgIGVzYWM7OwotCSAgKi0qLWhwdXgqKQotCSAgICBjYXNlICIkY29tcGlsZV9jb21tYW5kICIgaW4KLQkgICAgKiIgLXN0YXRpYyAiKikgOzsKLQkgICAgKikgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIjs7Ci0JICAgIGVzYWMKLQkgIGVzYWMKLQotCSAgIyBOb3cgY29tcGlsZSB0aGUgZHluYW1pYyBzeW1ib2wgZmlsZS4KLQkgICRzaG93ICIoY2QgJG91dHB1dF9vYmpkaXIgJiYgJExUQ0MgICRMVENGTEFHUyAtYyRub19idWlsdGluX2ZsYWckcGljX2ZsYWdfZm9yX3N5bXRhYmxlIFwiJGRsc3ltc1wiKSIKLQkgICRydW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRMVENDICAkTFRDRkxBR1MgLWMkbm9fYnVpbHRpbl9mbGFnJHBpY19mbGFnX2Zvcl9zeW10YWJsZSAiJGRsc3ltcyIpJyB8fCBleGl0ICQ/Ci0KLQkgICMgQ2xlYW4gdXAgdGhlIGdlbmVyYXRlZCBmaWxlcy4KLQkgICRzaG93ICIkcm0gJG91dHB1dF9vYmpkaXIvJGRsc3ltcyAkbmxpc3QgJHtubGlzdH1TICR7bmxpc3R9VCIKLQkgICRydW4gJHJtICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiJG5saXN0IiAiJHtubGlzdH1TIiAiJHtubGlzdH1UIgotCi0JICAjIFRyYW5zZm9ybSB0aGUgc3ltYm9sIGZpbGUgaW50byB0aGUgY29ycmVjdCBuYW1lLgotICAgICAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQotICAgICAgICAgICAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfS5kZWYiIDsgdGhlbgotICAgICAgICAgICAgICBjb21waWxlX2NvbW1hbmQ9YCRlY2hvICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfS5kZWYgJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9JSIgfCAkTkwyU1BgCi0gICAgICAgICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRlY2hvICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX0uZGVmICRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBjb21waWxlX2NvbW1hbmQ9YCRlY2hvICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9JSIgfCAkTkwyU1BgCi0gICAgICAgICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRlY2hvICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICA7OwotICAgICAgICAgICogKQotICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgZmluYWxpemVfY29tbWFuZD1gJGVjaG8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9JSIgfCAkTkwyU1BgCi0gICAgICAgICAgICA7OwotICAgICAgICAgIGVzYWMKLQkgIDs7Ci0JKikKLQkgICRlY2hvICIkbW9kZW5hbWU6IHVua25vd24gc3VmZml4IGZvciBcYCRkbHN5bXMnIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIDs7Ci0JZXNhYwotICAgICAgZWxzZQotCSMgV2Uga2VlcCBnb2luZyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IHJlZmVyIHRvCi0JIyBsdF9wcmVsb2FkZWRfc3ltYm9scy4gIFRoZSBsaW5rZXIgd2lsbCBmYWlsIGlmIGdsb2JhbF9zeW1ib2xfcGlwZQotCSMgcmVhbGx5IHdhcyByZXF1aXJlZC4KLQotCSMgTnVsbGlmeSB0aGUgc3ltYm9sIGZpbGUuCi0JY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlIiB8ICROTDJTUGAKLQlmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSIgfCAkTkwyU1BgCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0ICIkbmVlZF9yZWxpbmsiID0gbm8gfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCisgICAgICB3cmFwcGVyc19yZXF1aXJlZD15ZXMKKyAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiApCisgICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICAqY2VnY2MpCisgICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MsIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgYW55d2F5LgorICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgaWYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IG5vIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICBpZiB0ZXN0ICIkd3JhcHBlcnNfcmVxdWlyZWQiID0gbm87IHRoZW4KIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgfCAkTkwyU1BgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCiAJbGlua19jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAKIAkjIFdlIGhhdmUgbm8gdW5pbnN0YWxsZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMsIHNvIGZpbmFsaXplIHJpZ2h0IG5vdy4KLQkkc2hvdyAiJGxpbmtfY29tbWFuZCIKLQkkcnVuIGV2YWwgIiRsaW5rX2NvbW1hbmQiCi0JZXhpdF9zdGF0dXM9JD8KKwlleGl0X3N0YXR1cz0wCisJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0X3N0YXR1cz0kPycKIAogCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0JaWYgdGVzdCAtbiAiJGRsc3ltcyI7IHRoZW4KLQkgICRzaG93ICIkcm0gJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IgotCSAgJHJ1biAkcm0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSIKKwlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCisJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJwogCWZpCiAKIAlleGl0ICRleGl0X3N0YXR1cwogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0JIyBXZSBzaG91bGQgc2V0IHRoZSBzaGxpYnBhdGhfdmFyCi0JcnBhdGg9Ci0JZm9yIGRpciBpbiAkdGVtcF9ycGF0aDsgZG8KLQkgIGNhc2UgJGRpciBpbgotCSAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKQotCSAgICAjIEFic29sdXRlIHBhdGguCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLQkgICAgOzsKLQkgICopCi0JICAgICMgUmVsYXRpdmUgcGF0aDogYWRkIGEgdGhpc2RpciBlbnRyeS4KLQkgICAgcnBhdGg9IiRycGF0aFwkdGhpc2Rpci8kZGlyOiIKLQkgICAgOzsKLQkgIGVzYWMKLQlkb25lCi0JdGVtcF9ycGF0aD0iJHJwYXRoIgotICAgICAgZmkKLQogICAgICAgaWYgdGVzdCAtbiAiJGNvbXBpbGVfc2hsaWJwYXRoJGZpbmFsaXplX3NobGlicGF0aCI7IHRoZW4KIAljb21waWxlX2NvbW1hbmQ9IiRzaGxpYnBhdGhfdmFyPVwiJGNvbXBpbGVfc2hsaWJwYXRoJGZpbmFsaXplX3NobGlicGF0aFwkJHNobGlicGF0aF92YXJcIiAkY29tcGlsZV9jb21tYW5kIgogICAgICAgZmkKQEAgLTQ4NjQsMTIgKzc3MzgsMTEgQEAKIAkjIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgd3JhcHBlciBzY3JpcHQuCiAJbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWxpbmtfY29tbWFuZD1gJGVjaG8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCi0JJHJ1biAkcm0gJG91dHB1dAorCSRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dAogCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAotCSRzaG93ICIkbGlua19jb21tYW5kIgotCSRydW4gZXZhbCAiJGxpbmtfY29tbWFuZCIgfHwgZXhpdCAkPworCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKIAlleGl0ICRFWElUX1NVQ0NFU1MKICAgICAgIGZpCiAKQEAgLTQ4NzgsMTMgKzc3NTEsMTMgQEAKIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAlyZWxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRmaW5hbGl6ZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgogCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogdGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBsaWtlIHVuaW5zdGFsbGVkIHNoYXJlZCBsaWJyYXJpZXMiIDE+JjIKLQkkZWNobyAiJG1vZGVuYW1lOiBcYCRvdXRwdXQnIHdpbGwgYmUgcmVsaW5rZWQgZHVyaW5nIGluc3RhbGxhdGlvbiIgMT4mMgorCWZ1bmNfd2FybmluZyAidGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBsaWtlIHVuaW5zdGFsbGVkIHNoYXJlZCBsaWJyYXJpZXMiCisJZnVuY193YXJuaW5nICJcYCRvdXRwdXQnIHdpbGwgYmUgcmVsaW5rZWQgZHVyaW5nIGluc3RhbGxhdGlvbiIKICAgICAgIGVsc2UKIAlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgogCSAgbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnIHwgJE5MMlNQYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKIAkgIGVsc2UKIAkgICAgIyBmYXN0X2luc3RhbGwgaXMgc2V0IHRvIG5lZWRsZXNzCiAJICAgIHJlbGlua19jb21tYW5kPQpAQCAtNDg5Niw2MDggKzc3NjksMTAzIEBACiAgICAgICBmaQogCiAgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0gICAgICBsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCisgICAgICBsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGVzLgotICAgICAgJHJ1biAkcm0gJG91dHB1dCAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci9sdC0kb3V0cHV0bmFtZQorICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0ICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lICRvdXRwdXRfb2JqZGlyL2x0LSRvdXRwdXRuYW1lCiAKLSAgICAgICRzaG93ICIkbGlua19jb21tYW5kIgotICAgICAgJHJ1biBldmFsICIkbGlua19jb21tYW5kIiB8fCBleGl0ICQ/CisgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCiAKICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCi0gICAgICAkc2hvdyAiY3JlYXRpbmcgJG91dHB1dCIKKyAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKIAogICAgICAgIyBRdW90ZSB0aGUgcmVsaW5rIGNvbW1hbmQgZm9yIHNoaXBwaW5nLgogICAgICAgaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgogCSMgUHJlc2VydmUgYW55IHZhcmlhYmxlcyB0aGF0IG1heSBhZmZlY3QgY29tcGlsZXIgYmVoYXZpb3IKIAlmb3IgdmFyIGluICR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluazsgZG8KIAkgIGlmIGV2YWwgdGVzdCAteiBcIlwkeyR2YXIrc2V0fVwiOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPSJ7IHRlc3QgLXogXCJcJHskdmFyK3NldH1cIiB8fCB1bnNldCAkdmFyIHx8IHsgJHZhcj07IGV4cG9ydCAkdmFyOyB9OyB9OyAkcmVsaW5rX2NvbW1hbmQiCisJICAgIHJlbGlua19jb21tYW5kPSJ7IHRlc3QgLXogXCJcJHskdmFyK3NldH1cIiB8fCAkbHRfdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgogCSAgZWxpZiBldmFsIHZhcl92YWx1ZT1cJCR2YXI7IHRlc3QgLXogIiR2YXJfdmFsdWUiOyB0aGVuCiAJICAgIHJlbGlua19jb21tYW5kPSIkdmFyPTsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKIAkgIGVsc2UKLQkgICAgdmFyX3ZhbHVlPWAkZWNobyAiWCR2YXJfdmFsdWUiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotCSAgICByZWxpbmtfY29tbWFuZD0iJHZhcj1cIiR2YXJfdmFsdWVcIjsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKKwkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHZhcl92YWx1ZSIKKwkgICAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0OyBleHBvcnQgJHZhcjsgJHJlbGlua19jb21tYW5kIgogCSAgZmkKIAlkb25lCiAJcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJHJlbGlua19jb21tYW5kKSIKLQlyZWxpbmtfY29tbWFuZD1gJGVjaG8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiIHwgJE5MMlNQYAorCXJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBmaQogCi0gICAgICAjIFF1b3RlICRlY2hvIGZvciBzaGlwcGluZy4KLSAgICAgIGlmIHRlc3QgIlgkZWNobyIgPSAiWCRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjsgdGhlbgorICAgICAgIyBRdW90ZSAkRUNITyBmb3Igc2hpcHBpbmcuCisgICAgICBpZiB0ZXN0ICJYJEVDSE8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KIAljYXNlICRwcm9ncGF0aCBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcWVjaG89IiRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7CiAJKikgcWVjaG89IiRTSEVMTCBgcHdkYC8kcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7CiAJZXNhYwotCXFlY2hvPWAkZWNobyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisJcWVjaG89YCRFQ0hPICJYJHFlY2hvIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGVsc2UKLQlxZWNobz1gJGVjaG8gIlgkZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisJcWVjaG89YCRFQ0hPICJYJEVDSE8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAotICAgICAgIyBPbmx5IGFjdHVhbGx5IGRvIHRoaW5ncyBpZiBvdXIgcnVuIGNvbW1hbmQgaXMgbm9uLW51bGwuCi0gICAgICBpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgorICAgICAgIyBPbmx5IGFjdHVhbGx5IGRvIHRoaW5ncyBpZiBub3QgaW4gZHJ5IHJ1biBtb2RlLgorICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKIAkjIHdpbjMyIHdpbGwgdGhpbmsgdGhlIHNjcmlwdCBpcyBhIGJpbmFyeSBpZiBpdCBoYXMKIAkjIGEgLmV4ZSBzdWZmaXgsIHNvIHdlIHN0cmlwIGl0IG9mZiBoZXJlLgogCWNhc2UgJG91dHB1dCBpbgotCSAgKi5leGUpIG91dHB1dD1gJGVjaG8gJG91dHB1dHwke1NFRH0gJ3MsLmV4ZSQsLCdgIDs7CisJICAqLmV4ZSkgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkb3V0cHV0IgorCSAgICAgICAgIG91dHB1dD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CiAJZXNhYwogCSMgdGVzdCBmb3IgY3lnd2luIGJlY2F1c2UgbXYgZmFpbHMgdy9vIC5leGUgZXh0ZW5zaW9ucwogCWNhc2UgJGhvc3QgaW4KIAkgICpjeWd3aW4qKQogCSAgICBleGVleHQ9LmV4ZQotCSAgICBvdXRwdXRuYW1lPWAkZWNobyAkb3V0cHV0bmFtZXwke1NFRH0gJ3MsLmV4ZSQsLCdgIDs7CisJICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJG91dHB1dG5hbWUiCisJICAgIG91dHB1dG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwogCSAgKikgZXhlZXh0PSA7OwogCWVzYWMKIAljYXNlICRob3N0IGluCiAJICAqY3lnd2luKiB8ICptaW5ndyogKQotICAgICAgICAgICAgb3V0cHV0X25hbWU9YGJhc2VuYW1lICRvdXRwdXRgCi0gICAgICAgICAgICBvdXRwdXRfcGF0aD1gZGlybmFtZSAkb3V0cHV0YAotICAgICAgICAgICAgY3dyYXBwZXJzb3VyY2U9IiRvdXRwdXRfcGF0aC8kb2JqZGlyL2x0LSRvdXRwdXRfbmFtZS5jIgotICAgICAgICAgICAgY3dyYXBwZXI9IiRvdXRwdXRfcGF0aC8kb3V0cHV0X25hbWUuZXhlIgotICAgICAgICAgICAgJHJtICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXIKLSAgICAgICAgICAgIHRyYXAgIiRybSAkY3dyYXBwZXJzb3VyY2UgJGN3cmFwcGVyOyBleGl0ICRFWElUX0ZBSUxVUkUiIDEgMiAxNQorCSAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkb3V0cHV0IiAiIiAiLiIKKwkgICAgb3V0cHV0X25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJICAgIG91dHB1dF9wYXRoPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisJICAgIGN3cmFwcGVyc291cmNlPSIkb3V0cHV0X3BhdGgvJG9iamRpci9sdC0kb3V0cHV0X25hbWUuYyIKKwkgICAgY3dyYXBwZXI9IiRvdXRwdXRfcGF0aC8kb3V0cHV0X25hbWUuZXhlIgorCSAgICAkUk0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcgorCSAgICB0cmFwICIkUk0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcjsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKIAotCSAgICBjYXQgPiAkY3dyYXBwZXJzb3VyY2UgPDxFT0YKKwkgICAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyA+ICRjd3JhcHBlcnNvdXJjZQogCi0vKiAkY3dyYXBwZXJzb3VyY2UgLSB0ZW1wb3Jhcnkgd3JhcHBlciBleGVjdXRhYmxlIGZvciAkb2JqZGlyLyRvdXRwdXRuYW1lCi0gICBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QCisJICAgICMgVGhlIHdyYXBwZXIgZXhlY3V0YWJsZSBpcyBidWlsdCB1c2luZyB0aGUgJGhvc3QgY29tcGlsZXIsCisJICAgICMgYmVjYXVzZSBpdCBjb250YWlucyAkaG9zdCBwYXRocyBhbmQgZmlsZXMuIElmIGNyb3NzLQorCSAgICAjIGNvbXBpbGluZywgaXQsIGxpa2UgdGhlIHRhcmdldCBleGVjdXRhYmxlLCBtdXN0IGJlCisJICAgICMgZXhlY3V0ZWQgb24gdGhlICRob3N0IG9yIHVuZGVyIGFuIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4KKwkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAkTFRDQyAkTFRDRkxBR1MgLW8gJGN3cmFwcGVyICRjd3JhcHBlcnNvdXJjZQorCSAgICAgICRTVFJJUCAkY3dyYXBwZXIKKwkgICAgfQogCi0gICBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKLSAgIGxpYnJhcmllcyB0aGF0IGl0IGRlcGVuZHMgb24gYXJlIGluc3RhbGxlZC4KLQotICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgotICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotCi0gICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiL2Jpbi9zaCAkb3V0cHV0IiwKLSAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KLSovCi1FT0YKLQkgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZTw8IkVPRiIKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPG1hbGxvYy5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLQotI2lmIGRlZmluZWQoUEFUSF9NQVgpCi0jIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCi0jZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCi0jIGRlZmluZSBMVF9QQVRITUFYIE1BWFBBVEhMRU4KLSNlbHNlCi0jIGRlZmluZSBMVF9QQVRITUFYIDEwMjQKLSNlbmRpZgotCi0jaWZuZGVmIERJUl9TRVBBUkFUT1IKLSMgZGVmaW5lIERJUl9TRVBBUkFUT1IgJy8nCi0jIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCAoX1dJTjMyKSB8fCBkZWZpbmVkIChfX01TRE9TX18pIHx8IGRlZmluZWQgKF9fREpHUFBfXykgfHwgXAotICBkZWZpbmVkIChfX09TMl9fKQotIyBkZWZpbmUgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0KLSMgaWZuZGVmIERJUl9TRVBBUkFUT1JfMgotIyAgZGVmaW5lIERJUl9TRVBBUkFUT1JfMiAnXFwnCi0jIGVuZGlmCi0jIGlmbmRlZiBQQVRIX1NFUEFSQVRPUl8yCi0jICBkZWZpbmUgUEFUSF9TRVBBUkFUT1JfMiAnOycKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIERJUl9TRVBBUkFUT1JfMgotIyBkZWZpbmUgSVNfRElSX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gRElSX1NFUEFSQVRPUikKLSNlbHNlIC8qIERJUl9TRVBBUkFUT1JfMiAqLwotIyBkZWZpbmUgSVNfRElSX1NFUEFSQVRPUihjaCkgXAotICAgICAgICAoKChjaCkgPT0gRElSX1NFUEFSQVRPUikgfHwgKChjaCkgPT0gRElSX1NFUEFSQVRPUl8yKSkKLSNlbmRpZiAvKiBESVJfU0VQQVJBVE9SXzIgKi8KLQotI2lmbmRlZiBQQVRIX1NFUEFSQVRPUl8yCi0jIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1IpCi0jZWxzZSAvKiBQQVRIX1NFUEFSQVRPUl8yICovCi0jIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1JfMikKLSNlbmRpZiAvKiBQQVRIX1NFUEFSQVRPUl8yICovCi0KLSNkZWZpbmUgWE1BTExPQyh0eXBlLCBudW0pICAgICAgKCh0eXBlICopIHhtYWxsb2MgKChudW0pICogc2l6ZW9mKHR5cGUpKSkKLSNkZWZpbmUgWEZSRUUoc3RhbGUpIGRvIHsgXAotICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAotfSB3aGlsZSAoMCkKLQotLyogLURERUJVRyBpcyBmYWlybHkgY29tbW9uIGluIENGTEFHUy4gICovCi0jdW5kZWYgREVCVUcKLSNpZiBkZWZpbmVkIERFQlVHV1JBUFBFUgotIyBkZWZpbmUgREVCVUcoZm9ybWF0LCAuLi4pIGZwcmludGYoc3RkZXJyLCBmb3JtYXQsIF9fVkFfQVJHU19fKQotI2Vsc2UKLSMgZGVmaW5lIERFQlVHKGZvcm1hdCwgLi4uKQotI2VuZGlmCi0KLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7Ci0KLXZvaWQgKiB4bWFsbG9jIChzaXplX3QgbnVtKTsKLWNoYXIgKiB4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwotY29uc3QgY2hhciAqIGJhc2VfbmFtZSAoY29uc3QgY2hhciAqbmFtZSk7Ci1jaGFyICogZmluZF9leGVjdXRhYmxlKGNvbnN0IGNoYXIgKndyYXBwZXIpOwotaW50ICAgIGNoZWNrX2V4ZWN1dGFibGUoY29uc3QgY2hhciAqcGF0aCk7Ci1jaGFyICogc3RyZW5kemFwKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKLXZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Ci0KLWludAotbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLSAgY2hhciAqKm5ld2FyZ3o7Ci0gIGludCBpOwotCi0gIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOwotICBERUJVRygiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLGFyZ3ZbMF0pOwotICBERUJVRygiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLHByb2dyYW1fbmFtZSk7Ci0gIG5ld2FyZ3ogPSBYTUFMTE9DKGNoYXIgKiwgYXJnYysyKTsKLUVPRgotCi0gICAgICAgICAgICBjYXQgPj4gJGN3cmFwcGVyc291cmNlIDw8RU9GCi0gIG5ld2FyZ3pbMF0gPSAoY2hhciAqKSB4c3RyZHVwKCIkU0hFTEwiKTsKLUVPRgotCi0gICAgICAgICAgICBjYXQgPj4gJGN3cmFwcGVyc291cmNlIDw8IkVPRiIKLSAgbmV3YXJnelsxXSA9IGZpbmRfZXhlY3V0YWJsZShhcmd2WzBdKTsKLSAgaWYgKG5ld2FyZ3pbMV0gPT0gTlVMTCkKLSAgICBsdF9mYXRhbCgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotICBERUJVRygiKG1haW4pIGZvdW5kIGV4ZSBhdCA6ICVzXG4iLG5ld2FyZ3pbMV0pOwotICAvKiB3ZSBrbm93IHRoZSBzY3JpcHQgaGFzIHRoZSBzYW1lIG5hbWUsIHdpdGhvdXQgdGhlIC5leGUgKi8KLSAgLyogc28gbWFrZSBzdXJlIG5ld2FyZ3pbMV0gZG9lc24ndCBlbmQgaW4gLmV4ZSAqLwotICBzdHJlbmR6YXAobmV3YXJnelsxXSwiLmV4ZSIpOwotICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotICAgIG5ld2FyZ3pbaSsxXSA9IHhzdHJkdXAoYXJndltpXSk7Ci0gIG5ld2FyZ3pbYXJnYysxXSA9IE5VTEw7Ci0KLSAgZm9yIChpPTA7IGk8YXJnYysxOyBpKyspCi0gIHsKLSAgICBERUJVRygiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIixpLG5ld2FyZ3pbaV0pOwotICAgIDsKLSAgfQotCi1FT0YKLQotICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICAgICAgICAgICBtaW5ndyopCi0gICAgICAgICAgICAgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PEVPRgotICBleGVjdigiJFNIRUxMIiwoY2hhciBjb25zdCAqKiluZXdhcmd6KTsKLUVPRgotICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICAqKQotICAgICAgICAgICAgICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2UgPDxFT0YKLSAgZXhlY3YoIiRTSEVMTCIsbmV3YXJneik7Ci1FT0YKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgIGVzYWMKLQotICAgICAgICAgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PCJFT0YiCi0gIHJldHVybiAxMjc7Ci19Ci0KLXZvaWQgKgoteG1hbGxvYyAoc2l6ZV90IG51bSkKLXsKLSAgdm9pZCAqIHAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7Ci0gIGlmICghcCkKLSAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKLQotICByZXR1cm4gcDsKLX0KLQotY2hhciAqCi14c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpCi17Ci0gIHJldHVybiBzdHJpbmcgPyBzdHJjcHkgKChjaGFyICopIHhtYWxsb2MgKHN0cmxlbiAoc3RyaW5nKSArIDEpLCBzdHJpbmcpIDogTlVMTAotOwotfQotCi1jb25zdCBjaGFyICoKLWJhc2VfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgY29uc3QgY2hhciAqYmFzZTsKLQotI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQotICAvKiBTa2lwIG92ZXIgdGhlIGRpc2sgbmFtZSBpbiBNU0RPUyBwYXRobmFtZXMuICovCi0gIGlmIChpc2FscGhhICgodW5zaWduZWQgY2hhciluYW1lWzBdKSAmJiBuYW1lWzFdID09ICc6JykKLSAgICBuYW1lICs9IDI7Ci0jZW5kaWYKLQotICBmb3IgKGJhc2UgPSBuYW1lOyAqbmFtZTsgbmFtZSsrKQotICAgIGlmIChJU19ESVJfU0VQQVJBVE9SICgqbmFtZSkpCi0gICAgICBiYXNlID0gbmFtZSArIDE7Ci0gIHJldHVybiBiYXNlOwotfQotCi1pbnQKLWNoZWNrX2V4ZWN1dGFibGUoY29uc3QgY2hhciAqIHBhdGgpCi17Ci0gIHN0cnVjdCBzdGF0IHN0OwotCi0gIERFQlVHKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIik7Ci0gIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQotICAgIHJldHVybiAwOwotCi0gIGlmICgoc3RhdCAocGF0aCwgJnN0KSA+PSAwKSAmJgotICAgICAgKAotICAgICAgICAvKiBNaW5HVyAmIG5hdGl2ZSBXSU4zMiBkbyBub3Qgc3VwcG9ydCBTX0lYT1RIIG9yIFNfSVhHUlAgKi8KLSNpZiBkZWZpbmVkIChTX0lYT1RIKQotICAgICAgICgoc3Quc3RfbW9kZSAmIFNfSVhPVEgpID09IFNfSVhPVEgpIHx8Ci0jZW5kaWYKLSNpZiBkZWZpbmVkIChTX0lYR1JQKQotICAgICAgICgoc3Quc3RfbW9kZSAmIFNfSVhHUlApID09IFNfSVhHUlApIHx8Ci0jZW5kaWYKLSAgICAgICAoKHN0LnN0X21vZGUgJiBTX0lYVVNSKSA9PSBTX0lYVVNSKSkKLSAgICAgICkKLSAgICByZXR1cm4gMTsKLSAgZWxzZQotICAgIHJldHVybiAwOwotfQotCi0vKiBTZWFyY2hlcyBmb3IgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgd3JhcHBlci4gIFJldHVybnMKLSAgIG5ld2x5IGFsbG9jYXRlZCBmdWxsIHBhdGggbmFtZSBpZiBmb3VuZCwgTlVMTCBvdGhlcndpc2UgKi8KLWNoYXIgKgotZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyKiB3cmFwcGVyKQotewotICBpbnQgaGFzX3NsYXNoID0gMDsKLSAgY29uc3QgY2hhciogcDsKLSAgY29uc3QgY2hhciogcF9uZXh0OwotICAvKiBzdGF0aWMgYnVmZmVyIGZvciBnZXRjd2QgKi8KLSAgY2hhciB0bXBbTFRfUEFUSE1BWCArIDFdOwotICBpbnQgdG1wX2xlbjsKLSAgY2hhciogY29uY2F0X25hbWU7Ci0KLSAgREVCVUcoIihmaW5kX2V4ZWN1dGFibGUpICA6ICVzXG4iLCB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpOwotCi0gIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCi0gICAgcmV0dXJuIE5VTEw7Ci0KLSAgLyogQWJzb2x1dGUgcGF0aD8gKi8KLSNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKLSAgaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKXdyYXBwZXJbMF0pICYmIHdyYXBwZXJbMV0gPT0gJzonKQotICB7Ci0gICAgY29uY2F0X25hbWUgPSB4c3RyZHVwICh3cmFwcGVyKTsKLSAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZShjb25jYXRfbmFtZSkpCi0gICAgICByZXR1cm4gY29uY2F0X25hbWU7Ci0gICAgWEZSRUUoY29uY2F0X25hbWUpOwotICB9Ci0gIGVsc2UKLSAgewotI2VuZGlmCi0gICAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKHdyYXBwZXJbMF0pKQotICAgIHsKLSAgICAgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7Ci0gICAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZShjb25jYXRfbmFtZSkpCi0gICAgICAgIHJldHVybiBjb25jYXRfbmFtZTsKLSAgICAgIFhGUkVFKGNvbmNhdF9uYW1lKTsKLSAgICB9Ci0jaWYgZGVmaW5lZCAoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0pCi0gIH0KLSNlbmRpZgotCi0gIGZvciAocCA9IHdyYXBwZXI7ICpwOyBwKyspCi0gICAgaWYgKCpwID09ICcvJykKLSAgICB7Ci0gICAgICBoYXNfc2xhc2ggPSAxOwotICAgICAgYnJlYWs7Ci0gICAgfQotICBpZiAoIWhhc19zbGFzaCkKLSAgewotICAgIC8qIG5vIHNsYXNoZXM7IHNlYXJjaCBQQVRIICovCi0gICAgY29uc3QgY2hhciogcGF0aCA9IGdldGVudiAoIlBBVEgiKTsKLSAgICBpZiAocGF0aCAhPSBOVUxMKQotICAgIHsKLSAgICAgIGZvciAocCA9IHBhdGg7ICpwOyBwID0gcF9uZXh0KQotICAgICAgewotICAgICAgICBjb25zdCBjaGFyKiBxOwotICAgICAgICBzaXplX3QgcF9sZW47Ci0gICAgICAgIGZvciAocSA9IHA7ICpxOyBxKyspCi0gICAgICAgICAgaWYgKElTX1BBVEhfU0VQQVJBVE9SKCpxKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwX2xlbiA9IHEgLSBwOwotICAgICAgICBwX25leHQgPSAoKnEgPT0gJ1wwJyA/IHEgOiBxICsgMSk7Ci0gICAgICAgIGlmIChwX2xlbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KLSAgICAgICAgICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0gICAgICAgICAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKLSAgICAgICAgICB0bXBfbGVuID0gc3RybGVuKHRtcCk7Ci0gICAgICAgICAgY29uY2F0X25hbWUgPSBYTUFMTE9DKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuKHdyYXBwZXIpICsgMSk7Ci0gICAgICAgICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKLSAgICAgICAgICBjb25jYXRfbmFtZVt0bXBfbGVuXSA9ICcvJzsKLSAgICAgICAgICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgdG1wX2xlbiArIDEsIHdyYXBwZXIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyhjaGFyLCBwX2xlbiArIDEgKyBzdHJsZW4od3JhcHBlcikgKyAxKTsKLSAgICAgICAgICBtZW1jcHkgKGNvbmNhdF9uYW1lLCBwLCBwX2xlbik7Ci0gICAgICAgICAgY29uY2F0X25hbWVbcF9sZW5dID0gJy8nOwotICAgICAgICAgIHN0cmNweSAoY29uY2F0X25hbWUgKyBwX2xlbiArIDEsIHdyYXBwZXIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGVja19leGVjdXRhYmxlKGNvbmNhdF9uYW1lKSkKLSAgICAgICAgICByZXR1cm4gY29uY2F0X25hbWU7Ci0gICAgICAgIFhGUkVFKGNvbmNhdF9uYW1lKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLyogbm90IGZvdW5kIGluIFBBVEg7IGFzc3VtZSBjdXJkaXIgKi8KLSAgfQotICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCi0gIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKLSAgdG1wX2xlbiA9IHN0cmxlbih0bXApOwotICBjb25jYXRfbmFtZSA9IFhNQUxMT0MoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4od3JhcHBlcikgKyAxKTsKLSAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKLSAgY29uY2F0X25hbWVbdG1wX2xlbl0gPSAnLyc7Ci0gIHN0cmNweSAoY29uY2F0X25hbWUgKyB0bXBfbGVuICsgMSwgd3JhcHBlcik7Ci0KLSAgaWYgKGNoZWNrX2V4ZWN1dGFibGUoY29uY2F0X25hbWUpKQotICAgIHJldHVybiBjb25jYXRfbmFtZTsKLSAgWEZSRUUoY29uY2F0X25hbWUpOwotICByZXR1cm4gTlVMTDsKLX0KLQotY2hhciAqCi1zdHJlbmR6YXAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCi17Ci0gIHNpemVfdCBsZW4sIHBhdGxlbjsKLQotICBhc3NlcnQoc3RyICE9IE5VTEwpOwotICBhc3NlcnQocGF0ICE9IE5VTEwpOwotCi0gIGxlbiA9IHN0cmxlbihzdHIpOwotICBwYXRsZW4gPSBzdHJsZW4ocGF0KTsKLQotICBpZiAocGF0bGVuIDw9IGxlbikKLSAgewotICAgIHN0ciArPSBsZW4gLSBwYXRsZW47Ci0gICAgaWYgKHN0cmNtcChzdHIsIHBhdCkgPT0gMCkKLSAgICAgICpzdHIgPSAnXDAnOwotICB9Ci0gIHJldHVybiBzdHI7Ci19Ci0KLXN0YXRpYyB2b2lkCi1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKiBtb2RlLAotICAgICAgICAgIGNvbnN0IGNoYXIgKiBtZXNzYWdlLCB2YV9saXN0IGFwKQotewotICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7Ci0gIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKLSAgZnByaW50ZiAoc3RkZXJyLCAiLlxuIik7Ci0KLSAgaWYgKGV4aXRfc3RhdHVzID49IDApCi0gICAgZXhpdCAoZXhpdF9zdGF0dXMpOwotfQotCi12b2lkCi1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQotewotICB2YV9saXN0IGFwOwotICB2YV9zdGFydCAoYXAsIG1lc3NhZ2UpOwotICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKLSAgdmFfZW5kIChhcCk7Ci19Ci1FT0YKLSAgICAgICAgICAjIHdlIHNob3VsZCByZWFsbHkgdXNlIGEgYnVpbGQtcGxhdGZvcm0gc3BlY2lmaWMgY29tcGlsZXIKLSAgICAgICAgICAjIGhlcmUsIGJ1dCBPVE9ILCB0aGUgd3JhcHBlcnMgKHNoZWxsIHNjcmlwdCBhbmQgdGhpcyBDIG9uZSkKLSAgICAgICAgICAjIGFyZSBvbmx5IHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBleGVjdXRlIHRoZSAicmVhbCIgYmluYXJ5LgotICAgICAgICAgICMgU2luY2UgdGhlICJyZWFsIiBiaW5hcnkgaXMgYnVpbHQgZm9yICRob3N0LCB0aGVuIHRoaXMKLSAgICAgICAgICAjIHdyYXBwZXIgbWlnaHQgYXMgd2VsbCBiZSBidWlsdCBmb3IgJGhvc3QsIHRvby4KLSAgICAgICAgICAkcnVuICRMVENDICRMVENGTEFHUyAtcyAtbyAkY3dyYXBwZXIgJGN3cmFwcGVyc291cmNlCi0gICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICAkcm0gJG91dHB1dAotICAgICAgICB0cmFwICIkcm0gJG91dHB1dDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKLQotCSRlY2hvID4gJG91dHB1dCAiXAotIyEgJFNIRUxMCi0KLSMgJG91dHB1dCAtIHRlbXBvcmFyeSB3cmFwcGVyIHNjcmlwdCBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQotIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QCi0jCi0jIFRoZSAkb3V0cHV0IHByb2dyYW0gY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkIHVudGlsIGFsbCB0aGUgbGlidG9vbAotIyBsaWJyYXJpZXMgdGhhdCBpdCBkZXBlbmRzIG9uIGFyZSBpbnN0YWxsZWQuCi0jCi0jIFRoaXMgd3JhcHBlciBzY3JpcHQgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgotIyBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPScke1NFRH0gLWUgMXMvXlgvLycKLXNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKLQotIyBCZSBCb3VybmUgY29tcGF0aWJsZSAodGFrZW4gZnJvbSBBdXRvY29uZjpfQVNfQk9VUk5FX0NPTVBBVElCTEUpLgotaWYgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cIiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIGVtdWxhdGUgc2gKLSAgTlVMTENNRD06Ci0gICMgWnNoIDMueCBhbmQgNC54IHBlcmZvcm1zIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCi0gICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0gIGFsaWFzIC1nICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicKLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKLWVsc2UKLSAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gKnBvc2l4Kikgc2V0IC1vIHBvc2l4OzsgZXNhYwotZmkKLUJJTl9TSD14cGc0OyBleHBvcnQgQklOX1NIICMgZm9yIFRydTY0Ci1EVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCi0KLSMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0Ci0jIGlmIENEUEFUSCBpcyBzZXQuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLXJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIKLQotIyBUaGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGRldGVybWluZXMgb3VyIG9wZXJhdGlvbiBtb2RlLgotaWYgdGVzdCBcIlwkbGlidG9vbF9pbnN0YWxsX21hZ2ljXCIgPSBcIiRtYWdpY1wiOyB0aGVuCi0gICMgaW5zdGFsbCBtb2RlIG5lZWRzIHRoZSBmb2xsb3dpbmcgdmFyaWFibGU6Ci0gIG5vdGluc3RfZGVwbGlicz0nJG5vdGluc3RfZGVwbGlicycKLWVsc2UKLSAgIyBXaGVuIHdlIGFyZSBzb3VyY2VkIGluIGV4ZWN1dGUgbW9kZSwgXCRmaWxlIGFuZCBcJGVjaG8gYXJlIGFscmVhZHkgc2V0LgotICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgZWNobz1cIiRxZWNob1wiCi0gICAgZmlsZT1cIlwkMFwiCi0gICAgIyBNYWtlIHN1cmUgZWNobyB3b3Jrcy4KLSAgICBpZiB0ZXN0IFwiWFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICAgICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgICAgIHNoaWZ0Ci0gICAgZWxpZiB0ZXN0IFwiWFxgKFwkZWNobyAnXHQnKSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgotICAgICAgIyBZaXBwZWUsIFwkZWNobyB3b3JrcyEKLSAgICAgIDoKLSAgICBlbHNlCi0gICAgICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlIFwkZWNobyB3aWxsIHdvcmsuCi0gICAgICBleGVjICRTSEVMTCBcIlwkMFwiIC0tbm8tcmVleGVjIFwkezErXCJcJEBcIn0KLSAgICBmaQotICBmaVwKLSIKLQkkZWNobyA+PiAkb3V0cHV0ICJcCi0KLSAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgdGhpc2Rpcj1cYFwkZWNobyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSokJSUnXGAKLSAgdGVzdCBcInhcJHRoaXNkaXJcIiA9IFwieFwkZmlsZVwiICYmIHRoaXNkaXI9LgotCi0gICMgRm9sbG93IHN5bWJvbGljIGxpbmtzIHVudGlsIHdlIGdldCB0byB0aGUgcmVhbCB0aGlzZGlyLgotICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKLSAgd2hpbGUgdGVzdCAtbiBcIlwkZmlsZVwiOyBkbwotICAgIGRlc3RkaXI9XGBcJGVjaG8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qXCQlJSdcYAotCi0gICAgIyBJZiB0aGVyZSB3YXMgYSBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGNoYW5nZSB0aGlzZGlyLgotICAgIGlmIHRlc3QgXCJ4XCRkZXN0ZGlyXCIgIT0gXCJ4XCRmaWxlXCI7IHRoZW4KLSAgICAgIGNhc2UgXCJcJGRlc3RkaXJcIiBpbgotICAgICAgW1xcXFwvXSogfCBbQS1aYS16XTpbXFxcXC9dKikgdGhpc2Rpcj1cIlwkZGVzdGRpclwiIDs7Ci0gICAgICAqKSB0aGlzZGlyPVwiXCR0aGlzZGlyL1wkZGVzdGRpclwiIDs7Ci0gICAgICBlc2FjCi0gICAgZmkKLQotICAgIGZpbGU9XGBcJGVjaG8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlXi4qLyUlJ1xgCi0gICAgZmlsZT1cYGxzIC1sZCBcIlwkdGhpc2Rpci9cJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAotICBkb25lCi0KLSAgIyBUcnkgdG8gZ2V0IHRoZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZS4KLSAgYWJzZGlyPVxgY2QgXCJcJHRoaXNkaXJcIiAmJiBwd2RcYAotICB0ZXN0IC1uIFwiXCRhYnNkaXJcIiAmJiB0aGlzZGlyPVwiXCRhYnNkaXJcIgotIgotCi0JaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLSAgcHJvZ3JhbT1sdC0nJG91dHB1dG5hbWUnJGV4ZWV4dAotICBwcm9nZGlyPVwiXCR0aGlzZGlyLyRvYmpkaXJcIgotCi0gIGlmIHRlc3QgISAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiB8fCBcXAotICAgICB7IGZpbGU9XGBscyAtMWR0IFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwiXCRwcm9nZGlyLy4uL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHwgJHtTRUR9IDFxXGA7IFxcCi0gICAgICAgdGVzdCBcIlhcJGZpbGVcIiAhPSBcIlhcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH07IHRoZW4KLQotICAgIGZpbGU9XCJcJFwkLVwkcHJvZ3JhbVwiCi0KLSAgICBpZiB0ZXN0ICEgLWQgXCJcJHByb2dkaXJcIjsgdGhlbgotICAgICAgJG1rZGlyIFwiXCRwcm9nZGlyXCIKLSAgICBlbHNlCi0gICAgICAkcm0gXCJcJHByb2dkaXIvXCRmaWxlXCIKLSAgICBmaSIKLQotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotCi0gICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKLSAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCi0gICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKLSAgICAgIGVsc2UKLQkkZWNobyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCi0JJHJtIFwiXCRwcm9nZGlyL1wkZmlsZVwiCi0JZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgICBmaQotICAgIGZpCi0KLSAgICAkbXYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgMj4vZGV2L251bGwgfHwKLSAgICB7ICRybSBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsKLSAgICAgICRtdiBcIlwkcHJvZ2Rpci9cJGZpbGVcIiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgfQotICAgICRybSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgotICBmaSIKLQllbHNlCi0JICAkZWNobyA+PiAkb3V0cHV0ICJcCi0gIHByb2dyYW09JyRvdXRwdXRuYW1lJwotICBwcm9nZGlyPVwiXCR0aGlzZGlyLyRvYmpkaXJcIgotIgotCWZpCi0KLQkkZWNobyA+PiAkb3V0cHV0ICJcCi0KLSAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKLQotCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgotCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICAjIEFkZCBvdXIgb3duIGxpYnJhcnkgcGF0aCB0byAkc2hsaWJwYXRoX3ZhcgotICAgICRzaGxpYnBhdGhfdmFyPVwiJHRlbXBfcnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIKLQotICAgICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBjb3BlIHdpdGggY29sb24tdGVybWluYXRlZCAkc2hsaWJwYXRoX3ZhcgotICAgICMgVGhlIHNlY29uZCBjb2xvbiBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIEJlT1MgUjQgc2VkCi0gICAgJHNobGlicGF0aF92YXI9XGBcJGVjaG8gXCJYXCQkc2hsaWJwYXRoX3ZhclwiIHwgXCRYc2VkIC1lICdzLzo6KlwkLy8nXGAKLQotICAgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgotIgotCWZpCi0KLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0gICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLSIKLQlmaQotCi0JJGVjaG8gPj4gJG91dHB1dCAiXAotICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KLSAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0iCi0JY2FzZSAkaG9zdCBpbgotCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotCSotKi1taW5ndyB8ICotKi1vczIqKQotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCisJICAgICMgTm93LCBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0IGZvciBmdW5jX3NvdXJjZSB1c2U6CisJICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgJGN3cmFwcGVyCisJICAgICRSTSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKKwkgICAgdHJhcCAiJFJNICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKwkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAjIG5vdGU6IHRoaXMgc2NyaXB0IHdpbGwgbm90IGJlIGV4ZWN1dGVkLCBzbyBkbyBub3QgY2htb2QuCisJICAgICAgaWYgdGVzdCAieCRidWlsZCIgPSAieCRob3N0IiA7IHRoZW4KKwkJJGN3cmFwcGVyIC0tbHQtZHVtcC1zY3JpcHQgPiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKKwkgICAgICBlbHNlCisJCWZ1bmNfZW1pdF93cmFwcGVyIG5vID4gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgICAgZmkKKwkgICAgfQogCSAgOzsKKwkgICogKQorCSAgICAkUk0gJG91dHB1dAorCSAgICB0cmFwICIkUk0gJG91dHB1dDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKIAotCSopCi0JICAkZWNobyA+PiAkb3V0cHV0ICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKKwkgICAgZnVuY19lbWl0X3dyYXBwZXIgbm8gPiAkb3V0cHV0CisJICAgIGNobW9kICt4ICRvdXRwdXQKIAkgIDs7CiAJZXNhYwotCSRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICAgIFwkZWNobyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQotICBlbHNlCi0gICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgotICAgIFwkZWNobyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKLSAgICBcJGVjaG8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKLSAgICAkZWNobyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gIGZpCi1maVwKLSIKLQljaG1vZCAreCAkb3V0cHV0Ci0gICAgICBmaQorICAgICAgfQogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICA7OwogICAgIGVzYWMKQEAgLTU1MDYsNyArNzg3NCw3IEBACiAgICAgZm9yIG9sZGxpYiBpbiAkb2xkbGliczsgZG8KIAogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBjb252ZW5pZW5jZTsgdGhlbgotCW9sZG9ianM9IiRsaWJvYmpzX3NhdmUiCisJb2xkb2Jqcz0iJGxpYm9ianNfc2F2ZSAkc3ltZmlsZW9iaiIKIAlhZGRsaWJzPSIkY29udmVuaWVuY2UiCiAJYnVpbGRfbGlidG9vbF9saWJzPW5vCiAgICAgICBlbHNlCkBAIC01NTE1LDYgKzc4ODMsOSBAQAogCSAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJZWxzZQogCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCisJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCisJICAgIG9sZG9ianM9IiRvbGRvYmpzICRzeW1maWxlb2JqIgorCSAgZmkKIAlmaQogCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCiAgICAgICBmaQpAQCAtNTUyOSw4ICs3OTAwLDE4IEBACiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgogICAgICAgaWYgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAgY21kcz0kb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcworCWNtZHM9JG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMKICAgICAgIGVsc2UKKworCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCisJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworCSAgb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJZmkKKwogCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQogCSMgdG8gYXZvaWQgY3JlYXRpbmcgYXJjaGl2ZXMgd2l0aCBkdXBsaWNhdGUgYmFzZW5hbWVzIGlmIHdlCiAJIyBtaWdodCBoYXZlIHRvIGV4dHJhY3QgdGhlbSBhZnRlcndhcmRzLCBlLmcuLCB3aGVuIGNyZWF0aW5nIGEKQEAgLTU1MzksMzIgKzc5MjAsMjIgQEAKIAkjIG5vdCBzdXBwb3J0ZWQgYnkgbGlidG9vbCkuCiAJaWYgKGZvciBvYmogaW4gJG9sZG9ianMKIAkgICAgZG8KLQkgICAgICAkZWNobyAiWCRvYmoiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJworCSAgICAgIGZ1bmNfYmFzZW5hbWUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKIAkgICAgZG9uZSB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCiAJICA6CiAJZWxzZQotCSAgJGVjaG8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKLQotCSAgaWYgdGVzdCAteiAiJGdlbnRvcCI7IHRoZW4KLQkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0KLQkgICAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSAgICAkcnVuICR7cm19ciAiJGdlbnRvcCIKLQkgICAgJHNob3cgIiRta2RpciAkZ2VudG9wIgotCSAgICAkcnVuICRta2RpciAiJGdlbnRvcCIKLQkgICAgZXhpdF9zdGF0dXM9JD8KLQkgICAgaWYgdGVzdCAiJGV4aXRfc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiRnZW50b3AiOyB0aGVuCi0JICAgICAgZXhpdCAkZXhpdF9zdGF0dXMKLQkgICAgZmkKLQkgIGZpCi0KKwkgICRFQ0hPICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCiAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKIAkgIG9sZG9ianM9CiAJICBjb3VudGVyPTEKIAkgIGZvciBvYmogaW4gJHNhdmVfb2xkb2JqcwogCSAgZG8KLQkgICAgb2JqYmFzZT1gJGVjaG8gIlgkb2JqIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisJICAgIGZ1bmNfYmFzZW5hbWUgIiRvYmoiCisJICAgIG9iamJhc2U9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKIAkgICAgY2FzZSAiICRvbGRvYmpzICIgaW4KIAkgICAgIiAiKSBvbGRvYmpzPSRvYmogOzsKIAkgICAgKltcIC9dIiRvYmpiYXNlICIqKQpAQCAtNTU3Miw1OCArNzk0Myw2MiBAQAogCQkjIE1ha2Ugc3VyZSB3ZSBkb24ndCBwaWNrIGFuIGFsdGVybmF0ZSBuYW1lIHRoYXQgYWxzbwogCQkjIG92ZXJsYXBzLgogCQluZXdvYmo9bHQkY291bnRlci0kb2JqYmFzZQotCQljb3VudGVyPWBleHByICRjb3VudGVyICsgMWAKKwkJZnVuY19hcml0aCAkY291bnRlciArIDEKKwkJY291bnRlcj0kZnVuY19hcml0aF9yZXN1bHQKIAkJY2FzZSAiICRvbGRvYmpzICIgaW4KIAkJKltcIC9dIiRuZXdvYmogIiopIDs7CiAJCSopIGlmIHRlc3QgISAtZiAiJGdlbnRvcC8kbmV3b2JqIjsgdGhlbiBicmVhazsgZmkgOzsKIAkJZXNhYwogCSAgICAgIGRvbmUKLQkgICAgICAkc2hvdyAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCi0JICAgICAgJHJ1biBsbiAiJG9iaiIgIiRnZW50b3AvJG5ld29iaiIgfHwKLQkgICAgICAkcnVuIGNwICIkb2JqIiAiJGdlbnRvcC8kbmV3b2JqIgorCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKIAkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCiAJICAgICAgOzsKIAkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWZpCi0KIAlldmFsIGNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCiAKLQlpZiBsZW49YGV4cHIgIlgkY21kcyIgOiAiLioiYCAmJgotCSAgICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisJZnVuY19sZW4gIiAkY21kcyIKKwlsZW49JGZ1bmNfbGVuX3Jlc3VsdAorCWlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgogCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwogCWVsc2UKIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCi0JICAkZWNobyAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKKwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKIAkgIHNhdmVfUkFOTElCPSRSQU5MSUIKIAkgIFJBTkxJQj06CiAJICBvYmpsaXN0PQogCSAgY29uY2F0X2NtZHM9CiAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKLQorCSAgb2xkb2Jqcz0KIAkgICMgSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IG9mIGZpbmRpbmcgdGhlIGxhc3Qgb2JqZWN0IGluIHRoZSBsaXN0PwogCSAgZm9yIG9iaiBpbiAkc2F2ZV9vbGRvYmpzCiAJICBkbwogCSAgICBsYXN0X29sZG9iaj0kb2JqCiAJICBkb25lCisJICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKwkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKwkgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAorCSAgbGVuPSRsZW4wCiAJICBmb3Igb2JqIGluICRzYXZlX29sZG9ianMKIAkgIGRvCi0JICAgIG9sZG9ianM9IiRvYmpsaXN0ICRvYmoiCi0JICAgIG9iamxpc3Q9IiRvYmpsaXN0ICRvYmoiCi0JICAgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotCSAgICBpZiBsZW49YGV4cHIgIlgkdGVzdF9jbWRzIiA6ICIuKiIgMj4vZGV2L251bGxgICYmCi0JICAgICAgIHRlc3QgIiRsZW4iIC1sZSAiJG1heF9jbWRfbGVuIjsgdGhlbgorCSAgICBmdW5jX2xlbiAiICRvYmoiCisJICAgIGZ1bmNfYXJpdGggJGxlbiArICRmdW5jX2xlbl9yZXN1bHQKKwkgICAgbGVuPSRmdW5jX2FyaXRoX3Jlc3VsdAorCSAgICBmdW5jX2FwcGVuZCBvYmpsaXN0ICIgJG9iaiIKKwkgICAgaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iOyB0aGVuCiAJICAgICAgOgogCSAgICBlbHNlCiAJICAgICAgIyB0aGUgYWJvdmUgY29tbWFuZCBzaG91bGQgYmUgdXNlZCBiZWZvcmUgaXQgZ2V0cyB0b28gbG9uZwogCSAgICAgIG9sZG9ianM9JG9iamxpc3QKIAkgICAgICBpZiB0ZXN0ICIkb2JqIiA9ICIkbGFzdF9vbGRvYmoiIDsgdGhlbgotCSAgICAgICAgUkFOTElCPSRzYXZlX1JBTkxJQgorCQlSQU5MSUI9JHNhdmVfUkFOTElCCiAJICAgICAgZmkKIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KIAkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIgogCSAgICAgIG9iamxpc3Q9CisJICAgICAgbGVuPSRsZW4wCiAJICAgIGZpCiAJICBkb25lCiAJICBSQU5MSUI9JHNhdmVfUkFOTElCCkBAIC01NjM1LDQ5ICs4MDEwLDM5IEBACiAJICBmaQogCWZpCiAgICAgICBmaQotICAgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0gICAgICBmb3IgY21kIGluICRjbWRzOyBkbwotICAgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCUlGUz0iJHNhdmVfaWZzIgotCSRzaG93ICIkY21kIgotCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotICAgICAgZG9uZQotICAgICAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJGNtZHMiICdleGl0ICQ/JwogICAgIGRvbmUKIAotICAgIGlmIHRlc3QgLW4gIiRnZW5lcmF0ZWQiOyB0aGVuCi0gICAgICAkc2hvdyAiJHtybX1yJGdlbmVyYXRlZCIKLSAgICAgICRydW4gJHtybX1yJGdlbmVyYXRlZAotICAgIGZpCisgICAgdGVzdCAtbiAiJGdlbmVyYXRlZCIgJiYgXAorICAgICAgZnVuY19zaG93X2V2YWwgIiR7Uk19ciRnZW5lcmF0ZWQiCiAKICAgICAjIE5vdyBjcmVhdGUgdGhlIGxpYnRvb2wgYXJjaGl2ZS4KICAgICBjYXNlICRvdXRwdXQgaW4KICAgICAqLmxhKQogICAgICAgb2xkX2xpYnJhcnk9CiAgICAgICB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIG9sZF9saWJyYXJ5PSIkbGlibmFtZS4kbGliZXh0IgotICAgICAgJHNob3cgImNyZWF0aW5nICRvdXRwdXQiCisgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKICAgICAgICMgUHJlc2VydmUgYW55IHZhcmlhYmxlcyB0aGF0IG1heSBhZmZlY3QgY29tcGlsZXIgYmVoYXZpb3IKICAgICAgIGZvciB2YXIgaW4gJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rOyBkbwogCWlmIGV2YWwgdGVzdCAteiBcIlwkeyR2YXIrc2V0fVwiOyB0aGVuCi0JICByZWxpbmtfY29tbWFuZD0ieyB0ZXN0IC16IFwiXCR7JHZhcitzZXR9XCIgfHwgdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgorCSAgcmVsaW5rX2NvbW1hbmQ9InsgdGVzdCAteiBcIlwkeyR2YXIrc2V0fVwiIHx8ICRsdF91bnNldCAkdmFyIHx8IHsgJHZhcj07IGV4cG9ydCAkdmFyOyB9OyB9OyAkcmVsaW5rX2NvbW1hbmQiCiAJZWxpZiBldmFsIHZhcl92YWx1ZT1cJCR2YXI7IHRlc3QgLXogIiR2YXJfdmFsdWUiOyB0aGVuCiAJICByZWxpbmtfY29tbWFuZD0iJHZhcj07IGV4cG9ydCAkdmFyOyAkcmVsaW5rX2NvbW1hbmQiCiAJZWxzZQotCSAgdmFyX3ZhbHVlPWAkZWNobyAiWCR2YXJfdmFsdWUiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotCSAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9XCIkdmFyX3ZhbHVlXCI7IGV4cG9ydCAkdmFyOyAkcmVsaW5rX2NvbW1hbmQiCisJICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkdmFyX3ZhbHVlIgorCSAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0OyBleHBvcnQgJHZhcjsgJHJlbGlua19jb21tYW5kIgogCWZpCiAgICAgICBkb25lCiAgICAgICAjIFF1b3RlIHRoZSBsaW5rIGNvbW1hbmQgZm9yIHNoaXBwaW5nLgogICAgICAgcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLW1vZGU9cmVsaW5rICRsaWJ0b29sX2FyZ3MgQGluc3RfcHJlZml4X2RpckApIgotICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0IiB8ICROTDJTUGAKKyAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllcyA7IHRoZW4KIAlyZWxpbmtfY29tbWFuZD0KICAgICAgIGZpCiAKLQogICAgICAgIyBPbmx5IGNyZWF0ZSB0aGUgb3V0cHV0IGlmIG5vdCBhIGRyeSBydW4uCi0gICAgICBpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgorICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKIAlmb3IgaW5zdGFsbGVkIGluIG5vIHllczsgZG8KIAkgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0geWVzOyB0aGVuCiAJICAgIGlmIHRlc3QgLXogIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KQEAgLTU2ODksMTIgKzgwNTQsMTEgQEAKIAkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAgICoubGEpCi0JCW5hbWU9YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0JCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi0JCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkJICBleGl0ICRFWElUX0ZBSUxVUkUKLQkJZmkKKwkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKQEAgLTU3MDIsMjUgKzgwNjYsMzcgQEAKIAkgICAgZG9uZQogCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIG5ld2RsZmlsZXM9CisKIAkgICAgZm9yIGxpYiBpbiAkZGxmaWxlczsgZG8KLQkgICAgICBuYW1lPWAkZWNobyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQkgICAgICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAotCSAgICAgIGlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi0JCSRlY2hvICIkbW9kZW5hbWU6IFxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCi0JCWV4aXQgJEVYSVRfRkFJTFVSRQotCSAgICAgIGZpCi0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYmRpci8kbmFtZSIKKwkgICAgICBjYXNlICRsaWIgaW4KKwkgICAgICAqLmxhKQorCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKKwkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisJCTs7CisJICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKwkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCiAJICAgIG5ld2RscHJlZmlsZXM9CiAJICAgIGZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCi0JICAgICAgbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0JICAgICAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLQkgICAgICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCQkkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCQlleGl0ICRFWElUX0ZBSUxVUkUKLQkgICAgICBmaQotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJICAgICAgY2FzZSAkbGliIGluCisJICAgICAgKi5sYSkKKwkJIyBPbmx5IHBhc3MgcHJlb3BlbmVkIGZpbGVzIHRvIHRoZSBwc2V1ZG8tYXJjaGl2ZSAoZm9yCisJCSMgZXZlbnR1YWwgbGlua2luZyB3aXRoIHRoZSBhcHAuIHRoYXQgbGlua3MgaXQpIGlmIHdlCisJCSMgZGlkbid0IGFscmVhZHkgbGluayB0aGUgcHJlb3BlbmVkIG9iamVjdHMgZGlyZWN0bHkgaW50bworCQkjIHRoZSBsaWJyYXJ5OgorCQlmdW5jX2Jhc2VuYW1lICIkbGliIgorCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKKwkJOzsKKwkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAJICBlbHNlCkBAIC01NzQzLDE1ICs4MTE5LDE1IEBACiAJICAgIGRvbmUKIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAJICBmaQotCSAgJHJtICRvdXRwdXQKKwkgICRSTSAkb3V0cHV0CiAJICAjIHBsYWNlIGRsbmFtZSBpbiBjb3JyZWN0IHBvc2l0aW9uIGZvciBjeWd3aW4KIAkgIHRkbG5hbWU9JGRsbmFtZQogCSAgY2FzZSAkaG9zdCwkb3V0cHV0LCRpbnN0YWxsZWQsJG1vZHVsZSwkZGxuYW1lIGluCi0JICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCkgdGRsbmFtZT0uLi9iaW4vJGRsbmFtZSA7OworCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqY2VnY2MqLCpsYWkseWVzLG5vLCouZGxsKSB0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lIDs7CiAJICBlc2FjCi0JICAkZWNobyA+ICRvdXRwdXQgIlwKKwkgICRFQ0hPID4gJG91dHB1dCAiXAogIyAkb3V0cHV0bmFtZSAtIGEgbGlidG9vbCBsaWJyYXJ5IGZpbGUKLSMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAorIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCiAjCiAjIFBsZWFzZSBETyBOT1QgZGVsZXRlIHRoaXMgZmlsZSEKICMgSXQgaXMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHRoZSBsaWJyYXJ5LgpAQCAtNTc2NSw5ICs4MTQxLDE1IEBACiAjIFRoZSBuYW1lIG9mIHRoZSBzdGF0aWMgYXJjaGl2ZS4KIG9sZF9saWJyYXJ5PSckb2xkX2xpYnJhcnknCiAKKyMgTGlua2VyIGZsYWdzIHRoYXQgY2FuIG5vdCBnbyBpbiBkZXBlbmRlbmN5X2xpYnMuCitpbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSckbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MnCisKICMgTGlicmFyaWVzIHRoYXQgdGhpcyBvbmUgZGVwZW5kcyB1cG9uLgogZGVwZW5kZW5jeV9saWJzPSckZGVwZW5kZW5jeV9saWJzJwogCisjIE5hbWVzIG9mIGFkZGl0aW9uYWwgd2VhayBsaWJyYXJpZXMgcHJvdmlkZWQgYnkgdGhpcyBsaWJyYXJ5Cit3ZWFrX2xpYnJhcnlfbmFtZXM9JyR3ZWFrX2xpYnMnCisKICMgVmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgJGxpYm5hbWUuCiBjdXJyZW50PSRjdXJyZW50CiBhZ2U9JGFnZQpAQCAtNTc4Niw3NDggKzgxNjgsMjkgQEAKICMgRGlyZWN0b3J5IHRoYXQgdGhpcyBsaWJyYXJ5IG5lZWRzIHRvIGJlIGluc3RhbGxlZCBpbjoKIGxpYmRpcj0nJGluc3RhbGxfbGliZGlyJyIKIAkgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm8gJiYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IHllczsgdGhlbgotCSAgICAkZWNobyA+PiAkb3V0cHV0ICJcCisJICAgICRFQ0hPID4+ICRvdXRwdXQgIlwKIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCiAJICBmaQogCWRvbmUKLSAgICAgIGZpCisgICAgICB9CiAKICAgICAgICMgRG8gYSBzeW1ib2xpYyBsaW5rIHNvIHRoYXQgdGhlIGxpYnRvb2wgYXJjaGl2ZSBjYW4gYmUgZm91bmQgaW4KICAgICAgICMgTERfTElCUkFSWV9QQVRIIGJlZm9yZSB0aGUgcHJvZ3JhbSBpcyBpbnN0YWxsZWQuCi0gICAgICAkc2hvdyAiKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAkb3V0cHV0bmFtZSAmJiAkTE5fUyAuLi8kb3V0cHV0bmFtZSAkb3V0cHV0bmFtZSkiCi0gICAgICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJG91dHB1dG5hbWUgJiYgJExOX1MgLi4vJG91dHB1dG5hbWUgJG91dHB1dG5hbWUpJyB8fCBleGl0ICQ/CisgICAgICBmdW5jX3Nob3dfZXZhbCAnKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmICRSTSAiJG91dHB1dG5hbWUiICYmICRMTl9TICIuLi8kb3V0cHV0bmFtZSIgIiRvdXRwdXRuYW1lIiApJyAnZXhpdCAkPycKICAgICAgIDs7CiAgICAgZXNhYwogICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotICAgIDs7Cit9CiAKLSAgIyBsaWJ0b29sIGluc3RhbGwgbW9kZQotICBpbnN0YWxsKQotICAgIG1vZGVuYW1lPSIkbW9kZW5hbWU6IGluc3RhbGwiCit7IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCisgICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9CiAKLSAgICAjIFRoZXJlIG1heSBiZSBhbiBvcHRpb25hbCBzaCgxKSBhcmd1bWVudCBhdCB0aGUgYmVnaW5uaW5nIG9mCi0gICAgIyBpbnN0YWxsX3Byb2cgKGVzcGVjaWFsbHkgb24gV2luZG93cyBOVCkuCi0gICAgaWYgdGVzdCAiJG5vbm9wdCIgPSAiJFNIRUxMIiB8fCB0ZXN0ICIkbm9ub3B0IiA9IC9iaW4vc2ggfHwKLSAgICAgICAjIEFsbG93IHRoZSB1c2Ugb2YgR05VIHNodG9vbCdzIGluc3RhbGwgY29tbWFuZC4KLSAgICAgICAkZWNobyAiWCRub25vcHQiIHwgZ3JlcCBzaHRvb2wgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KLSAgICAgIGFyZz1gJGVjaG8gIlgkbm9ub3B0IiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JYXJnPSJcIiRhcmdcIiIKLQk7OwotICAgICAgZXNhYwotICAgICAgaW5zdGFsbF9wcm9nPSIkYXJnICIKLSAgICAgIGFyZz0iJDEiCi0gICAgICBzaGlmdAotICAgIGVsc2UKLSAgICAgIGluc3RhbGxfcHJvZz0KLSAgICAgIGFyZz0kbm9ub3B0Ci0gICAgZmkKIAotICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KLSAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCi0gICAgYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgIGNhc2UgJGFyZyBpbgotICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotICAgICAgYXJnPSJcIiRhcmdcIiIKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRhcmciCi0KLSAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCi0gICAgZGVzdD0KLSAgICBmaWxlcz0KLSAgICBvcHRzPQotICAgIHByZXY9Ci0gICAgaW5zdGFsbF90eXBlPQotICAgIGlzZGlyPW5vCi0gICAgc3RyaXBtZT0KLSAgICBmb3IgYXJnCi0gICAgZG8KLSAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotCWZpbGVzPSIkZmlsZXMgJGRlc3QiCi0JZGVzdD0kYXJnCi0JY29udGludWUKLSAgICAgIGZpCi0KLSAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgLWQpIGlzZGlyPXllcyA7OwotICAgICAgLWYpIAotICAgICAgCWNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KLQkqW1xcXCAvXWNwXCAqKSA7OwotCSopIHByZXY9JGFyZyA7OwotCWVzYWMKLQk7OwotICAgICAgLWcgfCAtbSB8IC1vKSBwcmV2PSRhcmcgOzsKLSAgICAgIC1zKQotCXN0cmlwbWU9IiAtcyIKLQljb250aW51ZQotCTs7Ci0gICAgICAtKikKLQk7OwotICAgICAgKikKLQkjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZGVkIGFuIGFyZ3VtZW50LCB0aGVuIHNraXAgaXQuCi0JaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCi0JICBwcmV2PQotCWVsc2UKLQkgIGRlc3Q9JGFyZwotCSAgY29udGludWUKLQlmaQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCi0gICAgICBhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBjYXNlICRhcmcgaW4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCWFyZz0iXCIkYXJnXCIiCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkYXJnIgotICAgIGRvbmUKLQotICAgIGlmIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbGwgcHJvZ3JhbSIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQotCi0gICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB0aGUgXGAkcHJldicgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiAxPiYyCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi0KLSAgICBpZiB0ZXN0IC16ICIkZmlsZXMiOyB0aGVuCi0gICAgICBpZiB0ZXN0IC16ICIkZGVzdCI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiBubyBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIgMT4mMgotICAgICAgZWxzZQotCSRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiIgMT4mMgotICAgICAgZmkKLSAgICAgICRlY2hvICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLQotICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgotICAgIGRlc3Q9YCRlY2hvICJYJGRlc3QiIHwgJFhzZWQgLWUgJ3MlLyQlJSdgCi0KLSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeS4KLSAgICB0ZXN0IC1kICIkZGVzdCIgJiYgaXNkaXI9eWVzCi0gICAgaWYgdGVzdCAiJGlzZGlyIiA9IHllczsgdGhlbgotICAgICAgZGVzdGRpcj0iJGRlc3QiCi0gICAgICBkZXN0bmFtZT0KLSAgICBlbHNlCi0gICAgICBkZXN0ZGlyPWAkZWNobyAiWCRkZXN0IiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0gICAgICB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkZGVzdCIgJiYgZGVzdGRpcj0uCi0gICAgICBkZXN0bmFtZT1gJGVjaG8gIlgkZGVzdCIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCi0gICAgICAjIE5vdCBhIGRpcmVjdG9yeSwgc28gY2hlY2sgdG8gc2VlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZmlsZSBzcGVjaWZpZWQuCi0gICAgICBzZXQgZHVtbXkgJGZpbGVzCi0gICAgICBpZiB0ZXN0ICIkIyIgLWd0IDI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiBcYCRkZXN0JyBpcyBub3QgYSBkaXJlY3RvcnkiIDE+JjIKLQkkZWNobyAiJGhlbHAiIDE+JjIKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCi0gICAgZmkKLSAgICBjYXNlICRkZXN0ZGlyIGluCi0gICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotICAgICopCi0gICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCi0JY2FzZSAkZmlsZSBpbgotCSoubG8pIDs7Ci0JKikKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlc3RkaXInIG11c3QgYmUgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUiIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICA7OwotCWVzYWMKLSAgICAgIGRvbmUKLSAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgIyBUaGlzIHZhcmlhYmxlIHRlbGxzIHdyYXBwZXIgc2NyaXB0cyBqdXN0IHRvIHNldCB2YXJpYWJsZXMgcmF0aGVyCi0gICAgIyB0aGFuIHJ1bm5pbmcgdGhlaXIgcHJvZ3JhbXMuCi0gICAgbGlidG9vbF9pbnN0YWxsX21hZ2ljPSIkbWFnaWMiCi0KLSAgICBzdGF0aWNsaWJzPQotICAgIGZ1dHVyZV9saWJkaXJzPQotICAgIGN1cnJlbnRfbGliZGlycz0KLSAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCi0KLSAgICAgICMgRG8gZWFjaCBpbnN0YWxsYXRpb24uCi0gICAgICBjYXNlICRmaWxlIGluCi0gICAgICAqLiRsaWJleHQpCi0JIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KLQlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKLQk7OwotCi0gICAgICAqLmxhKQotCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCi0JaWYgKCR7U0VEfSAtZSAnMnEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotCWVsc2UKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCSAgJGVjaG8gIiRoZWxwIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKLQlmaQotCi0JbGlicmFyeV9uYW1lcz0KLQlvbGRfbGlicmFyeT0KLQlyZWxpbmtfY29tbWFuZD0KLQkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQljYXNlICRmaWxlIGluCi0JKi8qIHwgKlxcKikgLiAkZmlsZSA7OwotCSopIC4gLi8kZmlsZSA7OwotCWVzYWMKLQotCSMgQWRkIHRoZSBsaWJkaXIgdG8gY3VycmVudF9saWJkaXJzIGlmIGl0IGlzIHRoZSBkZXN0aW5hdGlvbi4KLQlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgotCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCi0JICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7Ci0JICBlc2FjCi0JZWxzZQotCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgotCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KLQkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7Ci0JICBlc2FjCi0JZmkKLQotCWRpcj1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYC8KLQl0ZXN0ICJYJGRpciIgPSAiWCRmaWxlLyIgJiYgZGlyPQotCWRpcj0iJGRpciRvYmpkaXIiCi0KLQlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0JICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotCSAgaW5zdF9wcmVmaXhfZGlyPWAkZWNobyAiJGRlc3RkaXIiIHwgJFNFRCAicyUkbGliZGlyXCQlJSJgCi0KLQkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKLQkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKLQkgICMgYXJlIGluc3RhbGxlZCB0byB0aGUgc2FtZSBwcmVmaXguCi0JICAjIEF0IHByZXNlbnQsIHRoaXMgY2hlY2sgZG9lc24ndCBhZmZlY3Qgd2luZG93cyAuZGxsJ3MgdGhhdAotCSAgIyBhcmUgaW5zdGFsbGVkIGludG8gJGxpYmRpci8uLi9iaW4gKGN1cnJlbnRseSwgdGhhdCB3b3JrcyBmaW5lKQotCSAgIyBidXQgaXQncyBzb21ldGhpbmcgdG8ga2VlcCBhbiBleWUgb24uCi0JICBpZiB0ZXN0ICIkaW5zdF9wcmVmaXhfZGlyIiA9ICIkZGVzdGRpciI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogZXJyb3I6IGNhbm5vdCBpbnN0YWxsIFxgJGZpbGUnIHRvIGEgZGlyZWN0b3J5IG5vdCBlbmRpbmcgaW4gJGxpYmRpciIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCi0KLQkgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0JICAgICMgU3RpY2sgdGhlIGluc3RfcHJlZml4X2RpciBkYXRhIGludG8gdGhlIGxpbmsgY29tbWFuZC4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlIiB8ICROTDJTUGAKLQkgIGVsc2UKLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUlIiB8ICROTDJTUGAKLQkgIGZpCi0KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHJlbGlua2luZyBcYCRmaWxlJyIgMT4mMgotCSAgJHNob3cgIiRyZWxpbmtfY29tbWFuZCIKLQkgIGlmICRydW4gZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6Ci0JICBlbHNlCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiByZWxpbmsgXGAkZmlsZScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCi0JZmkKLQotCSMgU2VlIHRoZSBuYW1lcyBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuCi0Jc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCi0JaWYgdGVzdCAtbiAiJDIiOyB0aGVuCi0JICByZWFsbmFtZT0iJDIiCi0JICBzaGlmdAotCSAgc2hpZnQKLQotCSAgc3JjbmFtZT0iJHJlYWxuYW1lIgotCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAotCi0JICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBidWlsZCB0aGUgc3ltbGlua3MuCi0JICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIKLQkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgfHwgZXhpdCAkPwotCSAgaWYgdGVzdCAtbiAiJHN0cmlwbWUiICYmIHRlc3QgLW4gIiRzdHJpcGxpYiI7IHRoZW4KLQkgICAgJHNob3cgIiRzdHJpcGxpYiAkZGVzdGRpci8kcmVhbG5hbWUiCi0JICAgICRydW4gZXZhbCAiJHN0cmlwbGliICRkZXN0ZGlyLyRyZWFsbmFtZSIgfHwgZXhpdCAkPwotCSAgZmkKLQotCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0JICAgICMgRGVsZXRlIHRoZSBvbGQgc3ltbGlua3MsIGFuZCBjcmVhdGUgbmV3IG9uZXMuCi0JICAgICMgVHJ5IGBsbiAtc2YnIGZpcnN0LCBiZWNhdXNlIHRoZSBgbG4nIGJpbmFyeSBtaWdodCBkZXBlbmQgb24KLQkgICAgIyB0aGUgc3ltbGluayB3ZSByZXBsYWNlISAgU29sYXJpcyAvYmluL2xuIGRvZXMgbm90IHVuZGVyc3RhbmQgLWYsCi0JICAgICMgc28gd2UgYWxzbyBuZWVkIHRvIHRyeSBybSAmJiBsbiAtcy4KLQkgICAgZm9yIGxpbmtuYW1lCi0JICAgIGRvCi0JICAgICAgaWYgdGVzdCAiJGxpbmtuYW1lIiAhPSAiJHJlYWxuYW1lIjsgdGhlbgotICAgICAgICAgICAgICAgICRzaG93ICIoY2QgJGRlc3RkaXIgJiYgeyAkTE5fUyAtZiAkcmVhbG5hbWUgJGxpbmtuYW1lIHx8IHsgJHJtICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lOyB9OyB9KSIKLSAgICAgICAgICAgICAgICAkcnVuIGV2YWwgIihjZCAkZGVzdGRpciAmJiB7ICRMTl9TIC1mICRyZWFsbmFtZSAkbGlua25hbWUgfHwgeyAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWU7IH07IH0pIgotCSAgICAgIGZpCi0JICAgIGRvbmUKLQkgIGZpCi0KLQkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0aW5zdGFsbCBjb21tYW5kcy4KLQkgIGxpYj0iJGRlc3RkaXIvJHJlYWxuYW1lIgotCSAgY21kcz0kcG9zdGluc3RhbGxfY21kcwotCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICBmb3IgY21kIGluICRjbWRzOyBkbwotCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICAgJHNob3cgIiRjbWQiCi0JICAgICRydW4gZXZhbCAiJGNtZCIgfHwgewotCSAgICAgIGx0X2V4aXQ9JD8KLQotCSAgICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotCQkkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJHtyZWFsbmFtZX1UICYmICRtdiAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScKLQkgICAgICBmaQotCi0JICAgICAgZXhpdCAkbHRfZXhpdAotCSAgICB9Ci0JICBkb25lCi0JICBJRlM9IiRzYXZlX2lmcyIKLQlmaQotCi0JIyBJbnN0YWxsIHRoZSBwc2V1ZG8tbGlicmFyeSBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMuCi0JbmFtZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCWluc3RuYW1lPSIkZGlyLyRuYW1lImkKLQkkc2hvdyAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiCi0JJHJ1biBldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgfHwgZXhpdCAkPwotCi0JIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgotCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0JOzsKLQotICAgICAgKi5sbykKLQkjIEluc3RhbGwgKGkuZS4gY29weSkgYSBsaWJ0b29sIG9iamVjdC4KLQotCSMgRmlndXJlIG91dCBkZXN0aW5hdGlvbiBmaWxlIG5hbWUsIGlmIGl0IHdhc24ndCBhbHJlYWR5IHNwZWNpZmllZC4KLQlpZiB0ZXN0IC1uICIkZGVzdG5hbWUiOyB0aGVuCi0JICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RuYW1lIgotCWVsc2UKLQkgIGRlc3RmaWxlPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0JICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RmaWxlIgotCWZpCi0KLQkjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gb2xkLXN0eWxlIG9iamVjdCBmaWxlLgotCWNhc2UgJGRlc3RmaWxlIGluCi0JKi5sbykKLQkgIHN0YXRpY2Rlc3Q9YCRlY2hvICJYJGRlc3RmaWxlIiB8ICRYc2VkIC1lICIkbG8ybyJgCi0JICA7OwotCSouJG9iamV4dCkKLQkgIHN0YXRpY2Rlc3Q9IiRkZXN0ZmlsZSIKLQkgIGRlc3RmaWxlPQotCSAgOzsKLQkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGNvcHkgYSBsaWJ0b29sIG9iamVjdCB0byBcYCRkZXN0ZmlsZSciIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICA7OwotCWVzYWMKLQotCSMgSW5zdGFsbCB0aGUgbGlidG9vbCBvYmplY3QgaWYgcmVxdWVzdGVkLgotCWlmIHRlc3QgLW4gIiRkZXN0ZmlsZSI7IHRoZW4KLQkgICRzaG93ICIkaW5zdGFsbF9wcm9nICRmaWxlICRkZXN0ZmlsZSIKLQkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZpbGUiIHx8IGV4aXQgJD8KLQlmaQotCi0JIyBJbnN0YWxsIHRoZSBvbGQgb2JqZWN0IGlmIGVuYWJsZWQuCi0JaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotCSAgIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KLQkgIHN0YXRpY29iaj1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCi0JICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkc3RhdGljb2JqICRzdGF0aWNkZXN0IgotCSAgJHJ1biBldmFsICIkaW5zdGFsbF9wcm9nIFwkc3RhdGljb2JqIFwkc3RhdGljZGVzdCIgfHwgZXhpdCAkPwotCWZpCi0JZXhpdCAkRVhJVF9TVUNDRVNTCi0JOzsKLQotICAgICAgKikKLQkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCi0JaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKLQllbHNlCi0JICBkZXN0ZmlsZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKLQlmaQotCi0JIyBJZiB0aGUgZmlsZSBpcyBtaXNzaW5nLCBhbmQgdGhlcmUgaXMgYSAuZXhlIG9uIHRoZSBlbmQsIHN0cmlwIGl0Ci0JIyBiZWNhdXNlIGl0IGlzIG1vc3QgbGlrZWx5IGEgbGlidG9vbCBzY3JpcHQgd2UgYWN0dWFsbHkgd2FudCB0bwotCSMgaW5zdGFsbAotCXN0cmlwcGVkX2V4dD0iIgotCWNhc2UgJGZpbGUgaW4KLQkgICouZXhlKQotCSAgICBpZiB0ZXN0ICEgLWYgIiRmaWxlIjsgdGhlbgotCSAgICAgIGZpbGU9YCRlY2hvICRmaWxlfCR7U0VEfSAncywuZXhlJCwsJ2AKLQkgICAgICBzdHJpcHBlZF9leHQ9Ii5leGUiCi0JICAgIGZpCi0JICAgIDs7Ci0JZXNhYwotCi0JIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGlidG9vbCBwcm9ncmFtLgotCWNhc2UgJGhvc3QgaW4KLQkqY3lnd2luKnwqbWluZ3cqKQotCSAgICB3cmFwcGVyPWAkZWNobyAkZmlsZSB8ICR7U0VEfSAtZSAncywuZXhlJCwsJ2AKLQkgICAgOzsKLQkqKQotCSAgICB3cmFwcGVyPSRmaWxlCi0JICAgIDs7Ci0JZXNhYwotCWlmICgke1NFRH0gLWUgJzRxJyAkd3JhcHBlciB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIik+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgIG5vdGluc3RfZGVwbGlicz0KLQkgIHJlbGlua19jb21tYW5kPQotCi0JICAjIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJ5IG9uIGN5Z3dpbi9taW5ndyB0byBhcHBlbmQgYSBkb3QgdG8KLQkgICMgZm9vIGV2ZW4gaWYgYm90aCBmb28gYW5kIEZJTEUuZXhlIGV4aXN0OiBhdXRvbWF0aWMtYXBwZW5kLS5leGUKLQkgICMgYmVoYXZpb3IgaGFwcGVucyBvbmx5IGZvciBleGVjKDMpLCBub3QgZm9yIG9wZW4oMikhICBBbHNvLCBzb3VyY2luZwotCSAgIyBgRklMRS4nIGRvZXMgbm90IHdvcmsgb24gY3lnd2luIG1hbmFnZWQgbW91bnRzLgotCSAgIwotCSAgIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JICBjYXNlICR3cmFwcGVyIGluCi0JICAqLyogfCAqXFwqKSAuICR7d3JhcHBlcn0gOzsKLQkgICopIC4gLi8ke3dyYXBwZXJ9IDs7Ci0JICBlc2FjCi0KLQkgICMgQ2hlY2sgdGhlIHZhcmlhYmxlcyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gc2V0LgotCSAgaWYgdGVzdCAteiAiJG5vdGluc3RfZGVwbGlicyI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogaW52YWxpZCBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IFxgJHdyYXBwZXInIiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgZmkKLQotCSAgZmluYWxpemU9eWVzCi0JICBmb3IgbGliIGluICRub3RpbnN0X2RlcGxpYnM7IGRvCi0JICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgZWFjaCBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KLQkgICAgbGliZGlyPQotCSAgICBpZiB0ZXN0IC1mICIkbGliIjsgdGhlbgotCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgotCSAgICAgIGNhc2UgJGxpYiBpbgotCSAgICAgICovKiB8ICpcXCopIC4gJGxpYiA7OwotCSAgICAgICopIC4gLi8kbGliIDs7Ci0JICAgICAgZXNhYwotCSAgICBmaQotCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKLQkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KLQkgICAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYCRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gXGAkbGliZGlyJyIgMT4mMgotCSAgICAgIGZpbmFsaXplPW5vCi0JICAgIGZpCi0JICBkb25lCi0KLQkgIHJlbGlua19jb21tYW5kPQotCSAgIyBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBvbiBjeWd3aW4vbWluZ3cgdG8gYXBwZW5kIGEgZG90IHRvCi0JICAjIGZvbyBldmVuIGlmIGJvdGggZm9vIGFuZCBGSUxFLmV4ZSBleGlzdDogYXV0b21hdGljLWFwcGVuZC0uZXhlCi0JICAjIGJlaGF2aW9yIGhhcHBlbnMgb25seSBmb3IgZXhlYygzKSwgbm90IGZvciBvcGVuKDIpISAgQWxzbywgc291cmNpbmcKLQkgICMgYEZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KLQkgICMKLQkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgotCSAgY2FzZSAkd3JhcHBlciBpbgotCSAgKi8qIHwgKlxcKikgLiAke3dyYXBwZXJ9IDs7Ci0JICAqKSAuIC4vJHt3cmFwcGVyfSA7OwotCSAgZXNhYwotCi0JICBvdXRwdXRuYW1lPQotCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSBubyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0JICAgIGlmIHRlc3QgIiRmaW5hbGl6ZSIgPSB5ZXMgJiYgdGVzdCAteiAiJHJ1biI7IHRoZW4KLQkgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAotCSAgICAgIGZpbGU9YCRlY2hvICJYJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0JICAgICAgb3V0cHV0bmFtZT0iJHRtcGRpci8kZmlsZSIKLQkgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJyB8ICROTDJTUGAKLQotCSAgICAgICRzaG93ICIkcmVsaW5rX2NvbW1hbmQiCi0JICAgICAgaWYgJHJ1biBldmFsICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuIDoKLQkgICAgICBlbHNlCi0JCSRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiByZWxpbmsgXGAkZmlsZScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCIgMT4mMgotCQkke3JtfXIgIiR0bXBkaXIiCi0JCWNvbnRpbnVlCi0JICAgICAgZmkKLQkgICAgICBmaWxlPSIkb3V0cHV0bmFtZSIKLQkgICAgZWxzZQotCSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCByZWxpbmsgXGAkZmlsZSciIDE+JjIKLQkgICAgZmkKLQkgIGVsc2UKLQkgICAgIyBJbnN0YWxsIHRoZSBiaW5hcnkgdGhhdCB3ZSBjb21waWxlZCBlYXJsaWVyLgotCSAgICBmaWxlPWAkZWNobyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKLQkgIGZpCi0JZmkKLQotCSMgcmVtb3ZlIC5leGUgc2luY2UgY3lnd2luIC91c3IvYmluL2luc3RhbGwgd2lsbCBhcHBlbmQgYW5vdGhlcgotCSMgb25lIGFueXdheSAKLQljYXNlICRpbnN0YWxsX3Byb2csJGhvc3QgaW4KLQkqL3Vzci9iaW4vaW5zdGFsbCosKmN5Z3dpbiopCi0JICBjYXNlICRmaWxlOiRkZXN0ZmlsZSBpbgotCSAgKi5leGU6Ki5leGUpCi0JICAgICMgdGhpcyBpcyBvawotCSAgICA7OwotCSAgKi5leGU6KikKLQkgICAgZGVzdGZpbGU9JGRlc3RmaWxlLmV4ZQotCSAgICA7OwotCSAgKjoqLmV4ZSkKLQkgICAgZGVzdGZpbGU9YCRlY2hvICRkZXN0ZmlsZSB8ICR7U0VEfSAtZSAncywuZXhlJCwsJ2AKLQkgICAgOzsKLQkgIGVzYWMKLQkgIDs7Ci0JZXNhYwotCSRzaG93ICIkaW5zdGFsbF9wcm9nJHN0cmlwbWUgJGZpbGUgJGRlc3RmaWxlIgotCSRydW4gZXZhbCAiJGluc3RhbGxfcHJvZ1wkc3RyaXBtZSBcJGZpbGUgXCRkZXN0ZmlsZSIgfHwgZXhpdCAkPwotCXRlc3QgLW4gIiRvdXRwdXRuYW1lIiAmJiAke3JtfXIgIiR0bXBkaXIiCi0JOzsKLSAgICAgIGVzYWMKLSAgICBkb25lCi0KLSAgICBmb3IgZmlsZSBpbiAkc3RhdGljbGliczsgZG8KLSAgICAgIG5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQotICAgICAgIyBTZXQgdXAgdGhlIHJhbmxpYiBwYXJhbWV0ZXJzLgotICAgICAgb2xkbGliPSIkZGVzdGRpci8kbmFtZSIKLQotICAgICAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJG9sZGxpYiIKLSAgICAgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyBcJGZpbGUgXCRvbGRsaWIiIHx8IGV4aXQgJD8KLQotICAgICAgaWYgdGVzdCAtbiAiJHN0cmlwbWUiICYmIHRlc3QgLW4gIiRvbGRfc3RyaXBsaWIiOyB0aGVuCi0JJHNob3cgIiRvbGRfc3RyaXBsaWIgJG9sZGxpYiIKLQkkcnVuIGV2YWwgIiRvbGRfc3RyaXBsaWIgJG9sZGxpYiIgfHwgZXhpdCAkPwotICAgICAgZmkKLQotICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgotICAgICAgY21kcz0kb2xkX3Bvc3RpbnN0YWxsX2NtZHMKLSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQlJRlM9IiRzYXZlX2lmcyIKLQlldmFsIGNtZD1cIiRjbWRcIgotCSRzaG93ICIkY21kIgotCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotICAgICAgZG9uZQotICAgICAgSUZTPSIkc2F2ZV9pZnMiCi0gICAgZG9uZQotCi0gICAgaWYgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogcmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIgMT4mMgotICAgIGZpCi0KLSAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgotICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KLSAgICAgIHRlc3QgLW4gIiRydW4iICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1cnJlbnRfbGliZGlycyIKLSAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKLSAgICBlbHNlCi0gICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSAgICBmaQotICAgIDs7Ci0KLSAgIyBsaWJ0b29sIGZpbmlzaCBtb2RlCi0gIGZpbmlzaCkKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBmaW5pc2giCi0gICAgbGliZGlycz0iJG5vbm9wdCIKLSAgICBhZG1pbmNtZHM9Ci0KLSAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotICAgICAgZm9yIGRpcgotICAgICAgZG8KLQlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgotICAgICAgZG9uZQotCi0gICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KLQkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCi0JICBjbWRzPSRmaW5pc2hfY21kcwotCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICBmb3IgY21kIGluICRjbWRzOyBkbwotCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICAgJHNob3cgIiRjbWQiCi0JICAgICRydW4gZXZhbCAiJGNtZCIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCi0gICAgICAgJGNtZCIKLQkgIGRvbmUKLQkgIElGUz0iJHNhdmVfaWZzIgotCWZpCi0JaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgotCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgotCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKLQkgICRydW4gZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcwotICAgICAgICRjbWRzIgotCWZpCi0gICAgICBkb25lCi0gICAgZmkKLQotICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgotICAgIHRlc3QgIiRzaG93IiA9IDogJiYgZXhpdCAkRVhJVF9TVUNDRVNTCi0KLSAgICAkZWNobyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKLSAgICAkZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0gICAgICAkZWNobyAiICAgJGxpYmRpciIKLSAgICBkb25lCi0gICAgJGVjaG8KLSAgICAkZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0gICAgJGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotICAgICRlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotICAgICRlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0gICAgICAkZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSAgICAgICRlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gICAgICAkZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotICAgICAgbGliZGlyPUxJQkRJUgotICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCi0gICAgICAkZWNobyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLSAgICAgICRlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLSAgICBmaQotICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgICAkZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0gICAgZmkKLSAgICAkZWNobwotICAgICRlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSAgICAkZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0gICAgJGVjaG8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgOzsKLQotICAjIGxpYnRvb2wgZXhlY3V0ZSBtb2RlCi0gIGV4ZWN1dGUpCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogZXhlY3V0ZSIKLQotICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjb21tYW5kIG5hbWUuCi0gICAgY21kPSIkbm9ub3B0IgotICAgIGlmIHRlc3QgLXogIiRjbWQiOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLQotICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCi0gICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KLSAgICAgIGlmIHRlc3QgISAtZiAiJGZpbGUiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAkZmlsZScgaXMgbm90IGEgZmlsZSIgMT4mMgotCSRlY2hvICIkaGVscCIgMT4mMgotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgZmkKLQotICAgICAgZGlyPQotICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgKi5sYSkKLQkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCSAgJGVjaG8gIiRoZWxwIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKLQlmaQotCi0JIyBSZWFkIHRoZSBsaWJ0b29sIGxpYnJhcnkuCi0JZGxuYW1lPQotCWxpYnJhcnlfbmFtZXM9Ci0KLQkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQljYXNlICRmaWxlIGluCi0JKi8qIHwgKlxcKikgLiAkZmlsZSA7OwotCSopIC4gLi8kZmlsZSA7OwotCWVzYWMKLQotCSMgU2tpcCB0aGlzIGxpYnJhcnkgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkLgotCWlmIHRlc3QgLXogIiRkbG5hbWUiOyB0aGVuCi0JICAjIFdhcm4gaWYgaXQgd2FzIGEgc2hhcmVkIGxpYnJhcnkuCi0JICB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkZmlsZScgd2FzIG5vdCBsaW5rZWQgd2l0aCBcYC1leHBvcnQtZHluYW1pYyciCi0JICBjb250aW51ZQotCWZpCi0KLQlkaXI9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQl0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIiAmJiBkaXI9LgotCi0JaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCi0JICBkaXI9IiRkaXIvJG9iamRpciIKLQllbHNlCi0JICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCi0JZmkKLQk7OwotCi0gICAgICAqLmxvKQotCSMgSnVzdCBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSAubG8gZmlsZS4KLQlkaXI9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQl0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIiAmJiBkaXI9LgotCTs7Ci0KLSAgICAgICopCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZyBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG5vbi1saWJ0b29sIGxpYnJhcmllcyBhbmQgb2JqZWN0cyIgMT4mMgotCWNvbnRpbnVlCi0JOzsKLSAgICAgIGVzYWMKLQotICAgICAgIyBHZXQgdGhlIGFic29sdXRlIHBhdGhuYW1lLgotICAgICAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAotICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgotCi0gICAgICAjIE5vdyBhZGQgdGhlIGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgotICAgICAgaWYgZXZhbCAidGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIiI7IHRoZW4KLQlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCi0gICAgICBlbHNlCi0JZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCi0gICAgICBmaQotICAgIGRvbmUKLQotICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgc2hsaWJwYXRoX3ZhcgotICAgICMgcmF0aGVyIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KLSAgICBsaWJ0b29sX2V4ZWN1dGVfbWFnaWM9IiRtYWdpYyIKLQotICAgICMgQ2hlY2sgaWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgYSB3cmFwcGVyIHNjcmlwdC4KLSAgICBhcmdzPQotICAgIGZvciBmaWxlCi0gICAgZG8KLSAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgIC0qKSA7OwotICAgICAgKikKLQkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCi0JaWYgKCR7U0VEfSAtZSAnNHEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgotCSAgY2FzZSAkZmlsZSBpbgotCSAgKi8qIHwgKlxcKikgLiAkZmlsZSA7OwotCSAgKikgLiAuLyRmaWxlIDs7Ci0JICBlc2FjCi0KLQkgICMgVHJhbnNmb3JtIGFyZyB0byB3cmFwcGVkIG5hbWUuCi0JICBmaWxlPSIkcHJvZ2Rpci8kcHJvZ3JhbSIKLQlmaQotCTs7Ci0gICAgICBlc2FjCi0gICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgotICAgICAgZmlsZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBhcmdzPSIkYXJncyBcIiRmaWxlXCIiCi0gICAgZG9uZQotCi0gICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KLSAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCSMgRXhwb3J0IHRoZSBzaGxpYnBhdGhfdmFyLgotCWV2YWwgImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKLSAgICAgIGZpCi0KLSAgICAgICMgUmVzdG9yZSBzYXZlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgICAgIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwotICAgICAgZG8KLQlldmFsICJpZiB0ZXN0IFwiXCR7c2F2ZV8kbHRfdmFyK3NldH1cIiA9IHNldDsgdGhlbgotCQkkbHRfdmFyPVwkc2F2ZV8kbHRfdmFyOyBleHBvcnQgJGx0X3ZhcgotCSAgICAgIGZpIgotICAgICAgZG9uZQotCi0gICAgICAjIE5vdyBwcmVwYXJlIHRvIGFjdHVhbGx5IGV4ZWMgdGhlIGNvbW1hbmQuCi0gICAgICBleGVjX2NtZD0iXCRjbWQkYXJncyIKLSAgICBlbHNlCi0gICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgotICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0JZXZhbCAiXCRlY2hvIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKLQkkZWNobyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgotICAgICAgZmkKLSAgICAgICRlY2hvICIkY21kJGFyZ3MiCi0gICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSAgICBmaQotICAgIDs7Ci0KLSAgIyBsaWJ0b29sIGNsZWFuIGFuZCB1bmluc3RhbGwgbW9kZQotICBjbGVhbiB8IHVuaW5zdGFsbCkKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiAkbW9kZSIKLSAgICBybT0iJG5vbm9wdCIKKyMgZnVuY19tb2RlX3VuaW5zdGFsbCBhcmcuLi4KK2Z1bmNfbW9kZV91bmluc3RhbGwgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgUk09IiRub25vcHQiCiAgICAgZmlsZXM9CiAgICAgcm1mb3JjZT0KICAgICBleGl0X3N0YXR1cz0wCkBAIC02NTM5LDMwICs4MjAyLDI4IEBACiAgICAgZm9yIGFyZwogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1mKSBybT0iJHJtICRhcmciOyBybWZvcmNlPXllcyA7OwotICAgICAgLSopIHJtPSIkcm0gJGFyZyIgOzsKKyAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OworICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKICAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKICAgICAgIGVzYWMKICAgICBkb25lCiAKLSAgICBpZiB0ZXN0IC16ICIkcm0iOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGFuIFJNIHByb2dyYW0iIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKKyAgICB0ZXN0IC16ICIkUk0iICYmIFwKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhbiBSTSBwcm9ncmFtIgogCiAgICAgcm1kaXJzPQogCiAgICAgb3JpZ29iamRpcj0iJG9iamRpciIKICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCi0gICAgICBkaXI9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLSAgICAgIGlmIHRlc3QgIlgkZGlyIiA9ICJYJGZpbGUiOyB0aGVuCi0JZGlyPS4KKyAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgorICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCiAJb2JqZGlyPSIkb3JpZ29iamRpciIKICAgICAgIGVsc2UKIAlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCiAgICAgICBmaQotICAgICAgbmFtZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAgICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgogCiAgICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCkBAIC02NTc0LDkgKzgyMzUsOSBAQAogICAgICAgZmkKIAogICAgICAgIyBEb24ndCBlcnJvciBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0IGFuZCBybSAtZiB3YXMgdXNlZC4KLSAgICAgIGlmICh0ZXN0IC1MICIkZmlsZSIpID4vZGV2L251bGwgMj4mMSBcCi0JfHwgKHRlc3QgLWggIiRmaWxlIikgPi9kZXYvbnVsbCAyPiYxIFwKLQl8fCB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KKyAgICAgIGlmIHsgdGVzdCAtTCAiJGZpbGUiOyB9ID4vZGV2L251bGwgMj4mMSB8fAorCSB7IHRlc3QgLWggIiRmaWxlIjsgfSA+L2Rldi9udWxsIDI+JjEgfHwKKwkgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCiAJOgogICAgICAgZWxpZiB0ZXN0IC1kICIkZmlsZSI7IHRoZW4KIAlleGl0X3N0YXR1cz0xCkBAIC02NTkwLDggKzgyNTEsOCBAQAogICAgICAgY2FzZSAkbmFtZSBpbgogICAgICAgKi5sYSkKIAkjIFBvc3NpYmx5IGEgbGlidG9vbCBhcmNoaXZlLCBzbyB2ZXJpZnkgaXQuCi0JaWYgKCR7U0VEfSAtZSAnMnEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgIC4gJGRpci8kbmFtZQorCWlmIGZ1bmNfbGFsaWJfcCAiJGZpbGUiOyB0aGVuCisJICBmdW5jX3NvdXJjZSAkZGlyLyRuYW1lCiAKIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCiAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KQEAgLTY2MDYsMzkgKzgyNjcsMTcgQEAKIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKIAkgICAgKikgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kZGxuYW1lIiA7OwogCSAgICBlc2FjCi0JICAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCisJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKIAkgICAgOzsKIAkgIHVuaW5zdGFsbCkKIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCiAJICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3R1bmluc3RhbGwgY29tbWFuZHMuCi0JICAgICAgY21kcz0kcG9zdHVuaW5zdGFsbF9jbWRzCi0JICAgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQkJSUZTPSIkc2F2ZV9pZnMiCi0JCWV2YWwgY21kPVwiJGNtZFwiCi0JCSRzaG93ICIkY21kIgotCQkkcnVuIGV2YWwgIiRjbWQiCi0JCWlmIHRlc3QgIiQ/IiAtbmUgMCAmJiB0ZXN0ICIkcm1mb3JjZSIgIT0geWVzOyB0aGVuCi0JCSAgZXhpdF9zdGF0dXM9MQotCQlmaQotCSAgICAgIGRvbmUKLQkgICAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3R1bmluc3RhbGxfY21kcyIgJ3Rlc3QgIiRybWZvcmNlIiA9IHllcyB8fCBleGl0X3N0YXR1cz0xJwogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KIAkgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgb2xkX3Bvc3R1bmluc3RhbGwgY29tbWFuZHMuCi0JICAgICAgY21kcz0kb2xkX3Bvc3R1bmluc3RhbGxfY21kcwotCSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JCUlGUz0iJHNhdmVfaWZzIgotCQlldmFsIGNtZD1cIiRjbWRcIgotCQkkc2hvdyAiJGNtZCIKLQkJJHJ1biBldmFsICIkY21kIgotCQlpZiB0ZXN0ICIkPyIgLW5lIDAgJiYgdGVzdCAiJHJtZm9yY2UiICE9IHllczsgdGhlbgotCQkgIGV4aXRfc3RhdHVzPTEKLQkJZmkKLQkgICAgICBkb25lCi0JICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIiAndGVzdCAiJHJtZm9yY2UiID0geWVzIHx8IGV4aXRfc3RhdHVzPTEnCiAJICAgIGZpCiAJICAgICMgRklYTUU6IHNob3VsZCByZWluc3RhbGwgdGhlIGJlc3QgcmVtYWluaW5nIHNoYXJlZCBsaWJyYXJ5LgogCSAgICA7OwpAQCAtNjY0OCwyMCArODI4NywyMCBAQAogCiAgICAgICAqLmxvKQogCSMgUG9zc2libHkgYSBsaWJ0b29sIG9iamVjdCwgc28gdmVyaWZ5IGl0LgotCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJaWYgZnVuY19sYWxpYl9wICIkZmlsZSI7IHRoZW4KIAogCSAgIyBSZWFkIHRoZSAubG8gZmlsZQotCSAgLiAkZGlyLyRuYW1lCisJICBmdW5jX3NvdXJjZSAkZGlyLyRuYW1lCiAKIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiIFwKLQkgICAgICYmIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKKwkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCiAJICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCiAJICBmaQogCiAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0JICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiIFwKLQkgICAgICYmIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgorCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCiAJICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgogCSAgZmkKIAlmaQpAQCAtNjY3MiwxNyArODMxMSwyNiBAQAogCSAgbm9leGVuYW1lPSRuYW1lCiAJICBjYXNlICRmaWxlIGluCiAJICAqLmV4ZSkKLQkgICAgZmlsZT1gJGVjaG8gJGZpbGV8JHtTRUR9ICdzLC5leGUkLCwnYAotCSAgICBub2V4ZW5hbWU9YCRlY2hvICRuYW1lfCR7U0VEfSAncywuZXhlJCwsJ2AKKwkgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZmlsZSIKKwkgICAgZmlsZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJG5hbWUiCisJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCiAJICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgogCSAgICA7OwogCSAgZXNhYwogCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCi0JICBpZiAoJHtTRUR9IC1lICc0cScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD0KLQkgICAgLiAkZGlyLyRub2V4ZW5hbWUKKwkgIGlmIGZ1bmNfbHR3cmFwcGVyX3AgIiRmaWxlIjsgdGhlbgorCSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiRmaWxlIjsgdGhlbgorCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorCSAgICAgIHJlbGlua19jb21tYW5kPQorCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAorCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKwkgICAgZWxzZQorCSAgICAgIHJlbGlua19jb21tYW5kPQorCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQorCSAgICBmaQogCiAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CiAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCkBAIC02Njk3LDIzOSArODM0NSwzOCBAQAogCWZpCiAJOzsKICAgICAgIGVzYWMKLSAgICAgICRzaG93ICIkcm0gJHJtZmlsZXMiCi0gICAgICAkcnVuICRybSAkcm1maWxlcyB8fCBleGl0X3N0YXR1cz0xCisgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKICAgICBkb25lCiAgICAgb2JqZGlyPSIkb3JpZ29iamRpciIKIAogICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwogICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KICAgICAgIGlmIHRlc3QgLWQgIiRkaXIiOyB0aGVuCi0JJHNob3cgInJtZGlyICRkaXIiCi0JJHJ1biBybWRpciAkZGlyID4vZGV2L251bGwgMj4mMQorCWZ1bmNfc2hvd19ldmFsICJybWRpciAkZGlyID4vZGV2L251bGwgMj4mMSIKICAgICAgIGZpCiAgICAgZG9uZQogCiAgICAgZXhpdCAkZXhpdF9zdGF0dXMKLSAgICA7OworfQogCi0gICIiKQotICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIiAxPiYyCi0gICAgJGVjaG8gIiRnZW5lcmljX2hlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICA7OwotICBlc2FjCit7IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgorICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CiAKLSAgaWYgdGVzdCAteiAiJGV4ZWNfY21kIjsgdGhlbgotICAgICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciIDE+JjIKLSAgICAkZWNobyAiJGdlbmVyaWNfaGVscCIgMT4mMgotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICBmaQotZmkgIyB0ZXN0IC16ICIkc2hvd19oZWxwIgordGVzdCAteiAiJG1vZGUiICYmIHsKKyAgaGVscD0iJGdlbmVyaWNfaGVscCIKKyAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKK30KKwordGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCisgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKIAogaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgotICBldmFsIGV4ZWMgJGV4ZWNfY21kCisgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgogICBleGl0ICRFWElUX0ZBSUxVUkUKIGZpCiAKLSMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgotY2FzZSAkbW9kZSBpbgotIiIpICRlY2hvIFwKLSJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIFtNT0RFLUFSR10uLi4KK2V4aXQgJGV4aXRfc3RhdHVzCiAKLVByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgotCi0gICAgLS1jb25maWcgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAgICAtLWRlYnVnICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCi0tbiwgLS1kcnktcnVuICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKLSAgICAtLWZlYXR1cmVzICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSAgICAtLWZpbmlzaCAgICAgICAgICBzYW1lIGFzIFxgLS1tb2RlPWZpbmlzaCcKLSAgICAtLWhlbHAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gICAgLS1tb2RlPU1PREUgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUgW2RlZmF1bHQ9aW5mZXJyZWQgZnJvbSBNT0RFLUFSR1NdCi0gICAgLS1xdWlldCAgICAgICAgICAgc2FtZSBhcyBcYC0tc2lsZW50JwotICAgIC0tc2lsZW50ICAgICAgICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSAgICAtLXRhZz1UQUcgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCi0gICAgLS12ZXJzaW9uICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgotCi1NT0RFIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICAgIGNsZWFuICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5Ci0gICAgICBjb21waWxlICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAotICAgICAgZXhlY3V0ZSAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCi0gICAgICBmaW5pc2ggICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcwotICAgICAgaW5zdGFsbCAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCi0gICAgICBsaW5rICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCi0gICAgICB1bmluc3RhbGwgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKLQotTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLiAgVHJ5IFxgJG1vZGVuYW1lIC0taGVscCAtLW1vZGU9TU9ERScgZm9yCi1hIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KLQotUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LiIKLSAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gIDs7Ci0KLWNsZWFuKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9Y2xlYW4gUk0gW1JNLU9QVElPTl0uLi4gRklMRS4uLgotCi1SZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LgotCi1STSBpcyB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB0byB1c2UgdG8gZGVsZXRlIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIEZJTEUKLSh0eXBpY2FsbHkgXGAvYmluL3JtJykuICBSTS1PUFRJT05TIGFyZSBvcHRpb25zIChzdWNoIGFzIFxgLWYnKSB0byBiZSBwYXNzZWQKLXRvIFJNLgotCi1JZiBGSUxFIGlzIGEgbGlidG9vbCBsaWJyYXJ5LCBvYmplY3Qgb3IgcHJvZ3JhbSwgYWxsIHRoZSBmaWxlcyBhc3NvY2lhdGVkCi13aXRoIGl0IGFyZSBkZWxldGVkLiBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCi0gIDs7Ci0KLWNvbXBpbGUpCi0gICRlY2hvIFwKLSJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1jb21waWxlIENPTVBJTEUtQ09NTUFORC4uLiBTT1VSQ0VGSUxFCi0KLUNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBsaWJyYXJ5IG9iamVjdC4KLQotVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6Ci0KLSAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCi0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQotICAtc3RhdGljICAgICAgICAgICBhbHdheXMgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotCi1DT01QSUxFLUNPTU1BTkQgaXMgYSBjb21tYW5kIHRvIGJlIHVzZWQgaW4gY3JlYXRpbmcgYSBcYHN0YW5kYXJkJyBvYmplY3QgZmlsZQotZnJvbSB0aGUgZ2l2ZW4gU09VUkNFRklMRS4KLQotVGhlIG91dHB1dCBmaWxlIG5hbWUgaXMgZGV0ZXJtaW5lZCBieSByZW1vdmluZyB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudCBmcm9tCi1TT1VSQ0VGSUxFLCB0aGVuIHN1YnN0aXR1dGluZyB0aGUgQyBzb3VyY2UgY29kZSBzdWZmaXggXGAuYycgd2l0aCB0aGUKLWxpYnJhcnkgb2JqZWN0IHN1ZmZpeCwgXGAubG8nLiIKLSAgOzsKLQotZXhlY3V0ZSkKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWV4ZWN1dGUgQ09NTUFORCBbQVJHU10uLi4KLQotQXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0uCi0KLVRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgotCi0gIC1kbG9wZW4gRklMRSAgICAgIGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgRklMRSB0byB0aGUgbGlicmFyeSBwYXRoCi0KLVRoaXMgbW9kZSBzZXRzIHRoZSBsaWJyYXJ5IHBhdGggZW52aXJvbm1lbnQgdmFyaWFibGUgYWNjb3JkaW5nIHRvIFxgLWRsb3BlbicKLWZsYWdzLgotCi1JZiBhbnkgb2YgdGhlIEFSR1MgYXJlIGxpYnRvb2wgZXhlY3V0YWJsZSB3cmFwcGVycywgdGhlbiB0aGV5IGFyZSB0cmFuc2xhdGVkCi1pbnRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgdW5pbnN0YWxsZWQgYmluYXJ5LCBhbmQgYW55IG9mIHRoZWlyIHJlcXVpcmVkIGxpYnJhcnkKLWRpcmVjdG9yaWVzIGFyZSBhZGRlZCB0byB0aGUgbGlicmFyeSBwYXRoLgotCi1UaGVuLCBDT01NQU5EIGlzIGV4ZWN1dGVkLCB3aXRoIEFSR1MgYXMgYXJndW1lbnRzLiIKLSAgOzsKLQotZmluaXNoKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9ZmluaXNoIFtMSUJESVJdLi4uCi0KLUNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMuCi0KLUVhY2ggTElCRElSIGlzIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgbGlidG9vbCBsaWJyYXJpZXMuCi0KLVRoZSBjb21tYW5kcyB0aGF0IHRoaXMgbW9kZSBleGVjdXRlcyBtYXkgcmVxdWlyZSBzdXBlcnVzZXIgcHJpdmlsZWdlcy4gIFVzZQotdGhlIFxgLS1kcnktcnVuJyBvcHRpb24gaWYgeW91IGp1c3Qgd2FudCB0byBzZWUgd2hhdCB3b3VsZCBiZSBleGVjdXRlZC4iCi0gIDs7Ci0KLWluc3RhbGwpCi0gICRlY2hvIFwKLSJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1pbnN0YWxsIElOU1RBTEwtQ09NTUFORC4uLgotCi1JbnN0YWxsIGV4ZWN1dGFibGVzIG9yIGxpYnJhcmllcy4KLQotSU5TVEFMTC1DT01NQU5EIGlzIHRoZSBpbnN0YWxsYXRpb24gY29tbWFuZC4gIFRoZSBmaXJzdCBjb21wb25lbnQgc2hvdWxkIGJlCi1laXRoZXIgdGhlIFxgaW5zdGFsbCcgb3IgXGBjcCcgcHJvZ3JhbS4KLQotVGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIGFyZ3VtZW50cyB0byB0aGF0IGNvbW1hbmQgKG9ubHkKLUJTRC1jb21wYXRpYmxlIGluc3RhbGwgb3B0aW9ucyBhcmUgcmVjb2duaXplZCkuIgotICA7OwotCi1saW5rKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9bGluayBMSU5LLUNPTU1BTkQuLi4KLQotTGluayBvYmplY3QgZmlsZXMgb3IgbGlicmFyaWVzIHRvZ2V0aGVyIHRvIGZvcm0gYW5vdGhlciBsaWJyYXJ5LCBvciB0bwotY3JlYXRlIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbS4KLQotTElOSy1DT01NQU5EIGlzIGEgY29tbWFuZCB1c2luZyB0aGUgQyBjb21waWxlciB0aGF0IHlvdSB3b3VsZCB1c2UgdG8gY3JlYXRlCi1hIHByb2dyYW0gZnJvbSBzZXZlcmFsIG9iamVjdCBmaWxlcy4KLQotVGhlIGZvbGxvd2luZyBjb21wb25lbnRzIG9mIExJTkstQ09NTUFORCBhcmUgdHJlYXRlZCBzcGVjaWFsbHk6Ci0KLSAgLWFsbC1zdGF0aWMgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgYXQgYWxsCi0gIC1hdm9pZC12ZXJzaW9uICAgIGRvIG5vdCBhZGQgYSB2ZXJzaW9uIHN1ZmZpeCBpZiBwb3NzaWJsZQotICAtZGxvcGVuIEZJTEUgICAgICBcYC1kbHByZW9wZW4nIEZJTEUgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkIGF0IHJ1bnRpbWUKLSAgLWRscHJlb3BlbiBGSUxFICAgbGluayBpbiBGSUxFIGFuZCBhZGQgaXRzIHN5bWJvbHMgdG8gbHRfcHJlbG9hZGVkX3N5bWJvbHMKLSAgLWV4cG9ydC1keW5hbWljICAgYWxsb3cgc3ltYm9scyBmcm9tIE9VVFBVVC1GSUxFIHRvIGJlIHJlc29sdmVkIHdpdGggZGxzeW0oMykKLSAgLWV4cG9ydC1zeW1ib2xzIFNZTUZJTEUKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIGV4cG9ydCBvbmx5IHRoZSBzeW1ib2xzIGxpc3RlZCBpbiBTWU1GSUxFCi0gIC1leHBvcnQtc3ltYm9scy1yZWdleCBSRUdFWAotICAgICAgICAgICAgICAgICAgICB0cnkgdG8gZXhwb3J0IG9ubHkgdGhlIHN5bWJvbHMgbWF0Y2hpbmcgUkVHRVgKLSAgLUxMSUJESVIgICAgICAgICAgc2VhcmNoIExJQkRJUiBmb3IgcmVxdWlyZWQgaW5zdGFsbGVkIGxpYnJhcmllcwotICAtbE5BTUUgICAgICAgICAgICBPVVRQVVQtRklMRSByZXF1aXJlcyB0aGUgaW5zdGFsbGVkIGxpYnJhcnkgbGliTkFNRQotICAtbW9kdWxlICAgICAgICAgICBidWlsZCBhIGxpYnJhcnkgdGhhdCBjYW4gZGxvcGVuZWQKLSAgLW5vLWZhc3QtaW5zdGFsbCAgZGlzYWJsZSB0aGUgZmFzdC1pbnN0YWxsIG1vZGUKLSAgLW5vLWluc3RhbGwgICAgICAgbGluayBhIG5vdC1pbnN0YWxsYWJsZSBleGVjdXRhYmxlCi0gIC1uby11bmRlZmluZWQgICAgIGRlY2xhcmUgdGhhdCBhIGxpYnJhcnkgZG9lcyBub3QgcmVmZXIgdG8gZXh0ZXJuYWwgc3ltYm9scwotICAtbyBPVVRQVVQtRklMRSAgICBjcmVhdGUgT1VUUFVULUZJTEUgZnJvbSB0aGUgc3BlY2lmaWVkIG9iamVjdHMKLSAgLW9iamVjdGxpc3QgRklMRSAgVXNlIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgZm91bmQgaW4gRklMRSB0byBzcGVjaWZ5IG9iamVjdHMKLSAgLXByZWNpb3VzLWZpbGVzLXJlZ2V4IFJFR0VYCi0gICAgICAgICAgICAgICAgICAgIGRvbid0IHJlbW92ZSBvdXRwdXQgZmlsZXMgbWF0Y2hpbmcgUkVHRVgKLSAgLXJlbGVhc2UgUkVMRUFTRSAgc3BlY2lmeSBwYWNrYWdlIHJlbGVhc2UgaW5mb3JtYXRpb24KLSAgLXJwYXRoIExJQkRJUiAgICAgdGhlIGNyZWF0ZWQgbGlicmFyeSB3aWxsIGV2ZW50dWFsbHkgYmUgaW5zdGFsbGVkIGluIExJQkRJUgotICAtUlsgXUxJQkRJUiAgICAgICBhZGQgTElCRElSIHRvIHRoZSBydW50aW1lIHBhdGggb2YgcHJvZ3JhbXMgYW5kIGxpYnJhcmllcwotICAtc3RhdGljICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcwotICAtc3RhdGljLWxpYnRvb2wtbGlicwotICAgICAgICAgICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiBsaWJ0b29sIGxpYnJhcmllcwotICAtdmVyc2lvbi1pbmZvIENVUlJFTlRbOlJFVklTSU9OWzpBR0VdXQotICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGxpYnJhcnkgdmVyc2lvbiBpbmZvIFtlYWNoIHZhcmlhYmxlIGRlZmF1bHRzIHRvIDBdCi0KLUFsbCBvdGhlciBvcHRpb25zIChhcmd1bWVudHMgYmVnaW5uaW5nIHdpdGggXGAtJykgYXJlIGlnbm9yZWQuCi0KLUV2ZXJ5IG90aGVyIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZS4gIEZpbGVzIGVuZGluZyBpbiBcYC5sYScgYXJlCi10cmVhdGVkIGFzIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzLCBvdGhlciBmaWxlcyBhcmUgc3RhbmRhcmQgb3IgbGlicmFyeQotb2JqZWN0IGZpbGVzLgotCi1JZiB0aGUgT1VUUFVULUZJTEUgZW5kcyBpbiBcYC5sYScsIHRoZW4gYSBsaWJ0b29sIGxpYnJhcnkgaXMgY3JlYXRlZCwKLW9ubHkgbGlicmFyeSBvYmplY3RzIChcYC5sbycgZmlsZXMpIG1heSBiZSBzcGVjaWZpZWQsIGFuZCBcYC1ycGF0aCcgaXMKLXJlcXVpcmVkLCBleGNlcHQgd2hlbiBjcmVhdGluZyBhIGNvbnZlbmllbmNlIGxpYnJhcnkuCi0KLUlmIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAuYScgb3IgXGAubGliJywgdGhlbiBhIHN0YW5kYXJkIGxpYnJhcnkgaXMgY3JlYXRlZAotdXNpbmcgXGBhcicgYW5kIFxgcmFubGliJywgb3Igb24gV2luZG93cyB1c2luZyBcYGxpYicuCi0KLUlmIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubG8nIG9yIFxgLiR7b2JqZXh0fScsIHRoZW4gYSByZWxvYWRhYmxlIG9iamVjdCBmaWxlCi1pcyBjcmVhdGVkLCBvdGhlcndpc2UgYW4gZXhlY3V0YWJsZSBwcm9ncmFtIGlzIGNyZWF0ZWQuIgotICA7OwotCi11bmluc3RhbGwpCi0gICRlY2hvIFwKLSJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT11bmluc3RhbGwgUk0gW1JNLU9QVElPTl0uLi4gRklMRS4uLgotCi1SZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLQotUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCi0odHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCi10byBSTS4KLQotSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgYWxsIHRoZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggaXQgYXJlIGRlbGV0ZWQuCi1PdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCi0gIDs7Ci0KLSopCi0gICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciIDE+JjIKLSAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gIGV4aXQgJEVYSVRfRkFJTFVSRQotICA7OwotZXNhYwotCi0kZWNobwotJGVjaG8gIlRyeSBcYCRtb2RlbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzLiIKLQotZXhpdCAkPwogCiAjIFRoZSBUQUdzIGJlbG93IGFyZSBkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBuZXZlciBnZXQgaW50byBhIHNpdHVhdGlvbgogIyBpbiB3aGljaCB3ZSBkaXNhYmxlIGJvdGgga2luZHMgb2YgbGlicmFyaWVzLiAgR2l2ZW4gY29uZmxpY3RpbmcKQEAgLTY5NDMsMTQgKzgzOTAsMTcgQEAKICMgY29uZmlndXJhdGlvbi4gIEJ1dCB3ZSdsbCBuZXZlciBnbyBmcm9tIHN0YXRpYy1vbmx5IHRvIHNoYXJlZC1vbmx5LgogCiAjICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6IGRpc2FibGUtc2hhcmVkCi1kaXNhYmxlX2xpYnM9c2hhcmVkCitidWlsZF9saWJ0b29sX2xpYnM9bm8KK2J1aWxkX29sZF9saWJzPXllcwogIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zaGFyZWQKIAogIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiBkaXNhYmxlLXN0YXRpYwotZGlzYWJsZV9saWJzPXN0YXRpYworYnVpbGRfb2xkX2xpYnM9YGNhc2UgJGJ1aWxkX2xpYnRvb2xfbGlicyBpbiB5ZXMpIGVjaG8gbm87OyAqKSBlY2hvIHllczs7IGVzYWNgCiAjICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiBkaXNhYmxlLXN0YXRpYwogCiAjIExvY2FsIFZhcmlhYmxlczoKICMgbW9kZTpzaGVsbC1zY3JpcHQKICMgc2gtaW5kZW50YXRpb246MgogIyBFbmQ6CisjIHZpOnN3PTIKKwpkaWZmIC0tZ2l0IGEvbTQvYWNfYWRkX3NlYXJjaF9wYXRoLm00IGIvbTQvYWNfYWRkX3NlYXJjaF9wYXRoLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMGE4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19hZGRfc2VhcmNoX3BhdGgubTQKQEAgLTAsMCArMSwxMyBAQAorZG5sCitkbmwgQWRkIGEgc2VhcmNoIHBhdGggdG8gdGhlIExJQlMgYW5kIENQUEZMQUdTIHZhcmlhYmxlcworZG5sCitBQ19ERUZVTihbQUNfQUREX1NFQVJDSF9QQVRIXSxbCisgIGlmIHRlc3QgIngkMSIgIT0geCAtYSAtZCAkMTsgdGhlbgorICAgICBpZiB0ZXN0IC1kICQxL2xpYjsgdGhlbgorICAgICAgIExERkxBR1M9Ii1MJDEvbGliICRMREZMQUdTIgorICAgICBmaQorICAgICBpZiB0ZXN0IC1kICQxL2luY2x1ZGU7IHRoZW4KKwlDUFBGTEFHUz0iLUkkMS9pbmNsdWRlICRDUFBGTEFHUyIKKyAgICAgZmkKKyAgZmkKK10pCmRpZmYgLS1naXQgYS9tNC9hY19tc2dfY2FjaGUubTQgYi9tNC9hY19tc2dfY2FjaGUubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkN2NkYQotLS0gL2Rldi9udWxsCisrKyBiL200L2FjX21zZ19jYWNoZS5tNApAQCAtMCwwICsxLDI0IEBACitkbmwKK2RubCBTdG9yZSBpbmZvcm1hdGlvbiBmb3IgZGlzcGxheWluZyBsYXRlci4KK2RubAorQUNfREVGVU4oW0FDX01TR19DQUNIRV9JTklUXSxbCisgIHJtIC1mIGNvbmZpZ3VyZS1zdW1tYXJ5CitdKQorCitBQ19ERUZVTihbQUNfTVNHX0NBQ0hFX0FERF0sWworICBjYXQgPj4gY29uZmlndXJlLXN1bW1hcnkgPDwgRU9GCisgICQxCitFT0YKK10pCisKK0FDX0RFRlVOKFtBQ19NU0dfQ0FDSEVfRElTUExBWV0sWworICBlY2hvICIiCisgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgZWNobyAiICAgICAgICAgICAgTmV0LVNOTVAgY29uZmlndXJhdGlvbiBzdW1tYXJ5OiIKKyAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICBlY2hvICIiCisgIGNhdCBjb25maWd1cmUtc3VtbWFyeQorICBlY2hvICIiCisgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgZWNobyAiIgorXSkKZGlmZiAtLWdpdCBhL200L2FjX21zZ19tb2R1bGVfZGJnLm00IGIvbTQvYWNfbXNnX21vZHVsZV9kYmcubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJjYjMxNwotLS0gL2Rldi9udWxsCisrKyBiL200L2FjX21zZ19tb2R1bGVfZGJnLm00CkBAIC0wLDAgKzEsNyBAQAorQUNfREVGVU4oW0FDX01TR19NT0RVTEVfREJHXSwKK1sKKyAgaWYgdGVzdCAkbW9kdWxlX2RlYnVnID0gMTsgdGhlbgorICAgIGVjaG8gJDEgJDIgJDMgJDQKKyAgZmkKK10KKykKZGlmZiAtLWdpdCBhL200L2FjX3Byb21wdF91c2VyLm00IGIvbTQvYWNfcHJvbXB0X3VzZXIubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyZGQ5YQotLS0gL2Rldi9udWxsCisrKyBiL200L2FjX3Byb21wdF91c2VyLm00CkBAIC0wLDAgKzEsNTIgQEAKK2RubCBAc3lub3BzaXMgQUNfUFJPTVBUX1VTRVJfTk9fREVGSU5FKFZBUklBQkxFTkFNRSxRVUVTVElPTixbREVGQVVMVF0pCitkbmwKK2RubCBBc2tzIGEgUVVFU1RJT04gYW5kIHB1dHMgdGhlIHJlc3VsdHMgaW4gVkFSSUFCTEVOQU1FIHdpdGggYW4gb3B0aW9uYWwKK2RubCBERUZBVUxUIHZhbHVlIGlmIHRoZSB1c2VyIG1lcmVseSBoaXRzIHJldHVybi4KK2RubAorZG5sIEB2ZXJzaW9uIDEuMTUKK2RubCBAYXV0aG9yIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorZG5sCitBQ19ERUZVTihbQUNfUFJPTVBUX1VTRVJfTk9fREVGSU5FXSwKK1sKK2lmIHRlc3QgIngkZGVmYXVsdHMiID0gInhubyI7IHRoZW4KK2VjaG8gJEVDSE9fTiAiJDIgKCQzKTogJEVDSE9fQyIKK3JlYWQgdG1waW5wdXQgPCZBU19PUklHSU5BTF9TVERJTl9GRAoraWYgdGVzdCAiJHRtcGlucHV0IiA9ICIiIC1hICIkMyIgIT0gIiI7IHRoZW4KKyAgdG1waW5wdXQ9IiQzIgorZmkKK2V2YWwgJDE9XCIkdG1waW5wdXRcIgorZWxzZQordG1waW5wdXQ9IiQzIgorZXZhbCAkMT1cIiR0bXBpbnB1dFwiCitmaQorXSkgZG5sIGRvbmUgQUNfUFJPTVBUX1VTRVIKKworZG5sIEBzeW5vcHNpcyBBQ19QUk9NUFRfVVNFUihWQVJJQUJMRU5BTUUsUVVFU1RJT04sW0RFRkFVTFRdLFFVT1RFRCkKK2RubAorZG5sIEFza3MgYSBRVUVTVElPTiBhbmQgcHV0cyB0aGUgcmVzdWx0cyBpbiBWQVJJQUJMRU5BTUUgd2l0aCBhbiBvcHRpb25hbAorZG5sIERFRkFVTFQgdmFsdWUgaWYgdGhlIHVzZXIgbWVyZWx5IGhpdHMgcmV0dXJuLiAgQWxzbyBjYWxscworZG5sIEFDX0RFRklORV9VTlFVT1RFRCgpIG9uIHRoZSBWQVJJQUJMRU5BTUUgZm9yIFZBUklBQkxFTkFNRXMgdGhhdCBzaG91bGQKK2RubCBiZSBlbnRlcmVkIGludG8gdGhlIGNvbmZpZy5oIGZpbGUgYXMgd2VsbC4gIElmIFFVT1RFRCBpcyAicXVvdGVkIiB0aGVuCitkbmwgdGhlIHJlc3VsdCB3aWxsIGJlIGRlZmluZWQgd2l0aGluIHF1b3Rlcy4KK2RubAorZG5sIEB2ZXJzaW9uIDEuMTUKK2RubCBAYXV0aG9yIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorZG5sCitBQ19ERUZVTihbQUNfUFJPTVBUX1VTRVJdLAorWworTVNHX0NIRUNLPSJwYXRzdWJzdChbJDJdLCBbLioKK10sIFtdKSIKK0FDX0NBQ0hFX0NIRUNLKCRNU0dfQ0hFQ0ssIGFjX2N2X3VzZXJfcHJvbXB0XyQxLAorW2VjaG8gIiIgPiZBU19NRVNTQUdFX0ZECitBQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoJDEsWyQyXSwkMykKK2V2YWwgYWNfY3ZfdXNlcl9wcm9tcHRfJDE9XCQkMQorZWNobyAkRUNIT19OICJzZXR0aW5nICRNU0dfQ0hFQ0sgdG8uLi4gICRFQ0hPX0MiID4mQVNfTUVTU0FHRV9GRAorXSkKK2lmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF8kMSIgIT0gIm5vbmUiOyB0aGVuCisgIGlmIHRlc3QgIngkNCIgPSAieHF1b3RlZCIgLW8gIngkNCIgPSAieFFVT1RFRCI7IHRoZW4KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoJDEsIiRhY19jdl91c2VyX3Byb21wdF8kMSIpCisgIGVsc2UKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoJDEsJGFjX2N2X3VzZXJfcHJvbXB0XyQxKQorICBmaQorZmkKK10pIGRubApkaWZmIC0tZ2l0IGEvbTQvbGlidG9vbC5tNCBiL200L2xpYnRvb2wubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzliYTk5NgotLS0gL2Rldi9udWxsCisrKyBiL200L2xpYnRvb2wubTQKQEAgLTAsMCArMSw3MzU3IEBACisjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQorIworIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK200X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisjCisjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCisjCisjIEdOVSBMaWJ0b29sIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisjIGlmIHlvdSBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQKKyMgaXMgYnVpbHQgdXNpbmcgR05VIExpYnRvb2wsIHlvdSBtYXkgaW5jbHVkZSB0aGlzIGZpbGUgdW5kZXIgdGhlCisjIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorIworIyBHTlUgTGlidG9vbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggR05VIExpYnRvb2w7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCBhIGNvcHkKKyMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwsIG9yCisjIG9idGFpbmVkIGJ5IHdyaXRpbmcgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCitdKQorCisjIHNlcmlhbCA1NiBMVF9JTklUCisKKworIyBMVF9QUkVSRVEoVkVSU0lPTikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbXBsYWluIGFuZCBleGl0IGlmIHRoaXMgbGlidG9vbCB2ZXJzaW9uIGlzIGxlc3MgdGhhdCBWRVJTSU9OLgorbTRfZGVmdW4oW0xUX1BSRVJFUV0sCitbbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKG00X2RlZm4oW0xUX1BBQ0tBR0VfVkVSU0lPTl0pLCBbJDFdKSwgLTEsCisgICAgICAgW200X2RlZmF1bHQoWyQzXSwKKwkJICAgW200X2ZhdGFsKFtMaWJ0b29sIHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkXSwKKwkJICAgICAgICAgICAgIDYzKV0pXSwKKyAgICAgICBbJDJdKV0pCisKKworIyBfTFRfQ0hFQ0tfQlVJTERESVIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbXBsYWluIGlmIHRoZSBhYnNvbHV0ZSBidWlsZCBkaXJlY3RvcnkgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMKK200X2RlZnVuKFtfTFRfQ0hFQ0tfQlVJTERESVJdLAorW2Nhc2UgYHB3ZGAgaW4KKyAgKlwgKiB8ICpcCSopCisgICAgQUNfTVNHX1dBUk4oW0xpYnRvb2wgZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggd2hpdGVzcGFjZSBpbiBgcHdkYF0pIDs7Citlc2FjCitdKQorCisKKyMgTFRfSU5JVChbT1BUSU9OU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX0lOSVRdLAorW0FDX1BSRVJFUShbMi41OF0pZG5sIFdlIHVzZSBBQ19JTkNMVURFU19ERUZBVUxUCitBQ19CRUZPUkUoWyQwXSwgW0xUX0xBTkddKWRubAorQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubAorQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX0JVSUxERElSXSlkbmwKKworZG5sIEF1dG9jb25mIGRvZXNuJ3QgY2F0Y2ggdW5leHBhbmRlZCBMVF8gbWFjcm9zIGJ5IGRlZmF1bHQ6CittNF9wYXR0ZXJuX2ZvcmJpZChbXl8/TFRfW0EtWl9dKyRdKWRubAorbTRfcGF0dGVybl9hbGxvdyhbXihfTFRfRU9GfExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1d8TFRfTVVMVElfTU9EVUxFKSRdKWRubAorZG5sIGFjbG9jYWwgZG9lc24ndCBwdWxsIGx0b3B0aW9ucy5tNCwgbHRzdWdhci5tNCwgb3IgbHR2ZXJzaW9uLm00CitkbmwgdW5sZXNzIHdlIHJlcXVpcmUgYW4gQUNfREVGVU5lZCBtYWNybzoKK0FDX1JFUVVJUkUoW0xUT1BUSU9OU19WRVJTSU9OXSlkbmwKK0FDX1JFUVVJUkUoW0xUU1VHQVJfVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtMVFZFUlNJT05fVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtMVE9CU09MRVRFX1ZFUlNJT05dKWRubAorbTRfcmVxdWlyZShbX0xUX1BST0dfTFRNQUlOXSlkbmwKKworZG5sIFBhcnNlIE9QVElPTlMKK19MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQorCisjIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVidWlsZCBsaWJ0b29sIHdoZW4gbmVlZGVkCitMSUJUT09MX0RFUFM9IiRsdG1haW4iCisKKyMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCitMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKK0FDX1NVQlNUKExJQlRPT0wpZG5sCisKK19MVF9TRVRVUAorCisjIE9ubHkgZXhwYW5kIG9uY2U6CittNF9kZWZpbmUoW0xUX0lOSVRdKQorXSkjIExUX0lOSVQKKworIyBPbGQgbmFtZXM6CitBVV9BTElBUyhbQUNfUFJPR19MSUJUT09MXSwgW0xUX0lOSVRdKQorQVVfQUxJQVMoW0FNX1BST0dfTElCVE9PTF0sIFtMVF9JTklUXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfUFJPR19MSUJUT09MXSwgW10pCitkbmwgQUNfREVGVU4oW0FNX1BST0dfTElCVE9PTF0sIFtdKQorCisKKyMgX0xUX0NDX0JBU0VOQU1FKENDKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIENhbGN1bGF0ZSBjY19iYXNlbmFtZS4gIFNraXAga25vd24gY29tcGlsZXIgd3JhcHBlcnMgYW5kIGNyb3NzLXByZWZpeC4KK200X2RlZnVuKFtfTFRfQ0NfQkFTRU5BTUVdLAorW2ZvciBjY190ZW1wIGluICQxIiI7IGRvCisgIGNhc2UgJGNjX3RlbXAgaW4KKyAgICBjb21waWxlIHwgKltbXFwvXV1jb21waWxlIHwgY2NhY2hlIHwgKltbXFwvXV1jY2FjaGUgKSA7OworICAgIGRpc3RjYyB8ICpbW1xcL11dZGlzdGNjIHwgcHVyaWZ5IHwgKltbXFwvXV1wdXJpZnkgKSA7OworICAgIFwtKikgOzsKKyAgICAqKSBicmVhazs7CisgIGVzYWMKK2RvbmUKK2NjX2Jhc2VuYW1lPWAkRUNITyAiWCRjY190ZW1wIiB8ICRYc2VkIC1lICdzJS4qLyUlJyAtZSAicyVeJGhvc3RfYWxpYXMtJSUiYAorXSkKKworCisjIF9MVF9GSUxFVVRJTFNfREVGQVVMVFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJdCBpcyBva2F5IHRvIHVzZSB0aGVzZSBmaWxlIGNvbW1hbmRzIGFuZCBhc3N1bWUgdGhleSBoYXZlIGJlZW4gc2V0CisjIHNlbnNpYmx5IGFmdGVyIGBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSknLgorbTRfZGVmdW4oW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdLAorWzogJHtDUD0iY3AgLWYifQorOiAke01WPSJtdiAtZiJ9Cis6ICR7Uk09InJtIC1mIn0KK10pIyBfTFRfRklMRVVUSUxTX0RFRkFVTFRTCisKKworIyBfTFRfU0VUVVAKKyMgLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX1NFVFVQXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorX0xUX0RFQ0woW10sIFtob3N0X2FsaWFzXSwgWzBdLCBbVGhlIGhvc3Qgc3lzdGVtXSlkbmwKK19MVF9ERUNMKFtdLCBbaG9zdF0sIFswXSlkbmwKK19MVF9ERUNMKFtdLCBbaG9zdF9vc10sIFswXSlkbmwKK2RubAorX0xUX0RFQ0woW10sIFtidWlsZF9hbGlhc10sIFswXSwgW1RoZSBidWlsZCBzeXN0ZW1dKWRubAorX0xUX0RFQ0woW10sIFtidWlsZF0sIFswXSlkbmwKK19MVF9ERUNMKFtdLCBbYnVpbGRfb3NdLCBbMF0pZG5sCitkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCitBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK2RubAorQUNfUkVRVUlSRShbQUNfUFJPR19MTl9TXSlkbmwKK3Rlc3QgLXogIiRMTl9TIiAmJiBMTl9TPSJsbiAtcyIKK19MVF9ERUNMKFtdLCBbTE5fU10sIFsxXSwgW1doZXRoZXIgd2UgbmVlZCBzb2Z0IG9yIGhhcmQgbGlua3NdKWRubAorZG5sCitBQ19SRVFVSVJFKFtMVF9DTURfTUFYX0xFTl0pZG5sCitfTFRfREVDTChbb2JqZXh0XSwgW2FjX29iamV4dF0sIFswXSwgW09iamVjdCBmaWxlIHN1ZmZpeCAobm9ybWFsbHkgIm8iKV0pZG5sCitfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCitkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKK200X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAorbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKKworX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWworIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorIyBjb21tYW5kcyB0aHJvdWdoIHdpdGhvdXQgcmVtb3ZhbCBvZiBcIGVzY2FwZXMgSU5JVC4KK2lmIHRlc3QgLW4gIlwke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgorICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKK2ZpCitdKQoraWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiA7IHRoZW4KKyAgIHNldG9wdCBOT19HTE9CX1NVQlNUCitmaQorCitfTFRfQ0hFQ0tfT0JKRElSCisKK200X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAorX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKKworY2FzZSAkaG9zdF9vcyBpbgorYWl4MyopCisgICMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxlY3QyIHByb2dyYW0uICBGb3Igc29tZQorICAjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xMRUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMKKyAgIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgorICBpZiB0ZXN0ICJYJHtDT0xMRUNUX05BTUVTK3NldH0iICE9IFhzZXQ7IHRoZW4KKyAgICBDT0xMRUNUX05BTUVTPQorICAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCisgIGZpCisgIDs7Citlc2FjCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKKyMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKKworIyBHbG9iYWwgdmFyaWFibGVzOgorb2ZpbGU9bGlidG9vbAorY2FuX2J1aWxkX3NoYXJlZD15ZXMKKworIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCisjIHdoaWNoIG5lZWRzICcubGliJykuCitsaWJleHQ9YQorCit3aXRoX2dudV9sZD0iJGx0X2N2X3Byb2dfZ251X2xkIgorCitvbGRfQ0M9IiRDQyIKK29sZF9DRkxBR1M9IiRDRkxBR1MiCisKKyMgU2V0IHNhbmUgZGVmYXVsdHMgZm9yIHZhcmlvdXMgdmFyaWFibGVzCit0ZXN0IC16ICIkQ0MiICYmIENDPWNjCit0ZXN0IC16ICIkTFRDQyIgJiYgTFRDQz0kQ0MKK3Rlc3QgLXogIiRMVENGTEFHUyIgJiYgTFRDRkxBR1M9JENGTEFHUwordGVzdCAteiAiJExEIiAmJiBMRD1sZAordGVzdCAteiAiJGFjX29iamV4dCIgJiYgYWNfb2JqZXh0PW8KKworX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisjIE9ubHkgcGVyZm9ybSB0aGUgY2hlY2sgZm9yIGZpbGUsIGlmIHRoZSBjaGVjayBtZXRob2QgcmVxdWlyZXMgaXQKK3Rlc3QgLXogIiRNQUdJQ19DTUQiICYmIE1BR0lDX0NNRD1maWxlCitjYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgorZmlsZV9tYWdpYyopCisgIGlmIHRlc3QgIiRmaWxlX21hZ2ljX2NtZCIgPSAnJE1BR0lDX0NNRCc7IHRoZW4KKyAgICBfTFRfUEFUSF9NQUdJQworICBmaQorICA7OworZXNhYworCisjIFVzZSBDIGZvciB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGluIHRoZSBsaWJ0b29sIHNjcmlwdAorTFRfU1VQUE9SVEVEX1RBRyhbQ0NdKQorX0xUX0xBTkdfQ19DT05GSUcKK19MVF9MQU5HX0RFRkFVTFRfQ09ORklHCitfTFRfQ09ORklHX0NPTU1BTkRTCitdKSMgX0xUX1NFVFVQCisKKworIyBfTFRfUFJPR19MVE1BSU4KKyMgLS0tLS0tLS0tLS0tLS0tCisjIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgY2FsbGVkIGJvdGggZnJvbSBgY29uZmlndXJlJywgYW5kIGBjb25maWcuc3RhdHVzJworIyBub3cgdGhhdCB3ZSB1c2UgQUNfQ09ORklHX0NPTU1BTkRTIHRvIGdlbmVyYXRlIGxpYnRvb2wuICBOb3RhYmx5LAorIyBgY29uZmlnLnN0YXR1cycgaGFzIG5vIHZhbHVlIGZvciBhY19hdXhfZGlyIHVubGVzcyB3ZSBhcmUgdXNpbmcgQXV0b21ha2UsCisjIHNvIHdlIHBhc3MgYSBjb3B5IGFsb25nIHRvIG1ha2Ugc3VyZSBpdCBoYXMgYSBzZW5zaWJsZSB2YWx1ZSBhbnl3YXkuCittNF9kZWZ1bihbX0xUX1BST0dfTFRNQUlOXSwKK1ttNF9pZmRlZihbQUNfUkVRVUlSRV9BVVhfRklMRV0sIFtBQ19SRVFVSVJFX0FVWF9GSUxFKFtsdG1haW4uc2hdKV0pZG5sCitfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbYWNfYXV4X2Rpcj0nJGFjX2F1eF9kaXInXSkKK2x0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorXSkjIF9MVF9QUk9HX0xUTUFJTgorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEFjY3VtdWxhdGUgY29kZSBmb3IgY3JlYXRpbmcgbGlidG9vbC4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBTbyB0aGF0IHdlIGNhbiByZWNyZWF0ZSBhIGZ1bGwgbGlidG9vbCBzY3JpcHQgaW5jbHVkaW5nIGFkZGl0aW9uYWwKKyMgdGFncywgd2UgYWNjdW11bGF0ZSB0aGUgY2h1bmtzIG9mIGNvZGUgdG8gc2VuZCB0byBBQ19DT05GSUdfQ09NTUFORFMKKyMgaW4gbWFjcm9zIGFuZCB0aGVuIG1ha2UgYSBzaW5nbGUgY2FsbCBhdCB0aGUgZW5kIHVzaW5nIHRoZSBgbGlidG9vbCcKKyMgbGFiZWwuCisKKworIyBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbSU5JVC1DT01NQU5EU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVnaXN0ZXIgSU5JVC1DT01NQU5EUyB0byBiZSBwYXNzZWQgdG8gQUNfQ09ORklHX0NPTU1BTkRTIGxhdGVyLgorbTRfZGVmaW5lKFtfTFRfQ09ORklHX0xJQlRPT0xfSU5JVF0sCitbbTRfaWZ2YWwoWyQxXSwKKyAgICAgICAgICBbbTRfYXBwZW5kKFtfTFRfT1VUUFVUX0xJQlRPT0xfSU5JVF0sCisgICAgICAgICAgICAgICAgICAgICBbJDEKK10pXSldKQorCisjIEluaXRpYWxpemUuCittNF9kZWZpbmUoW19MVF9PVVRQVVRfTElCVE9PTF9JTklUXSkKKworCisjIF9MVF9DT05GSUdfTElCVE9PTChbQ09NTUFORFNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVnaXN0ZXIgQ09NTUFORFMgdG8gYmUgcGFzc2VkIHRvIEFDX0NPTkZJR19DT01NQU5EUyBsYXRlci4KK200X2RlZmluZShbX0xUX0NPTkZJR19MSUJUT09MXSwKK1ttNF9pZnZhbChbJDFdLAorICAgICAgICAgIFttNF9hcHBlbmQoW19MVF9PVVRQVVRfTElCVE9PTF9DT01NQU5EU10sCisgICAgICAgICAgICAgICAgICAgICBbJDEKK10pXSldKQorCisjIEluaXRpYWxpemUuCittNF9kZWZpbmUoW19MVF9PVVRQVVRfTElCVE9PTF9DT01NQU5EU10pCisKKworIyBfTFRfQ09ORklHX1NBVkVfQ09NTUFORFMoW0NPTU1BTkRTXSwgW0lOSVRfQ09NTUFORFNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DT05GSUdfU0FWRV9DT01NQU5EU10sCitbX0xUX0NPTkZJR19MSUJUT09MKFskMV0pCitfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbJDJdKQorXSkKKworCisjIF9MVF9GT1JNQVRfQ09NTUVOVChbQ09NTUVOVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFkZCBsZWFkaW5nIGNvbW1lbnQgbWFya3MgdG8gdGhlIHN0YXJ0IG9mIGVhY2ggbGluZSwgYW5kIGEgdHJhaWxpbmcKKyMgZnVsbC1zdG9wIHRvIHRoZSB3aG9sZSBjb21tZW50IGlmIG9uZSBpcyBub3QgcHJlc2VudCBhbHJlYWR5LgorbTRfZGVmaW5lKFtfTFRfRk9STUFUX0NPTU1FTlRdLAorW200X2lmdmFsKFskMV0sIFsKK200X2JwYXRzdWJzdChbbTRfYnBhdHN1YnN0KFskMV0sIFteICpdLCBbIyBdKV0sCisgICAgICAgICAgICAgIFtbJ2AkXF1dLCBbXFxcJl0pXW00X2JtYXRjaChbJDFdLCBbWyE/Ll0kXSwgW10sIFsuXSkKKyldKQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBGSVhNRTogRWxpbWluYXRlIFZBUk5BTUUgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgX0xUX0RFQ0woW0NPTkZJR05BTUVdLCBWQVJOQU1FLCBWQUxVRSwgW0RFU0NSSVBUSU9OXSwgW0lTLVRBR0dFRD9dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENPTkZJR05BTUUgaXMgdGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIHZhbHVlIGluIHRoZSBsaWJ0b29sIHNjcmlwdC4KKyMgVkFSTkFNRSBpcyB0aGUgKGJhc2UpIG5hbWUgdXNlZCBpbiB0aGUgY29uZmlndXJlIHNjcmlwdC4KKyMgVkFMVUUgbWF5IGJlIDAsIDEgb3IgMiBmb3IgYSBjb21wdXRlZCBxdW90ZSBlc2NhcGVkIHZhbHVlIGJhc2VkIG9uCisjIFZBUk5BTUUuICBBbnkgb3RoZXIgdmFsdWUgd2lsbCBiZSB1c2VkIGRpcmVjdGx5LgorbTRfZGVmaW5lKFtfTFRfREVDTF0sCitbbHRfaWZfYXBwZW5kX3VuaXEoW2x0X2RlY2xfdmFybmFtZXNdLCBbJDJdLCBbLCBdLAorICAgIFtsdF9kaWN0X2FkZF9zdWJrZXkoW2x0X2RlY2xfZGljdF0sIFskMl0sIFtsaWJ0b29sX25hbWVdLAorCVttNF9pZnZhbChbJDFdLCBbJDFdLCBbJDJdKV0pCisgICAgbHRfZGljdF9hZGRfc3Via2V5KFtsdF9kZWNsX2RpY3RdLCBbJDJdLCBbdmFsdWVdLCBbJDNdKQorICAgIG00X2lmdmFsKFskNF0sCisJW2x0X2RpY3RfYWRkX3N1YmtleShbbHRfZGVjbF9kaWN0XSwgWyQyXSwgW2Rlc2NyaXB0aW9uXSwgWyQ0XSldKQorICAgIGx0X2RpY3RfYWRkX3N1YmtleShbbHRfZGVjbF9kaWN0XSwgWyQyXSwKKwlbdGFnZ2VkP10sIFttNF9pZnZhbChbJDVdLCBbeWVzXSwgW25vXSldKV0pCitdKQorCisKKyMgX0xUX1RBR0RFQ0woW0NPTkZJR05BTUVdLCBWQVJOQU1FLCBWQUxVRSwgW0RFU0NSSVBUSU9OXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX1RBR0RFQ0xdLCBbX0xUX0RFQ0woWyQxXSwgWyQyXSwgWyQzXSwgWyQ0XSwgW3llc10pXSkKKworCisjIGx0X2RlY2xfdGFnX3Zhcm5hbWVzKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGVjbF90YWdfdmFybmFtZXNdLAorW19sdF9kZWNsX2ZpbHRlcihbdGFnZ2VkP10sIFt5ZXNdLCAkQCldKQorCisKKyMgX2x0X2RlY2xfZmlsdGVyKFNVQktFWSwgVkFMVUUsIFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfbHRfZGVjbF9maWx0ZXJdLAorW200X2Nhc2UoWyQjXSwKKyAgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCisgIFsxXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKKyAgWzJdLCBbbHRfZGljdF9maWx0ZXIoW2x0X2RlY2xfZGljdF0sIFskMV0sIFskMl0sIFtdLCBsdF9kZWNsX3Zhcm5hbWVzKV0sCisgIFszXSwgW2x0X2RpY3RfZmlsdGVyKFtsdF9kZWNsX2RpY3RdLCBbJDFdLCBbJDJdLCBbJDNdLCBsdF9kZWNsX3Zhcm5hbWVzKV0sCisgIFtsdF9kaWN0X2ZpbHRlcihbbHRfZGVjbF9kaWN0XSwgJEApXSlbXWRubAorXSkKKworCisjIGx0X2RlY2xfcXVvdGVfdmFybmFtZXMoW1NFUEFSQVRPUl0sIFtWQVJOQU1FMS4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RlY2xfcXVvdGVfdmFybmFtZXNdLAorW19sdF9kZWNsX2ZpbHRlcihbdmFsdWVdLCBbMV0sICRAKV0pCisKKworIyBsdF9kZWNsX2RxdW90ZV92YXJuYW1lcyhbU0VQQVJBVE9SXSwgW1ZBUk5BTUUxLi4uXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RlY2xfZHF1b3RlX3Zhcm5hbWVzXSwKK1tfbHRfZGVjbF9maWx0ZXIoW3ZhbHVlXSwgWzJdLCAkQCldKQorCisKKyMgbHRfZGVjbF92YXJuYW1lc190YWdnZWQoW1NFUEFSQVRPUl0sIFtWQVJOQU1FMS4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kZWNsX3Zhcm5hbWVzX3RhZ2dlZF0sCitbbTRfYXNzZXJ0KFskIyA8PSAyXSlkbmwKK18kMChtNF9xdW90ZShtNF9kZWZhdWx0KFskMV0sIFtbLCBdXSkpLAorICAgIG00X2lmdmFsKFskMl0sIFtbJDJdXSwgW200X2RxdW90ZShsdF9kZWNsX3RhZ192YXJuYW1lcyldKSwKKyAgICBtNF9zcGxpdChtNF9ub3JtYWxpemUobTRfcXVvdGUoX0xUX1RBR1MpKSwgWyBdKSldKQorbTRfZGVmaW5lKFtfbHRfZGVjbF92YXJuYW1lc190YWdnZWRdLAorW200X2lmdmFsKFskM10sIFtsdF9jb21iaW5lKFskMV0sIFskMl0sIFtfXSwgJDMpXSldKQorCisKKyMgbHRfZGVjbF9hbGxfdmFybmFtZXMoW1NFUEFSQVRPUl0sIFtWQVJOQU1FMS4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kZWNsX2FsbF92YXJuYW1lc10sCitbXyQwKG00X3F1b3RlKG00X2RlZmF1bHQoWyQxXSwgW1ssIF1dKSksCisgICAgIG00X2lmKFskMl0sIFtdLAorCSAgIG00X3F1b3RlKGx0X2RlY2xfdmFybmFtZXMpLAorCW00X3F1b3RlKG00X3NoaWZ0KCRAKSkpKVtdZG5sCitdKQorbTRfZGVmaW5lKFtfbHRfZGVjbF9hbGxfdmFybmFtZXNdLAorW2x0X2pvaW4oJEAsIGx0X2RlY2xfdmFybmFtZXNfdGFnZ2VkKFskMV0sCisJCQlsdF9kZWNsX3RhZ192YXJuYW1lcyhbWywgXV0sIG00X3NoaWZ0KCRAKSkpKWRubAorXSkKKworCisjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkUoW1ZBUk5BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUXVvdGUgYSB2YXJpYWJsZSB2YWx1ZSwgYW5kIGZvcndhcmQgaXQgdG8gYGNvbmZpZy5zdGF0dXMnIHNvIHRoYXQgaXRzCisjIGRlY2xhcmF0aW9uIHRoZXJlIHdpbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiBgY29uZmlndXJlJy4gIFZBUk5BTUUKKyMgbXVzdCBoYXZlIGEgc2luZ2xlIHF1b3RlIGRlbGltaXRlZCB2YWx1ZSBmb3IgdGhpcyB0byB3b3JrLgorbTRfZGVmaW5lKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFXSwKK1skMT0nYCRFQ0hPICJYJF1bJDEiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCddKQorCisKKyMgX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSQVRJT05TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBXZSBkZWxpbWl0IGxpYnRvb2wgY29uZmlnIHZhcmlhYmxlcyB3aXRoIHNpbmdsZSBxdW90ZXMsIHNvIHdoZW4KKyMgd2Ugd3JpdGUgdGhlbSB0byBjb25maWcuc3RhdHVzLCB3ZSBoYXZlIHRvIGJlIHN1cmUgdG8gcXVvdGUgYWxsCisjIGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMgcHJvcGVybHkuICBJbiBjb25maWd1cmUsIHRoaXMgbWFjcm8gZXhwYW5kcworIyBlYWNoIHZhcmlhYmxlIGRlY2xhcmVkIHdpdGggX0xUX0RFQ0wgKGFuZCBfTFRfVEFHREVDTCkgaW50bzoKKyMKKyMgICAgPHZhcj49J2AkRUNITyAiWCQ8dmFyPiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbTRfZGVmdW4oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OU10sCitbbTRfZm9yZWFjaChbX2x0X3Zhcl0sIG00X3F1b3RlKGx0X2RlY2xfYWxsX3Zhcm5hbWVzKSwKKyAgICBbbTRfbihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRShfbHRfdmFyKV0pXSldKQorCisKKyMgX0xUX0xJQlRPT0xfVEFHUworIyAtLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCBjb21tZW50IGFuZCBsaXN0IG9mIHRhZ3Mgc3VwcG9ydGVkIGJ5IHRoZSBzY3JpcHQKK200X2RlZnVuKFtfTFRfTElCVE9PTF9UQUdTXSwKK1tfTFRfRk9STUFUX0NPTU1FTlQoW1RoZSBuYW1lcyBvZiB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdF0pZG5sCithdmFpbGFibGVfdGFncz0iX0xUX1RBR1MiZG5sCitdKQorCisKKyMgX0xUX0xJQlRPT0xfREVDTEFSRShWQVJOQU1FLCBbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXh0cmFjdCB0aGUgZGljdGlvbmFyeSB2YWx1ZXMgZm9yIFZBUk5BTUUgKG9wdGlvbmFsbHkgd2l0aCBUQUcpIGFuZAorIyBleHBhbmQgdG8gYSBjb21tZW50ZWQgc2hlbGwgdmFyaWFibGUgc2V0dGluZzoKKyMKKyMgICAgIyBTb21lIGNvbW1lbnQgYWJvdXQgd2hhdCBWQVIgaXMgZm9yLgorIyAgICB2aXNpYmxlX25hbWU9JGx0X2ludGVybmFsX25hbWUKK200X2RlZmluZShbX0xUX0xJQlRPT0xfREVDTEFSRV0sCitbX0xUX0ZPUk1BVF9DT01NRU5UKG00X3F1b3RlKGx0X2RpY3RfZmV0Y2goW2x0X2RlY2xfZGljdF0sIFskMV0sCisJCQkJCSAgIFtkZXNjcmlwdGlvbl0pKSlbXWRubAorbTRfcHVzaGRlZihbX2xpYnRvb2xfbmFtZV0sCisgICAgbTRfcXVvdGUobHRfZGljdF9mZXRjaChbbHRfZGVjbF9kaWN0XSwgWyQxXSwgW2xpYnRvb2xfbmFtZV0pKSlbXWRubAorbTRfY2FzZShtNF9xdW90ZShsdF9kaWN0X2ZldGNoKFtsdF9kZWNsX2RpY3RdLCBbJDFdLCBbdmFsdWVdKSksCisgICAgWzBdLCBbX2xpYnRvb2xfbmFtZT1bJF0kMV0sCisgICAgWzFdLCBbX2xpYnRvb2xfbmFtZT0kbHRfW10kMV0sCisgICAgWzJdLCBbX2xpYnRvb2xfbmFtZT0kbHRfW10kMV0sCisgICAgW19saWJ0b29sX25hbWU9bHRfZGljdF9mZXRjaChbbHRfZGVjbF9kaWN0XSwgWyQxXSwgW3ZhbHVlXSldKVtdZG5sCittNF9pZnZhbChbJDJdLCBbXyQyXSlbXW00X3BvcGRlZihbX2xpYnRvb2xfbmFtZV0pW11kbmwKK10pCisKKworIyBfTFRfTElCVE9PTF9DT05GSUdfVkFSUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9kdWNlIGNvbW1lbnRlZCBkZWNsYXJhdGlvbnMgb2Ygbm9uLXRhZ2dlZCBsaWJ0b29sIGNvbmZpZyB2YXJpYWJsZXMKKyMgc3VpdGFibGUgZm9yIGluc2VydGlvbiBpbiB0aGUgTElCVE9PTCBDT05GSUcgc2VjdGlvbiBvZiB0aGUgYGxpYnRvb2wnCisjIHNjcmlwdC4gIFRhZ2dlZCBsaWJ0b29sIGNvbmZpZyB2YXJpYWJsZXMgKGV2ZW4gZm9yIHRoZSBMSUJUT09MIENPTkZJRworIyBzZWN0aW9uKSBhcmUgcHJvZHVjZWQgYnkgX0xUX0xJQlRPT0xfVEFHX1ZBUlMuCittNF9kZWZ1bihbX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlNdLAorW200X2ZvcmVhY2goW19sdF92YXJdLAorICAgIG00X3F1b3RlKF9sdF9kZWNsX2ZpbHRlcihbdGFnZ2VkP10sIFtub10sIFtdLCBsdF9kZWNsX3Zhcm5hbWVzKSksCisgICAgW200X24oW19MVF9MSUJUT09MX0RFQ0xBUkUoX2x0X3ZhcildKV0pXSkKKworCisjIF9MVF9MSUJUT09MX1RBR19WQVJTKFRBRykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfTElCVE9PTF9UQUdfVkFSU10sCitbbTRfZm9yZWFjaChbX2x0X3Zhcl0sIG00X3F1b3RlKGx0X2RlY2xfdGFnX3Zhcm5hbWVzKSwKKyAgICBbbTRfbihbX0xUX0xJQlRPT0xfREVDTEFSRShfbHRfdmFyLCBbJDFdKV0pXSldKQorCisKKyMgX0xUX1RBR1ZBUihWQVJOQU1FLCBbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfVEFHVkFSXSwgW200X2lmdmFsKFskMl0sIFskMV8kMl0sIFskMV0pXSkKKworCisjIF9MVF9DT05GSUdfQ09NTUFORFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZW5kIGFjY3VtdWxhdGVkIG91dHB1dCB0byAkQ09ORklHX1NUQVRVUy4gIFRoYW5rcyB0byB0aGUgbGlzdHMgb2YKKyMgdmFyaWFibGVzIGZvciBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZSBlc2NhcGluZyB3ZSBzYXZlZCBmcm9tIGNhbGxzCisjIHRvIF9MVF9ERUNMLCB3ZSBjYW4gcHV0IHF1b3RlIGVzY2FwZWQgdmFyaWFibGVzIGRlY2xhcmF0aW9ucworIyBpbnRvIGBjb25maWcuc3RhdHVzJywgYW5kIHRoZW4gdGhlIHNoZWxsIGNvZGUgdG8gcXVvdGUgZXNjYXBlIHRoZW0gaW4KKyMgZm9yIGxvb3BzIGluIGBjb25maWcuc3RhdHVzJy4gIEZpbmFsbHksIGFueSBhZGRpdGlvbmFsIGNvZGUgYWNjdW11bGF0ZWQKKyMgZnJvbSBjYWxscyB0byBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVCBpcyBleHBhbmRlZC4KK200X2RlZnVuKFtfTFRfQ09ORklHX0NPTU1BTkRTXSwKK1tBQ19QUk9WSURFX0lGRUxTRShbTFRfT1VUUFVUXSwKKwlkbmwgSWYgdGhlIGxpYnRvb2wgZ2VuZXJhdGlvbiBjb2RlIGhhcyBiZWVuIHBsYWNlZCBpbiAkQ09ORklHX0xULAorCWRubCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0IGFsbCBvdmVyIGFnYWluIGludG8gY29uZmlnLnN0YXR1cywKKwlkbmwgdGhlbiB3ZSB3aWxsIGhhdmUgY29uZmlnLnN0YXR1cyBydW4gJENPTkZJR19MVCBsYXRlciwgc28gaXQKKwlkbmwgbmVlZHMgdG8ga25vdyB3aGF0IG5hbWUgaXMgc3RvcmVkIHRoZXJlOgorICAgICAgICBbQUNfQ09ORklHX0NPTU1BTkRTKFtsaWJ0b29sXSwKKyAgICAgICAgICAgIFskU0hFTEwgJENPTkZJR19MVCB8fCBBU19FWElUKDEpXSwgW0NPTkZJR19MVD0nJENPTkZJR19MVCddKV0sCisgICAgZG5sIElmIHRoZSBsaWJ0b29sIGdlbmVyYXRpb24gY29kZSBpcyBkZXN0aW5lZCBmb3IgY29uZmlnLnN0YXR1cywKKyAgICBkbmwgZXhwYW5kIHRoZSBhY2N1bXVsYXRlZCBjb21tYW5kcyBhbmQgaW5pdCBjb2RlIG5vdzoKKyAgICBbQUNfQ09ORklHX0NPTU1BTkRTKFtsaWJ0b29sXSwKKyAgICAgICAgW19MVF9PVVRQVVRfTElCVE9PTF9DT01NQU5EU10sIFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNfSU5JVF0pXSkKK10pI19MVF9DT05GSUdfQ09NTUFORFMKKworCisjIEluaXRpYWxpemUuCittNF9kZWZpbmUoW19MVF9PVVRQVVRfTElCVE9PTF9DT01NQU5EU19JTklUXSwKK1sKKworIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKKyMgaWYgQ0RQQVRIIGlzIHNldC4KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKKworc2VkX3F1b3RlX3N1YnN0PSckc2VkX3F1b3RlX3N1YnN0JworZG91YmxlX3F1b3RlX3N1YnN0PSckZG91YmxlX3F1b3RlX3N1YnN0JworZGVsYXlfdmFyaWFibGVfc3Vic3Q9JyRkZWxheV92YXJpYWJsZV9zdWJzdCcKK19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUworTFRDQz0nJExUQ0MnCitMVENGTEFHUz0nJExUQ0ZMQUdTJworY29tcGlsZXI9JyRjb21waWxlcl9ERUZBVUxUJworCisjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgorZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCitdXSwgbHRfZGVjbF9xdW90ZV92YXJuYW1lcyk7IGRvCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgOzsKKyAgICAqKQorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCisgICAgICA7OworICAgIGVzYWMKK2RvbmUKKworIyBEb3VibGUtcXVvdGUgZG91YmxlLWV2YWxlZCBzdHJpbmdzLgorZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCitdXSwgbHRfZGVjbF9kcXVvdGVfdmFybmFtZXMpOyBkbworICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgorICAgICAgOzsKKyAgICBlc2FjCitkb25lCisKKyMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCitjYXNlIFwkbHRfRUNITyBpbgorKidcXFxbJF0wIC0tZmFsbGJhY2stZWNobyInKWRubCAiCisgIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXFskXTAgLS1mYWxsYmFjay1lY2hvIlxbJF0vXFskXTAgLS1mYWxsYmFjay1lY2hvIi8nXGAKKyAgOzsKK2VzYWMKKworX0xUX09VVFBVVF9MSUJUT09MX0lOSVQKK10pCisKKworIyBMVF9PVVRQVVQKKyMgLS0tLS0tLS0tCisjIFRoaXMgbWFjcm8gYWxsb3dzIGVhcmx5IGdlbmVyYXRpb24gb2YgdGhlIGxpYnRvb2wgc2NyaXB0IChiZWZvcmUKKyMgQUNfT1VUUFVUIGlzIGNhbGxlZCksIGluY2FzZSBpdCBpcyB1c2VkIGluIGNvbmZpZ3VyZSBmb3IgY29tcGlsYXRpb24KKyMgdGVzdHMuCitBQ19ERUZVTihbTFRfT1VUUFVUXSwKK1s6ICR7Q09ORklHX0xUPS4vY29uZmlnLmx0fQorQUNfTVNHX05PVElDRShbY3JlYXRpbmcgJENPTkZJR19MVF0pCitjYXQgPiIkQ09ORklHX0xUIiA8PF9MVEVPRgorIyEgJFNIRUxMCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuCisjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgYSBsaWJ0b29sIHN0dWIgd2l0aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorCitsdF9jbF9zaWxlbnQ9ZmFsc2UKK1NIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9CitfTFRFT0YKKworY2F0ID4+IiRDT05GSUdfTFQiIDw8XF9MVEVPRgorQVNfU0hFTExfU0FOSVRJWkUKK19BU19QUkVQQVJFCisKK2V4ZWMgQVNfTUVTU0FHRV9GRD4mMQorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZworeworICBlY2hvCisgIEFTX0JPWChbUnVubmluZyAkYXNfbWUuXSkKK30gPiZBU19NRVNTQUdFX0xPR19GRAorCitsdF9jbF9oZWxwPSJcCitcYCRhc19tZScgY3JlYXRlcyBhIGxvY2FsIGxpYnRvb2wgc3R1YiBmcm9tIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sCitmb3IgdXNlIGluIGZ1cnRoZXIgY29uZmlndXJlIHRpbWUgdGVzdHMgYmVmb3JlIHRoZSByZWFsIGxpYnRvb2wgaXMKK2dlbmVyYXRlZC4KKworVXNhZ2U6ICRbMF0gW1tPUFRJT05TXV0KKworICAtaCwgLS1oZWxwICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLVYsIC0tdmVyc2lvbiAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKyAgLXEsIC0tcXVpZXQgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcworICAtZCwgLS1kZWJ1ZyAgICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcworCitSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uIgorCitsdF9jbF92ZXJzaW9uPSJcCittNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCittNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQorY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCisKK0NvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK1RoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisKK3doaWxlIHRlc3QgJFsjXSAhPSAwCitkbworICBjYXNlICRbMV0gaW4KKyAgICAtLXZlcnNpb24gfCAtLXYqIHwgLVYgKQorICAgICAgZWNobyAiJGx0X2NsX3ZlcnNpb24iOyBleGl0IDAgOzsKKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQorICAgICAgZWNobyAiJGx0X2NsX2hlbHAiOyBleGl0IDAgOzsKKyAgICAtLWRlYnVnIHwgLS1kKiB8IC1kICkKKyAgICAgIGRlYnVnPTogOzsKKyAgICAtLXF1aWV0IHwgLS1xKiB8IC0tc2lsZW50IHwgLS1zKiB8IC1xICkKKyAgICAgIGx0X2NsX3NpbGVudD06IDs7CisKKyAgICAtKikgQUNfTVNHX0VSUk9SKFt1bnJlY29nbml6ZWQgb3B0aW9uOiAkWzFdCitUcnkgXGAkWzBdIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXSkgOzsKKworICAgICopIEFDX01TR19FUlJPUihbdW5yZWNvZ25pemVkIGFyZ3VtZW50OiAkWzFdCitUcnkgXGAkWzBdIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXSkgOzsKKyAgZXNhYworICBzaGlmdAorZG9uZQorCitpZiAkbHRfY2xfc2lsZW50OyB0aGVuCisgIGV4ZWMgQVNfTUVTU0FHRV9GRD4vZGV2L251bGwKK2ZpCitfTFRFT0YKKworY2F0ID4+IiRDT05GSUdfTFQiIDw8X0xURU9GCitfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNfSU5JVAorX0xURU9GCisKK2NhdCA+PiIkQ09ORklHX0xUIiA8PFxfTFRFT0YKK0FDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRvZmlsZV0pCitfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFMKK0FTX0VYSVQoMCkKK19MVEVPRgorY2htb2QgK3ggIiRDT05GSUdfTFQiCisKKyMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYnV0IGNvbmZpZy5sdCBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sCisjIGFwcGVuZGluZyB0byBjb25maWcubG9nLCB3aGljaCBmYWlscyBvbiBET1MsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdAorIyBvcGVuIGJ5IGNvbmZpZ3VyZS4gIEhlcmUgd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLCBlZmZlY3RpdmVseSBjbG9zaW5nCisjIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZCBhcHBlbmRlZCB0byBieSBjb25maWcubHQuCitpZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KKyAgbHRfY2xfc3VjY2Vzcz06CisgIHRlc3QgIiRzaWxlbnQiID0geWVzICYmCisgICAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgorICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAorICAkU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCisgIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKKyAgJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQorZmkKK10pIyBMVF9PVVRQVVQKKworCisjIF9MVF9DT05GSUcoVEFHKQorIyAtLS0tLS0tLS0tLS0tLS0KKyMgSWYgVEFHIGlzIHRoZSBidWlsdC1pbiB0YWcsIGNyZWF0ZSBhbiBpbml0aWFsIGxpYnRvb2wgc2NyaXB0IHdpdGggYQorIyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgdW50YWdnZWQgY29uZmlnIHZhcnMuICBPdGhlcndpc2UgYWRkIGNvZGUKKyMgdG8gY29uZmlnLnN0YXR1cyBmb3IgYXBwZW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG5hbWVkIGJ5IFRBRyBmcm9tIHRoZQorIyBtYXRjaGluZyB0YWdnZWQgY29uZmlnIHZhcnMuCittNF9kZWZ1bihbX0xUX0NPTkZJR10sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCitfTFRfQ09ORklHX1NBVkVfQ09NTUFORFMoWworICBtNF9kZWZpbmUoW19MVF9UQUddLCBtNF9pZihbJDFdLCBbXSwgW0NdLCBbJDFdKSlkbmwKKyAgbTRfaWYoX0xUX1RBRywgW0NdLCBbCisgICAgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorICAgICMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzLgorICAgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICAgICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorICAgIGZpCisKKyAgICBjZmdmaWxlPSIke29maWxlfVQiCisgICAgdHJhcCAiJFJNIFwiJGNmZ2ZpbGVcIjsgZXhpdCAxIiAxIDIgMTUKKyAgICAkUk0gIiRjZmdmaWxlIgorCisgICAgY2F0IDw8X0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisjISAkU0hFTEwKKworIyBgJEVDSE8gIiRvZmlsZSIgfCBzZWQgJ3MlXi4qLyUlJ2AgLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KKyMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgJGFzX21lICgkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisjIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6CisjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyMKK19MVF9DT1BZSU5HCitfTFRfTElCVE9PTF9UQUdTCisKKyMgIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHCitfTFRfTElCVE9PTF9DT05GSUdfVkFSUworX0xUX0xJQlRPT0xfVEFHX1ZBUlMKKyMgIyMjIEVORCBMSUJUT09MIENPTkZJRworCitfTFRfRU9GCisKKyAgY2FzZSAkaG9zdF9vcyBpbgorICBhaXgzKikKKyAgICBjYXQgPDxcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKKyMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1RfTkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcworIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgoraWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgIENPTExFQ1RfTkFNRVM9CisgIGV4cG9ydCBDT0xMRUNUX05BTUVTCitmaQorX0xUX0VPRgorICAgIDs7CisgIGVzYWMKKworICBfTFRfUFJPR19MVE1BSU4KKworICAjIFdlIHVzZSBzZWQgaW5zdGVhZCBvZiBjYXQgYmVjYXVzZSBiYXNoIG9uIERKR1BQIGdldHMgY29uZnVzZWQgaWYKKyAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisKKyAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisKKyAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisKKyAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgIGNobW9kICt4ICIkb2ZpbGUiCitdLAorW2NhdCA8PF9MVF9FT0YgPj4gIiRvZmlsZSIKKworZG5sIFVuZm9ydHVuYXRlbHkgd2UgaGF2ZSB0byB1c2UgJDEgaGVyZSwgc2luY2UgX0xUX1RBRyBpcyBub3QgZXhwYW5kZWQKK2RubCBpbiBhIGNvbW1lbnQgKGllIGFmdGVyIGEgIykuCisjICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICQxCitfTFRfTElCVE9PTF9UQUdfVkFSUyhfTFRfVEFHKQorIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJDEKK19MVF9FT0YKK10pZG5sIC9tNF9pZgorXSwKK1ttNF9pZihbJDFdLCBbXSwgWworICAgIFBBQ0tBR0U9JyRQQUNLQUdFJworICAgIFZFUlNJT049JyRWRVJTSU9OJworICAgIFRJTUVTVEFNUD0nJFRJTUVTVEFNUCcKKyAgICBSTT0nJFJNJworICAgIG9maWxlPSckb2ZpbGUnXSwgW10pCitdKWRubCAvX0xUX0NPTkZJR19TQVZFX0NPTU1BTkRTCitdKSMgX0xUX0NPTkZJRworCisKKyMgTFRfU1VQUE9SVEVEX1RBRyhUQUcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcmFjZSB0aGlzIG1hY3JvIHRvIGRpc2NvdmVyIHdoYXQgdGFncyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBsaWJ0b29sCisjIC0tdGFnIG9wdGlvbiwgdXNpbmc6CisjICAgIGF1dG9jb25mIC0tdHJhY2UgJ0xUX1NVUFBPUlRFRF9UQUc6JDEnCitBQ19ERUZVTihbTFRfU1VQUE9SVEVEX1RBR10sIFtdKQorCisKKyMgQyBzdXBwb3J0IGlzIGJ1aWx0LWluIGZvciBub3cKK200X2RlZmluZShbX0xUX0xBTkdfQ19lbmFibGVkXSwgW10pCittNF9kZWZpbmUoW19MVF9UQUdTXSwgW10pCisKKworIyBMVF9MQU5HKExBTkcpCisjIC0tLS0tLS0tLS0tLS0KKyMgRW5hYmxlIGxpYnRvb2wgc3VwcG9ydCBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlIGlmIG5vdCBhbHJlYWR5IGVuYWJsZWQuCitBQ19ERUZVTihbTFRfTEFOR10sCitbQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubAorbTRfY2FzZShbJDFdLAorICBbQ10sCQkJW19MVF9MQU5HKEMpXSwKKyAgW0MrK10sCQlbX0xUX0xBTkcoQ1hYKV0sCisgIFtKYXZhXSwJCVtfTFRfTEFORyhHQ0opXSwKKyAgW0ZvcnRyYW4gNzddLAkJW19MVF9MQU5HKEY3NyldLAorICBbRm9ydHJhbl0sCQlbX0xUX0xBTkcoRkMpXSwKKyAgW1dpbmRvd3MgUmVzb3VyY2VdLAlbX0xUX0xBTkcoUkMpXSwKKyAgW200X2lmZGVmKFtfTFRfTEFOR19dJDFbX0NPTkZJR10sCisgICAgW19MVF9MQU5HKCQxKV0sCisgICAgW200X2ZhdGFsKFskMDogdW5zdXBwb3J0ZWQgbGFuZ3VhZ2U6ICIkMSJdKV0pXSlkbmwKK10pIyBMVF9MQU5HCisKKworIyBfTFRfTEFORyhMQU5HTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0xBTkddLAorW200X2lmZGVmKFtfTFRfTEFOR19dJDFbX2VuYWJsZWRdLCBbXSwKKyAgW0xUX1NVUFBPUlRFRF9UQUcoWyQxXSlkbmwKKyAgbTRfYXBwZW5kKFtfTFRfVEFHU10sIFskMSBdKWRubAorICBtNF9kZWZpbmUoW19MVF9MQU5HX10kMVtfZW5hYmxlZF0sIFtdKWRubAorICBfTFRfTEFOR18kMV9DT05GSUcoJDEpXSlkbmwKK10pIyBfTFRfTEFORworCisKKyMgX0xUX0xBTkdfREVGQVVMVF9DT05GSUcKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfTEFOR19ERUZBVUxUX0NPTkZJR10sCitbQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ1hYXSwKKyAgW0xUX0xBTkcoQ1hYKV0sCisgIFttNF9kZWZpbmUoW0FDX1BST0dfQ1hYXSwgZGVmbihbQUNfUFJPR19DWFhdKVtMVF9MQU5HKENYWCldKV0pCisKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0Y3N10sCisgIFtMVF9MQU5HKEY3NyldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0Y3N10sIGRlZm4oW0FDX1BST0dfRjc3XSlbTFRfTEFORyhGNzcpXSldKQorCitBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19GQ10sCisgIFtMVF9MQU5HKEZDKV0sCisgIFttNF9kZWZpbmUoW0FDX1BST0dfRkNdLCBkZWZuKFtBQ19QUk9HX0ZDXSlbTFRfTEFORyhGQyldKV0pCisKK2RubCBUaGUgY2FsbCB0byBbQV1bTV9QUk9HX0dDSl0gaXMgcXVvdGVkIGxpa2UgdGhhdCB0byBzdG9wIGFjbG9jYWwKK2RubCBwdWxsaW5nIHRoaW5ncyBpbiBuZWVkbGVzc2x5LgorQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfR0NKXSwKKyAgW0xUX0xBTkcoR0NKKV0sCisgIFtBQ19QUk9WSURFX0lGRUxTRShbQV1bTV9QUk9HX0dDSl0sCisgICAgW0xUX0xBTkcoR0NKKV0sCisgICAgW0FDX1BST1ZJREVfSUZFTFNFKFtMVF9QUk9HX0dDSl0sCisgICAgICBbTFRfTEFORyhHQ0opXSwKKyAgICAgIFttNF9pZmRlZihbQUNfUFJPR19HQ0pdLAorCVttNF9kZWZpbmUoW0FDX1BST0dfR0NKXSwgZGVmbihbQUNfUFJPR19HQ0pdKVtMVF9MQU5HKEdDSildKV0pCisgICAgICAgbTRfaWZkZWYoW0FdW01fUFJPR19HQ0pdLAorCVttNF9kZWZpbmUoW0FdW01fUFJPR19HQ0pdLCBkZWZuKFtBXVtNX1BST0dfR0NKXSlbTFRfTEFORyhHQ0opXSldKQorICAgICAgIG00X2lmZGVmKFtMVF9QUk9HX0dDSl0sCisJW200X2RlZmluZShbTFRfUFJPR19HQ0pdLCBkZWZuKFtMVF9QUk9HX0dDSl0pW0xUX0xBTkcoR0NKKV0pXSldKV0pXSkKKworQUNfUFJPVklERV9JRkVMU0UoW0xUX1BST0dfUkNdLAorICBbTFRfTEFORyhSQyldLAorICBbbTRfZGVmaW5lKFtMVF9QUk9HX1JDXSwgZGVmbihbTFRfUFJPR19SQ10pW0xUX0xBTkcoUkMpXSldKQorXSkjIF9MVF9MQU5HX0RFRkFVTFRfQ09ORklHCisKKyMgT2Jzb2xldGUgbWFjcm9zOgorQVVfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW0xUX0xBTkcoQysrKV0pCitBVV9ERUZVTihbQUNfTElCVE9PTF9GNzddLCBbTFRfTEFORyhGb3J0cmFuIDc3KV0pCitBVV9ERUZVTihbQUNfTElCVE9PTF9GQ10sIFtMVF9MQU5HKEZvcnRyYW4pXSkKK0FVX0RFRlVOKFtBQ19MSUJUT09MX0dDSl0sIFtMVF9MQU5HKEphdmEpXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9DWFhdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9GNzddLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9GQ10sIFtdKQorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0dDSl0sIFtdKQorCisKKyMgX0xUX1RBR19DT01QSUxFUgorIyAtLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX1RBR19DT01QSUxFUl0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCisKK19MVF9ERUNMKFtMVENDXSwgW0NDXSwgWzFdLCBbQSBDIGNvbXBpbGVyXSlkbmwKK19MVF9ERUNMKFtMVENGTEFHU10sIFtDRkxBR1NdLCBbMV0sIFtMVENDIGNvbXBpbGVyIGZsYWdzXSlkbmwKK19MVF9UQUdERUNMKFtDQ10sIFtjb21waWxlcl0sIFsxXSwgW0EgbGFuZ3VhZ2Ugc3BlY2lmaWMgY29tcGlsZXJdKWRubAorX0xUX1RBR0RFQ0woW3dpdGhfZ2NjXSwgW0dDQ10sIFswXSwgW0lzIHRoZSBjb21waWxlciB0aGUgR05VIGNvbXBpbGVyP10pZG5sCisKKyMgSWYgbm8gQyBjb21waWxlciB3YXMgc3BlY2lmaWVkLCB1c2UgQ0MuCitMVENDPSR7TFRDQy0iJENDIn0KKworIyBJZiBubyBDIGNvbXBpbGVyIGZsYWdzIHdlcmUgc3BlY2lmaWVkLCB1c2UgQ0ZMQUdTLgorTFRDRkxBR1M9JHtMVENGTEFHUy0iJENGTEFHUyJ9CisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitjb21waWxlcj0kQ0MKK10pIyBfTFRfVEFHX0NPTVBJTEVSCisKKworIyBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIGZvciBjb21waWxlciBib2lsZXJwbGF0ZSBvdXRwdXQgb3Igd2FybmluZ3Mgd2l0aAorIyB0aGUgc2ltcGxlIGNvbXBpbGVyIHRlc3QgY29kZS4KK200X2RlZnVuKFtfTFRfQ09NUElMRVJfQk9JTEVSUExBVEVdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCithY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKK2VjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID5jb25mdGVzdC4kYWNfZXh0CitldmFsICIkYWNfY29tcGlsZSIgMj4mMSA+L2Rldi9udWxsIHwgJFNFRCAnL14kL2Q7IC9eICorL2QnID5jb25mdGVzdC5lcnIKK19sdF9jb21waWxlcl9ib2lsZXJwbGF0ZT1gY2F0IGNvbmZ0ZXN0LmVycmAKKyRSTSBjb25mdGVzdCoKK10pIyBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKKworCisjIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBmb3IgbGlua2VyIGJvaWxlcnBsYXRlIG91dHB1dCBvciB3YXJuaW5ncyB3aXRoCisjIHRoZSBzaW1wbGUgbGluayB0ZXN0IGNvZGUuCittNF9kZWZ1bihbX0xUX0xJTktFUl9CT0lMRVJQTEFURV0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK2FjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dAorZWNobyAiJGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZSIgPmNvbmZ0ZXN0LiRhY19leHQKK2V2YWwgIiRhY19saW5rIiAyPiYxID4vZGV2L251bGwgfCAkU0VEICcvXiQvZDsgL14gKisvZCcgPmNvbmZ0ZXN0LmVycgorX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZT1gY2F0IGNvbmZ0ZXN0LmVycmAKKyRSTSAtciBjb25mdGVzdCoKK10pIyBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyMgX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1MKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW5fb25jZShbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdLFsKKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCisgICAgQUNfQ0hFQ0tfVE9PTChbRFNZTVVUSUxdLCBbZHN5bXV0aWxdLCBbOl0pCisgICAgQUNfQ0hFQ0tfVE9PTChbTk1FRElUXSwgW25tZWRpdF0sIFs6XSkKKyAgICBBQ19DSEVDS19UT09MKFtMSVBPXSwgW2xpcG9dLCBbOl0pCisgICAgQUNfQ0hFQ0tfVE9PTChbT1RPT0xdLCBbb3Rvb2xdLCBbOl0pCisgICAgQUNfQ0hFQ0tfVE9PTChbT1RPT0w2NF0sIFtvdG9vbDY0XSwgWzpdKQorICAgIF9MVF9ERUNMKFtdLCBbRFNZTVVUSUxdLCBbMV0sCisgICAgICBbVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWF0pCisgICAgX0xUX0RFQ0woW10sIFtOTUVESVRdLCBbMV0sCisgICAgICBbVG9vbCB0byBjaGFuZ2UgZ2xvYmFsIHRvIGxvY2FsIHN5bWJvbHMgb24gTWFjIE9TIFhdKQorICAgIF9MVF9ERUNMKFtdLCBbTElQT10sIFsxXSwKKyAgICAgIFtUb29sIHRvIG1hbmlwdWxhdGUgZmF0IG9iamVjdHMgYW5kIGFyY2hpdmVzIG9uIE1hYyBPUyBYXSkKKyAgICBfTFRfREVDTChbXSwgW09UT09MXSwgWzFdLAorICAgICAgW2xkZC9yZWFkZWxmIGxpa2UgdG9vbCBmb3IgTWFjaC1PIGJpbmFyaWVzIG9uIE1hYyBPUyBYXSkKKyAgICBfTFRfREVDTChbXSwgW09UT09MNjRdLCBbMV0sCisgICAgICBbbGRkL3JlYWRlbGYgbGlrZSB0b29sIGZvciA2NCBiaXQgTWFjaC1PIGJpbmFyaWVzIG9uIE1hYyBPUyBYIDEwLjRdKQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtc2luZ2xlX21vZHVsZSBsaW5rZXIgZmxhZ10sW2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2RdLAorICAgICAgW2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KKyAgICAgIGlmIHRlc3QgLXogIiR7TFRfTVVMVElfTU9EVUxFfSI7IHRoZW4KKwkjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBhZGQgdGhlIC1zaW5nbGVfbW9kdWxlIGZsYWcuIFlvdSBjYW4gb3ZlcnJpZGUKKwkjIGJ5IGVpdGhlciBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMVF9NVUxUSV9NT0RVTEUKKwkjIG5vbi1lbXB0eSBhdCBjb25maWd1cmUgdGltZSwgb3IgYnkgYWRkaW5nIC1tdWx0aV9tb2R1bGUgdG8gdGhlCisJIyBsaW5rIGZsYWdzLgorCXJtIC1yZiBsaWJjb25mdGVzdC5keWxpYioKKwllY2hvICJpbnQgZm9vKHZvaWQpe3JldHVybiAxO30iID4gY29uZnRlc3QuYworCWVjaG8gIiRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCistZHluYW1pY2xpYiAtV2wsLXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYyIgPiZBU19NRVNTQUdFX0xPR19GRAorCSRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCisJICAtZHluYW1pY2xpYiAtV2wsLXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYyAyPmNvbmZ0ZXN0LmVycgorICAgICAgICBfbHRfcmVzdWx0PSQ/CisJaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwOyB0aGVuCisJICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcworCWVsc2UKKwkgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorCWZpCisJcm0gLXJmIGxpYmNvbmZ0ZXN0LmR5bGliKgorCXJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgIGZpXSkKKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1leHBvcnRlZF9zeW1ib2xzX2xpc3QgbGlua2VyIGZsYWddLAorICAgICAgW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdF0sCisgICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vCisgICAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgICAgIGVjaG8gIl9tYWluIiA+IGNvbmZ0ZXN0LnN5bQorICAgICAgTERGTEFHUz0iJExERkxBR1MgLVdsLC1leHBvcnRlZF9zeW1ib2xzX2xpc3QsY29uZnRlc3Quc3ltIgorICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAorCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9eWVzXSwKKwlbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vXSkKKwlMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgIF0pCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKKyAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKyAgICBkYXJ3aW4xLiopCisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgZGFyd2luKikgIyBkYXJ3aW4gNS54IG9uCisgICAgICAjIGlmIHJ1bm5pbmcgb24gMTAuNSBvciBsYXRlciwgdGhlIGRlcGxveW1lbnQgdGFyZ2V0IGRlZmF1bHRzCisgICAgICAjIHRvIHRoZSBPUyB2ZXJzaW9uLCBpZiBvbiB4ODYsIGFuZCAxMC40LCB0aGUgZGVwbG95bWVudAorICAgICAgIyB0YXJnZXQgZGVmYXVsdHMgdG8gMTAuNC4gRG9uJ3QgeW91IGxvdmUgaXQ/CisgICAgICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9LCRob3N0IGluCisJMTAuMCwqODYqLWRhcndpbjgqfDEwLjAsKi1kYXJ3aW5bWzkxXV0qKQorCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OworCTEwLltbMDEyXV0qKQorCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LWZsYXRfbmFtZXNwYWNlICR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OworCTEwLiopCisJICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CisgICAgICBlc2FjCisgICAgOzsKKyAgZXNhYworICAgIGlmIHRlc3QgIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiA9ICJ5ZXMiOyB0aGVuCisgICAgICBfbHRfZGFyX3NpbmdsZV9tb2Q9JyRzaW5nbGVfbW9kdWxlJworICAgIGZpCisgICAgaWYgdGVzdCAiJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCIgPSAieWVzIjsgdGhlbgorICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nICR7d2x9LWV4cG9ydGVkX3N5bWJvbHNfbGlzdCwkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltJworICAgIGVsc2UKKyAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JworICAgIGZpCisgICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICAgIF9sdF9kc3ltdXRpbD0nfiREU1lNVVRJTCAkbGliIHx8IDonCisgICAgZWxzZQorICAgICAgX2x0X2RzeW11dGlsPQorICAgIGZpCisgICAgOzsKKyAgZXNhYworXSkKKworCisjIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrcyBmb3IgbGlua2VyIGFuZCBjb21waWxlciBmZWF0dXJlcyBvbiBkYXJ3aW4KK200X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCitbCisgIG00X3JlcXVpcmUoW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSkKKyAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKKyAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9IiRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZCIKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgaWZvcnQqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9eWVzIDs7CisgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CisgIGVzYWMKKyAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKyAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJHtfbHRfZHN5bXV0aWx9IgorICAgIF9MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgorICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICR7X2x0X2Rhcl9zaW5nbGVfbW9kfSR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCisgICAgX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0ic2VkIC1lICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgorICAgIG00X2lmKFskMV0sIFtDWFhdLAorWyAgIGlmIHRlc3QgIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiAhPSAieWVzIjsgdGhlbgorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtciAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vIFwke2xpYn0tbWFzdGVyLm8gXCRsaWJvYmpzflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJHtsaWJ9LW1hc3Rlci5vIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyR7X2x0X2RzeW11dGlsfSIKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJHtsaWJ9LW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCR7bGlifS1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgorICAgIGZpCitdLFtdKQorICBlbHNlCisgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgZmkKK10pCisKKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQorIyBmb3IgdGhlIHN5c3RlbSBkZWZhdWx0IGhhcmRjb2RlZCBsaWJyYXJ5IHBhdGguIEluIG1vc3QgY2FzZXMsCisjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKKyMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgorIyBJZiB3ZSBkb24ndCBmaW5kIGFueXRoaW5nLCB1c2UgdGhlIGRlZmF1bHQgbGlicmFyeSBwYXRoIGFjY29yZGluZworIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KK200X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0FDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCitsdF9haXhfbGlicGF0aF9zZWQ9JworICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKwkvXjAvIHsKKwkgICAgcy9eMCAgKlwoLipcKSQvXDEvCisJICAgIHAKKwl9CisgICAgfScKK2FpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgoraWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKK2ZpXSxbXSkKK2lmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorXSkjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisKKworIyBfTFRfU0hFTExfSU5JVChBUkcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX1NIRUxMX0lOSVRdLAorW2lmZGVmKFtBQ19ESVZFUlNJT05fTk9USUNFXSwKKwkgICAgIFtBQ19ESVZFUlRfUFVTSChBQ19ESVZFUlNJT05fTk9USUNFKV0sCisJIFtBQ19ESVZFUlRfUFVTSChOT1RJQ0UpXSkKKyQxCitBQ19ESVZFUlRfUE9QCitdKSMgX0xUX1NIRUxMX0lOSVQKKworCisjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFkZCBzb21lIGNvZGUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB3aGljaAorIyB3aWxsIGZpbmQgYW4gZWNobyBjb21tYW5kIHdoaWNoIGRvZXNuJ3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgorbTRfZGVmdW4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwKK1tfTFRfU0hFTExfSU5JVChbCisjIENoZWNrIHRoYXQgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCitTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorCitjYXNlIFgkbHRfRUNITyBpbgorWCotLWZhbGxiYWNrLWVjaG8pCisgICMgUmVtb3ZlIG9uZSBsZXZlbCBvZiBxdW90YXRpb24gKHdoaWNoIHdhcyByZXF1aXJlZCBmb3IgTWFrZSkuCisgIEVDSE89YGVjaG8gIiRsdF9FQ0hPIiB8IHNlZCAncyxcXFxcXFskXVxcWyRdMCwnWyRdMCcsJ2AKKyAgOzsKK2VzYWMKKworRUNITz0ke2x0X0VDSE8tZWNob30KK2lmIHRlc3QgIlhbJF0xIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgorICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KKyAgc2hpZnQKK2VsaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgorICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCisgIDoKK2VsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnIDsgdGhlbgorICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCisgIDoKK2Vsc2UKKyAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgorICBleGVjICRTSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KK2ZpCisKK2lmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KKyAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KKyAgc2hpZnQKKyAgY2F0IDw8X0xUX0VPRgorWyRdKgorX0xUX0VPRgorICBleGl0IDAKK2ZpCisKKyMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0CisjIGlmIENEUEFUSCBpcyBzZXQuCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICisKK2lmIHRlc3QgLXogIiRsdF9FQ0hPIjsgdGhlbgorICBpZiB0ZXN0ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KKyAgICAjIGZpbmQgYSBzdHJpbmcgYXMgbGFyZ2UgYXMgcG9zc2libGUsIGFzIGxvbmcgYXMgdGhlIHNoZWxsIGNhbiBjb3BlIHdpdGggaXQKKyAgICBmb3IgY21kIGluICdzZWQgNTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMnEgIlskXTAiJyAnZWNobyB0ZXN0JzsgZG8KKyAgICAgICMgZXhwZWN0ZWQgc2l6ZXM6IGxlc3MgdGhhbiAyS2IsIDFLYiwgNTEyIGJ5dGVzLCAxNiBieXRlcywgLi4uCisgICAgICBpZiB7IGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGA7IH0gMj4vZGV2L251bGwgJiYKKwkgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGwKKyAgICAgIHRoZW4KKyAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICBmaQorCisgIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgorICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCisgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorICAgIDoKKyAgZWxzZQorICAgICMgVGhlIFNvbGFyaXMsIEFJWCwgYW5kIERpZ2l0YWwgVW5peCBkZWZhdWx0IGVjaG8gcHJvZ3JhbXMgdW5xdW90ZQorICAgICMgYmFja3NsYXNoZXMuICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcXVvdGUgYmFja3NsYXNoZXMgdXNpbmcKKyAgICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJworICAgICMKKyAgICAjIFNvLCBmaXJzdCB3ZSBsb29rIGZvciBhIHdvcmtpbmcgZWNobyBpbiB0aGUgdXNlcidzIFBBVEguCisKKyAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgZGlyIGluICRQQVRIIC91c3IvdWNiOyBkbworICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgorICAgICAgICAgdGVzdCAiWGAoJGRpci9lY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgorICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRkaXIvZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKKyAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorICAgICAgICBFQ0hPPSIkZGlyL2VjaG8iCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKworICAgIGlmIHRlc3QgIlgkRUNITyIgPSBYZWNobzsgdGhlbgorICAgICAgIyBXZSBkaWRuJ3QgZmluZCBhIGJldHRlciBlY2hvLCBzbyBsb29rIGZvciBhbHRlcm5hdGl2ZXMuCisgICAgICBpZiB0ZXN0ICJYYHsgcHJpbnQgLXIgJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKyAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgcHJpbnQgLXIgIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKKyAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorICAgICAgICAjIFRoaXMgc2hlbGwgaGFzIGEgYnVpbHRpbiBwcmludCAtciB0aGF0IGRvZXMgdGhlIHRyaWNrLgorICAgICAgICBFQ0hPPSdwcmludCAtcicKKyAgICAgIGVsaWYgeyB0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0OyB9ICYmCisJICAgdGVzdCAiWCRDT05GSUdfU0hFTEwiICE9IFgvYmluL2tzaDsgdGhlbgorICAgICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KKyAgICAgICAgT1JJR0lOQUxfQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CisgICAgICAgIGV4cG9ydCBPUklHSU5BTF9DT05GSUdfU0hFTEwKKyAgICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCisgICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKKyAgICAgICAgZXhlYyAkQ09ORklHX1NIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQorICAgICAgZWxzZQorICAgICAgICAjIFRyeSB1c2luZyBwcmludGYuCisgICAgICAgIEVDSE89J3ByaW50ZiAlc1xuJworICAgICAgICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKwkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCisJICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCisJICAjIENvb2wsIHByaW50ZiB3b3JrcworCSAgOgorICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCisJICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKKwkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCisJICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKwkgIENPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCisJICBleHBvcnQgQ09ORklHX1NIRUxMCisJICBTSEVMTD0iJENPTkZJR19TSEVMTCIKKwkgIGV4cG9ydCBTSEVMTAorCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKKyAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgorCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCisJICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgorCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCisJICBFQ0hPPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgorICAgICAgICBlbHNlCisJICAjIG1heWJlIHdpdGggYSBzbWFsbGVyIHN0cmluZy4uLgorCSAgcHJldj06CisKKwkgIGZvciBjbWQgaW4gJ2VjaG8gdGVzdCcgJ3NlZCAycSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDUwcSAiWyRdMCInOyBkbworCSAgICBpZiB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWGBldmFsICRjbWRgIjsgfSAyPi9kZXYvbnVsbAorCSAgICB0aGVuCisJICAgICAgYnJlYWsKKwkgICAgZmkKKwkgICAgcHJldj0iJGNtZCIKKwkgIGRvbmUKKworCSAgaWYgdGVzdCAiJHByZXYiICE9ICdzZWQgNTBxICJbJF0wIic7IHRoZW4KKwkgICAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKKwkgICAgZXhwb3J0IGVjaG9fdGVzdF9zdHJpbmcKKwkgICAgZXhlYyAke09SSUdJTkFMX0NPTkZJR19TSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0gIlskXTAiICR7MSsiWyRdQCJ9CisJICBlbHNlCisJICAgICMgT29wcy4gIFdlIGxvc3QgY29tcGxldGVseSwgc28ganVzdCBzdGljayB3aXRoIGVjaG8uCisJICAgIEVDSE89ZWNobworCSAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKK2ZpCisKKyMgQ29weSBlY2hvIGFuZCBxdW90ZSB0aGUgY29weSBzdWl0YWJseSBmb3IgcGFzc2luZyB0byBsaWJ0b29sIGZyb20KKyMgdGhlIE1ha2VmaWxlLCBpbnN0ZWFkIG9mIHF1b3RpbmcgdGhlIG9yaWdpbmFsLCB3aGljaCBpcyB1c2VkIGxhdGVyLgorbHRfRUNITz0kRUNITworaWYgdGVzdCAiWCRsdF9FQ0hPIiA9ICJYJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KKyAgIGx0X0VDSE89IiRDT05GSUdfU0hFTEwgXFxcJFxbJF0wIC0tZmFsbGJhY2stZWNobyIKK2ZpCisKK0FDX1NVQlNUKGx0X0VDSE8pCitdKQorX0xUX0RFQ0woW10sIFtTSEVMTF0sIFsxXSwgW1NoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHNdKQorX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLAorICAgIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoZXNdKQorXSkjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICisKKworIyBfTFRfRU5BQkxFX0xPQ0sKKyMgLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKK1tBQ19BUkdfRU5BQkxFKFtsaWJ0b29sLWxvY2tdLAorICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1saWJ0b29sLWxvY2tdLAorICAgIFthdm9pZCBsb2NraW5nIChtaWdodCBicmVhayBwYXJhbGxlbCBidWlsZHMpXSldKQordGVzdCAieCRlbmFibGVfbGlidG9vbF9sb2NrIiAhPSB4bm8gJiYgZW5hYmxlX2xpYnRvb2xfbG9jaz15ZXMKKworIyBTb21lIGZsYWdzIG5lZWQgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgY29tcGlsZXIgb3IgbGlua2VyIGZvciBnb29kCisjIGxpYnRvb2wgc3VwcG9ydC4KK2Nhc2UgJGhvc3QgaW4KK2lhNjQtKi1ocHV4KikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAgICpFTEYtMzIqKQorCUhQVVhfSUE2NF9NT0RFPSIzMiIKKwk7OworICAgICAgKkVMRi02NCopCisJSFBVWF9JQTY0X01PREU9IjY0IgorCTs7CisgICAgZXNhYworICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisqLSotaXJpeDYqKQorICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgIGVjaG8gJ1sjXWxpbmUgX19vbGluZV9fICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICBpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCisgICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisJKjMyLWJpdCopCisJICBMRD0iJHtMRC1sZH0gLW1lbGYzMmJzbWlwIgorCSAgOzsKKwkqTjMyKikKKwkgIExEPSIke0xELWxkfSAtbWVsZjMyYm1pcG4zMiIKKwkgIDs7CisJKjY0LWJpdCopCisJICBMRD0iJHtMRC1sZH0gLW1lbGY2NGJtaXAiCisJOzsKKyAgICAgIGVzYWMKKyAgICBlbHNlCisgICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisJKjMyLWJpdCopCisJICBMRD0iJHtMRC1sZH0gLTMyIgorCSAgOzsKKwkqTjMyKikKKwkgIExEPSIke0xELWxkfSAtbjMyIgorCSAgOzsKKwkqNjQtYml0KikKKwkgIExEPSIke0xELWxkfSAtNjQiCisJICA7OworICAgICAgZXNhYworICAgIGZpCisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgOzsKKworeDg2XzY0LSprZnJlZWJzZCotZ251fHg4Nl82NC0qbGludXgqfHBwYyotKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqfCBcCitzMzkwKi0qbGludXgqfHMzOTAqLSp0cGYqfHNwYXJjKi0qbGludXgqKQorICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgorICAgICAgKjMyLWJpdCopCisJY2FzZSAkaG9zdCBpbgorCSAgeDg2XzY0LSprZnJlZWJzZCotZ251KQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX2kzODZfZmJzZCIKKwkgICAgOzsKKwkgIHg4Nl82NC0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX2kzODYiCisJICAgIDs7CisJICBwcGM2NC0qbGludXgqfHBvd2VycGM2NC0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmMzJwcGNsaW51eCIKKwkgICAgOzsKKwkgIHMzOTB4LSpsaW51eCopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGZfczM5MCIKKwkgICAgOzsKKwkgIHNwYXJjNjQtKmxpbnV4KikKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMyX3NwYXJjIgorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgKjY0LWJpdCopCisJY2FzZSAkaG9zdCBpbgorCSAgeDg2XzY0LSprZnJlZWJzZCotZ251KQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NF9mYnNkIgorCSAgICA7OworCSAgeDg2XzY0LSpsaW51eCopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgorCSAgICA7OworCSAgcHBjKi0qbGludXgqfHBvd2VycGMqLSpsaW51eCopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NHBwYyIKKwkgICAgOzsKKwkgIHMzOTAqLSpsaW51eCp8czM5MCotKnRwZiopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zMzkwIgorCSAgICA7OworCSAgc3BhcmMqLSpsaW51eCopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICBlc2FjCisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgOzsKKworKi0qLXNjbzMuMnY1KikKKyAgIyBPbiBTQ08gT3BlblNlcnZlciA1LCB3ZSBuZWVkIC1iZWxmIHRvIGdldCBmdWxsLWZlYXR1cmVkIGJpbmFyaWVzLgorICBTQVZFX0NGTEFHUz0iJENGTEFHUyIKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1iZWxmIgorICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZl0sIGx0X2N2X2NjX25lZWRzX2JlbGYsCisgICAgW0FDX0xBTkdfUFVTSChDKQorICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sW1tdXSldLFtsdF9jdl9jY19uZWVkc19iZWxmPXllc10sW2x0X2N2X2NjX25lZWRzX2JlbGY9bm9dKQorICAgICBBQ19MQU5HX1BPUF0pCisgIGlmIHRlc3QgeCIkbHRfY3ZfY2NfbmVlZHNfYmVsZiIgIT0geCJ5ZXMiOyB0aGVuCisgICAgIyB0aGlzIGlzIHByb2JhYmx5IGdjYyAyLjguMCwgZWdjcyAxLjAgb3IgbmV3ZXI7IG5vIG5lZWQgZm9yIC1iZWxmCisgICAgQ0ZMQUdTPSIkU0FWRV9DRkxBR1MiCisgIGZpCisgIDs7CitzcGFyYyotKnNvbGFyaXMqKQorICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgorICAgICo2NC1iaXQqKQorICAgICAgY2FzZSAkbHRfY3ZfcHJvZ19nbnVfbGQgaW4KKyAgICAgIHllcyopIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIgOzsKKyAgICAgICopCisJaWYgJHtMRC1sZH0gLTY0IC1yIC1vIGNvbmZ0ZXN0Mi5vIGNvbmZ0ZXN0Lm8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICBMRD0iJHtMRC1sZH0gLTY0IgorCWZpCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgZXNhYworICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7Citlc2FjCisKK25lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorXSkjIF9MVF9FTkFCTEVfTE9DSworCisKKyMgX0xUX0NNRF9PTERfQVJDSElWRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCitbQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQordGVzdCAteiAiJEFSIiAmJiBBUj1hcgordGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKK19MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKKworQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCit0ZXN0IC16ICIkU1RSSVAiICYmIFNUUklQPToKK19MVF9ERUNMKFtdLCBbU1RSSVBdLCBbMV0sIFtBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbV0pCisKK0FDX0NIRUNLX1RPT0woUkFOTElCLCByYW5saWIsIDopCit0ZXN0IC16ICIkUkFOTElCIiAmJiBSQU5MSUI9OgorX0xUX0RFQ0woW10sIFtSQU5MSUJdLCBbMV0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gaW5zdGFsbCBhbiBvbGQtc3R5bGUgYXJjaGl2ZV0pCisKKyMgRGV0ZXJtaW5lIGNvbW1hbmRzIHRvIGNyZWF0ZSBvbGQtc3R5bGUgc3RhdGljIGFyY2hpdmVzLgorb2xkX2FyY2hpdmVfY21kcz0nJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMnCitvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCitvbGRfcG9zdHVuaW5zdGFsbF9jbWRzPQorCitpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgIG9wZW5ic2QqKQorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCRvbGRsaWIiCisgICAgOzsKKyAgKikKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICAgIDs7CisgIGVzYWMKKyAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCitmaQorX0xUX0RFQ0woW10sIFtvbGRfcG9zdGluc3RhbGxfY21kc10sIFsyXSkKK19MVF9ERUNMKFtdLCBbb2xkX3Bvc3R1bmluc3RhbGxfY21kc10sIFsyXSkKK19MVF9UQUdERUNMKFtdLCBbb2xkX2FyY2hpdmVfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbiBvbGQtc3R5bGUgYXJjaGl2ZV0pCitdKSMgX0xUX0NNRF9PTERfQVJDSElWRQorCisKKyMgX0xUX0NPTVBJTEVSX09QVElPTihNRVNTQUdFLCBWQVJJQUJMRS1OQU1FLCBGTEFHUywKKyMJCVtPVVRQVVQtRklMRV0sIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gY29tcGlsZXIgb3B0aW9uIHdvcmtzCitBQ19ERUZVTihbX0xUX0NPTVBJTEVSX09QVElPTl0sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKKyAgWyQyPW5vCisgICBtNF9pZihbJDRdLCAsIFthY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHRdLCBbYWNfb3V0ZmlsZT0kNF0pCisgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGx0X2NvbXBpbGVyX2ZsYWc9IiQzIgorICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKKyAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCisgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCisgICAjIHdpdGggYSBkb2xsYXIgc2lnbiAobm90IGEgaHlwaGVuKSwgc28gdGhlIGVjaG8gc2hvdWxkIHdvcmsgY29ycmVjdGx5LgorICAgIyBUaGUgb3B0aW9uIGlzIHJlZmVyZW5jZWQgdmlhIGEgdmFyaWFibGUgdG8gYXZvaWQgY29uZnVzaW5nIHNlZC4KKyAgIGx0X2NvbXBpbGU9YGVjaG8gIiRhY19jb21waWxlIiB8ICRTRUQgXAorICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAorICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCisgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCisgICBhY19zdGF0dXM9JD8KKyAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCisgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCisgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCisgICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCisgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAkMj15ZXMKKyAgICAgZmkKKyAgIGZpCisgICAkUk0gY29uZnRlc3QqCitdKQorCitpZiB0ZXN0IHgiWyRdJDIiID0geHllczsgdGhlbgorICAgIG00X2lmKFskNV0sICwgOiwgWyQ1XSkKK2Vsc2UKKyAgICBtNF9pZihbJDZdLCAsIDosIFskNl0pCitmaQorXSkjIF9MVF9DT01QSUxFUl9PUFRJT04KKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTl0sIFtfTFRfQ09NUElMRVJfT1BUSU9OXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT05dLCBbXSkKKworCisjIF9MVF9MSU5LRVJfT1BUSU9OKE1FU1NBR0UsIFZBUklBQkxFLU5BTUUsIEZMQUdTLAorIyAgICAgICAgICAgICAgICAgIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gbGlua2VyIG9wdGlvbiB3b3JrcworQUNfREVGVU4oW19MVF9MSU5LRVJfT1BUSU9OXSwKK1ttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCitBQ19DQUNIRV9DSEVDSyhbJDFdLCBbJDJdLAorICBbJDI9bm8KKyAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICBMREZMQUdTPSIkTERGTEFHUyAkMyIKKyAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCisgICAgICMgVGhlIGxpbmtlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAorICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKKyAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgorICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAkRUNITyAiWCRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKKyAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgJDI9eWVzCisgICAgICAgZmkKKyAgICAgZWxzZQorICAgICAgICQyPXllcworICAgICBmaQorICAgZmkKKyAgICRSTSAtciBjb25mdGVzdCoKKyAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCitdKQorCitpZiB0ZXN0IHgiWyRdJDIiID0geHllczsgdGhlbgorICAgIG00X2lmKFskNF0sICwgOiwgWyQ0XSkKK2Vsc2UKKyAgICBtNF9pZihbJDVdLCAsIDosIFskNV0pCitmaQorXSkjIF9MVF9MSU5LRVJfT1BUSU9OCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OXSwgW19MVF9MSU5LRVJfT1BUSU9OXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OXSwgW10pCisKKworIyBMVF9DTURfTUFYX0xFTgorIy0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX0NNRF9NQVhfTEVOXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisjIGZpbmQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKK0FDX01TR19DSEVDS0lORyhbdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHNdKQorQUNfQ0FDSEVfVkFMKFtsdF9jdl9zeXNfbWF4X2NtZF9sZW5dLCBbZG5sCisgIGk9MAorICB0ZXN0c3RyaW5nPSJBQkNEIgorCisgIGNhc2UgJGJ1aWxkX29zIGluCisgIG1zZG9zZGpncHAqKQorICAgICMgT24gREpHUFAsIHRoaXMgdGVzdCBjYW4gYmxvdyB1cCBwcmV0dHkgYmFkbHkgZHVlIHRvIHByb2JsZW1zIGluIGxpYmMKKyAgICAjIChhbnkgc2luZ2xlIGFyZ3VtZW50IGV4Y2VlZGluZyAyMDAwIGJ5dGVzIGNhdXNlcyBhIGJ1ZmZlciBvdmVycnVuCisgICAgIyBkdXJpbmcgZ2xvYiBleHBhbnNpb24pLiAgRXZlbiBpZiBpdCB3ZXJlIGZpeGVkLCB0aGUgcmVzdWx0IG9mIHRoaXMKKyAgICAjIGNoZWNrIHdvdWxkIGJlIGxhcmdlciB0aGFuIGl0IHNob3VsZCBiZS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTIyODg7ICAgICMgMTJLIGlzIGFib3V0IHJpZ2h0CisgICAgOzsKKworICBnbnUqKQorICAgICMgVW5kZXIgR05VIEh1cmQsIHRoaXMgdGVzdCBpcyBub3QgcmVxdWlyZWQgYmVjYXVzZSB0aGVyZSBpcworICAgICMgbm8gbGltaXQgdG8gdGhlIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorICAgICMgTGlidG9vbCB3aWxsIGludGVycHJldCAtMSBhcyBubyBsaW1pdCB3aGF0c29ldmVyCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPS0xOworICAgIDs7CisKKyAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKKyAgICAjIE9uIFdpbjl4L01FLCB0aGlzIHRlc3QgYmxvd3MgdXAgLS0gaXQgc3VjY2VlZHMsIGJ1dCB0YWtlcworICAgICMgYWJvdXQgNSBtaW51dGVzIGFzIHRoZSB0ZXN0c3RyaW5nIGdyb3dzIGV4cG9uZW50aWFsbHkuCisgICAgIyBXb3JzZSwgc2luY2UgOXgvTUUgYXJlIG5vdCBwcmUtZW1wdGl2ZWx5IG11bHRpdGFza2luZywKKyAgICAjIHlvdSBlbmQgdXAgd2l0aCBhICJmcm96ZW4iIGNvbXB1dGVyLCBldmVuIHRob3VnaCB3aXRoIHBhdGllbmNlCisgICAgIyB0aGUgdGVzdCBldmVudHVhbGx5IHN1Y2NlZWRzICh3aXRoIGEgbWF4IGxpbmUgbGVuZ3RoIG9mIDI1NmspLgorICAgICMgSW5zdGVhZCwgbGV0J3MganVzdCBwdW50OiB1c2UgdGhlIG1pbmltdW0gbGluZWxlbmd0aCByZXBvcnRlZCBieQorICAgICMgYWxsIG9mIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zOiA4MTkyIChvbiBOVC8ySy9YUCkuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKworICBhbWlnYW9zKikKKyAgICAjIE9uIEFtaWdhT1Mgd2l0aCBwZGtzaCwgdGhpcyB0ZXN0IHRha2VzIGhvdXJzLCBsaXRlcmFsbHkuCisgICAgIyBTbyB3ZSBqdXN0IHB1bnQgYW5kIHVzZSBhIG1pbmltdW0gbGluZSBsZW5ndGggb2YgODE5Mi4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCisgIG5ldGJzZCogfCBmcmVlYnNkKiB8IG9wZW5ic2QqIHwgZGFyd2luKiB8IGRyYWdvbmZseSopCisgICAgIyBUaGlzIGhhcyBiZWVuIGFyb3VuZCBzaW5jZSAzODZCU0QsIGF0IGxlYXN0LiAgTGlrZWx5IGZ1cnRoZXIuCisgICAgaWYgdGVzdCAteCAvc2Jpbi9zeXNjdGw7IHRoZW4KKyAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gL3NiaW4vc3lzY3RsIC1uIGtlcm4uYXJnbWF4YAorICAgIGVsaWYgdGVzdCAteCAvdXNyL3NiaW4vc3lzY3RsOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YC91c3Ivc2Jpbi9zeXNjdGwgLW4ga2Vybi5hcmdtYXhgCisgICAgZWxzZQorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTY1NTM2CSMgdXNhYmxlIGRlZmF1bHQgZm9yIGFsbCBCU0RzCisgICAgZmkKKyAgICAjIEFuZCBhZGQgYSBzYWZldHkgem9uZQorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwvIDRgCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXCogM2AKKyAgICA7OworCisgIGludGVyaXgqKQorICAgICMgV2Uga25vdyB0aGUgdmFsdWUgMjYyMTQ0IGFuZCBoYXJkY29kZSBpdCB3aXRoIGEgc2FmZXR5IHpvbmUgKGxpa2UgQlNEKQorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xOTY2MDgKKyAgICA7OworCisgIG9zZiopCisgICAgIyBEci4gSGFucyBFa2tlaGFyZCBQbGVzc2VyIHJlcG9ydHMgc2VlaW5nIGEga2VybmVsIHBhbmljIHJ1bm5pbmcgY29uZmlndXJlCisgICAgIyBkdWUgdG8gdGhpcyB0ZXN0IHdoZW4gZXhlY19kaXNhYmxlX2FyZ19saW1pdCBpcyAxIG9uIFRydTY0LiBJdCBpcyBub3QKKyAgICAjIG5pY2UgdG8gY2F1c2Uga2VybmVsIHBhbmljcyBzbyBsZXRzIGF2b2lkIHRoZSBsb29wIGJlbG93LgorICAgICMgRmlyc3Qgc2V0IGEgcmVhc29uYWJsZSBkZWZhdWx0LgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xNjM4NAorICAgICMKKyAgICBpZiB0ZXN0IC14IC9zYmluL3N5c2NvbmZpZzsgdGhlbgorICAgICAgY2FzZSBgL3NiaW4vc3lzY29uZmlnIC1xIHByb2MgZXhlY19kaXNhYmxlX2FyZ19saW1pdGAgaW4KKyAgICAgICAgKjEqKSBsdF9jdl9zeXNfbWF4X2NtZF9sZW49LTEgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICAgIDs7CisgIHNjbzMuMnY1KikKKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTAyNDAwCisgICAgOzsKKyAgc3lzdjUqIHwgc2NvNXY2KiB8IHN5c3Y0LjJ1dzIqKQorICAgIGthcmdtYXg9YGdyZXAgQVJHX01BWCAvZXRjL2NvbmYvY2YuZC9zdHVuZSAyPi9kZXYvbnVsbGAKKyAgICBpZiB0ZXN0IC1uICIka2FyZ21heCI7IHRoZW4KKyAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZWNobyAka2FyZ21heCB8IHNlZCAncy8uKltbCSBdXS8vJ2AKKyAgICBlbHNlCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MzI3NjgKKyAgICBmaQorICAgIDs7CisgICopCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAoZ2V0Y29uZiBBUkdfTUFYKSAyPiAvZGV2L251bGxgCisgICAgaWYgdGVzdCAtbiAiJGx0X2N2X3N5c19tYXhfY21kX2xlbiI7IHRoZW4KKyAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwvIDRgCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcKiAzYAorICAgIGVsc2UKKyAgICAgICMgTWFrZSB0ZXN0c3RyaW5nIGEgbGl0dGxlIGJpZ2dlciBiZWZvcmUgd2UgZG8gYW55dGhpbmcgd2l0aCBpdC4KKyAgICAgICMgYSAxSyBzdHJpbmcgc2hvdWxkIGJlIGEgcmVhc29uYWJsZSBzdGFydC4KKyAgICAgIGZvciBpIGluIDEgMiAzIDQgNSA2IDcgOCA7IGRvCisgICAgICAgIHRlc3RzdHJpbmc9JHRlc3RzdHJpbmckdGVzdHN0cmluZworICAgICAgZG9uZQorICAgICAgU0hFTEw9JHtTSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0KKyAgICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCisgICAgICAjIG1heGltdW0gbGVuZ3RoIHRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4aW11bSBsZW5ndGgsIGJ1dAorICAgICAgIyB3ZSBjYW4ndCB0ZWxsLgorICAgICAgd2hpbGUgeyB0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisJICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCisgICAgICBkbworICAgICAgICBpPWBleHByICRpICsgMWAKKyAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCisgICAgICBkb25lCisgICAgICAjIE9ubHkgY2hlY2sgdGhlIHN0cmluZyBsZW5ndGggb3V0c2lkZSB0aGUgbG9vcC4KKyAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAiWCR0ZXN0c3RyaW5nIiA6ICIuKiIgMj4mMWAKKyAgICAgIHRlc3RzdHJpbmc9CisgICAgICAjIEFkZCBhIHNpZ25pZmljYW50IHNhZmV0eSBmYWN0b3IgYmVjYXVzZSBDKysgY29tcGlsZXJzIGNhbiB0YWNrIG9uCisgICAgICAjIG1hc3NpdmUgYW1vdW50cyBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBiZWZvcmUgcGFzc2luZyB0aGVtIHRvIHRoZQorICAgICAgIyBsaW5rZXIuICBJdCBhcHBlYXJzIGFzIHRob3VnaCAxLzIgaXMgYSB1c2FibGUgdmFsdWUuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyAyYAorICAgIGZpCisgICAgOzsKKyAgZXNhYworXSkKK2lmIHRlc3QgLW4gJGx0X2N2X3N5c19tYXhfY21kX2xlbiA7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVCgkbHRfY3Zfc3lzX21heF9jbWRfbGVuKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKG5vbmUpCitmaQorbWF4X2NtZF9sZW49JGx0X2N2X3N5c19tYXhfY21kX2xlbgorX0xUX0RFQ0woW10sIFttYXhfY21kX2xlbl0sIFswXSwKKyAgICBbV2hhdCBpcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBjb21tYW5kP10pCitdKSMgTFRfQ01EX01BWF9MRU4KKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTl0sIFtMVF9DTURfTUFYX0xFTl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOXSwgW10pCisKKworIyBfTFRfSEVBREVSX0RMRkNOCisjIC0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfSEVBREVSX0RMRkNOXSwKK1tBQ19DSEVDS19IRUFERVJTKFtkbGZjbi5oXSwgW10sIFtdLCBbQUNfSU5DTFVERVNfREVGQVVMVF0pZG5sCitdKSMgX0xUX0hFQURFUl9ETEZDTgorCisKKyMgX0xUX1RSWV9ETE9QRU5fU0VMRiAoQUNUSU9OLUlGLVRSVUUsIEFDVElPTi1JRi1UUlVFLVctVVNDT1JFLAorIyAgICAgICAgICAgICAgICAgICAgICBBQ1RJT04tSUYtRkFMU0UsIEFDVElPTi1JRi1DUk9TUy1DT01QSUxJTkcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfVFJZX0RMT1BFTl9TRUxGXSwKK1ttNF9yZXF1aXJlKFtfTFRfSEVBREVSX0RMRkNOXSlkbmwKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgWyQ0XQorZWxzZQorICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCitbI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworI2lmIEhBVkVfRExGQ05fSAorI2luY2x1ZGUgPGRsZmNuLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiBSVExEX0dMT0JBTAorIyAgZGVmaW5lIExUX0RMR0xPQkFMCQlSVExEX0dMT0JBTAorI2Vsc2UKKyMgIGlmZGVmIERMX0dMT0JBTAorIyAgICBkZWZpbmUgTFRfRExHTE9CQUwJCURMX0dMT0JBTAorIyAgZWxzZQorIyAgICBkZWZpbmUgTFRfRExHTE9CQUwJCTAKKyMgIGVuZGlmCisjZW5kaWYKKworLyogV2UgbWF5IGhhdmUgdG8gZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cgaW4gdGhlIGNvbW1hbmQgbGluZSBpZiB3ZQorICAgZmluZCBvdXQgaXQgZG9lcyBub3Qgd29yayBpbiBzb21lIHBsYXRmb3JtLiAqLworI2lmbmRlZiBMVF9ETExBWllfT1JfTk9XCisjICBpZmRlZiBSVExEX0xBWlkKKyMgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJCVJUTERfTEFaWQorIyAgZWxzZQorIyAgICBpZmRlZiBETF9MQVpZCisjICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJCURMX0xBWlkKKyMgICAgZWxzZQorIyAgICAgIGlmZGVmIFJUTERfTk9XCisjICAgICAgICBkZWZpbmUgTFRfRExMQVpZX09SX05PVwlSVExEX05PVworIyAgICAgIGVsc2UKKyMgICAgICAgIGlmZGVmIERMX05PVworIyAgICAgICAgICBkZWZpbmUgTFRfRExMQVpZX09SX05PVwlETF9OT1cKKyMgICAgICAgIGVsc2UKKyMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJMAorIyAgICAgICAgZW5kaWYKKyMgICAgICBlbmRpZgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorCit2b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CitpbnQgbWFpbiAoKQoreworICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKKyAgaW50IHN0YXR1cyA9ICRsdF9kbHVua25vd247CisKKyAgaWYgKHNlbGYpCisgICAgeworICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7CisgICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCisgICAgfQorICBlbHNlCisgICAgcHV0cyAoZGxlcnJvciAoKSk7CisKKyAgcmV0dXJuIHN0YXR1czsKK31dCitfTFRfRU9GCisgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gMj4vZGV2L251bGw7IHRoZW4KKyAgICAoLi9jb25mdGVzdDsgZXhpdDsgKSA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+L2Rldi9udWxsCisgICAgbHRfc3RhdHVzPSQ/CisgICAgY2FzZSB4JGx0X3N0YXR1cyBpbgorICAgICAgeCRsdF9kbG5vX3VzY29yZSkgJDEgOzsKKyAgICAgIHgkbHRfZGxuZWVkX3VzY29yZSkgJDIgOzsKKyAgICAgIHgkbHRfZGx1bmtub3dufHgqKSAkMyA7OworICAgIGVzYWMKKyAgZWxzZSA6CisgICAgIyBjb21waWxhdGlvbiBmYWlsZWQKKyAgICAkMworICBmaQorZmkKK3JtIC1mciBjb25mdGVzdCoKK10pIyBfTFRfVFJZX0RMT1BFTl9TRUxGCisKKworIyBMVF9TWVNfRExPUEVOX1NFTEYKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX0RMT1BFTl9TRUxGXSwKK1ttNF9yZXF1aXJlKFtfTFRfSEVBREVSX0RMRkNOXSlkbmwKK2lmIHRlc3QgIngkZW5hYmxlX2Rsb3BlbiIgIT0geHllczsgdGhlbgorICBlbmFibGVfZGxvcGVuPXVua25vd24KKyAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KKyAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCitlbHNlCisgIGx0X2N2X2Rsb3Blbj1ubworICBsdF9jdl9kbG9wZW5fbGlicz0KKworICBjYXNlICRob3N0X29zIGluCisgIGJlb3MqKQorICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCisgICAgOzsKKworICBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgorICAgIGx0X2N2X2Rsb3Blbl9saWJzPQorICAgIDs7CisKKyAgY3lnd2luKikKKyAgICBsdF9jdl9kbG9wZW49ImRsb3BlbiIKKyAgICBsdF9jdl9kbG9wZW5fbGlicz0KKyAgICA7OworCisgIGRhcndpbiopCisgICMgaWYgbGliZGwgaXMgaW5zdGFsbGVkIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IGl0CisgICAgQUNfQ0hFQ0tfTElCKFtkbF0sIFtkbG9wZW5dLAorCQlbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIl0sWworICAgIGx0X2N2X2Rsb3Blbj0iZHlsZCIKKyAgICBsdF9jdl9kbG9wZW5fbGlicz0KKyAgICBsdF9jdl9kbG9wZW5fc2VsZj15ZXMKKyAgICBdKQorICAgIDs7CisKKyAgKikKKyAgICBBQ19DSEVDS19GVU5DKFtzaGxfbG9hZF0sCisJICBbbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCJdLAorICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKKwkgICAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCJdLAorCVtBQ19DSEVDS19GVU5DKFtkbG9wZW5dLAorCSAgICAgIFtsdF9jdl9kbG9wZW49ImRsb3BlbiJdLAorCSAgW0FDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKKwkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLAorCSAgICBbQUNfQ0hFQ0tfTElCKFtzdmxkXSwgW2Rsb3Blbl0sCisJCSAgW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIl0sCisJICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW2RsZF9saW5rXSwKKwkJICAgIFtsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSkKKwkgICAgICBdKQorCSAgICBdKQorCSAgXSkKKwldKQorICAgICAgXSkKKyAgICA7OworICBlc2FjCisKKyAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW4iICE9IHhubzsgdGhlbgorICAgIGVuYWJsZV9kbG9wZW49eWVzCisgIGVsc2UKKyAgICBlbmFibGVfZGxvcGVuPW5vCisgIGZpCisKKyAgY2FzZSAkbHRfY3ZfZGxvcGVuIGluCisgIGRsb3BlbikKKyAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCisKKyAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKKworICAgIHNhdmVfTElCUz0iJExJQlMiCisgICAgTElCUz0iJGx0X2N2X2Rsb3Blbl9saWJzICRMSUJTIgorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKKwkgIGx0X2N2X2Rsb3Blbl9zZWxmLCBbZG5sCisJICBfTFRfVFJZX0RMT1BFTl9TRUxGKAorCSAgICBsdF9jdl9kbG9wZW5fc2VsZj15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmPXllcywKKwkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9bm8sIGx0X2N2X2Rsb3Blbl9zZWxmPWNyb3NzKQorICAgIF0pCisKKyAgICBpZiB0ZXN0ICJ4JGx0X2N2X2Rsb3Blbl9zZWxmIiA9IHh5ZXM7IHRoZW4KKyAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgorICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKKwkgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYywgW2RubAorCSAgX0xUX1RSWV9ETE9QRU5fU0VMRigKKwkgICAgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPXllcywgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPXllcywKKwkgICAgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPW5vLCAgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPWNyb3NzKQorICAgICAgXSkKKyAgICBmaQorCisgICAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgorICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisgICAgTElCUz0iJHNhdmVfTElCUyIKKyAgICA7OworICBlc2FjCisKKyAgY2FzZSAkbHRfY3ZfZGxvcGVuX3NlbGYgaW4KKyAgeWVzfG5vKSBlbmFibGVfZGxvcGVuX3NlbGY9JGx0X2N2X2Rsb3Blbl9zZWxmIDs7CisgICopIGVuYWJsZV9kbG9wZW5fc2VsZj11bmtub3duIDs7CisgIGVzYWMKKworICBjYXNlICRsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMgaW4KKyAgeWVzfG5vKSBlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPSRsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMgOzsKKyAgKikgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duIDs7CisgIGVzYWMKK2ZpCitfTFRfREVDTChbZGxvcGVuX3N1cHBvcnRdLCBbZW5hYmxlX2Rsb3Blbl0sIFswXSwKKwkgW1doZXRoZXIgZGxvcGVuIGlzIHN1cHBvcnRlZF0pCitfTFRfREVDTChbZGxvcGVuX3NlbGZdLCBbZW5hYmxlX2Rsb3Blbl9zZWxmXSwgWzBdLAorCSBbV2hldGhlciBkbG9wZW4gb2YgcHJvZ3JhbXMgaXMgc3VwcG9ydGVkXSkKK19MVF9ERUNMKFtkbG9wZW5fc2VsZl9zdGF0aWNdLCBbZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpY10sIFswXSwKKwkgW1doZXRoZXIgZGxvcGVuIG9mIHN0YXRpY2FsbHkgbGlua2VkIHByb2dyYW1zIGlzIHN1cHBvcnRlZF0pCitdKSMgTFRfU1lTX0RMT1BFTl9TRUxGCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTElCVE9PTF9ETE9QRU5fU0VMRl0sIFtMVF9TWVNfRExPUEVOX1NFTEZdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0RMT1BFTl9TRUxGXSwgW10pCisKKworIyBfTFRfQ09NUElMRVJfQ19PKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHRvIHNlZSBpZiBvcHRpb25zIC1jIGFuZCAtbyBhcmUgc2ltdWx0YW5lb3VzbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyLgorIyBUaGlzIG1hY3JvIGRvZXMgbm90IGhhcmQgY29kZSB0aGUgY29tcGlsZXIgbGlrZSBBQ19QUk9HX0NDX0NfTy4KK200X2RlZnVuKFtfTFRfQ09NUElMRVJfQ19PXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0XSwKKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKV0sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSk9bm8KKyAgICRSTSAtciBjb25mdGVzdCAyPi9kZXYvbnVsbAorICAgbWtkaXIgY29uZnRlc3QKKyAgIGNkIGNvbmZ0ZXN0CisgICBta2RpciBvdXQKKyAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorCisgICBsdF9jb21waWxlcl9mbGFnPSItbyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQiCisgICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgorICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KKyAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKKyAgICMgd2l0aCBhIGRvbGxhciBzaWduIChub3QgYSBoeXBoZW4pLCBzbyB0aGUgZWNobyBzaG91bGQgd29yayBjb3JyZWN0bHkuCisgICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKKyAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKKyAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAorICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKKyAgIGFjX3N0YXR1cz0kPworICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKKyAgIHRoZW4KKyAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKKyAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCisgICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgorICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcworICAgICBmaQorICAgZmkKKyAgIGNobW9kIHUrdyAuIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAkUk0gY29uZnRlc3QqCisgICAjIFNHSSBDKysgY29tcGlsZXIgd2lsbCBjcmVhdGUgZGlyZWN0b3J5IG91dC9paV9maWxlcy8gZm9yCisgICAjIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KKyAgIHRlc3QgLWQgb3V0L2lpX2ZpbGVzICYmICRSTSBvdXQvaWlfZmlsZXMvKiAmJiBybWRpciBvdXQvaWlfZmlsZXMKKyAgICRSTSBvdXQvKiAmJiBybWRpciBvdXQKKyAgIGNkIC4uCisgICAkUk0gLXIgY29uZnRlc3QKKyAgICRSTSBjb25mdGVzdCoKK10pCitfTFRfVEFHREVDTChbY29tcGlsZXJfY19vXSwgW2x0X2N2X3Byb2dfY29tcGlsZXJfY19vXSwgWzFdLAorCVtEb2VzIGNvbXBpbGVyIHNpbXVsdGFuZW91c2x5IHN1cHBvcnQgLWMgYW5kIC1vIG9wdGlvbnM/XSkKK10pIyBfTFRfQ09NUElMRVJfQ19PCisKKworIyBfTFRfQ09NUElMRVJfRklMRV9MT0NLUyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBkbyBoYXJkIGxpbmtzIHRvIGxvY2sgc29tZSBmaWxlcyBpZiBuZWVkZWQKK200X2RlZnVuKFtfTFRfQ09NUElMRVJfRklMRV9MT0NLU10sCitbbTRfcmVxdWlyZShbX0xUX0VOQUJMRV9MT0NLXSlkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorX0xUX0NPTVBJTEVSX0NfTyhbJDFdKQorCitoYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCitpZiB0ZXN0ICIkX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIiA9IG5vICYmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgorICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3NdKQorICBoYXJkX2xpbmtzPXllcworICAkUk0gY29uZnRlc3QqCisgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9kZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCisgIHRvdWNoIGNvbmZ0ZXN0LmEKKyAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+JjUgfHwgaGFyZF9saW5rcz1ubworICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubworICBBQ19NU0dfUkVTVUxUKFskaGFyZF9saW5rc10pCisgIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCisgICAgQUNfTVNHX1dBUk4oW2AkQ0MnIGRvZXMgbm90IHN1cHBvcnQgYC1jIC1vJywgc28gYG1ha2UgLWonIG1heSBiZSB1bnNhZmVdKQorICAgIG5lZWRfbG9ja3M9d2FybgorICBmaQorZWxzZQorICBuZWVkX2xvY2tzPW5vCitmaQorX0xUX0RFQ0woW10sIFtuZWVkX2xvY2tzXSwgWzFdLCBbTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/XSkKK10pIyBfTFRfQ09NUElMRVJfRklMRV9MT0NLUworCisKKyMgX0xUX0NIRUNLX09CSkRJUgorIyAtLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NIRUNLX09CSkRJUl0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBvYmpkaXJdLCBbbHRfY3Zfb2JqZGlyXSwKK1tybSAtZiAubGlicyAyPi9kZXYvbnVsbAorbWtkaXIgLmxpYnMgMj4vZGV2L251bGwKK2lmIHRlc3QgLWQgLmxpYnM7IHRoZW4KKyAgbHRfY3Zfb2JqZGlyPS5saWJzCitlbHNlCisgICMgTVMtRE9TIGRvZXMgbm90IGFsbG93IGZpbGVuYW1lcyB0aGF0IGJlZ2luIHdpdGggYSBkb3QuCisgIGx0X2N2X29iamRpcj1fbGlicworZmkKK3JtZGlyIC5saWJzIDI+L2Rldi9udWxsXSkKK29iamRpcj0kbHRfY3Zfb2JqZGlyCitfTFRfREVDTChbXSwgW29iamRpcl0sIFswXSwKKyAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXNdKWRubAorbTRfcGF0dGVybl9hbGxvdyhbTFRfT0JKRElSXSlkbmwKK0FDX0RFRklORV9VTlFVT1RFRChMVF9PQkpESVIsICIkbHRfY3Zfb2JqZGlyLyIsCisgIFtEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLl0pCitdKSMgX0xUX0NIRUNLX09CSkRJUgorCisKKyMgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRIKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgaGFyZGNvZGluZyBhdHRyaWJ1dGVzLgorbTRfZGVmdW4oW19MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSF0sCitbQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zXSkKK19MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSk9CitpZiB0ZXN0IC1uICIkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkiIHx8CisgICB0ZXN0IC1uICIkX0xUX1RBR1ZBUihydW5wYXRoX3ZhciwgJDEpIiB8fAorICAgdGVzdCAiWCRfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpIiA9ICJYeWVzIiA7IHRoZW4KKworICAjIFdlIGNhbiBoYXJkY29kZSBub24tZXhpc3RlbnQgZGlyZWN0b3JpZXMuCisgIGlmIHRlc3QgIiRfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpIiAhPSBubyAmJgorICAgICAjIElmIHRoZSBvbmx5IG1lY2hhbmlzbSB0byBhdm9pZCBoYXJkY29kaW5nIGlzIHNobGlicGF0aF92YXIsIHdlCisgICAgICMgaGF2ZSB0byByZWxpbmssIG90aGVyd2lzZSB3ZSBtaWdodCBsaW5rIHdpdGggYW4gaW5zdGFsbGVkIGxpYnJhcnkKKyAgICAgIyB3aGVuIHdlIHNob3VsZCBiZSBsaW5raW5nIHdpdGggYSB5ZXQtdG8tYmUtaW5zdGFsbGVkIG9uZQorICAgICAjIyB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSkiICE9IG5vICYmCisgICAgIHRlc3QgIiRfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKSIgIT0gbm87IHRoZW4KKyAgICAjIExpbmtpbmcgYWx3YXlzIGhhcmRjb2RlcyB0aGUgdGVtcG9yYXJ5IGxpYnJhcnkgZGlyZWN0b3J5LgorICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSk9cmVsaW5rCisgIGVsc2UKKyAgICAjIFdlIGNhbiBsaW5rIHdpdGhvdXQgaGFyZGNvZGluZywgYW5kIHdlIGNhbiBoYXJkY29kZSBub25leGlzdGluZyBkaXJzLgorICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSk9aW1tZWRpYXRlCisgIGZpCitlbHNlCisgICMgV2UgY2Fubm90IGhhcmRjb2RlIGFueXRoaW5nLCBvciBlbHNlIHdlIGNhbiBvbmx5IGhhcmRjb2RlIGV4aXN0aW5nCisgICMgZGlyZWN0b3JpZXMuCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSk9dW5zdXBwb3J0ZWQKK2ZpCitBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKV0pCisKK2lmIHRlc3QgIiRfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpIiA9IHJlbGluayB8fAorICAgdGVzdCAiJF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpIiA9IHllczsgdGhlbgorICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKKyAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubworZWxpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyB8fAorICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSBubzsgdGhlbgorICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkKKyAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1uZWVkbGVzcworZmkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfYWN0aW9uXSwgWzBdLAorICAgIFtIb3cgdG8gaGFyZGNvZGUgYSBzaGFyZWQgbGlicmFyeSBwYXRoIGludG8gYW4gZXhlY3V0YWJsZV0pCitdKSMgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRICisKKworIyBfTFRfQ01EX1NUUklQTElCCisjIC0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ01EX1NUUklQTElCXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCitzdHJpcGxpYj0KK29sZF9zdHJpcGxpYj0KK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBzdHJpcHBpbmcgbGlicmFyaWVzIGlzIHBvc3NpYmxlXSkKK2lmIHRlc3QgLW4gIiRTVFJJUCIgJiYgJFNUUklQIC1WIDI+JjEgfCAkR1JFUCAiR05VIHN0cmlwIiA+L2Rldi9udWxsOyB0aGVuCisgIHRlc3QgLXogIiRvbGRfc3RyaXBsaWIiICYmIG9sZF9zdHJpcGxpYj0iJFNUUklQIC0tc3RyaXAtZGVidWciCisgIHRlc3QgLXogIiRzdHJpcGxpYiIgJiYgc3RyaXBsaWI9IiRTVFJJUCAtLXN0cmlwLXVubmVlZGVkIgorICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZWxzZQorIyBGSVhNRSAtIGluc2VydCBzb21lIHJlYWwgdGVzdHMsIGhvc3Rfb3MgaXNuJ3QgcmVhbGx5IGdvb2QgZW5vdWdoCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgZGFyd2luKikKKyAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgorICAgICAgc3RyaXBsaWI9IiRTVFJJUCAteCIKKyAgICAgIG9sZF9zdHJpcGxpYj0iJFNUUklQIC1TIgorICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICBlbHNlCisgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgZmkKKyAgICA7OworICAqKQorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICA7OworICBlc2FjCitmaQorX0xUX0RFQ0woW10sIFtvbGRfc3RyaXBsaWJdLCBbMV0sIFtDb21tYW5kcyB0byBzdHJpcCBsaWJyYXJpZXNdKQorX0xUX0RFQ0woW10sIFtzdHJpcGxpYl0sIFsxXSkKK10pIyBfTFRfQ01EX1NUUklQTElCCisKKworIyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQT1JUTUUgRmlsbCBpbiB5b3VyIGxkLnNvIGNoYXJhY3RlcmlzdGljcworbTRfZGVmdW4oW19MVF9TWVNfRFlOQU1JQ19MSU5LRVJdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3NdKQorbTRfaWYoWyQxXSwKKwlbXSwgWworaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGRhcndpbiopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8sL0xSLyIgOzsKKyAgICAqKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovIiA7OworICBlc2FjCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCisgIGlmICRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCisgICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCisgICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCisgICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICBlbHNlCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICBmaQorICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAorICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KKyAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9CisgIGx0X211bHRpX29zX2Rpcj1gJENDICRDUFBGTEFHUyAkQ0ZMQUdTICRMREZMQUdTIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnkgMj4vZGV2L251bGxgCisgIGZvciBsdF9zeXNfcGF0aCBpbiAkbHRfc2VhcmNoX3BhdGhfc3BlYzsgZG8KKyAgICBpZiB0ZXN0IC1kICIkbHRfc3lzX3BhdGgvJGx0X211bHRpX29zX2RpciI7IHRoZW4KKyAgICAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiCisgICAgZWxzZQorICAgICAgdGVzdCAtZCAiJGx0X3N5c19wYXRoIiAmJiBcCisJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCisgICAgZmkKKyAgZG9uZQorICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJworQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30geworICBsdF9mb289IiI7CisgIGx0X2NvdW50PTA7CisgIGZvciAobHRfaSA9IE5GOyBsdF9pID4gMDsgbHRfaS0tKSB7CisgICAgaWYgKCRsdF9pICE9ICIiICYmICRsdF9pICE9ICIuIikgeworICAgICAgaWYgKCRsdF9pID09ICIuLiIpIHsKKyAgICAgICAgbHRfY291bnQrKzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChsdF9jb3VudCA9PSAwKSB7CisgICAgICAgICAgbHRfZm9vPSIvIiAkbHRfaSBsdF9mb287CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbHRfY291bnQtLTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbW2x0X2Zvb11dKys7IH0KKyAgaWYgKGx0X2ZyZXFbW2x0X2Zvb11dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9Cit9J2AKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfc2VhcmNoX3BhdGhfc3BlY2AKK2Vsc2UKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgorZmldKQorbGlicmFyeV9uYW1lc19zcGVjPQorbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKK3NvbmFtZV9zcGVjPQorc2hyZXh0X2NtZHM9Ii5zbyIKK3Bvc3RpbnN0YWxsX2NtZHM9Citwb3N0dW5pbnN0YWxsX2NtZHM9CitmaW5pc2hfY21kcz0KK2ZpbmlzaF9ldmFsPQorc2hsaWJwYXRoX3Zhcj0KK3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD11bmtub3duCit2ZXJzaW9uX3R5cGU9bm9uZQorZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNvIgorc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIiCituZWVkX2xpYl9wcmVmaXg9dW5rbm93bgoraGFyZGNvZGVfaW50b19saWJzPW5vCisKKyMgd2hlbiB5b3Ugc2V0IG5lZWRfdmVyc2lvbiB0byBubywgbWFrZSBzdXJlIGl0IGRvZXMgbm90IGNhdXNlIC1zZXRfdmVyc2lvbgorIyBmbGFncyB0byBiZSBsZWZ0IHdpdGhvdXQgYXJndW1lbnRzCituZWVkX3ZlcnNpb249dW5rbm93bgorCitjYXNlICRob3N0X29zIGluCithaXgzKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJworICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKKworICAjIEFJWCAzIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIHdlIGFwcGVuZCBhIG1ham9yIHZlcnNpb24gdG8gdGhlIG5hbWUuCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIDs7CisKK2FpeFtbNC05XV0qKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgIyBBSVggNSBzdXBwb3J0cyBJQTY0CisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgZWxzZQorICAgICMgV2l0aCBHQ0MgdXAgdG8gMi45NS54LCBjb2xsZWN0MiB3b3VsZCBjcmVhdGUgYW4gaW1wb3J0IGZpbGUKKyAgICAjIGZvciBkZXBlbmRlbmNlIGxpYnJhcmllcy4gIFRoZSBpbXBvcnQgZmlsZSB3b3VsZCBzdGFydCB3aXRoCisgICAgIyB0aGUgbGluZSBgIyEgLicuICBUaGlzIHdvdWxkIGNhdXNlIHRoZSBnZW5lcmF0ZWQgbGlicmFyeSB0bworICAgICMgZGVwZW5kIG9uIGAuJywgYWx3YXlzIGFuIGludmFsaWQgbGlicmFyeS4gIFRoaXMgd2FzIGZpeGVkIGluCisgICAgIyBkZXZlbG9wbWVudCBzbmFwc2hvdHMgb2YgR0NDIHByaW9yIHRvIDMuMC4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXg0IHwgYWl4NC5bWzAxXV0gfCBhaXg0LltbMDFdXS4qKQorICAgICAgaWYgeyBlY2hvICcjaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk3KScKKwkgICBlY2hvICcgeWVzICcKKwkgICBlY2hvICcjZW5kaWYnOyB9IHwgJHtDQ30gLUUgLSB8ICRHUkVQIHllcyA+IC9kZXYvbnVsbDsgdGhlbgorCToKKyAgICAgIGVsc2UKKwljYW5fYnVpbGRfc2hhcmVkPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCisgICAgIyBBSVggKG9uIFBvd2VyKikgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gY3VycmVudGx5IHdlIGNhbiBub3QgaGFyZGNvZGUgY29ycmVjdAorICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KKyAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgorICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgIyBJZiB1c2luZyBydW4gdGltZSBsaW5raW5nIChvbiBBSVggNC4yIG9yIGxhdGVyKSB1c2UgbGliPG5hbWU+LnNvCisgICAgICAjIGluc3RlYWQgb2YgbGliPG5hbWU+LmEgdG8gbGV0IHBlb3BsZSBrbm93IHRoYXQgdGhlc2UgYXJlIG5vdAorICAgICAgIyB0eXBpY2FsIEFJWCBzaGFyZWQgbGlicmFyaWVzLgorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgZWxzZQorICAgICAgIyBXZSBwcmVzZXJ2ZSAuYSBhcyBleHRlbnNpb24gZm9yIHNoYXJlZCBsaWJyYXJpZXMgdGhyb3VnaCBBSVg0LjIKKyAgICAgICMgYW5kIGxhdGVyIHdoZW4gd2UgYXJlIG5vdCBkb2luZyBydW4gdGltZSBsaW5raW5nLgorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGZpCisgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIGZpCisgIDs7CisKK2FtaWdhb3MqKQorICBjYXNlICRob3N0X2NwdSBpbgorICBwb3dlcnBjKQorICAgICMgU2luY2UgSnVseSAyMDA3IEFtaWdhT1M0IG9mZmljaWFsbHkgc3VwcG9ydHMgLnNvIGxpYnJhcmllcy4KKyAgICAjIFdoZW4gY29tcGlsaW5nIHRoZSBleGVjdXRhYmxlLCBhZGQgLXVzZS1keW5sZCAtTHNvYmpzOiB0byB0aGUgY29tcGlsZWxpbmUuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgOzsKKyAgbTY4aykKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLml4bGlicmFyeSAkbGlibmFtZS5hJworICAgICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCisgICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWAkRUNITyAiWCRsaWIiIHwgJFhzZWQgLWUgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICA7OworICBlc2FjCisgIDs7CisKK2Jlb3MqKQorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCisgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgIDs7CisKK2JzZGlbWzQ1XV0qKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAkbGliZGlyJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9zaGxpYiAvdXNyL2xpYiAvdXNyL1gxMS9saWIgL3Vzci9jb250cmliL2xpYiAvbGliIC91c3IvbG9jYWwvbGliIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgorICAjIHRoZSBkZWZhdWx0IGxkLnNvLmNvbmYgYWxzbyBjb250YWlucyAvdXNyL2NvbnRyaWIvbGliIGFuZAorICAjIC91c3IvWDExUjYvbGliICgvdXNyL1gxMSBpcyBhIGxpbmsgdG8gL3Vzci9YMTFSNiksIGJ1dCBsZXQgdXMgYWxsb3cKKyAgIyBsaWJ0b29sIHRvIGhhcmQtY29kZSB0aGVzZSBpbnRvIHByb2dyYW1zCisgIDs7CisKK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgdmVyc2lvbl90eXBlPXdpbmRvd3MKKyAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIG5lZWRfdmVyc2lvbj1ubworICBuZWVkX2xpYl9wcmVmaXg9bm8KKworICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKyAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZX4KKyAgICAgIGNobW9kIGEreCBcJGRsZGlyLyRkbG5hbWV+CisgICAgICBpZiB0ZXN0IC1uICdcJyckc3RyaXBtZSdcJycgJiYgdGVzdCAtbiAnXCcnJHN0cmlwbGliJ1wnJzsgdGhlbgorICAgICAgICBldmFsICdcJyckc3RyaXBsaWIgXCRkbGRpci8kZGxuYW1lJ1wnJyB8fCBleGl0IFwkPzsKKyAgICAgIGZpJworICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorICAgICAgICRSTSBcJGRscGF0aCcKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgY3lnd2luKikKKyAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJworICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIC9saWIvdzMyYXBpIC9saWIgL3Vzci9sb2NhbC9saWIiCisgICAgICA7OworICAgIG1pbmd3KiB8IGNlZ2NjKikKKyAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4CisgICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8ICRHUkVQICJebGlicmFyaWVzOiIgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCisgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKKyAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAorICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCisgICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKKyAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAorICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisgICAgICBlbHNlCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgOzsKKyAgICBwdzMyKikKKyAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJworICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworCisgICopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICA7OworICBlc2FjCisgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgOzsKKworZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGR5bGQiCisgIHZlcnNpb25fdHlwZT1kYXJ3aW4KKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCAke2xpYm5hbWV9JHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQnCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAorICBzaHJleHRfY21kcz0nYHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliYCcKK200X2lmKFskMV0sIFtdLFsKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC91c3IvbG9jYWwvbGliIl0pCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvbGliIC91c3IvbGliJworICA7OworCitkZ3V4KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICA7OworCitmcmVlYnNkMSopCisgIGR5bmFtaWNfbGlua2VyPW5vCisgIDs7CisKK2ZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgIyBEcmFnb25GbHkgZG9lcyBub3QgaGF2ZSBhb3V0LiAgV2hlbi9pZiB0aGV5IGltcGxlbWVudCBhIG5ldworICAjIHZlcnNpb25pbmcgbWVjaGFuaXNtLCBhZGp1c3QgdGhpcy4KKyAgaWYgdGVzdCAteCAvdXNyL2Jpbi9vYmpmb3JtYXQ7IHRoZW4KKyAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKKyAgZWxzZQorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBmcmVlYnNkW1sxMjNdXSopIG9iamZvcm1hdD1hb3V0IDs7CisgICAgKikgb2JqZm9ybWF0PWVsZiA7OworICAgIGVzYWMKKyAgZmkKKyAgdmVyc2lvbl90eXBlPWZyZWVic2QtJG9iamZvcm1hdAorICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KKyAgICBmcmVlYnNkLWVsZiopCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICAgIG5lZWRfdmVyc2lvbj1ubworICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICA7OworICAgIGZyZWVic2QtKikKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICAgICAgbmVlZF92ZXJzaW9uPXllcworICAgICAgOzsKKyAgZXNhYworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBjYXNlICRob3N0X29zIGluCisgIGZyZWVic2QyKikKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgOzsKKyAgZnJlZWJzZDMuW1swMV1dKiB8IGZyZWVic2RlbGYzLltbMDFdXSopCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgICA7OworICBmcmVlYnNkMy5bWzItOV1dKiB8IGZyZWVic2RlbGYzLltbMi05XV0qIHwgXAorICBmcmVlYnNkNC5bWzAtNV1dIHwgZnJlZWJzZGVsZjQuW1swLTVdXSB8IGZyZWVic2Q0LjEuMSB8IGZyZWVic2RlbGY0LjEuMSkKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgOzsKKyAgKikgIyBmcm9tIDQuNiBvbiwgYW5kIERyYWdvbkZseQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgOzsKKyAgZXNhYworICA7OworCitnbnUqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCisgICMgR2l2ZSBhIHNvbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYWpvciB2ZXJzaW9uIHNvIHRoYXQgZGxkLnNsIHJlZnVzZXMgdG8KKyAgIyBsaW5rIGFnYWluc3Qgb3RoZXIgdmVyc2lvbnMuCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGNhc2UgJGhvc3RfY3B1IGluCisgIGlhNjQqKQorICAgIHNocmV4dF9jbWRzPScuc28nCisgICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc28iCisgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBpZiB0ZXN0ICJYJEhQVVhfSUE2NF9NT0RFIiA9IFgzMjsgdGhlbgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliIgorICAgIGVsc2UKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDY0IC91c3IvbG9jYWwvbGliL2hwdXg2NCIKKyAgICBmaQorICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKKyAgICA7OworICBocHBhKjY0KikKKyAgICBzaHJleHRfY21kcz0nLnNsJworICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNsIgorICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRIICMgSG93IHNob3VsZCB3ZSBoYW5kbGUgU0hMSUJfUEFUSAorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvcGEyMF82NCAvdXNyL2Njcy9saWIvcGEyMF82NCIKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCisgICAgOzsKKyAgKikKKyAgICBzaHJleHRfY21kcz0nLnNsJworICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCisgICAgc2hsaWJwYXRoX3Zhcj1TSExJQl9QQVRICisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIDs7CisgIGVzYWMKKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCisgIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDU1NSAkbGliJworICA7OworCitpbnRlcml4W1szLTldXSopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGR5bmFtaWNfbGlua2VyPSdJbnRlcml4IDMueCBsZC5zby4xIChQRSwgbGlrZSBFTEYpJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCitpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICBjYXNlICRob3N0X29zIGluCisgICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OworICAgICopCisJaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorCQl2ZXJzaW9uX3R5cGU9bGludXgKKwllbHNlCisJCXZlcnNpb25fdHlwZT1pcml4CisJZmkgOzsKKyAgZXNhYworICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgY2FzZSAkaG9zdF9vcyBpbgorICBpcml4NSogfCBub25zdG9wdXgqKQorICAgIGxpYnN1ZmY9IHNobGlic3VmZj0KKyAgICA7OworICAqKQorICAgIGNhc2UgJExEIGluICMgbGlidG9vbC5tNCB3aWxsIGFkZCBvbmUgb2YgdGhlc2Ugc3dpdGNoZXMgdG8gTEQKKyAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKQorICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPSBsaWJtYWdpYz0zMi1iaXQ7OworICAgICotbjMyfCoiLW4zMiAifCotbWVsZjMyYm1pcG4zMnwqIi1tZWxmMzJibWlwbjMyICIpCisgICAgICBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgbGlibWFnaWM9TjMyOzsKKyAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikKKyAgICAgIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IGxpYm1hZ2ljPTY0LWJpdDs7CisgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7CisgICAgZXNhYworICAgIDs7CisgIGVzYWMKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZJHtzaGxpYnN1ZmZ9X1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIke2xpYnN1ZmZ9IC9saWIke2xpYnN1ZmZ9IC91c3IvbG9jYWwvbGliJHtsaWJzdWZmfSIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSIKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCisjIE5vIHNoYXJlZCBsaWIgc3VwcG9ydCBmb3IgTGludXggb2xkbGQsIGFvdXQsIG9yIGNvZmYuCitsaW51eCpvbGRsZCogfCBsaW51eCphb3V0KiB8IGxpbnV4KmNvZmYqKQorICBkeW5hbWljX2xpbmtlcj1ubworICA7OworCisjIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCitsaW51eCogfCBrKmJzZCotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICMgU29tZSBiaW51dGlscyBsZCBhcmUgcGF0Y2hlZCB0byBzZXQgRFRfUlVOUEFUSAorICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgc2F2ZV9saWJkaXI9JGxpYmRpcgorICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSlcIjsgXAorICAgICAgIExERkxBR1M9XCJcJExERkxBR1MgJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpXCIiCisgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKKyAgICBbQVNfSUYoWyAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGxdLAorICAgICAgIFtzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzXSldKQorICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgbGliZGlyPSRzYXZlX2xpYmRpcgorCisgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgorICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKKyAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworCisgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCisgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCisgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCisgIGZpCisKKyAgIyBXZSB1c2VkIHRvIHRlc3QgZm9yIC9saWIvbGQuc28uMSBhbmQgZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCisgICMgcG93ZXJwYywgYmVjYXVzZSBNa0xpbnV4IG9ubHkgc3VwcG9ydGVkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCB0aGUKKyAgIyBHTlUgZHluYW1pYyBsaW5rZXIuICBTaW5jZSB0aGlzIHdhcyBicm9rZW4gd2l0aCBjcm9zcyBjb21waWxlcnMsCisgICMgbW9zdCBwb3dlcnBjLWxpbnV4IGJveGVzIHN1cHBvcnQgZHluYW1pYyBsaW5raW5nIHRoZXNlIGRheXMgYW5kCisgICMgcGVvcGxlIGNhbiBhbHdheXMgLS1kaXNhYmxlLXNoYXJlZCwgdGhlIHRlc3Qgd2FzIHJlbW92ZWQsIGFuZCB3ZQorICAjIGFzc3VtZSB0aGUgR05VL0xpbnV4IGR5bmFtaWMgbGlua2VyIGlzIGluIHVzZS4KKyAgZHluYW1pY19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKKyAgOzsKKworbmV0YnNkKikKKyAgdmVyc2lvbl90eXBlPXN1bm9zCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCisgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCAoYS5vdXQpIGxkLnNvJworICBlbHNlCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJworICBmaQorICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworbmV3c29zNikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIDs7CisKKypudG8qIHwgKnFueCopCisgIHZlcnNpb25fdHlwZT1xbngKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgZHluYW1pY19saW5rZXI9J2xkcW54LnNvJworICA7OworCitvcGVuYnNkKikKKyAgdmVyc2lvbl90eXBlPXN1bm9zCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiIKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBPcGVuQlNEICgzLjMgYXQgbGVhc3QpICpkbyogbmVlZCB2ZXJzaW9uZWQgbGlicy4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG9wZW5ic2QzLjMgfCBvcGVuYnNkMy4zLiopCW5lZWRfdmVyc2lvbj15ZXMgOzsKKyAgICAqKQkJCQluZWVkX3ZlcnNpb249bm8gIDs7CisgIGVzYWMKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIG9wZW5ic2QyLltbODldXSB8IG9wZW5ic2QyLltbODldXS4qKQorCXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworCTs7CisgICAgICAqKQorCXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKwk7OworICAgICAgZXNhYworICBlbHNlCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBmaQorICA7OworCitvczIqKQorICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICBzaHJleHRfY21kcz0iLmRsbCIKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9ICRsaWJuYW1lLmEnCisgIGR5bmFtaWNfbGlua2VyPSdPUy8yIGxkLmV4ZScKKyAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIDs7CisKK29zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgdmVyc2lvbl90eXBlPW9zZgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3Ivc2hsaWIgL3Vzci9jY3MvbGliIC91c3IvbGliL2NtcGxycy9jYyAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvdmFyL3NobGliIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKKyAgOzsKKworcmRvcyopCisgIGR5bmFtaWNfbGlua2VyPW5vCisgIDs7CisKK3NvbGFyaXMqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICMgbGRkIGNvbXBsYWlucyB1bmxlc3MgbGlicmFyaWVzIGFyZSBleGVjdXRhYmxlCisgIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kICt4ICRsaWInCisgIDs7CisKK3N1bm9zNCopCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi91c3IvZXRjIiBsZGNvbmZpZyAkbGliZGlyJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgZmkKKyAgbmVlZF92ZXJzaW9uPXllcworICA7OworCitzeXN2NCB8IHN5c3Y0LjMqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGNhc2UgJGhvc3RfdmVuZG9yIGluCisgICAgc25pKQorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgICAgIHJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICisgICAgICA7OworICAgIHNpZW1lbnMpCisgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgICAgIDs7CisgICAgbW90b3JvbGEpCisgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgICAgIG5lZWRfdmVyc2lvbj1ubworICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy9saWIgL3Vzci9saWIgL3Vzci9jY3MvbGliJworICAgICAgOzsKKyAgZXNhYworICA7OworCitzeXN2NCpNUCopCisgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGZpCisgIDs7CisKK3N5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQorICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbG9jYWwvbGliIC91c3IvZ251L2xpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIgL2xpYicKKyAgZWxzZQorICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9jY3MvbGliIC91c3IvbGliJworICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIHNjbzMuMnY1KikKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC9saWIiCisJOzsKKyAgICBlc2FjCisgIGZpCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xpYicKKyAgOzsKKwordHBmKikKKyAgIyBUUEYgaXMgYSBjcm9zcy10YXJnZXQgb25seS4gIFByZWZlcnJlZCBjcm9zcy1ob3N0ID0gR05VL0xpbnV4LgorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKwordXRzNCopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgOzsKKworKikKKyAgZHluYW1pY19saW5rZXI9bm8KKyAgOzsKK2VzYWMKK0FDX01TR19SRVNVTFQoWyRkeW5hbWljX2xpbmtlcl0pCit0ZXN0ICIkZHluYW1pY19saW5rZXIiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworCit2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iUEFUSCAkc2hsaWJwYXRoX3ZhciAkcnVucGF0aF92YXIiCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKK2ZpCisKK2lmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKK2ZpCitpZiB0ZXN0ICIke2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiCitmaQorCitfTFRfREVDTChbXSwgW3ZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rXSwgWzFdLAorICAgIFtWYXJpYWJsZXMgd2hvc2UgdmFsdWVzIHNob3VsZCBiZSBzYXZlZCBpbiBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0cyBhbmQKKyAgICByZXN0b3JlZCBhdCBsaW5rIHRpbWVdKQorX0xUX0RFQ0woW10sIFtuZWVkX2xpYl9wcmVmaXhdLCBbMF0sCisgICAgW0RvIHdlIG5lZWQgdGhlICJsaWIiIHByZWZpeCBmb3IgbW9kdWxlcz9dKQorX0xUX0RFQ0woW10sIFtuZWVkX3ZlcnNpb25dLCBbMF0sIFtEbyB3ZSBuZWVkIGEgdmVyc2lvbiBmb3IgbGlicmFyaWVzP10pCitfTFRfREVDTChbXSwgW3ZlcnNpb25fdHlwZV0sIFswXSwgW0xpYnJhcnkgdmVyc2lvbmluZyB0eXBlXSkKK19MVF9ERUNMKFtdLCBbcnVucGF0aF92YXJdLCBbMF0sICBbU2hhcmVkIGxpYnJhcnkgcnVudGltZSBwYXRoIHZhcmlhYmxlXSkKK19MVF9ERUNMKFtdLCBbc2hsaWJwYXRoX3Zhcl0sIFswXSxbU2hhcmVkIGxpYnJhcnkgcGF0aCB2YXJpYWJsZV0pCitfTFRfREVDTChbXSwgW3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aF0sIFswXSwKKyAgICBbSXMgc2hsaWJwYXRoIHNlYXJjaGVkIGJlZm9yZSB0aGUgaGFyZC1jb2RlZCBsaWJyYXJ5IHNlYXJjaCBwYXRoP10pCitfTFRfREVDTChbXSwgW2xpYm5hbWVfc3BlY10sIFsxXSwgW0Zvcm1hdCBvZiBsaWJyYXJ5IG5hbWUgcHJlZml4XSkKK19MVF9ERUNMKFtdLCBbbGlicmFyeV9uYW1lc19zcGVjXSwgWzFdLAorICAgIFtbTGlzdCBvZiBhcmNoaXZlIG5hbWVzLiAgRmlyc3QgbmFtZSBpcyB0aGUgcmVhbCBvbmUsIHRoZSByZXN0IGFyZSBsaW5rcy4KKyAgICBUaGUgbGFzdCBuYW1lIGlzIHRoZSBvbmUgdGhhdCB0aGUgbGlua2VyIGZpbmRzIHdpdGggLWxOQU1FXV0pCitfTFRfREVDTChbXSwgW3NvbmFtZV9zcGVjXSwgWzFdLAorICAgIFtbVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIG5hbWVdXSkKK19MVF9ERUNMKFtdLCBbcG9zdGluc3RhbGxfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZCB0byB1c2UgYWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIGEgc2hhcmVkIGFyY2hpdmVdKQorX0xUX0RFQ0woW10sIFtwb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIHVuaW5zdGFsbGF0aW9uIG9mIGEgc2hhcmVkIGFyY2hpdmVdKQorX0xUX0RFQ0woW10sIFtmaW5pc2hfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgdXNlZCB0byBmaW5pc2ggYSBsaWJ0b29sIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGluIGEgZGlyZWN0b3J5XSkKK19MVF9ERUNMKFtdLCBbZmluaXNoX2V2YWxdLCBbMV0sCisgICAgW1tBcyAiZmluaXNoX2NtZHMiLCBleGNlcHQgYSBzaW5nbGUgc2NyaXB0IGZyYWdtZW50IHRvIGJlIGV2YWxlZCBidXQKKyAgICBub3Qgc2hvd25dXSkKK19MVF9ERUNMKFtdLCBbaGFyZGNvZGVfaW50b19saWJzXSwgWzBdLAorICAgIFtXaGV0aGVyIHdlIHNob3VsZCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gbGlicmFyaWVzXSkKK19MVF9ERUNMKFtdLCBbc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXSwgWzJdLAorICAgIFtDb21waWxlLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXNdKQorX0xUX0RFQ0woW10sIFtzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY10sIFsyXSwKKyAgICBbUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXNdKQorXSkjIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIKKworCisjIF9MVF9QQVRIX1RPT0xfUFJFRklYKFRPT0wpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbml6ZSBzaGFyZWQgbGlicmFyeQorQUNfREVGVU4oW19MVF9QQVRIX1RPT0xfUFJFRklYXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCitBQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9NQUdJQ19DTUQsCitbY2FzZSAkTUFHSUNfQ01EIGluCitbW1xcLypdIHwgID86W1xcL10qXSkKKyAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworKikKKyAgbHRfc2F2ZV9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiCisgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZG5sICRhY19kdW1teSBmb3JjZXMgc3BsaXR0aW5nIG9uIGNvbnN0YW50IHVzZXItc3VwcGxpZWQgcGF0aHMuCitkbmwgUE9TSVguMiB3b3JkIHNwbGl0dGluZyBpcyBkb25lIG9ubHkgb24gdGhlIG91dHB1dCBvZiB3b3JkIGV4cGFuc2lvbnMsCitkbmwgbm90IGV2ZXJ5IHdvcmQuICBUaGlzIGNsb3NlcyBhIGxvbmdzdGFuZGluZyBzaCBzZWN1cml0eSBob2xlLgorICBhY19kdW1teT0ibTRfaWYoWyQyXSwgLCAkUEFUSCwgWyQyXSkiCisgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyQxOyB0aGVuCisgICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8kMSIKKyAgICAgIGlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX3Rlc3RfZmlsZSI7IHRoZW4KKwljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgorCSJmaWxlX21hZ2ljICIqKQorCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICJmaWxlX21hZ2ljIFwoLipcKSJgCisJICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKKwkgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwkZmlsZV9tYWdpY190ZXN0X2ZpbGUgMj4gL2Rldi9udWxsIHwKKwkgICAgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgOgorCSAgZWxzZQorCSAgICBjYXQgPDxfTFRfRU9GIDE+JjIKKworKioqIFdhcm5pbmc6IHRoZSBjb21tYW5kIGxpYnRvb2wgdXNlcyB0byBkZXRlY3Qgc2hhcmVkIGxpYnJhcmllcywKKyoqKiAkZmlsZV9tYWdpY19jbWQsIHByb2R1Y2VzIG91dHB1dCB0aGF0IGxpYnRvb2wgY2Fubm90IHJlY29nbml6ZS4KKyoqKiBUaGUgcmVzdWx0IGlzIHRoYXQgbGlidG9vbCBtYXkgZmFpbCB0byByZWNvZ25pemUgc2hhcmVkIGxpYnJhcmllcworKioqIGFzIHN1Y2guICBUaGlzIHdpbGwgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcyB0aGF0CisqKiogZGVwZW5kIG9uIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dCBwcm9ncmFtcyBsaW5rZWQgd2l0aCBzdWNoIGxpYnRvb2wKKyoqKiBsaWJyYXJpZXMgd2lsbCB3b3JrIHJlZ2FyZGxlc3Mgb2YgdGhpcyBwcm9ibGVtLiAgTmV2ZXJ0aGVsZXNzLCB5b3UKKyoqKiBtYXkgd2FudCB0byByZXBvcnQgdGhlIHByb2JsZW0gdG8geW91ciBzeXN0ZW0gbWFuYWdlciBhbmQvb3IgdG8KKyoqKiBidWctbGlidG9vbEBnbnUub3JnCisKK19MVF9FT0YKKwkgIGZpIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgTUFHSUNfQ01EPSIkbHRfc2F2ZV9NQUdJQ19DTUQiCisgIDs7Citlc2FjXSkKK01BR0lDX0NNRD0iJGx0X2N2X3BhdGhfTUFHSUNfQ01EIgoraWYgdGVzdCAtbiAiJE1BR0lDX0NNRCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVCgkTUFHSUNfQ01EKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKG5vKQorZmkKK19MVF9ERUNMKFtdLCBbTUFHSUNfQ01EXSwgWzBdLAorCSBbVXNlZCB0byBleGFtaW5lIGxpYnJhcmllcyB3aGVuIGZpbGVfbWFnaWNfY21kIGJlZ2lucyB3aXRoICJmaWxlIl0pZG5sCitdKSMgX0xUX1BBVEhfVE9PTF9QUkVGSVgKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19QQVRIX1RPT0xfUFJFRklYXSwgW19MVF9QQVRIX1RPT0xfUFJFRklYXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfUEFUSF9UT09MX1BSRUZJWF0sIFtdKQorCisKKyMgX0xUX1BBVEhfTUFHSUMKKyMgLS0tLS0tLS0tLS0tLS0KKyMgZmluZCBhIGZpbGUgcHJvZ3JhbSB3aGljaCBjYW4gcmVjb2duaXplIGEgc2hhcmVkIGxpYnJhcnkKK200X2RlZnVuKFtfTFRfUEFUSF9NQUdJQ10sCitbX0xUX1BBVEhfVE9PTF9QUkVGSVgoJHthY190b29sX3ByZWZpeH1maWxlLCAvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRIKQoraWYgdGVzdCAteiAiJGx0X2N2X3BhdGhfTUFHSUNfQ01EIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgX0xUX1BBVEhfVE9PTF9QUkVGSVgoZmlsZSwgL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSCkKKyAgZWxzZQorICAgIE1BR0lDX0NNRD06CisgIGZpCitmaQorXSkjIF9MVF9QQVRIX01BR0lDCisKKworIyBMVF9QQVRIX0xECisjIC0tLS0tLS0tLS0KKyMgZmluZCB0aGUgcGF0aG5hbWUgdG8gdGhlIEdOVSBvciBub24tR05VIGxpbmtlcgorQUNfREVGVU4oW0xUX1BBVEhfTERdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisKK0FDX0FSR19XSVRIKFtnbnUtbGRdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCisJW2Fzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sCisgICAgW3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllc10sCisgICAgW3dpdGhfZ251X2xkPW5vXSlkbmwKKworYWNfcHJvZz1sZAoraWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgIyBDaGVjayBpZiBnY2MgLXByaW50LXByb2ctbmFtZT1sZCBnaXZlcyBhIHBhdGguCisgIEFDX01TR19DSEVDS0lORyhbZm9yIGxkIHVzZWQgYnkgJENDXSkKKyAgY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqKQorICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKKyAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjUgfCB0ciAtZCAnXDAxNSdgIDs7CisgICopCisgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1YCA7OworICBlc2FjCisgIGNhc2UgJGFjX3Byb2cgaW4KKyAgICAjIEFjY2VwdCBhYnNvbHV0ZSBwYXRocy4KKyAgICBbW1xcL11dKiB8ID86W1tcXC9dXSopCisgICAgICByZV9kaXJlbHQ9Jy9bW14vXV1bW14vXV0qL1wuXC4vJworICAgICAgIyBDYW5vbmljYWxpemUgdGhlIHBhdGhuYW1lIG9mIGxkCisgICAgICBhY19wcm9nPWAkRUNITyAiJGFjX3Byb2cifCAkU0VEICdzJVxcXFwlLyVnJ2AKKyAgICAgIHdoaWxlICRFQ0hPICIkYWNfcHJvZyIgfCAkR1JFUCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KKwlhY19wcm9nPWAkRUNITyAkYWNfcHJvZ3wgJFNFRCAicyUkcmVfZGlyZWx0JS8lImAKKyAgICAgIGRvbmUKKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9IiRhY19wcm9nIgorICAgICAgOzsKKyAgIiIpCisgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCisgICAgYWNfcHJvZz1sZAorICAgIDs7CisgICopCisgICAgIyBJZiBpdCBpcyByZWxhdGl2ZSwgdGhlbiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBsZCBpbiBQQVRILgorICAgIHdpdGhfZ251X2xkPXVua25vd24KKyAgICA7OworICBlc2FjCitlbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKK2Vsc2UKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igbm9uLUdOVSBsZF0pCitmaQorQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfTEQsCitbaWYgdGVzdCAteiAiJExEIjsgdGhlbgorICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ciIHx8IHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ckYWNfZXhlZXh0IjsgdGhlbgorICAgICAgbHRfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKKyAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKKyAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCisgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KKyAgICAgIGNhc2UgYCIkbHRfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgorICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCisJdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworCTs7CisgICAgICAqKQorCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0geWVzICYmIGJyZWFrCisJOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICBkb25lCisgIElGUz0iJGx0X3NhdmVfaWZzIgorZWxzZQorICBsdF9jdl9wYXRoX0xEPSIkTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorZmldKQorTEQ9IiRsdF9jdl9wYXRoX0xEIgoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICBBQ19NU0dfUkVTVUxUKCRMRCkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChubykKK2ZpCit0ZXN0IC16ICIkTEQiICYmIEFDX01TR19FUlJPUihbbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEhdKQorX0xUX1BBVEhfTERfR05VCitBQ19TVUJTVChbTERdKQorCitfTFRfVEFHREVDTChbXSwgW0xEXSwgWzFdLCBbVGhlIGxpbmtlciB1c2VkIHRvIGJ1aWxkIGxpYnJhcmllc10pCitdKSMgTFRfUEFUSF9MRAorCisjIE9sZCBuYW1lczoKK0FVX0FMSUFTKFtBTV9QUk9HX0xEXSwgW0xUX1BBVEhfTERdKQorQVVfQUxJQVMoW0FDX1BST0dfTERdLCBbTFRfUEFUSF9MRF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FNX1BST0dfTERdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfUFJPR19MRF0sIFtdKQorCisKKyMgX0xUX1BBVEhfTERfR05VCisjLSAtLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9QQVRIX0xEX0dOVV0sCitbQUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkXSwgbHRfY3ZfcHJvZ19nbnVfbGQsCitbIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgorY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKypHTlUqIHwgKid3aXRoIEJGRCcqKQorICBsdF9jdl9wcm9nX2dudV9sZD15ZXMKKyAgOzsKKyopCisgIGx0X2N2X3Byb2dfZ251X2xkPW5vCisgIDs7Citlc2FjXSkKK3dpdGhfZ251X2xkPSRsdF9jdl9wcm9nX2dudV9sZAorXSkjIF9MVF9QQVRIX0xEX0dOVQorCisKKyMgX0xUX0NNRF9SRUxPQUQKKyMgLS0tLS0tLS0tLS0tLS0KKyMgZmluZCByZWxvYWQgZmxhZyBmb3IgbGlua2VyCisjICAgLS0gUE9SVE1FIFNvbWUgbGlua2VycyBtYXkgbmVlZCBhIGRpZmZlcmVudCByZWxvYWQgZmxhZy4KK200X2RlZnVuKFtfTFRfQ01EX1JFTE9BRF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXNdLAorICBsdF9jdl9sZF9yZWxvYWRfZmxhZywKKyAgW2x0X2N2X2xkX3JlbG9hZF9mbGFnPSctciddKQorcmVsb2FkX2ZsYWc9JGx0X2N2X2xkX3JlbG9hZF9mbGFnCitjYXNlICRyZWxvYWRfZmxhZyBpbgorIiIgfCAiICIqKSA7OworKikgcmVsb2FkX2ZsYWc9IiAkcmVsb2FkX2ZsYWciIDs7Citlc2FjCityZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyAgICBlbHNlCisgICAgICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgICAgZmkKKyAgICA7OworZXNhYworX0xUX0RFQ0woW10sIFtyZWxvYWRfZmxhZ10sIFsxXSwgW0hvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXNdKWRubAorX0xUX0RFQ0woW10sIFtyZWxvYWRfY21kc10sIFsyXSlkbmwKK10pIyBfTFRfQ01EX1JFTE9BRAorCisKKyMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGhvdyB0byBjaGVjayBmb3IgbGlicmFyeSBkZXBlbmRlbmNpZXMKKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKK200X2RlZnVuKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCittNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gcmVjb2duaXplIGRlcGVuZGVudCBsaWJyYXJpZXNdLAorbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QsCitbbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRNQUdJQ19DTUQnCitsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0KK2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSd1bmtub3duJworIyBOZWVkIHRvIHNldCB0aGUgcHJlY2VkaW5nIHZhcmlhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0CisjIGludGVybGlicmFyeSBkZXBlbmRlbmNpZXMuCisjICdub25lJyAtLSBkZXBlbmRlbmNpZXMgbm90IHN1cHBvcnRlZC4KKyMgYHVua25vd24nIC0tIHNhbWUgYXMgbm9uZSwgYnV0IGRvY3VtZW50cyB0aGF0IHdlIHJlYWxseSBkb24ndCBrbm93LgorIyAncGFzc19hbGwnIC0tIGFsbCBkZXBlbmRlbmNpZXMgcGFzc2VkIHdpdGggbm8gY2hlY2tzLgorIyAndGVzdF9jb21waWxlJyAtLSBjaGVjayBieSBtYWtpbmcgdGVzdCBwcm9ncmFtLgorIyAnZmlsZV9tYWdpYyBbW3JlZ2V4XV0nIC0tIGNoZWNrIGJ5IGxvb2tpbmcgZm9yIGZpbGVzIGluIGxpYnJhcnkgcGF0aAorIyB3aGljaCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KKyMgSWYgeW91IGhhdmUgYGZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQorIyB3aGV0aGVyIGBwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KKworY2FzZSAkaG9zdF9vcyBpbgorYWl4W1s0LTldXSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK2Jlb3MqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitic2RpW1s0NV1dKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tNTF1dU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1pYyBsaWIpJworICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL3Vzci9iaW4vZmlsZSAtTCcKKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3NobGliL2xpYmMuc28KKyAgOzsKKworY3lnd2luKikKKyAgIyBmdW5jX3dpbjMyX2xpYmlkIGlzIGEgc2hlbGwgZnVuY3Rpb24gZGVmaW5lZCBpbiBsdG1haW4uc2gKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgIDs7CisKK21pbmd3KiB8IHB3MzIqKQorICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CisgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAorICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgorICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgIGVsc2UKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKyAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgIGZpCisgIDs7CisKK2NlZ2NjKQorICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JworICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgIDs7CisKK2RhcndpbiogfCByaGFwc29keSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK2ZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCisgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICBpKjg2ICkKKyAgICAgICMgTm90IHN1cmUgd2hldGhlciB0aGUgcHJlc2VuY2Ugb2YgT3BlbkJTRCBoZXJlIHdhcyBhIG1pc3Rha2UuCisgICAgICAjIExldCdzIGFjY2VwdCBib3RoIG9mIHRoZW0gdW50aWwgdGhpcyBpcyBjbGVhcmVkIHVwLgorICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKEZyZWVCU0R8T3BlbkJTRHxEcmFnb25GbHkpL2lbWzMtOV1dODYgKGNvbXBhY3QgKT9kZW1hbmQgcGFnZWQgc2hhcmVkIGxpYnJhcnknCisgICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCisgICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvdXNyL2xpYi9saWJjLnNvLipgCisgICAgICA7OworICAgIGVzYWMKKyAgZWxzZQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIGZpCisgIDs7CisKK2dudSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK2hwdXgxMC4yMCogfCBocHV4MTEqKQorICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCisgIGNhc2UgJGhvc3RfY3B1IGluCisgIGlhNjQqKQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfEVMRi1bWzAtOV1dW1swLTldXSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gSUE2NCcKKyAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9ocHV4MzIvbGliYy5zbworICAgIDs7CisgIGhwcGEqNjQqKQorICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XSddCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCisgICAgOzsKKyAgKikKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXS5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKKyAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCisgICAgOzsKKyAgZXNhYworICA7OworCitpbnRlcml4W1szLTldXSopCisgICMgUElDIGNvZGUgaXMgYnJva2VuIG9uIEludGVyaXggMy54LCB0aGF0J3Mgd2h5IHxcLmEgbm90IHxfcGljXC5hIGhlcmUKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb3xcLmEpJCcKKyAgOzsKKworaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgY2FzZSAkTEQgaW4KKyAgKi0zMnwqIi0zMiAiKSBsaWJtYWdpYz0zMi1iaXQ7OworICAqLW4zMnwqIi1uMzIgIikgbGlibWFnaWM9TjMyOzsKKyAgKi02NHwqIi02NCAiKSBsaWJtYWdpYz02NC1iaXQ7OworICAqKSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7CisgIGVzYWMKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgorbGludXgqIHwgaypic2QqLWdudSkKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworbmV0YnNkKikKKyAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfF9waWNcLmEpJCcKKyAgZWxzZQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc298X3BpY1wuYSkkJworICBmaQorICA7OworCituZXdvczYqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW01MXV1TQiAoZXhlY3V0YWJsZXxkeW5hbWljIGxpYiknCisgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGlibmxzLnNvCisgIDs7CisKKypudG8qIHwgKnFueCopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK29wZW5ic2QqKQorICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfFwuc298X3BpY1wuYSkkJworICBlbHNlCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfF9waWNcLmEpJCcKKyAgZmkKKyAgOzsKKworb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCityZG9zKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworc29sYXJpcyopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK3N5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitzeXN2NCB8IHN5c3Y0LjMqKQorICBjYXNlICRob3N0X3ZlbmRvciBpbgorICBtb3Rvcm9sYSkKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW01MXV1TQiAoc2hhcmVkIG9iamVjdHxkeW5hbWljIGxpYikgTVtbMC05XV1bWzAtOV1dKiBWZXJzaW9uIFtbMC05XV0nCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL3Vzci9saWIvbGliYy5zbypgCisgICAgOzsKKyAgbmNyKQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgICAgOzsKKyAgc2VxdWVudCkKKyAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL2Jpbi9maWxlJworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTE1dXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliICknCisgICAgOzsKKyAgc25pKQorICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPScvYmluL2ZpbGUnCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9ImZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tMTV1dU0IgZHluYW1pYyBsaWIiCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L2xpYi9saWJjLnNvCisgICAgOzsKKyAgc2llbWVucykKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICAgIDs7CisgIHBjKQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgICAgOzsKKyAgZXNhYworICA7OworCit0cGYqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworZXNhYworXSkKK2ZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCit0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKworX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKKyAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQorX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKKyAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyJdKQorXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKKworCisjIExUX1BBVEhfTk0KKyMgLS0tLS0tLS0tLQorIyBmaW5kIHRoZSBwYXRobmFtZSB0byBhIEJTRC0gb3IgTVMtY29tcGF0aWJsZSBuYW1lIGxpc3RlcgorQUNfREVGVU4oW0xUX1BBVEhfTk1dLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW2ZvciBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIgKG5tKV0sIGx0X2N2X3BhdGhfTk0sCitbaWYgdGVzdCAtbiAiJE5NIjsgdGhlbgorICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgbHRfY3ZfcGF0aF9OTT0iJE5NIgorZWxzZQorICBsdF9ubV90b19jaGVjaz0iJHthY190b29sX3ByZWZpeH1ubSIKKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IiAmJiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorICAgIGx0X25tX3RvX2NoZWNrPSIkbHRfbm1fdG9fY2hlY2sgbm0iCisgIGZpCisgIGZvciBsdF90bXBfbm0gaW4gJGx0X25tX3RvX2NoZWNrOyBkbworICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgIGZvciBhY19kaXIgaW4gJFBBVEggL3Vzci9jY3MvYmluL2VsZiAvdXNyL2Njcy9iaW4gL3Vzci91Y2IgL2JpbjsgZG8KKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICAgIHRtcF9ubT0iJGFjX2Rpci8kbHRfdG1wX25tIgorICAgICAgaWYgdGVzdCAtZiAiJHRtcF9ubSIgfHwgdGVzdCAtZiAiJHRtcF9ubSRhY19leGVleHQiIDsgdGhlbgorCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNELWNvbXBhdCBmbGFnLgorCSMgQWRkaW5nIHRoZSBgc2VkIDFxJyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gSFAtVVgsIHdoaWNoIHNheXM6CisJIyAgIG5tOiB1bmtub3duIG9wdGlvbiAiQiIgaWdub3JlZAorCSMgVHJ1NjQncyBubSBjb21wbGFpbnMgdGhhdCAvZGV2L251bGwgaXMgYW4gaW52YWxpZCBvYmplY3QgZmlsZQorCWNhc2UgYCIkdG1wX25tIiAtQiAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorCSovZGV2L251bGwqIHwgKidJbnZhbGlkIGZpbGUgb3Igb2JqZWN0IHR5cGUnKikKKwkgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLUIiCisJICBicmVhaworCSAgOzsKKwkqKQorCSAgY2FzZSBgIiR0bXBfbm0iIC1wIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCisJICAqL2Rldi9udWxsKikKKwkgICAgbHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSAtcCIKKwkgICAgYnJlYWsKKwkgICAgOzsKKwkgICopCisJICAgIGx0X2N2X3BhdGhfTk09JHtsdF9jdl9wYXRoX05NPSIkdG1wX25tIn0gIyBrZWVwIHRoZSBmaXJzdCBtYXRjaCwgYnV0CisJICAgIGNvbnRpbnVlICMgc28gdGhhdCB3ZSBjYW4gdHJ5IHRvIGZpbmQgb25lIHRoYXQgc3VwcG9ydHMgQlNEIGZsYWdzCisJICAgIDs7CisJICBlc2FjCisJICA7OworCWVzYWMKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICBkb25lCisgIDogJHtsdF9jdl9wYXRoX05NPW5vfQorZmldKQoraWYgdGVzdCAiJGx0X2N2X3BhdGhfTk0iICE9ICJubyI7IHRoZW4KKyAgTk09IiRsdF9jdl9wYXRoX05NIgorZWxzZQorICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KKyAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgWyJkdW1wYmluIC1zeW1ib2xzIiAibGluayAtZHVtcCAtc3ltYm9scyJdLCA6KQorICBBQ19TVUJTVChbRFVNUEJJTl0pCisgIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KKyAgICBOTT0iJERVTVBCSU4iCisgIGZpCitmaQordGVzdCAteiAiJE5NIiAmJiBOTT1ubQorQUNfU1VCU1QoW05NXSkKK19MVF9ERUNMKFtdLCBbTk1dLCBbMV0sIFtBIEJTRC0gb3IgTVMtY29tcGF0aWJsZSBuYW1lIGxpc3Rlcl0pZG5sCisKK0FDX0NBQ0hFX0NIRUNLKFt0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlXSwgW2x0X2N2X25tX2ludGVyZmFjZV0sCisgIFtsdF9jdl9ubV9pbnRlcmZhY2U9IkJTRCBubSIKKyAgZWNobyAiaW50IHNvbWVfdmFyaWFibGUgPSAwOyIgPiBjb25mdGVzdC4kYWNfZXh0CisgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsICIkYWNfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCisgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsICIkTk0gXCJjb25mdGVzdC4kYWNfb2JqZXh0XCIiIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0KQorICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIGNhdCBjb25mdGVzdC5vdXQgPiZBU19NRVNTQUdFX0xPR19GRAorICBpZiAkR1JFUCAnRXh0ZXJuYWwuKnNvbWVfdmFyaWFibGUnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X25tX2ludGVyZmFjZT0iTVMgZHVtcGJpbiIKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QqXSkKK10pIyBMVF9QQVRIX05NCisKKyMgT2xkIG5hbWVzOgorQVVfQUxJQVMoW0FNX1BST0dfTk1dLCBbTFRfUEFUSF9OTV0pCitBVV9BTElBUyhbQUNfUFJPR19OTV0sIFtMVF9QQVRIX05NXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQorZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCisKKworIyBMVF9MSUJfTQorIyAtLS0tLS0tLQorIyBjaGVjayBmb3IgbWF0aCBsaWJyYXJ5CitBQ19ERUZVTihbTFRfTElCX01dLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0xJQk09CitjYXNlICRob3N0IGluCisqLSotYmVvcyogfCAqLSotY3lnd2luKiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQorICAjIFRoZXNlIHN5c3RlbSBkb24ndCBoYXZlIGxpYm0sIG9yIGRvbid0IG5lZWQgaXQKKyAgOzsKKyotbmNyLXN5c3Y0LjMqKQorICBBQ19DSEVDS19MSUIobXcsIF9td3ZhbGlkY2hlY2tsLCBMSUJNPSItbG13IikKKyAgQUNfQ0hFQ0tfTElCKG0sIGNvcywgTElCTT0iJExJQk0gLWxtIikKKyAgOzsKKyopCisgIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09Ii1sbSIpCisgIDs7Citlc2FjCitBQ19TVUJTVChbTElCTV0pCitdKSMgTFRfTElCX00KKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19DSEVDS19MSUJNXSwgW0xUX0xJQl9NXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfQ0hFQ0tfTElCTV0sIFtdKQorCisKKyMgX0xUX0NPTVBJTEVSX05PX1JUVEkoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX05PX1JUVEldLAorW200X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAorCitfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CisKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKKworICBfTFRfQ09NUElMRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9uc10sCisgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMsCisgICAgWy1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLCBbXSwKKyAgICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiXSkKK2ZpCitfTFRfVEFHREVDTChbbm9fYnVpbHRpbl9mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnXSwgWzFdLAorCVtDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zXSkKK10pIyBfTFRfQ09NUElMRVJfTk9fUlRUSQorCisKKyMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAorCisjIENoZWNrIGZvciBjb21tYW5kIHRvIGdyYWIgdGhlIHJhdyBzeW1ib2wgbmFtZSBmb2xsb3dlZCBieSBDIHN5bWJvbCBmcm9tIG5tLgorQUNfTVNHX0NIRUNLSU5HKFtjb21tYW5kIHRvIHBhcnNlICROTSBvdXRwdXQgZnJvbSAkY29tcGlsZXIgb2JqZWN0XSkKK0FDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sCitbCisjIFRoZXNlIGFyZSBzYW5lIGRlZmF1bHRzIHRoYXQgd29yayBvbiBhdCBsZWFzdCBhIGZldyBvbGQgc3lzdGVtcy4KKyMgW1RoZXkgY29tZSBmcm9tIFVsdHJpeC4gIFdoYXQgY291bGQgYmUgb2xkZXIgdGhhbiBVbHRyaXg/ISEgOyldCisKKyMgQ2hhcmFjdGVyIGNsYXNzIGRlc2NyaWJpbmcgTk0gZ2xvYmFsIHN5bWJvbCBjb2Rlcy4KK3N5bWNvZGU9J1tbQkNERUdSU1RdXScKKworIyBSZWdleHAgdG8gbWF0Y2ggc3ltYm9scyB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIEMuCitzeW1wYXQ9J1woW1tfQS1aYS16XV1bW19BLVphLXowLTldXSpcKScKKworIyBEZWZpbmUgc3lzdGVtLXNwZWNpZmljIHZhcmlhYmxlcy4KK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeCopCisgIHN5bWNvZGU9J1tbQkNEVF1dJworICA7OworY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICBzeW1jb2RlPSdbW0FCQ0RHSVNUV11dJworICA7OworaHB1eCopCisgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgc3ltY29kZT0nW1tBQkNERUdSU1RdXScKKyAgZmkKKyAgOzsKK2lyaXgqIHwgbm9uc3RvcHV4KikKKyAgc3ltY29kZT0nW1tCQ0RFR1JTVF1dJworICA7Oworb3NmKikKKyAgc3ltY29kZT0nW1tCQ0RFR1FSU1RdXScKKyAgOzsKK3NvbGFyaXMqKQorICBzeW1jb2RlPSdbW0JEUlRdXScKKyAgOzsKK3NjbzMuMnY1KikKKyAgc3ltY29kZT0nW1tEVF1dJworICA7Oworc3lzdjQuMnV3MiopCisgIHN5bWNvZGU9J1tbRFRdXScKKyAgOzsKK3N5c3Y1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCisgIHN5bWNvZGU9J1tbQUJEVF1dJworICA7Oworc3lzdjQpCisgIHN5bWNvZGU9J1tbREZOU1RVXV0nCisgIDs7Citlc2FjCisKKyMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHVzZSBpdHMgc3RhbmRhcmQgc3ltYm9sIGNvZGVzLgorY2FzZSBgJE5NIC1WIDI+JjFgIGluCisqR05VKiB8ICond2l0aCBCRkQnKikKKyAgc3ltY29kZT0nW1tBQkNER0lSU1RXXV0nIDs7Citlc2FjCisKKyMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIGEgcHJvcGVyIEMgZGVjbGFyYXRpb24uCisjIFNvbWUgc3lzdGVtcyAoZXNwLiBvbiBpYTY0KSBsaW5rIGRhdGEgYW5kIGNvZGUgc3ltYm9scyBkaWZmZXJlbnRseSwKKyMgc28gdXNlIHRoaXMgZ2VuZXJhbCBhcHByb2FjaC4KK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisKKyMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKworIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCitvcHRfY3I9CitjYXNlICRidWlsZF9vcyBpbgorbWluZ3cqKQorICBvcHRfY3I9YCRFQ0hPICd4XHswLDFcfScgfCB0ciB4ICdcMDE1J2AgIyBvcHRpb24gY3IgaW4gcmVnZXhwCisgIDs7Citlc2FjCisKKyMgVHJ5IHdpdGhvdXQgYSBwcmVmaXggdW5kZXJzY29yZSwgdGhlbiB3aXRoIGl0LgorZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworCisgICMgVHJhbnNmb3JtIHN5bWNvZGUsIHN5bXBhdCwgYW5kIHN5bXByZnggaW50byBhIHJhdyBzeW1ib2wgYW5kIGEgQyBzeW1ib2wuCisgIHN5bXhmcm09IlxcMSAkYWNfc3ltcHJmeFxcMiBcXDIiCisKKyAgIyBXcml0ZSB0aGUgcmF3IGFuZCBDIGlkZW50aWZpZXJzLgorICBpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorICAgICMgRmFrZSBpdCBmb3IgZHVtcGJpbiBhbmQgc2F5IFQgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9uCisgICAgIyBhbmQgRCBmb3IgYW55IGdsb2JhbCB2YXJpYWJsZS4KKyAgICAjIEFsc28gZmluZCBDKysgYW5kIF9fZmFzdGNhbGwgc3ltYm9scyBmcm9tIE1TVkMrKywKKyAgICAjIHdoaWNoIHN0YXJ0IHdpdGggQCBvciA/LgorICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRBV0sgWyciXAorIiAgICAge2xhc3Rfc2VjdGlvbj1zZWN0aW9uOyBzZWN0aW9uPVwkIDN9OyJcCisiICAgICAvU2VjdGlvbiBsZW5ndGggLiojcmVsb2NzLioocGljayBhbnkpL3toaWRlW2xhc3Rfc2VjdGlvbl09MX07IlwKKyIgICAgIFwkIDAhfi9FeHRlcm5hbCAqXHwve25leHR9OyJcCisiICAgICAvIDArIFVOREVGIC97bmV4dH07IC8gVU5ERUYgXChbXnxdXCkqKCkve25leHR9OyJcCisiICAgICB7aWYoaGlkZVtzZWN0aW9uXSkgbmV4dH07IlwKKyIgICAgIHtmPTB9OyBcJCAwfi9cKFwpLipcfC97Zj0xfTsge3ByaW50ZiBmID8gXCJUIFwiIDogXCJEIFwifTsiXAorIiAgICAge3NwbGl0KFwkIDAsIGEsIC9cfHxcci8pOyBzcGxpdChhWzJdLCBzKX07IlwKKyIgICAgIHNbMV1+L15bQD9dL3twcmludCBzWzFdLCBzWzFdOyBuZXh0fTsiXAorIiAgICAgc1sxXX5wcmZ4IHtzcGxpdChzWzFdLHQsXCJAXCIpOyBwcmludCB0WzFdLCBzdWJzdHIodFsxXSxsZW5ndGgocHJmeCkpfSJcCisiICAgICAnIHByZng9XiRhY19zeW1wcmZ4XSIKKyAgZWxzZQorICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWwkgXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWwkgXV1bWwkgXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgIGZpCisKKyAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgIHBpcGVfd29ya3M9bm8KKworICBybSAtZiBjb25mdGVzdCoKKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKK2NoYXIgbm1fdGVzdF92YXI7Cit2b2lkIG5tX3Rlc3RfZnVuYyh2b2lkKTsKK3ZvaWQgbm1fdGVzdF9mdW5jKHZvaWQpe30KKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCitpbnQgbWFpbigpe25tX3Rlc3RfdmFyPSdhJztubV90ZXN0X2Z1bmMoKTtyZXR1cm4oMCk7fQorX0xUX0VPRgorCisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCisgICAgbmxpc3Q9Y29uZnRlc3Qubm0KKyAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgorICAgICAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KKyAgICAgIGlmIHNvcnQgIiRubGlzdCIgfCB1bmlxID4gIiRubGlzdCJUOyB0aGVuCisJbXYgLWYgIiRubGlzdCJUICIkbmxpc3QiCisgICAgICBlbHNlCisJcm0gLWYgIiRubGlzdCJUCisgICAgICBmaQorCisgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIHNuYWdnZWQgYWxsIHRoZSBzeW1ib2xzIHdlIG5lZWQuCisgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworX0xUX0VPRgorCSAgIyBOb3cgZ2VuZXJhdGUgdGhlIHN5bWJvbCBmaWxlLgorCSAgZXZhbCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IiB8ICRHUkVQIC12IG1haW4gPj4gY29uZnRlc3QuJGFjX2V4dCcKKworCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisKKy8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KK2NvbnN0IHN0cnVjdCB7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisgIHZvaWQgICAgICAgKmFkZHJlc3M7Cit9CitsdF9fUFJPR1JBTV9fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW1tdXSA9Cit7CisgIHsgIkBQUk9HUkFNQCIsICh2b2lkICopIDAgfSwKK19MVF9FT0YKKwkgICRTRUQgInMvXiRzeW1jb2RlJHN5bWNvZGUqIFwoLipcKSBcKC4qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sLyIgPCAiJG5saXN0IiB8ICRHUkVQIC12IG1haW4gPj4gY29uZnRlc3QuJGFjX2V4dAorCSAgY2F0IDw8XF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorICB7MCwgKHZvaWQgKikgMH0KK307CisKKy8qIFRoaXMgd29ya3MgYXJvdW5kIGEgcHJvYmxlbSBpbiBGcmVlQlNEIGxpbmtlciAqLworI2lmZGVmIEZSRUVCU0RfV09SS0FST1VORAorc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyAgcmV0dXJuIGx0X19QUk9HUkFNX19MVFhfcHJlbG9hZGVkX3N5bWJvbHM7Cit9CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKK19MVF9FT0YKKwkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKwkgIGx0X3NhdmVfTElCUz0iJExJQlMiCisJICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgorCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorCSAgICBwaXBlX3dvcmtzPXllcworCSAgZmkKKwkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCisJICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKwllbHNlCisJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisJZmkKKyAgICAgIGVsc2UKKwllY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X3ZhciBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZWNobyAiY2Fubm90IHJ1biAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgIGZpCisgIGVsc2UKKyAgICBlY2hvICIkcHJvZ25hbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mdHN0KgorCisgICMgRG8gbm90IHVzZSB0aGUgZ2xvYmFsX3N5bWJvbF9waXBlIHVubGVzcyBpdCB3b3Jrcy4KKyAgaWYgdGVzdCAiJHBpcGVfd29ya3MiID0geWVzOyB0aGVuCisgICAgYnJlYWsKKyAgZWxzZQorICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9CisgIGZpCitkb25lCitdKQoraWYgdGVzdCAteiAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPQorZmkKK2lmIHRlc3QgLXogIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIjsgdGhlbgorICBBQ19NU0dfUkVTVUxUKGZhaWxlZCkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChvaykKK2ZpCisKK19MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKKyAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCitfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFsxXSwKKyAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBwcm9wZXIgQyBkZWNsYXJhdGlvbl0pCitfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc10sCisgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwgWzFdLAorICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXJdKQorX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sCisgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCisgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKK10pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUworCisKKyMgX0xUX0NPTVBJTEVSX1BJQyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DT01QSUxFUl9QSUNdLAorW200X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9CitfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CitfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisKK0FDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQorbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgorICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKworICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBhaXgqKQorICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICBmaQorICAgICAgOzsKKworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIHBvd2VycGMpCisgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0CisgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworICAgICAgICA7OworICAgICAgbTY4aykKKyAgICAgICAgICAgICMgRklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLCBidXQKKyAgICAgICAgICAgICMgYWRkaW5nIHRoZSBgLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAorICAgICAgICAgICAgIyBsaWtlIGAtbTY4MDQwJy4KKyAgICAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLW02ODAyMCAtcmVzaWRlbnQzMiAtbWFsd2F5cy1yZXN0b3JlLWE0JworICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgIGJlb3MqIHwgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KiB8IG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciB0aGVzZSBPU2VzLgorICAgICAgOzsKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKyAgICAgICMgQWx0aG91Z2ggdGhlIGN5Z3dpbiBnY2MgaWdub3JlcyAtZlBJQywgc3RpbGwgbmVlZCB0aGlzIGZvciBvbGQtc3R5bGUKKyAgICAgICMgKC0tZGlzYWJsZS1hdXRvLWltcG9ydCkgbGlicmFyaWVzCisgICAgICBtNF9pZihbJDFdLCBbR0NKXSwgW10sCisJW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisgICAgICA7OworICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCisgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJworICAgICAgOzsKKyAgICAqZGpncHAqKQorICAgICAgIyBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBsaWJyYXJpZXMgYXQgYWxsCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisgICAgICA7OworICAgIGludGVyaXhbWzMtOV1dKikKKyAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCisgICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KKyAgICAgIDs7CisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0tS2NvbmZvcm1fcGljCisgICAgICBmaQorICAgICAgOzsKKyAgICBocHV4KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciA2NC1iaXQgUEEgSFAtVVgsIGJ1dCBub3QgZm9yIDMyLWJpdAorICAgICAgIyBQQSBIUC1VWC4gIE9uIElBNjQgSFAtVVgsIFBJQyBpcyB0aGUgZGVmYXVsdCBidXQgdGhlIHBpYyBmbGFnCisgICAgICAjIHNldHMgdGhlIGRlZmF1bHQgVExTIG1vZGVsIGFuZCBhZmZlY3RzIGlubGluaW5nLgorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIGhwcGEqNjQqKQorCTs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgKnFueCogfCAqbnRvKikKKyAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCisgICAgICAjIGl0IHdpbGwgY29yZWR1bXAuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDIC1zaGFyZWQnCisgICAgICA7OworICAgICopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworICAgICAgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXhbWzQtOV1dKikKKwkjIEFsbCBBSVggY29kZSBpcyBQSUMuCisJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkgICMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCWVsc2UKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLWJuc28gLWJJOi9saWIvc3lzY2FsbHMuZXhwJworCWZpCisJOzsKKyAgICAgIGNob3J1cyopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwljeGNoNjgqKQorCSAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKKwkgICMgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSItLW5vX2F1dG9faW5zdGFudGlhdGlvbiAtdSBfX21haW4gLXUgX19wcmVtYWluIC11IF9hYm9ydCAtciAkQ09PTF9ESVIvbGliL2xpYk9yYi5hICRNVk1FX0RJUi9saWIvQ0MvbGliQy5hICRNVk1FX0RJUi9saWIvY2xhc3NpeC9saWJjeC5zLmEiCisJICA7OworCWVzYWMKKwk7OworICAgICAgZGd1eCopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIGVjKysqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICA7OworCSAgZ2hjeCopCisJICAgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisJIyBGcmVlQlNEIHVzZXMgR05VIEMrKworCTs7CisgICAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgQ0MqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKwkgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPScrWicKKwkgICAgZmkKKwkgICAgOzsKKwkgIGFDQyopCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJworCSAgICBjYXNlICRob3N0X2NwdSBpbgorCSAgICBocHBhKjY0KnxpYTY0KikKKwkgICAgICAjICtaIHRoZSBkZWZhdWx0CisJICAgICAgOzsKKwkgICAgKikKKwkgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JytaJworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBpbnRlcml4KikKKwkjIFRoaXMgaXMgYzg5LCB3aGljaCBpcyBNUyBWaXN1YWwgQysrIChubyBzaGFyZWQgbGlicykKKwkjIEFueW9uZSB3YW50cyB0byBkbyBhIHBvcnQ/CisJOzsKKyAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisJICAgICMgQ0MgcGljIGZsYWcgLUtQSUMgaXMgdGhlIGRlZmF1bHQuCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgbGludXgqIHwgaypic2QqLWdudSkKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgS0NDKikKKwkgICAgIyBLQUkgQysrIENvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctLWJhY2tlbmQgLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwkgICAgOzsKKwkgIGVjcGMqICkKKwkgICAgIyBvbGQgSW50ZWwgQysrIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCSAgICA7OworCSAgaWNwYyogKQorCSAgICAjIEludGVsIEMrKywgdXNlZCB0byBiZSBpbmNvbXBhdGlibGUgd2l0aCBHQ0MuCisJICAgICMgSUNDIDEwIGRvZXNuJ3QgYWNjZXB0IC1LUElDIGFueSBtb3JlLgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCSAgICA7OworCSAgcGdDQyogfCBwZ2NwcCopCisJICAgICMgUG9ydGxhbmQgR3JvdXAgQysrIGNvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mcGljJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgICA7OworCSAgY3h4KikKKwkgICAgIyBDb21wYXEgQysrCisJICAgICMgTWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBpcyBlbXB0eS4gIEl0IGFwcGVhcnMgdGhhdCBhbGwgQWxwaGEKKwkgICAgIyBMaW51eCBhbmQgQ29tcGFxIFRydTY0IFVuaXggb2JqZWN0cyBhcmUgUElDLgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisJICAgIDs7CisJICB4bGMqIHwgeGxDKikKKwkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctcXN0YXRpY2xpbmsnCisJICAgIDs7CisJICAqKQorCSAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkgICAgKlN1blwgQyopCisJICAgICAgIyBTdW4gQysrIDUuOQorCSAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIGx5bnhvcyopCisJOzsKKyAgICAgIG04OGsqKQorCTs7CisgICAgICBtdnMqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBjeHgqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1XIGMsZXhwb3J0YWxsJworCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIG5ldGJzZCopCisJOzsKKyAgICAgICpxbngqIHwgKm50byopCisgICAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCisgICAgICAgICMgaXQgd2lsbCBjb3JlZHVtcC4KKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQyAtc2hhcmVkJworICAgICAgICA7OworICAgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBLQ0MqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLS1iYWNrZW5kIC1XbCwnCisJICAgIDs7CisJICBSQ0MqKQorCSAgICAjIFJhdGlvbmFsIEMrKyAyLjQuMQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIDs7CisJICBjeHgqKQorCSAgICAjIERpZ2l0YWwvQ29tcGFxIEMrKworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQorCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBwc29zKikKKwk7OworICAgICAgc29sYXJpcyopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKikKKwkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJworCSAgICA7OworCSAgZ2N4KikKKwkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIHN1bm9zNCopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKikKKwkgICAgIyBTdW4gQysrIDQueAorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICAgIDs7CisJICBsY2MqKQorCSAgICAjIEx1Y2lkCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgICA7OworCWVzYWMKKwk7OworICAgICAgdGFuZGVtKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgTkNDKikKKwkgICAgIyBOb25TdG9wLVVYIE5DQyAzLjIwCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgdnh3b3JrcyopCisJOzsKKyAgICAgICopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX2Nhbl9idWlsZF9zaGFyZWQsICQxKT1ubworCTs7CisgICAgZXNhYworICBmaQorXSwKK1sKKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgqKQorICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICBmaQorICAgICAgOzsKKworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIHBvd2VycGMpCisgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0CisgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworICAgICAgICA7OworICAgICAgbTY4aykKKyAgICAgICAgICAgICMgRklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLCBidXQKKyAgICAgICAgICAgICMgYWRkaW5nIHRoZSBgLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAorICAgICAgICAgICAgIyBsaWtlIGAtbTY4MDQwJy4KKyAgICAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLW02ODAyMCAtcmVzaWRlbnQzMiAtbWFsd2F5cy1yZXN0b3JlLWE0JworICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgIGJlb3MqIHwgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KiB8IG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciB0aGVzZSBPU2VzLgorICAgICAgOzsKKworICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCisgICAgICAjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisgICAgICAjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorICAgICAgIyBBbHRob3VnaCB0aGUgY3lnd2luIGdjYyBpZ25vcmVzIC1mUElDLCBzdGlsbCBuZWVkIHRoaXMgZm9yIG9sZC1zdHlsZQorICAgICAgIyAoLS1kaXNhYmxlLWF1dG8taW1wb3J0KSBsaWJyYXJpZXMKKyAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKwlbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKyAgICAgIDs7CisKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQorICAgICAgIyBDb21tb24gc3ltYm9scyBub3QgYWxsb3dlZCBpbiBNSF9EWUxJQiBmaWxlcworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKKyAgICAgIDs7CisKKyAgICBocHV4KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciA2NC1iaXQgUEEgSFAtVVgsIGJ1dCBub3QgZm9yIDMyLWJpdAorICAgICAgIyBQQSBIUC1VWC4gIE9uIElBNjQgSFAtVVgsIFBJQyBpcyB0aGUgZGVmYXVsdCBidXQgdGhlIHBpYyBmbGFnCisgICAgICAjIHNldHMgdGhlIGRlZmF1bHQgVExTIG1vZGVsIGFuZCBhZmZlY3RzIGlubGluaW5nLgorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIGhwcGEqNjQqKQorCSMgK1ogdGhlIGRlZmF1bHQKKwk7OworICAgICAgKikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworCTs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgaW50ZXJpeFtbMy05XV0qKQorICAgICAgIyBJbnRlcml4IDMueCBnY2MgLWZwaWMvLWZQSUMgb3B0aW9ucyBnZW5lcmF0ZSBicm9rZW4gY29kZS4KKyAgICAgICMgSW5zdGVhZCwgd2UgcmVsb2NhdGUgc2hhcmVkIGxpYnJhcmllcyBhdCBydW50aW1lLgorICAgICAgOzsKKworICAgIG1zZG9zZGpncHAqKQorICAgICAgIyBKdXN0IGJlY2F1c2Ugd2UgdXNlIEdDQyBkb2Vzbid0IG1lYW4gd2Ugc3VkZGVubHkgZ2V0IHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgICMgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlbS4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKyAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KKyAgICAgIDs7CisKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgIyBRTlggdXNlcyBHTlUgQysrLCBidXQgbmVlZCB0byBkZWZpbmUgLXNoYXJlZCBvcHRpb24gdG9vLCBvdGhlcndpc2UKKyAgICAgICMgaXQgd2lsbCBjb3JlZHVtcC4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMgLXNoYXJlZCcKKyAgICAgIDs7CisKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPS1LY29uZm9ybV9waWMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisgICAgICA7OworICAgIGVzYWMKKyAgZWxzZQorICAgICMgUE9SVE1FIENoZWNrIGZvciBmbGFnIHRvIHBhc3MgbGlua2VyIGZsYWdzIHRocm91Z2ggdGhlIHN5c3RlbSBjb21waWxlci4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4KikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctYm5zbyAtYkk6L2xpYi9zeXNjYWxscy5leHAnCisgICAgICBmaQorICAgICAgOzsKKworICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCisgICAgICAjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisgICAgICAjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorCVtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorICAgICAgOzsKKworICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSUE2NCBIUC1VWCBhbmQgNjQtYml0IEhQLVVYLCBidXQKKyAgICAgICMgbm90IGZvciBQQSBIUC1VWC4KKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBocHBhKjY0KnxpYTY0KikKKwkjICtaIHRoZSBkZWZhdWx0CisJOzsKKyAgICAgICopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPScrWicKKwk7OworICAgICAgZXNhYworICAgICAgIyBJcyB0aGVyZSBhIGJldHRlciBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyB0aGF0IHdvcmtzIHdpdGggdGhlIGJ1bmRsZWQgQ0M/CisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJworICAgICAgOzsKKworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgICMgUElDICh3aXRoIC1LUElDKSBpcyB0aGUgZGVmYXVsdC4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisgICAgICA7OworCisgICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KKyAgICAgIGVjYyopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisgICAgICAgIDs7CisgICAgICAjIGljYyB1c2VkIHRvIGJlIGluY29tcGF0aWJsZSB3aXRoIEdDQy4KKyAgICAgICMgSUNDIDEwIGRvZXNuJ3QgYWNjZXB0IC1LUElDIGFueSBtb3JlLgorICAgICAgaWNjKiB8IGlmb3J0KikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKyAgICAgICAgOzsKKyAgICAgICMgTGFoZXkgRm9ydHJhbiA4LjEuCisgICAgICBsZjk1KikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLS1zdGF0aWMnCisJOzsKKyAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQorICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZnBpYycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgICA7OworICAgICAgY2NjKikKKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICAgICMgQWxsIEFscGhhIGNvZGUgaXMgUElDLgorICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworICAgICAgICA7OworICAgICAgeGwqKQorCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSBvbiBQUEMKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xcGljJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJworCTs7CisgICAgICAqKQorCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIEMqKQorCSAgIyBTdW4gQyA1LjkKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICA7OworCSpTdW5cIEYqKQorCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nJworCSAgOzsKKwllc2FjCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBuZXdzb3M2KQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICA7OworCisgICAgKm50byogfCAqcW54KikKKyAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCisgICAgICAjIGl0IHdpbGwgY29yZWR1bXAuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDIC1zaGFyZWQnCisgICAgICA7OworCisgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICAjIEFsbCBPU0YvMSBjb2RlIGlzIFBJQy4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisgICAgICA7OworCisgICAgcmRvcyopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworICAgICAgOzsKKworICAgIHNvbGFyaXMqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBzdW5vczQqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICA7OworCisgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgIDs7CisKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS2NvbmZvcm1fcGljJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICBmaQorICAgICAgOzsKKworICAgIHN5c3Y1KiB8IHVuaXh3YXJlKiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCBPcGVuVU5JWCopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgIHVuaWNvcyopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICB1dHM0KikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICA7OworCisgICAgKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKyAgICAgIDs7CisgICAgZXNhYworICBmaQorXSkKK2Nhc2UgJGhvc3Rfb3MgaW4KKyAgIyBGb3IgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBzdXBwb3J0IFBJQywgLURQSUMgaXMgbWVhbmluZ2xlc3M6CisgICpkamdwcCopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorICAgIDs7CisgICopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCisgICAgOzsKK2VzYWMKK0FDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQorCisjCisjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCisjCitpZiB0ZXN0IC1uICIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIjsgdGhlbgorICBfTFRfQ09NUElMRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgUElDIGZsYWcgJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSB3b3Jrc10sCisgICAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MsICQxKV0sCisgICAgWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKV0sIFtdLAorICAgIFtjYXNlICRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgaW4KKyAgICAgIiIgfCAiICIqKSA7OworICAgICAqKSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiAkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIiA7OworICAgICBlc2FjXSwKKyAgICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vXSkKK2ZpCitfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCisJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCisKKyMKKyMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyMKK3dsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKSBldmFsIGx0X3RtcF9zdGF0aWNfZmxhZz1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSlcIgorX0xUX0xJTktFUl9PUFRJT04oW2lmICRjb21waWxlciBzdGF0aWMgZmxhZyAkbHRfdG1wX3N0YXRpY19mbGFnIHdvcmtzXSwKKyAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3JrcywgJDEpLAorICAkbHRfdG1wX3N0YXRpY19mbGFnLAorICBbXSwKKyAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT1dKQorX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9zdGF0aWNdLCBbMV0sCisJW0NvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmddKQorXSkjIF9MVF9DT01QSUxFUl9QSUMKKworCisjIF9MVF9MSU5LRVJfU0hMSUJTKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZWUgaWYgdGhlIGxpbmtlciBzdXBwb3J0cyBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzLgorbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKK1tBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAorbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCittNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKK200X2lmKFskMV0sIFtDWFhdLCBbCisgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgYWl4W1s0LTldXSopCisgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCisgICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorICAgIGlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgZWxzZQorICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgZmkKKyAgICA7OworICBwdzMyKikKKyAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0iJGx0ZGxsX2NtZHMiCisgIDs7CisgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCisgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICA7OworICAqKQorICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIDs7CisgIGVzYWMKKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCitdLCBbCisgIHJ1bnBhdGhfdmFyPQorICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CisgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0KKyAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9CisgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0KKyAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubworICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQorICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKKyAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgorICBfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9CisgIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CisgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPQorICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzLCAkMSk9CisgIF9MVF9UQUdWQVIodGhyZWFkX3NhZmVfZmxhZ19zcGVjLCAkMSk9CisgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KKyAgIyBpbmNsdWRlX2V4cHN5bXMgc2hvdWxkIGJlIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3ltYm9scyB0byBiZSAqYWx3YXlzKgorICAjIGluY2x1ZGVkIGluIHRoZSBzeW1ib2wgbGlzdAorICBfTFRfVEFHVkFSKGluY2x1ZGVfZXhwc3ltcywgJDEpPQorICAjIGV4Y2x1ZGVfZXhwc3ltcyBjYW4gYmUgYW4gZXh0ZW5kZWQgcmVnZXhwIG9mIHN5bWJvbHMgdG8gZXhjbHVkZQorICAjIGl0IHdpbGwgYmUgd3JhcHBlZCBieSBgICgnIGFuZCBgKSQnLCBzbyBvbmUgbXVzdCBub3QgbWF0Y2ggYmVnaW5uaW5nIG9yCisgICMgZW5kIG9mIGxpbmUuICBFeGFtcGxlOiBgYXxiY3wuKmQuKicgd2lsbCBleGNsdWRlIHRoZSBzeW1ib2xzIGBhJyBhbmQgYGJjJywKKyAgIyBhcyB3ZWxsIGFzIGFueSBzeW1ib2wgdGhhdCBjb250YWlucyBgZCcuCisgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorICAjIEFsdGhvdWdoIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXyBpcyBhIHZhbGlkIHN5bWJvbCBDIG5hbWUsIG1vc3QgYS5vdXQKKyAgIyBwbGF0Zm9ybXMgKGFiKXVzZSBpdCBpbiBQSUMgY29kZSwgYnV0IHRoZWlyIGxpbmtlcnMgZ2V0IGNvbmZ1c2VkIGlmCisgICMgdGhlIHN5bWJvbCBpcyBleHBsaWNpdGx5IHJlZmVyZW5jZWQuICBTaW5jZSBwb3J0YWJsZSBjb2RlIGNhbm5vdAorICAjIHJlbHkgb24gdGhpcyBzeW1ib2wgbmFtZSwgaXQncyBwcm9iYWJseSBmaW5lIHRvIG5ldmVyIGluY2x1ZGUgaXQgaW4KKyAgIyBwcmVsb2FkZWQgc3ltYm9sIHRhYmxlcy4KKyAgIyBFeGNsdWRlIHNoYXJlZCBsaWJyYXJ5IGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBzeW1ib2xzLgorZG5sIE5vdGUgYWxzbyBhZGp1c3QgZXhjbHVkZV9leHBzeW1zIGZvciBDKysgYWJvdmUuCisgIGV4dHJhY3RfZXhwc3ltc19jbWRzPQorCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKKyAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICB3aXRoX2dudV9sZD1ubworICAgIGZpCisgICAgOzsKKyAgaW50ZXJpeCopCisgICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKKyAgICB3aXRoX2dudV9sZD15ZXMKKyAgICA7OworICBvcGVuYnNkKikKKyAgICB3aXRoX2dudV9sZD1ubworICAgIDs7CisgIGVzYWMKKworICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKKyAgICB3bGFyYz0nJHt3bH0nCisKKyAgICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQorICAgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQorICAgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KKyAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAorICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KKyAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKKyAgICBlbHNlCisgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisgICAgZmkKKyAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KKyAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICpcIFtbMDFdXS4qIHwgKlwgMi5bWzAtOV1dLiogfCAqXCAyLjEwLiopIDs7ICMgY2F0Y2ggdmVyc2lvbnMgPCAyLjExCisgICAgICAqXCAyLjExLjkzLjAuMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIFJINy4zIC4uLgorICAgICAgKlwgMi4xMS45Mi4wLjEyXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgTWFuZHJha2UgOC4yIC4uLgorICAgICAgKlwgMi4xMS4qKSA7OyAjIG90aGVyIDIuMTEgdmVyc2lvbnMKKyAgICAgICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsKKyAgICBlc2FjCisKKyAgICAjIFNlZSBpZiBHTlUgbGQgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4W1szLTldXSopCisgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJY2F0IDw8X0xUX0VPRiAxPiYyCisKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgorKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91CisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICisqKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgorCitfTFRfRU9GCisgICAgICBmaQorICAgICAgOzsKKworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIHBvd2VycGMpCisgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0CisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPScnCisgICAgICAgIDs7CisgICAgICBtNjhrKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgTkFNRSAkbGlibmFtZSIgPiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIExJQlJBUllfSUQgMSIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBWRVJTSU9OICRtYWpvciIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBSRVZJU0lPTiAkcmV2aXNpb24iID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEFSICRBUl9GTEFHUyAkbGliICRsaWJvYmpzfiRSQU5MSUIgJGxpYn4oY2QgJG91dHB1dF9vYmpkaXIgJiYgYTJpeGxpYnJhcnkgLTMyKScKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBiZW9zKikKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkjIEpvc2VwaCBCZWNrZW5iYWNoIDxqcmIzQGJlc3QuY29tPiBzYXlzIHNvbWUgcmVsZWFzZXMgb2YgZ2NjCisJIyBzdXBwb3J0IC0tdW5kZWZpbmVkLiAgVGhpcyBkZXNlcnZlcyBzb21lIGludmVzdGlnYXRpb24uICBGSVhNRQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorCSMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJZWxzZQorCSAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCWZpfgorCSRDQyAtc2hhcmVkICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworCisgICAgaW50ZXJpeFtbMy05XV0qKQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKyAgICAgICMgSGFjazogT24gSW50ZXJpeCAzLngsIHdlIGNhbm5vdCBjb21waWxlIFBJQyBiZWNhdXNlIG9mIGEgYnJva2VuIGdjYy4KKyAgICAgICMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKKyAgICAgICMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKKyAgICAgICMgY29uc3VtaW5nIGFuZCBmcmFnbWVudGluZyBwcm9jZXNzLiAgVG8gYXZvaWQgdGhpcywgd2UgcGljayBhIHJhbmRvbSwKKyAgICAgICMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKKyAgICAgICMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworICAgICAgOzsKKworICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSkKKyAgICAgIHRtcF9kaWV0PW5vCisgICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBkaWV0XCAqKSB0bXBfZGlldD15ZXM7OwkjIGxpbnV4LWRpZXRsaWJjIHdpdGggc3RhdGljIGxpbmtpbmcgKCFkaWV0LWR5bikKKwllc2FjCisgICAgICBmaQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEVHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGwgXAorCSAmJiB0ZXN0ICIkdG1wX2RpZXQiID0gbm8KKyAgICAgIHRoZW4KKwl0bXBfYWRkZmxhZz0KKwl0bXBfc2hhcmVkZmxhZz0nLXNoYXJlZCcKKwljYXNlICRjY19iYXNlbmFtZSwkaG9zdF9jcHUgaW4KKyAgICAgICAgcGdjYyopCQkJCSMgUG9ydGxhbmQgR3JvdXAgQyBjb21waWxlcgorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKKwkgIDs7CisJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKKwllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKKwkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKKwllZmMqLGlhNjQqIHwgaWZvcnQqLGlhNjQqKQkjIEludGVsIEZvcnRyYW4gY29tcGlsZXIgb24gaWE2NAorCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljIC1ub2Zvcl9tYWluJyA7OworCWlmYyogfCBpZm9ydCopCQkJIyBJbnRlbCBGb3J0cmFuIGNvbXBpbGVyCisJICB0bXBfYWRkZmxhZz0nIC1ub2Zvcl9tYWluJyA7OworCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7CisJeGxbW2NDXV0qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJworCSAgdG1wX2FkZGZsYWc9IDs7CisJZXNhYworCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45CisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKKwkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKKwkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMworCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OworCWVzYWMKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgJyIkdG1wX3NoYXJlZGZsYWciIiR0bXBfYWRkZmxhZyInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCisgICAgICAgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorCSAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkgICAgJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tdmVyc2lvbi1zY3JpcHQgJHt3bH0kb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAgICAgICAgZmkKKworCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJeGxmKikKKwkgICMgSUJNIFhMIEZvcnRyYW4gMTAuMSBvbiBQUEMgY2Fubm90IGNyZWF0ZSBzaGFyZWQgbGlicyBpdHNlbGYKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICBmaQorCSAgOzsKKwllc2FjCisgICAgICBlbHNlCisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworCisgICAgbmV0YnNkKikKKyAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKwl3bGFyYz0KKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBmaQorICAgICAgOzsKKworICAgIHNvbGFyaXMqKQorICAgICAgaWYgJExEIC12IDI+JjEgfCAkR1JFUCAnQkZEIDJcLjgnID4gL2Rldi9udWxsOyB0aGVuCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCWNhdCA8PF9MVF9FT0YgMT4mMgorCisqKiogV2FybmluZzogVGhlIHJlbGVhc2VzIDIuOC4qIG9mIHRoZSBHTlUgbGlua2VyIGNhbm5vdCByZWxpYWJseQorKioqIGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIFNvbGFyaXMgc3lzdGVtcy4gIFRoZXJlZm9yZSwgbGlidG9vbAorKioqIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBXZSB1cmdlIHlvdSB0byB1cGdyYWRlIEdOVQorKioqIGJpbnV0aWxzIHRvIHJlbGVhc2UgMi45LjEgb3IgbmV3ZXIuICBBbm90aGVyIG9wdGlvbiBpcyB0byBtb2RpZnkKKyoqKiB5b3VyIFBBVEggb3IgY29tcGlsZXIgY29uZmlndXJhdGlvbiBzbyB0aGF0IHRoZSBuYXRpdmUgbGlua2VyIGlzCisqKiogdXNlZCwgYW5kIHRoZW4gcmVzdGFydC4KKworX0xUX0VPRgorICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworCisgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKikKKyAgICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xW1swLTVdXS4qKQorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwljYXQgPDxfTFRfRU9GIDE+JjIKKworKioqIFdhcm5pbmc6IFJlbGVhc2VzIG9mIHRoZSBHTlUgbGlua2VyIHByaW9yIHRvIDIuMTYuOTEuMC4zIGNhbiBub3QKKyoqKiByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTQ08gc3lzdGVtcy4gIFRoZXJlZm9yZSwgbGlidG9vbAorKioqIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBXZSB1cmdlIHlvdSB0byB1cGdyYWRlIEdOVQorKioqIGJpbnV0aWxzIHRvIHJlbGVhc2UgMi4xNi45MS4wLjMgb3IgbmV3ZXIuICBBbm90aGVyIG9wdGlvbiBpcyB0byBtb2RpZnkKKyoqKiB5b3VyIFBBVEggb3IgY29tcGlsZXIgY29uZmlndXJhdGlvbiBzbyB0aGF0IHRoZSBuYXRpdmUgbGlua2VyIGlzCisqKiogdXNlZCwgYW5kIHRoZW4gcmVzdGFydC4KKworX0xUX0VPRgorCTs7CisJKikKKwkgICMgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBhbHdheXMKKwkgICMgdXNlIGFic29sdXRlIHBhdGhzIGZvciBuYW1pbmcgc2hhcmVkIGxpYnJhcmllcywgYW5kIGV4Y2x1ZGUgdGhlCisJICAjIERUX1JVTlBBVEggdGFnIGZyb20gZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcy4gIEJ1dCBkb2luZyBzbworCSAgIyByZXF1aXJlcyB0aGF0IHlvdSBjb21waWxlIGV2ZXJ5dGhpbmcgdHdpY2UsIHdoaWNoIGlzIGEgcGFpbi4KKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgIGVsc2UKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgZmkKKwk7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgIHN1bm9zNCopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgd2xhcmM9CisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICAqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCisKKyAgICBpZiB0ZXN0ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubzsgdGhlbgorICAgICAgcnVucGF0aF92YXI9CisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CisgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisgICAgZmkKKyAgZWxzZQorICAgICMgUE9SVE1FIGZpbGwgaW4gYSBkZXNjcmlwdGlvbiBvZiB5b3VyIHN5c3RlbSdzIGxpbmtlciAobm90IEdOVSBsZCkKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4MyopCisgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJExEIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtYkU6JGV4cG9ydF9zeW1ib2xzIC1UNTEyIC1INTEyIC1iTTpTUkV+JEFSICRBUl9GTEFHUyAkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCisgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQorICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0IC16ICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiOyB0aGVuCisJIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCisJIyBicm9rZW4gY29sbGVjdDIuCisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT11bnN1cHBvcnRlZAorICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhaXhbWzQtOV1dKikKKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAorCSMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgorCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKwlleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JworCW5vX2VudHJ5X2ZsYWc9IiIKKyAgICAgIGVsc2UKKwkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KKwkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisJaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgorCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwllbHNlCisJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwlmaQorCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKworCSMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAorCSMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQorCSMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisJY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMjNdXXxhaXg0LltbMjNdXS4qfGFpeFtbNS05XV0qKQorCSAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisJICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgorCSAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICBicmVhaworCSAgZmkKKwkgIGRvbmUKKwkgIDs7CisJZXNhYworCisJZXhwX3N5bV9mbGFnPSctYmV4cG9ydCcKKwlub19lbnRyeV9mbGFnPSctYm5vZW50cnknCisgICAgICBmaQorCisgICAgICAjIFdoZW4gbGFyZ2UgZXhlY3V0YWJsZXMgb3Igc2hhcmVkIG9iamVjdHMgYXJlIGJ1aWx0LCBBSVggbGQgY2FuCisgICAgICAjIGhhdmUgcHJvYmxlbXMgY3JlYXRpbmcgdGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgSWYgbGlua2luZyBhIGxpYnJhcnkKKyAgICAgICMgb3IgcHJvZ3JhbSByZXN1bHRzIGluICJlcnJvciBUT0Mgb3ZlcmZsb3ciIGFkZCAtbW1pbmltYWwtdG9jIHRvCisgICAgICAjIENYWEZMQUdTL0NGTEFHUyBmb3IgZysrL2djYy4gIEluIHRoZSBjYXNlcyB3aGVyZSB0aGF0IGlzIG5vdAorICAgICAgIyBlbm91Z2ggdG8gZml4IHRoZSBwcm9ibGVtLCBhZGQgLVdsLC1iYmlndG9jIHRvIExERkxBR1MuCisKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nJHt3bH0tZiwnCisKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMDEyXV18YWl4NC5bWzAxMl1dLiopCisJIyBXZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBvbiBBSVggNC4yIGFuZCBsb3dlciwgdGhlIGNoZWNrCisJIyBiZWxvdyBmb3IgYnJva2VuIGNvbGxlY3QyIGRvZXNuJ3Qgd29yayB1bmRlciA0LjMrCisJICBjb2xsZWN0Mm5hbWU9YCR7Q0N9IC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCisJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgorCSAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgJEdSRVAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCisJICB0aGVuCisJICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKKwkgIDoKKwkgIGVsc2UKKwkgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKKwkgICMgSXQgZmFpbHMgdG8gZmluZCB1bmluc3RhbGxlZCBsaWJyYXJpZXMgd2hlbiB0aGUgdW5pbnN0YWxsZWQKKwkgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBsaWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCisJICAjIHRvIHVuc3VwcG9ydGVkIGZvcmNlcyByZWxpbmtpbmcKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorCSAgZmkKKwkgIDs7CisJZXNhYworCXNoYXJlZF9mbGFnPSctc2hhcmVkJworCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJZmkKKyAgICAgIGVsc2UKKwkjIG5vdCB1c2luZyBnY2MKKwlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSMgVmlzdWFsQWdlIEMrKywgVmVyc2lvbiA1LjUgZm9yIEFJWCA1TCBmb3IgSUEtNjQsIEJldGEgMyBSZWxlYXNlCisJIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKKwkgIHNoYXJlZF9mbGFnPSctRycKKwllbHNlCisJICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCisJICBlbHNlCisJICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCisJICBmaQorCWZpCisgICAgICBmaQorCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1iZXhwYWxsJworICAgICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCisgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8gZXhwb3J0LgorICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKyAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorCSMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1bnRpbWUgbG9hZGluZyBmbGFncyAoLWJydGwpLAorCSMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKyAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgIGVsc2UKKwlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIteiBub2RlZnMiCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKwllbHNlCisJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorCSAjIGVtcHR5IGV4ZWN1dGFibGUuCisJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKKwkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KKwkgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCisJICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcworCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCisJZmkKKyAgICAgIGZpCisgICAgICA7OworCisgICAgYW1pZ2FvcyopCisgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgcG93ZXJwYykKKyAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgYWJvdXQgQW1pZ2FPUzQgLnNvIHN1cHBvcnQKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JycKKyAgICAgICAgOzsKKyAgICAgIG02OGspCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBOQU1FICRsaWJuYW1lIiA+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgTElCUkFSWV9JRCAxIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIFZFUlNJT04gJG1ham9yIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIFJFVklTSU9OICRyZXZpc2lvbiIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kQVIgJEFSX0ZMQUdTICRsaWIgJGxpYm9ianN+JFJBTkxJQiAkbGlifihjZCAkb3V0cHV0X29iamRpciAmJiBhMml4bGlicmFyeSAtMzIpJworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgIGJzZGlbWzQ1XV0qKQorICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0tcmR5bmFtaWMKKyAgICAgIDs7CisKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKyAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKyAgICAgIGxpYmV4dD1saWIKKyAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYCRFQ0hPICJYJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKyAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKyAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisgICAgICA7OworCisgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQorICAgICAgOzsKKworICAgIGRndXgqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgZnJlZWJzZDEqKQorICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgOzsKKworICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgorICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubworICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQorICAgICMgZXh0cmEgc3BhY2UpLgorICAgIGZyZWVic2QyLjIqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAvdXNyL2xpYi9jKytydDAubycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCisgICAgZnJlZWJzZDIqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIGhwdXg5KikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGZpCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworCisgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICA7OworCisgICAgaHB1eDEwKikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBmaQorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwkjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorCSMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBocHV4MTEqKQorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCWNhc2UgJGhvc3RfY3B1IGluCisJaHBwYSo2NCopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJaWE2NCopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJKikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCWVzYWMKKyAgICAgIGVsc2UKKwljYXNlICRob3N0X2NwdSBpbgorCWhwcGEqNjQqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwlpYTY0KikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJKikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwllc2FjCisgICAgICBmaQorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKworCWNhc2UgJGhvc3RfY3B1IGluCisJaHBwYSo2NCp8aWE2NCopCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCSAgOzsKKwkqKQorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCisJICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorCSAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKwkgIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKwkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKyAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorICAgICAgICBBQ19MSU5LX0lGRUxTRShpbnQgZm9vKHZvaWQpIHt9LAorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgICApCisgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICBfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgOzsKKworICAgIG5ldGJzZCopCisgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEub3V0CisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgICAgICMgRUxGCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIG5ld3NvczYpCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgKm50byogfCAqcW54KikKKyAgICAgIDs7CisKKyAgICBvcGVuYnNkKikKKyAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCisJaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwllbHNlCisJICBjYXNlICRob3N0X29zIGluCisJICAgb3BlbmJzZFtbMDFdXS4qIHwgb3BlbmJzZDIuW1swLTddXSB8IG9wZW5ic2QyLltbMC03XV0uKikKKwkgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworCSAgICAgOzsKKwkgICAqKQorCSAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJICAgICA7OworCSAgZXNhYworCWZpCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBvczIqKQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgOzsKKworICAgIG9zZjMqKQorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGZpCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgIDs7CisKKyAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmU7IHByaW50ZiAiJXNcXG4iICItaGlkZGVuIj4+ICRsaWIuZXhwfgorCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJworCisJIyBCb3RoIGMgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKKyAgICAgIGZpCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgICAgOzsKKworICAgIHNvbGFyaXMqKQorICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJd2xhcmM9JyR7d2x9JworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgZWxzZQorCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorCSoiQ29tcGlsZXJzIDUuMCIqKQorCSAgd2xhcmM9JycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkgICRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1NICRsaWIuZXhwIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkgIDs7CisJKikKKwkgIHdsYXJjPScke3dsfScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCSAgJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIHNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CisgICAgICAqKQorCSMgVGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGNvbWJpbmUgYW5kIHJlb3JkZXIgbGlua2VyIG9wdGlvbnMsCisJIyBidXQgdW5kZXJzdGFuZHMgYC16IGxpbmtlcl9mbGFnJy4gIEdDQyBkaXNjYXJkcyBpdCB3aXRob3V0IGAkd2wnLAorCSMgYnV0IGlzIGNhcmVmdWwgZW5vdWdoIG5vdCB0byByZW9yZGVyLgorCSMgU3VwcG9ydGVkIHNpbmNlIFNvbGFyaXMgMi42IChtYXliZSAyLjUuMT8pCisJaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0teiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHt3bH0teiAke3dsfWRlZmF1bHRleHRyYWN0JworCWVsc2UKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLXogYWxsZXh0cmFjdCRjb252ZW5pZW5jZSAteiBkZWZhdWx0ZXh0cmFjdCcKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKKyAgICBzdW5vczQqKQorICAgICAgaWYgdGVzdCAieCRob3N0X3ZlbmRvciIgPSB4c2VxdWVudDsgdGhlbgorCSMgVXNlICRDQyB0byBsaW5rIHVuZGVyIHNlcXVlbnQsIGJlY2F1c2UgaXQgdGhyb3dzIGluIHNvbWUgZXh0cmEgLm8KKwkjIGZpbGVzIHRoYXQgbWFrZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMgd29yay4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYXNzZXJ0IHB1cmUtdGV4dCAtQnN0YXRpYyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgc3lzdjQpCisgICAgICBjYXNlICRob3N0X3ZlbmRvciBpbgorCXNuaSkKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzICMgaXMgdGhpcyByZWFsbHkgdHJ1ZT8/PworCTs7CisJc2llbWVucykKKwkgICMjIExEIGlzIGxkIGl0IG1ha2VzIGEgUExBTUxJQgorCSAgIyMgQ0MganVzdCBtYWtlcyBhIEdyb3NzTW9kdWxlLgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0nJENDIC1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgICAgICAgIDs7CisJbW90b3JvbGEpCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vICNNb3Rvcm9sYSBtYW51YWwgc2F5cyB5ZXMsIGJ1dCBteSB0ZXN0cyBzYXkgdGhleSBsaWUKKwk7OworICAgICAgZXNhYworICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBzeXN2NC4zKikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSctQmV4cG9ydCcKKyAgICAgIDs7CisKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKwloYXJkY29kZV9ydW5wYXRoX3Zhcj15ZXMKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bWzAxXV0uW1sxMF1dKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLltbMDI0XV0qKQorICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCisKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGZpCisgICAgICA7OworCisgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKKyAgICAgICMgTm90ZTogV2UgY2FuIE5PVCB1c2UgLXogZGVmcyBhcyB3ZSBtaWdodCBkZXNpcmUsIGJlY2F1c2Ugd2UgZG8gbm90CisgICAgICAjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCisgICAgICAjIGFsd2F5cyBiZSB1bnJlc29sdmVkLCB3aGljaCBtZWFucyBqdXN0IGFib3V0IG5vIGxpYnJhcnkgd291bGQKKyAgICAgICMgZXZlciBsaW5rIGNvcnJlY3RseS4gIElmIHdlJ3JlIG5vdCB1c2luZyBHTlUgbGQgd2UgdXNlIC16IHRleHQKKyAgICAgICMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAorICAgICAgIyBhcyAteiBkZWZzLgorICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCisgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosbm9kZWZzJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIsJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1CZXhwb3J0JworICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBmaQorICAgICAgOzsKKworICAgIHV0czQqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgKikKKyAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIDs7CisgICAgZXNhYworCisgICAgaWYgdGVzdCB4JGhvc3RfdmVuZG9yID0geHNuaTsgdGhlbgorICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqIHwgc3lzdjUqKQorCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJsYXJnZWR5bnN5bScKKwk7OworICAgICAgZXNhYworICAgIGZpCisgIGZpCitdKQorQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSldKQordGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworCitfTFRfVEFHVkFSKHdpdGhfZ251X2xkLCAkMSk9JHdpdGhfZ251X2xkCisKK19MVF9ERUNMKFtdLCBbbGliZXh0XSwgWzBdLCBbT2xkIGFyY2hpdmUgc3VmZml4IChub3JtYWxseSAiYSIpXSlkbmwKK19MVF9ERUNMKFtdLCBbc2hyZXh0X2NtZHNdLCBbMV0sIFtTaGFyZWQgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICIuc28iKV0pZG5sCitfTFRfREVDTChbXSwgW2V4dHJhY3RfZXhwc3ltc19jbWRzXSwgWzJdLAorICAgIFtUaGUgY29tbWFuZHMgdG8gZXh0cmFjdCB0aGUgZXhwb3J0ZWQgc3ltYm9sIGxpc3QgZnJvbSBhIHNoYXJlZCBhcmNoaXZlXSkKKworIworIyBEbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgbGluayBsaWJjPworIworY2FzZSAieCRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSkiIGluCit4fHh5ZXMpCisgICMgQXNzdW1lIC1sYyBzaG91bGQgYmUgYWRkZWQKKyAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcworCisgIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIGNhc2UgJF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgaW4KKyAgICAqJ34nKikKKyAgICAgICMgRklYTUU6IHdlIG1heSBoYXZlIHRvIGRlYWwgd2l0aCBtdWx0aS1jb21tYW5kIHNlcXVlbmNlcy4KKyAgICAgIDs7CisgICAgJyRDQyAnKikKKyAgICAgICMgVGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBpbXBsaWNpdGx5IGxpbmtzIHdpdGggLWxjIHNpbmNlIG9uIHNvbWUKKyAgICAgICMgc3lzdGVtcywgLWxnY2MgaGFzIHRvIGNvbWUgYmVmb3JlIC1sYy4gSWYgZ2NjIGFscmVhZHkgcGFzc2VzIC1sYworICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCisgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0pCisgICAgICAkUk0gY29uZnRlc3QqCisgICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKworICAgICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcnI7IHRoZW4KKyAgICAgICAgc29uYW1lPWNvbmZ0ZXN0CisgICAgICAgIGxpYj1jb25mdGVzdAorICAgICAgICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgICAgICAgZGVwbGlicz0KKyAgICAgICAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisJcGljX2ZsYWc9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKQorICAgICAgICBjb21waWxlcl9mbGFncz0tdgorICAgICAgICBsaW5rZXJfZmxhZ3M9LXYKKyAgICAgICAgdmVyc3RyaW5nPQorICAgICAgICBvdXRwdXRfb2JqZGlyPS4KKyAgICAgICAgbGlibmFtZT1jb25mdGVzdAorICAgICAgICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKKyAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorICAgICAgICBpZiBBQ19UUllfRVZBTChfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKQorICAgICAgICB0aGVuCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICAgICAgZWxzZQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcworICAgICAgICBmaQorICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKKyAgICAgIGVsc2UKKyAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisgICAgICBmaQorICAgICAgJFJNIGNvbmZ0ZXN0KgorICAgICAgQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKV0pCisgICAgICA7OworICAgIGVzYWMKKyAgZmkKKyAgOzsKK2VzYWMKKworX0xUX1RBR0RFQ0woW2J1aWxkX2xpYnRvb2xfbmVlZF9sY10sIFthcmNoaXZlX2NtZHNfbmVlZF9sY10sIFswXSwKKyAgICBbV2hldGhlciBvciBub3QgdG8gYWRkIC1sYyBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllc10pCitfTFRfVEFHREVDTChbYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzXSwKKyAgICBbZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc10sIFswXSwKKyAgICBbV2hldGhlciBvciBub3QgdG8gZGlzYWxsb3cgc2hhcmVkIGxpYnMgd2hlbiBydW50aW1lIGxpYnMgYXJlIHN0YXRpY10pCitfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9keW5hbWljX2ZsYWdfc3BlY10sIFsxXSwKKyAgICBbQ29tcGlsZXIgZmxhZyB0byBhbGxvdyByZWZsZXhpdmUgZGxvcGVuc10pCitfTFRfVEFHREVDTChbXSwgW3dob2xlX2FyY2hpdmVfZmxhZ19zcGVjXSwgWzFdLAorICAgIFtDb21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHNoYXJlZCBvYmplY3RzIGRpcmVjdGx5IGZyb20gYXJjaGl2ZXNdKQorX0xUX1RBR0RFQ0woW10sIFtjb21waWxlcl9uZWVkc19vYmplY3RdLCBbMV0sCisgICAgW1doZXRoZXIgdGhlIGNvbXBpbGVyIGNvcGVzIHdpdGggcGFzc2luZyBubyBvYmplY3RzIGRpcmVjdGx5XSkKK19MVF9UQUdERUNMKFtdLCBbb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kc10sIFsyXSwKKyAgICBbQ3JlYXRlIGFuIG9sZC1zdHlsZSBhcmNoaXZlIGZyb20gYSBzaGFyZWQgYXJjaGl2ZV0pCitfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzXSwgWzJdLAorICAgIFtDcmVhdGUgYSB0ZW1wb3Jhcnkgb2xkLXN0eWxlIGFyY2hpdmUgdG8gbGluayBpbnN0ZWFkIG9mIGEgc2hhcmVkIGFyY2hpdmVdKQorX0xUX1RBR0RFQ0woW10sIFthcmNoaXZlX2NtZHNdLCBbMl0sIFtDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGEgc2hhcmVkIGFyY2hpdmVdKQorX0xUX1RBR0RFQ0woW10sIFthcmNoaXZlX2V4cHN5bV9jbWRzXSwgWzJdKQorX0xUX1RBR0RFQ0woW10sIFttb2R1bGVfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhIGxvYWRhYmxlIG1vZHVsZSBpZiBkaWZmZXJlbnQgZnJvbSBidWlsZGluZworICAgIGEgc2hhcmVkIGFyY2hpdmUuXSkKK19MVF9UQUdERUNMKFtdLCBbbW9kdWxlX2V4cHN5bV9jbWRzXSwgWzJdKQorX0xUX1RBR0RFQ0woW10sIFt3aXRoX2dudV9sZF0sIFsxXSwKKyAgICBbV2hldGhlciB3ZSBhcmUgYnVpbGRpbmcgd2l0aCBHTlUgbGQgb3Igbm90XSkKK19MVF9UQUdERUNMKFtdLCBbYWxsb3dfdW5kZWZpbmVkX2ZsYWddLCBbMV0sCisgICAgW0ZsYWcgdGhhdCBhbGxvd3Mgc2hhcmVkIGxpYnJhcmllcyB3aXRoIHVuZGVmaW5lZCBzeW1ib2xzIHRvIGJlIGJ1aWx0XSkKK19MVF9UQUdERUNMKFtdLCBbbm9fdW5kZWZpbmVkX2ZsYWddLCBbMV0sCisgICAgW0ZsYWcgdGhhdCBlbmZvcmNlcyBubyB1bmRlZmluZWQgc3ltYm9sc10pCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNdLCBbMV0sCisgICAgW0ZsYWcgdG8gaGFyZGNvZGUgJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgorICAgIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgJGxpYmRpciBkb2VzIG5vdCBleGlzdF0pCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRdLCBbMV0sCisgICAgW1tJZiBsZCBpcyB1c2VkIHdoZW4gbGlua2luZywgZmxhZyB0byBoYXJkY29kZSAkbGliZGlyIGludG8gYSBiaW5hcnkKKyAgICBkdXJpbmcgbGlua2luZy4gIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgJGxpYmRpciBkb2VzIG5vdCBleGlzdF1dKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yXSwgWzFdLAorICAgIFtXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgIi1ycGF0aCIgZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50XSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfZGlyZWN0XSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUUke3NoYXJlZF9leHR9IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcworICAgIERJUiBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUUke3NoYXJlZF9leHR9IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcworICAgIERJUiBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5IGFuZCB0aGUgcmVzdWx0aW5nIGxpYnJhcnkgZGVwZW5kZW5jeSBpcworICAgICJhYnNvbHV0ZSIsIGkuZSBpbXBvc3NpYmxlIHRvIGNoYW5nZSBieSBzZXR0aW5nICR7c2hsaWJwYXRoX3Zhcn0gaWYgdGhlCisgICAgbGlicmFyeSBpcyByZWxvY2F0ZWRdKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9taW51c19MXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUgorICAgIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnldKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9zaGxpYnBhdGhfdmFyXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgU0hMSUJQQVRIX1ZBUj1ESVIgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUgorICAgIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnldKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9hdXRvbWF0aWNdLCBbMF0sCisgICAgW1NldCB0byAieWVzIiBpZiBidWlsZGluZyBhIHNoYXJlZCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgaGFyZGNvZGVzIERJUgorICAgIGludG8gdGhlIGxpYnJhcnkgYW5kIGFsbCBzdWJzZXF1ZW50IGxpYnJhcmllcyBhbmQgZXhlY3V0YWJsZXMgbGlua2VkCisgICAgYWdhaW5zdCBpdF0pCitfTFRfVEFHREVDTChbXSwgW2luaGVyaXRfcnBhdGhdLCBbMF0sCisgICAgW1NldCB0byB5ZXMgaWYgbGlua2VyIGFkZHMgcnVudGltZSBwYXRocyBvZiBkZXBlbmRlbnQgbGlicmFyaWVzCisgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQorX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAorICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQorX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAorICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQorX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCisgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCitfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCisgICAgW1RoZSBjb21tYW5kcyB0byBsaXN0IGV4cG9ydGVkIHN5bWJvbHNdKQorX0xUX1RBR0RFQ0woW10sIFtleGNsdWRlX2V4cHN5bXNdLCBbMV0sCisgICAgW1N5bWJvbHMgdGhhdCBzaG91bGQgbm90IGJlIGxpc3RlZCBpbiB0aGUgcHJlbG9hZGVkIHN5bWJvbHNdKQorX0xUX1RBR0RFQ0woW10sIFtpbmNsdWRlX2V4cHN5bXNdLCBbMV0sCisgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCitfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQorX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKK2RubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorZG5sIF9MVF9UQUdERUNMKFtdLCBbdGhyZWFkX3NhZmVfZmxhZ19zcGVjXSwgWzFdLAorZG5sICAgIFtDb21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHRocmVhZCBzYWZlIG9iamVjdHNdKQorXSkjIF9MVF9MSU5LRVJfU0hMSUJTCisKKworIyBfTFRfTEFOR19DX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDIGNvbXBpbGVyIGFyZSBzdWl0YWJseQorIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19DX0NPTkZJR10sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbHRfc2F2ZV9DQz0iJENDIgorQUNfTEFOR19QVVNIKEMpCisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBDIHRlc3Qgc291cmNlcy4KK2FjX2V4dD1jCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBDIHRlc3Qgc291cmNlcy4KK29iamV4dD1vCitfTFRfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKK2x0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iaW50IHNvbWVfdmFyaWFibGUgPSAwOyIKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKK2x0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0naW50IG1haW4oKXtyZXR1cm4oMCk7fScKKworX0xUX1RBR19DT01QSUxFUgorIyBTYXZlIHRoZSBkZWZhdWx0IGNvbXBpbGVyLCBzaW5jZSBpdCBnZXRzIG92ZXJ3cml0dGVuIHdoZW4gdGhlIG90aGVyCisjIHRhZ3MgYXJlIGJlaW5nIHRlc3RlZCwgYW5kIF9MVF9UQUdWQVIoY29tcGlsZXIsIFtdKSBpcyBhIE5PUC4KK2NvbXBpbGVyX0RFRkFVTFQ9JENDCisKKyMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCitfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKK19MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworIyMgQ0FWRUFUIEVNUFRPUjoKKyMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCitpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgIF9MVF9DT01QSUxFUl9OT19SVFRJKCQxKQorICBfTFRfQ09NUElMRVJfUElDKCQxKQorICBfTFRfQ09NUElMRVJfQ19PKCQxKQorICBfTFRfQ09NUElMRVJfRklMRV9MT0NLUygkMSkKKyAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIoJDEpCisgIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSCgkMSkKKyAgTFRfU1lTX0RMT1BFTl9TRUxGCisgIF9MVF9DTURfU1RSSVBMSUIKKworICAjIFJlcG9ydCB3aGljaCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQorICBBQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQorICB0ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KKworICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKKyAgIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgorICBjYXNlICRob3N0X29zIGluCisgIGFpeDMqKQorICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKKyAgICAgIHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKKyAgICBmaQorICAgIDs7CisKKyAgYWl4W1s0LTldXSopCisgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0ICYmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IG5vIDsgdGhlbgorICAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgICBmaQorICAgIDs7CisgIGVzYWMKKyAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQorCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKKyAgIyBNYWtlIHN1cmUgZWl0aGVyIGVuYWJsZV9zaGFyZWQgb3IgZW5hYmxlX3N0YXRpYyBpcyB5ZXMuCisgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N0YXRpY10pCisKKyAgX0xUX0NPTkZJRygkMSkKK2ZpCitBQ19MQU5HX1BPUAorQ0M9IiRsdF9zYXZlX0NDIgorXSkjIF9MVF9MQU5HX0NfQ09ORklHCisKKworIyBfTFRfUFJPR19DWFgKKyMgLS0tLS0tLS0tLS0tCisjIFNpbmNlIEFDX1BST0dfQ1hYIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIGcrKyBpZiB0aGVyZSBpcyBubyBjKysKKyMgY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCittNF9kZWZ1bihbX0xUX1BST0dfQ1hYXSwKK1sKK3B1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXNdKQorQUNfUFJPR19DWFgKK2lmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCisgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8CisgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCisgIEFDX1BST0dfQ1hYQ1BQCitlbHNlCisgIF9sdF9jYXVnaHRfQ1hYX2Vycm9yPXllcworZmkKK3BvcGRlZihbQUNfTVNHX0VSUk9SXSkKK10pIyBfTFRfUFJPR19DWFgKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19DWFhdLCBbXSkKKworCisjIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5CisjIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKKyMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorW0FDX1JFUVVJUkUoW19MVF9QUk9HX0NYWF0pZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKKworQUNfTEFOR19QVVNIKEMrKykKK19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPW5vCitfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubworX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCitfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPW5vCitfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT1ubworX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KK19MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CitfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubworCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQysrIHRlc3Qgc291cmNlcy4KK2FjX2V4dD1jcHAKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEMrKyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgTm8gc2Vuc2UgaW4gcnVubmluZyBhbGwgdGhlc2UgdGVzdHMgaWYgd2UgYWxyZWFkeSBkZXRlcm1pbmVkIHRoYXQKKyMgdGhlIENYWCBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKKyMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKKyMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgoraWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKKyAgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJpbnQgc29tZV92YXJpYWJsZSA9IDA7IgorCisgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCisgIGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0naW50IG1haW4oaW50LCBjaGFyICpbW11dKSB7IHJldHVybigwKTsgfScKKworICAjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCisgIF9MVF9UQUdfQ09NUElMRVIKKworICAjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorICBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKKyAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgIGx0X3NhdmVfQ0M9JENDCisgIGx0X3NhdmVfTEQ9JExECisgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgR0NDPSRHWFgKKyAgbHRfc2F2ZV93aXRoX2dudV9sZD0kd2l0aF9nbnVfbGQKKyAgbHRfc2F2ZV9wYXRoX0xEPSRsdF9jdl9wYXRoX0xECisgIGlmIHRlc3QgLW4gIiR7bHRfY3ZfcHJvZ19nbnVfbGRjeHgrc2V0fSI7IHRoZW4KKyAgICBsdF9jdl9wcm9nX2dudV9sZD0kbHRfY3ZfcHJvZ19nbnVfbGRjeHgKKyAgZWxzZQorICAgICRhc191bnNldCBsdF9jdl9wcm9nX2dudV9sZAorICBmaQorICBpZiB0ZXN0IC1uICIke2x0X2N2X3BhdGhfTERDWFgrc2V0fSI7IHRoZW4KKyAgICBsdF9jdl9wYXRoX0xEPSRsdF9jdl9wYXRoX0xEQ1hYCisgIGVsc2UKKyAgICAkYXNfdW5zZXQgbHRfY3ZfcGF0aF9MRAorICBmaQorICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAorICBDQz0ke0NYWC0iYysrIn0KKyAgY29tcGlsZXI9JENDCisgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisgIGlmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KKyAgICAjIFdlIGRvbid0IHdhbnQgLWZuby1leGNlcHRpb24gd2hlbiBjb21waWxpbmcgQysrIGNvZGUsIHNvIHNldCB0aGUKKyAgICAjIG5vX2J1aWx0aW5fZmxhZyBzZXBhcmF0ZWx5CisgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKKyAgICBlbHNlCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CisgICAgZmkKKworICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICAjIFNldCB1cCBkZWZhdWx0IEdOVSBDKysgY29uZmlndXJhdGlvbgorCisgICAgICBMVF9QQVRIX0xECisKKyAgICAgICMgQ2hlY2sgaWYgR05VIEMrKyB1c2VzIEdOVSBsZCBhcyB0aGUgdW5kZXJseWluZyBsaW5rZXIsIHNpbmNlIHRoZQorICAgICAgIyBhcmNoaXZpbmcgY29tbWFuZHMgYmVsb3cgYXNzdW1lIHRoYXQgR05VIGxkIGlzIGJlaW5nIHVzZWQuCisgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisKKyAgICAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKKyAgICAgICAgIyBYWFggSSB0aGluayB3bGFyYyBjYW4gYmUgZWxpbWluYXRlZCBpbiBsdGNmLWN4eCwgYnV0IEkgbmVlZCB0bworICAgICAgICAjICAgICBpbnZlc3RpZ2F0ZSBpdCBhIGxpdHRsZSBiaXQgbW9yZS4gKE1NKQorICAgICAgICB3bGFyYz0nJHt3bH0nCisKKyAgICAgICAgIyBhbmNpZW50IEdOVSBsZCBkaWRuJ3Qgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUgZXQuIGFsLgorICAgICAgICBpZiBldmFsICJgJENDIC1wcmludC1wcm9nLW5hbWU9bGRgIC0taGVscCAyPiYxIiB8CisJICAkR1JFUCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgICAgIGVsc2UKKyAgICAgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisgICAgICAgIGZpCisgICAgICBlbHNlCisgICAgICAgIHdpdGhfZ251X2xkPW5vCisgICAgICAgIHdsYXJjPQorCisgICAgICAgICMgQSBnZW5lcmljIGFuZCB2ZXJ5IHNpbXBsZSBkZWZhdWx0IHNoYXJlZCBsaWJyYXJ5IGNyZWF0aW9uCisgICAgICAgICMgY29tbWFuZCBmb3IgR05VIEMrKyBmb3IgdGhlIGNhc2Ugd2hlcmUgaXQgdXNlcyB0aGUgbmF0aXZlCisgICAgICAgICMgbGlua2VyLCBpbnN0ZWFkIG9mIEdOVSBsZC4gIElmIHBvc3NpYmxlLCB0aGlzIHNldHRpbmcgc2hvdWxkCisgICAgICAgICMgb3ZlcnJpZGRlbiB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgbmF0aXZlIGxpbmtlciBmZWF0dXJlcyBvbgorICAgICAgICAjIHRoZSBwbGF0Zm9ybSBpdCBpcyBiZWluZyB1c2VkIG9uLgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRsaWInCisgICAgICBmaQorCisgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KKyAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisKKyAgICBlbHNlCisgICAgICBHWFg9bm8KKyAgICAgIHdpdGhfZ251X2xkPW5vCisgICAgICB3bGFyYz0KKyAgICBmaQorCisgICAgIyBQT1JUTUU6IGZpbGwgaW4gYSBkZXNjcmlwdGlvbiBvZiB5b3VyIHN5c3RlbSdzIEMrKyBsaW5rIGNoYXJhY3RlcmlzdGljcworICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeDMqKQorICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICA7OworICAgICAgYWl4W1s0LTldXSopCisgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAorICAgICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgorICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKyAgICAgICAgICBleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JworICAgICAgICAgIG5vX2VudHJ5X2ZsYWc9IiIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKworICAgICAgICAgICMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAorICAgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQorICAgICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMjNdXXxhaXg0LltbMjNdXS4qfGFpeFtbNS05XV0qKQorCSAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KKwkgICAgICBjYXNlICRsZF9mbGFnIGluCisJICAgICAgKi1icnRsKikKKwkgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9eWVzCisJICAgICAgICBicmVhaworCSAgICAgICAgOzsKKwkgICAgICBlc2FjCisJICAgIGRvbmUKKwkgICAgOzsKKyAgICAgICAgICBlc2FjCisKKyAgICAgICAgICBleHBfc3ltX2ZsYWc9Jy1iZXhwb3J0JworICAgICAgICAgIG5vX2VudHJ5X2ZsYWc9Jy1ibm9lbnRyeScKKyAgICAgICAgZmkKKworICAgICAgICAjIFdoZW4gbGFyZ2UgZXhlY3V0YWJsZXMgb3Igc2hhcmVkIG9iamVjdHMgYXJlIGJ1aWx0LCBBSVggbGQgY2FuCisgICAgICAgICMgaGF2ZSBwcm9ibGVtcyBjcmVhdGluZyB0aGUgdGFibGUgb2YgY29udGVudHMuICBJZiBsaW5raW5nIGEgbGlicmFyeQorICAgICAgICAjIG9yIHByb2dyYW0gcmVzdWx0cyBpbiAiZXJyb3IgVE9DIG92ZXJmbG93IiBhZGQgLW1taW5pbWFsLXRvYyB0bworICAgICAgICAjIENYWEZMQUdTL0NGTEFHUyBmb3IgZysrL2djYy4gIEluIHRoZSBjYXNlcyB3aGVyZSB0aGF0IGlzIG5vdAorICAgICAgICAjIGVub3VnaCB0byBmaXggdGhlIHByb2JsZW0sIGFkZCAtV2wsLWJiaWd0b2MgdG8gTERGTEFHUy4KKworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPScnCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworICAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgICAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPScke3dsfS1mLCcKKworICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzAxMl1dfGFpeDQuW1swMTJdXS4qKQorICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgb24gQUlYIDQuMiBhbmQgbG93ZXIsIHRoZSBjaGVjaworICAgICAgICAgICMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKworCSAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorCSAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYKKwkgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgJEdSRVAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCisJICB0aGVuCisJICAgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgorCSAgICA6CisJICBlbHNlCisJICAgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT11bnN1cHBvcnRlZAorCSAgICAjIEl0IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhlIHVuaW5zdGFsbGVkCisJICAgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBsaWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCisJICAgICMgdG8gdW5zdXBwb3J0ZWQgZm9yY2VzIHJlbGlua2luZworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CisJICBmaQorICAgICAgICAgIGVzYWMKKyAgICAgICAgICBzaGFyZWRfZmxhZz0nLXNoYXJlZCcKKwkgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorCSAgICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKKwkgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIG5vdCB1c2luZyBnY2MKKyAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSAgIyBWaXN1YWxBZ2UgQysrLCBWZXJzaW9uIDUuNSBmb3IgQUlYIDVMIGZvciBJQS02NCwgQmV0YSAzIFJlbGVhc2UKKwkgICMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6CisJICBzaGFyZWRfZmxhZz0nLUcnCisgICAgICAgICAgZWxzZQorCSAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tRycKKwkgICAgZWxzZQorCSAgICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCisJICAgIGZpCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKworICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1iZXhwYWxsJworICAgICAgICAjIEl0IHNlZW1zIHRoYXQgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGgKKyAgICAgICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvCisJIyBleHBvcnQuCisgICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisgICAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1bnRpbWUgbG9hZGluZyBmbGFncyAoLWJydGwpLAorICAgICAgICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KKyAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKKyAgICAgICAgICAjIGV4ZWN1dGFibGUuCisgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKworICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKKwkgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIteiBub2RlZnMiCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgorICAgICAgICAgIGVsc2UKKwkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCisJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KKwkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCisJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJworCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkgICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkCisJICAgICMgbGlicmFyaWVzLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJworICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICAgIDs7CisKKyAgICAgIGJlb3MqKQorCWlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSAgIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYworCSAgIyBzdXBwb3J0IC0tdW5kZWZpbmVkLiAgVGhpcyBkZXNlcnZlcyBzb21lIGludmVzdGlnYXRpb24uICBGSVhNRQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1ub3N0YXJ0ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWVsc2UKKwkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwlmaQorCTs7CisKKyAgICAgIGNob3J1cyopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgKikKKwkgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisgICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCisgICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisgICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICBlbHNlCisJICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICAgIGZpfgorICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKyAgICAgICAgZWxzZQorICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQorCTs7CisKKyAgICAgIGRndXgqKQorICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIGVjKysqKQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgIGdoY3gqKQorCSAgICAjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgICopCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgZnJlZWJzZFtbMTJdXSopCisgICAgICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgcmVwb3J0ZWQgdG8gYmUgZmFpcmx5IGJyb2tlbiBiZWZvcmUKKwkjIHN3aXRjaCB0byBFTEYKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICA7OworCisgICAgICBmcmVlYnNkLWVsZiopCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICAgICAgICA7OworCisgICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgICAgICMgRnJlZUJTRCAzIGFuZCBsYXRlciB1c2UgR05VIEMrKyBhbmQgR05VIGxkIHdpdGggc3RhbmRhcmQgRUxGCisgICAgICAgICMgY29udmVudGlvbnMKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgICAgICAgOzsKKworICAgICAgZ251KikKKyAgICAgICAgOzsKKworICAgICAgaHB1eDkqKQorICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkJCQkgICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQKKwkJCQkgICAgICAgICAgICAgIyBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKworICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIENDKikKKyAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgICBhQ0MqKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgICAgICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KKyAgICAgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQorICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKyAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqKQorICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICBocHV4MTAqfGhwdXgxMSopCisgICAgICAgIGlmIHRlc3QgJHdpdGhfZ251X2xkID0gbm87IHRoZW4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKworICAgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICAgICAgICBocHBhKjY0KnxpYTY0KikKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisJICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMgIyBOb3QgaW4gdGhlIHNlYXJjaCBQQVRILAorCQkJCQkgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdAorCQkJCQkgICAgICAgICAjIGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgQ0MqKQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgIGFDQyopCisJICAgIGNhc2UgJGhvc3RfY3B1IGluCisJICAgICAgaHBwYSo2NCopCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICA7OworCSAgICAgIGlhNjQqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgOzsKKwkgICAgICAqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICA7OworCSAgICBlc2FjCisJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICAjCisJICAgICMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKwkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQorCSAgICAjIGRlcGVuZGVuY2llcy4KKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCisJICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorCSAgICAgICAgICBocHBhKjY0KikKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgOzsKKwkgICAgICAgICAgaWE2NCopCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIDs7CisJICAgICAgICAgICopCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgOzsKKwkgICAgICAgIGVzYWMKKwkgICAgICBmaQorCSAgICBlbHNlCisJICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICBmaQorCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisKKyAgICAgIGludGVyaXhbWzMtOV1dKikKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCSMgSGFjazogT24gSW50ZXJpeCAzLngsIHdlIGNhbm5vdCBjb21waWxlIFBJQyBiZWNhdXNlIG9mIGEgYnJva2VuIGdjYy4KKwkjIEluc3RlYWQsIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxvYWRlZCBhdCBhbiBpbWFnZSBiYXNlICgweDEwMDAwMDAwIGJ5CisJIyBkZWZhdWx0KSBhbmQgcmVsb2NhdGVkIGlmIHRoZXkgY29uZmxpY3QsIHdoaWNoIGlzIGEgc2xvdyB2ZXJ5IG1lbW9yeQorCSMgY29uc3VtaW5nIGFuZCBmcmFnbWVudGluZyBwcm9jZXNzLiAgVG8gYXZvaWQgdGhpcywgd2UgcGljayBhIHJhbmRvbSwKKwkjIDI1NiBLaUItYWxpZ25lZCBpbWFnZSBiYXNlIGJldHdlZW4gMHg1MDAwMDAwMCBhbmQgMHg2RkZDMDAwMCBhdCBsaW5rCisJIyB0aW1lLiAgTW92aW5nIHVwIGZyb20gMHgxMDAwMDAwMCBhbHNvIGFsbG93cyBtb3JlIHNicmsoMikgc3BhY2UuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKwk7OworICAgICAgaXJpeDUqIHwgaXJpeDYqKQorICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIENDKikKKwkgICAgIyBTR0kgQysrCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKworCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKwkgICAgIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCisJICAgICMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAorCSAgICAjIGluIHRoZSBhcmNoaXZlLgorCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1hciAtV1IsLXUgLW8gJG9sZGxpYiAkb2xkb2JqcycKKwkgICAgOzsKKyAgICAgICAgICAqKQorCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICBlbHNlCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAtbyAkbGliJworCSAgICAgIGZpCisJICAgIGZpCisJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCisgICAgICAgIDs7CisKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgS0NDKikKKwkgICAgIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgorCisJICAgICMgS0NDIHdpbGwgb25seSBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBpZiB0aGUgb3V0cHV0IGZpbGUKKwkgICAgIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQorCSAgICAjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9sczsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICAjCisJICAgICMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKwkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQorCSAgICAjIGRlcGVuZGVuY2llcy4KKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCisJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSAgICAjICJDQyAtQnN0YXRpYyIsIHdoZXJlICJDQyIgaXMgdGhlIEtBSSBDKysgY29tcGlsZXIuCisJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLUJzdGF0aWMgLW8gJG9sZGxpYiAkb2xkb2JqcycKKwkgICAgOzsKKwkgIGljcGMqIHwgZWNwYyogKQorCSAgICAjIEludGVsIEMrKworCSAgICB3aXRoX2dudV9sZD15ZXMKKwkgICAgIyB2ZXJzaW9uIDguMCBhbmQgYWJvdmUgb2YgaWNwYyBjaG9rZSBvbiBtdWx0aXBseSBkZWZpbmVkIHN5bWJvbHMKKwkgICAgIyBpZiB3ZSBhZGQgJHByZWRlcF9vYmplY3RzIGFuZCAkcG9zdGRlcF9vYmplY3RzLCBob3dldmVyIDcuMSBhbmQKKwkgICAgIyBlYXJsaWVyIGRvIG5vdCBhZGQgdGhlIG9iamVjdHMgdGhlbXNlbHZlcy4KKwkgICAgY2FzZSBgJENDIC1WIDI+JjFgIGluCisJICAgICAgKiJWZXJzaW9uIDcuIiopCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCQk7OworCSAgICAgICopICAjIFZlcnNpb24gOC4wIG9yIG5ld2VyCisJICAgICAgICB0bXBfaWR5bj0KKwkgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisJCSAgaWE2NCopIHRtcF9pZHluPScgLWlfZHluYW1pYyc7OworCQllc2FjCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJCTs7CisJICAgIGVzYWMKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIDs7CisgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCisgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgorCSAgICBjYXNlIGAkQ0MgLVZgIGluCisJICAgICpwZ0NDXCBbWzEtNV1dKiB8ICpwZ2NwcFwgW1sxLTVdXSopCisJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKwkJcm0gLXJmICR0cGxkaXJ+CisJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorCQlybSAtcmYgJHRwbGRpcn4KKwkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKwkJJFJBTkxJQiAkb2xkbGliJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisJCXJtIC1yZiAkdHBsZGlyfgorCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKwkJcm0gLXJmICR0cGxkaXJ+CisJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgICAgOzsKKwkgICAgKikgIyBWZXJzaW9uIDYgd2lsbCB1c2Ugd2VhayBzeW1ib2xzCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgICAgOzsKKwkgICAgZXNhYworCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworICAgICAgICAgICAgOzsKKwkgIGN4eCopCisJICAgICMgQ29tcGFxIEMrKworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAgLW8gJGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scycKKworCSAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAorCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKworCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgIworCSAgICAjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkgICAgIyBkZXBlbmRlbmNpZXMuCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YCRFQ0hPICJYJHRlbXBsaXN0IiB8ICRYc2VkIC1lICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIDs7CisJICB4bCopCisJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1xbWtzaHJvYmogJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkJY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorCQllY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkJJENDIC1xbWtzaHJvYmogJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICAgIGZpCisJICAgIDs7CisJICAqKQorCSAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkgICAgKlN1blwgQyopCisJICAgICAgIyBTdW4gQysrIDUuOQorCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJworCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcworCisJICAgICAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgorCSAgICAgICMgJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEKKwkgICAgICAjIHdvdWxkIGJlIGJldHRlci4KKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKworCSAgICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSAgICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcworCSAgICAgICMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAorCSAgICAgICMgaW4gdGhlIGFyY2hpdmUuCisJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAteGFyIC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgICAgOzsKKwkgICAgZXNhYworCSAgICA7OworCWVzYWMKKwk7OworCisgICAgICBseW54b3MqKQorICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJOzsKKworICAgICAgbTg4ayopCisgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJOzsKKworICAgICAgbXZzKikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBjeHgqKQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworCSAgKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKwllc2FjCisJOzsKKworICAgICAgbmV0YnNkKikKKyAgICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkbGlua2VyX2ZsYWdzJworCSAgd2xhcmM9CisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJZmkKKwkjIFdvcmthcm91bmQgc29tZSBicm9rZW4gcHJlLTEuNSB0b29sY2hhaW5zCisJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgY29uZnRlc3QuJG9iamV4dCB8ICRTRUQgLWUgInM6LWxnY2MgLWxjIC1sZ2NjOjoiJworCTs7CisKKyAgICAgICpudG8qIHwgKnFueCopCisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisJOzsKKworICAgICAgb3BlbmJzZDIqKQorICAgICAgICAjIEMrKyBzaGFyZWQgbGlicmFyaWVzIGFyZSBmYWlybHkgYnJva2VuCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisKKyAgICAgIG9wZW5ic2QqKQorCWlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRsaWInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisJICBmaQorCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZWNobworCWVsc2UKKwkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwlmaQorCTs7CisKKyAgICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBLQ0MqKQorCSAgICAjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCisKKwkgICAgIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQorCSAgICAjIGVuZHMgd2l0aCAiLnNvIiAob3IgIi5zbCIgZm9yIEhQLVVYKSwgc28gcmVuYW1lIHRoZSBsaWJyYXJ5CisJICAgICMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAiJGxpYiIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJICAgICMgdGhlIEtBSSBDKysgY29tcGlsZXIuCisJICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICBvc2YzKikgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtQnN0YXRpYyAtbyAkb2xkbGliICRvbGRvYmpzJyA7OworCSAgICAgICopIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG9sZGxpYiAkb2xkb2JqcycgOzsKKwkgICAgZXNhYworCSAgICA7OworICAgICAgICAgIFJDQyopCisJICAgICMgUmF0aW9uYWwgQysrIDIuNC4xCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgICAgY3h4KikKKwkgICAgY2FzZSAkaG9zdCBpbgorCSAgICAgIG9zZjMqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJCTs7CisJICAgICAgKikKKwkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZX4KKwkgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KKwkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgorCSAgICAgICAgICAkUk0gJGxpYi5leHAnCisJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCisJCTs7CisJICAgIGVzYWMKKworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KKwkgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICMKKwkgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQorCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJICAgICMgZGVwZW5kZW5jaWVzLgorCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YCRFQ0hPICJYJHRlbXBsaXN0IiB8ICRYc2VkIC1lICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgOzsKKwkgICopCisJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCisJICAgICAgY2FzZSAkaG9zdCBpbgorCSAgICAgICAgb3NmMyopCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJCSAgOzsKKwkgICAgICAgICopCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCQkgIDs7CisJICAgICAgZXNhYworCisJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisKKwkgICAgZWxzZQorCSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgZmkKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICBwc29zKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgc3Vub3M0KikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisJICAgICMgU3VuIEMrKyA0LngKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICBsY2MqKQorCSAgICAjIEx1Y2lkCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICBzb2xhcmlzKikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcworCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJICAgICAgJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0tTSAke3dsfSRsaWIuZXhwIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwkgICAgY2FzZSAkaG9zdF9vcyBpbgorCSAgICAgIHNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CisJICAgICAgKikKKwkJIyBUaGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgY29tYmluZSBhbmQgcmVvcmRlciBsaW5rZXIgb3B0aW9ucywKKwkJIyBidXQgdW5kZXJzdGFuZHMgYC16IGxpbmtlcl9mbGFnJy4KKwkgICAgICAgICMgU3VwcG9ydGVkIHNpbmNlIFNvbGFyaXMgMi42IChtYXliZSAyLjUuMT8pCisJCV9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLXogYWxsZXh0cmFjdCRjb252ZW5pZW5jZSAteiBkZWZhdWx0ZXh0cmFjdCcKKwkgICAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisKKwkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcworCSAgICAjIG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgaW5zdGFudGlhdGVkIHRlbXBsYXRlcyBhcmUgaW5jbHVkZWQKKwkgICAgIyBpbiB0aGUgYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAteGFyIC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgIDs7CisgICAgICAgICAgZ2N4KikKKwkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCisJICAgICMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgorCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDICRMREZMQUdTIC1hcmNoaXZlIC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgIyBHTlUgQysrIGNvbXBpbGVyIHdpdGggU29sYXJpcyBsaW5rZXIKKwkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCisJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKworCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgIGVsc2UKKwkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKKwkgICAgICAgICMgcGxhdGZvcm0uCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJCSAgJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKworCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICBmaQorCisJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJHdsJGxpYmRpcicKKwkgICAgICBjYXNlICRob3N0X29zIGluCisJCXNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CisJCSopCisJCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCisJCSAgOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LltbMDFdXS5bWzEwXV0qIHwgdW5peHdhcmU3KiB8IHNjbzMuMnY1LjAuW1swMjRdXSopCisgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKKworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgQ0MqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwkqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQorCSMgTm90ZTogV2UgY2FuIE5PVCB1c2UgLXogZGVmcyBhcyB3ZSBtaWdodCBkZXNpcmUsIGJlY2F1c2Ugd2UgZG8gbm90CisJIyBsaW5rIHdpdGggLWxjLCBhbmQgdGhhdCB3b3VsZCBjYXVzZSBhbnkgc3ltYm9scyB1c2VkIGZyb20gbGliYyB0bworCSMgYWx3YXlzIGJlIHVucmVzb2x2ZWQsIHdoaWNoIG1lYW5zIGp1c3QgYWJvdXQgbm8gbGlicmFyeSB3b3VsZAorCSMgZXZlciBsaW5rIGNvcnJlY3RseS4gIElmIHdlJ3JlIG5vdCB1c2luZyBHTlUgbGQgd2UgdXNlIC16IHRleHQKKwkjIHRob3VnaCwgd2hpY2ggZG9lcyBjYXRjaCBzb21lIGJhZCBzeW1ib2xzIGJ1dCBpc24ndCBhcyBoZWF2eS1oYW5kZWQKKwkjIGFzIC16IGRlZnMuCisJX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LG5vZGVmcycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SLCRsaWJkaXInCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCisJX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKKwlydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCisKKwljYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIENDKikKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIDs7CisJICAqKQorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIDs7CisJZXNhYworICAgICAgOzsKKworICAgICAgdGFuZGVtKikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBOQ0MqKQorCSAgICAjIE5vblN0b3AtVVggTkNDIDMuMjAKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICAqKQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisKKyAgICAgIHZ4d29ya3MqKQorICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICA7OworCisgICAgICAqKQorICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICA7OworICAgIGVzYWMKKworICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpXSkKKyAgICB0ZXN0ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCisKKyAgICBfTFRfVEFHVkFSKEdDQywgJDEpPSIkR1hYIgorICAgIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorCisgICAgIyMgQ0FWRUFUIEVNUFRPUjoKKyAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorICAgICMjIHRoZSBydW5uaW5nIG9yZGVyIG9yIG90aGVyd2lzZSBtb3ZlIHRoZW0gYXJvdW5kIHVubGVzcyB5b3Uga25vdyBleGFjdGx5CisgICAgIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCisgICAgX0xUX1NZU19ISURERU5fTElCREVQUygkMSkKKyAgICBfTFRfQ09NUElMRVJfUElDKCQxKQorICAgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgICAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgICAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgICAgX0xUX1NZU19EWU5BTUlDX0xJTktFUigkMSkKKyAgICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgICBfTFRfQ09ORklHKCQxKQorICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKworICBDQz0kbHRfc2F2ZV9DQworICBMRENYWD0kTEQKKyAgTEQ9JGx0X3NhdmVfTEQKKyAgR0NDPSRsdF9zYXZlX0dDQworICB3aXRoX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAorICBsdF9jdl9wYXRoX0xEQ1hYPSRsdF9jdl9wYXRoX0xECisgIGx0X2N2X3BhdGhfTEQ9JGx0X3NhdmVfcGF0aF9MRAorICBsdF9jdl9wcm9nX2dudV9sZGN4eD0kbHRfY3ZfcHJvZ19nbnVfbGQKKyAgbHRfY3ZfcHJvZ19nbnVfbGQ9JGx0X3NhdmVfd2l0aF9nbnVfbGQKK2ZpICMgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXMKKworQUNfTEFOR19QT1AKK10pIyBfTFRfTEFOR19DWFhfQ09ORklHCisKKworIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCisjIGNvbXBpbGVyIG91dHB1dCB3aGVuIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKyMgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5CisjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KK200X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKK1ttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6CitfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CitfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQorX0xUX1RBR1ZBUihwcmVkZXBzLCAkMSk9CitfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9CitfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPQorCitkbmwgd2UgY2FuJ3QgdXNlIHRoZSBsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUgaGVyZSwKK2RubCBiZWNhdXNlIGl0IGNvbnRhaW5zIGNvZGUgaW50ZW5kZWQgZm9yIGFuIGV4ZWN1dGFibGUsCitkbmwgbm90IGEgbGlicmFyeS4gIEl0J3MgcG9zc2libGUgd2Ugc2hvdWxkIGxldCBlYWNoCitkbmwgdGFnIGRlZmluZSBhIG5ldyBsdF8/Pz8/X2xpbmtfdGVzdF9jb2RlIHZhcmlhYmxlLAorZG5sIGJ1dCBpdCdzIG9ubHkgdXNlZCBoZXJlLi4uCittNF9pZihbJDFdLCBbXSwgW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCitpbnQgYTsKK3ZvaWQgZm9vICh2b2lkKSB7IGEgPSAwOyB9CitfTFRfRU9GCitdLCBbJDFdLCBbQ1hYXSwgW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCitjbGFzcyBGb28KK3sKK3B1YmxpYzoKKyAgRm9vICh2b2lkKSB7IGEgPSAwOyB9Citwcml2YXRlOgorICBpbnQgYTsKK307CitfTFRfRU9GCitdLCBbJDFdLCBbRjc3XSwgW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCisgICAgICBzdWJyb3V0aW5lIGZvbworICAgICAgaW1wbGljaXQgbm9uZQorICAgICAgaW50ZWdlcio0IGEKKyAgICAgIGE9MAorICAgICAgcmV0dXJuCisgICAgICBlbmQKK19MVF9FT0YKK10sIFskMV0sIFtGQ10sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGltcGxpY2l0IG5vbmUKKyAgICAgIGludGVnZXIgYQorICAgICAgYT0wCisgICAgICByZXR1cm4KKyAgICAgIGVuZAorX0xUX0VPRgorXSwgWyQxXSwgW0dDSl0sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorcHVibGljIGNsYXNzIGZvbyB7CisgIHByaXZhdGUgaW50IGE7CisgIHB1YmxpYyB2b2lkIGJhciAodm9pZCkgeworICAgIGEgPSAwOworICB9Cit9OworX0xUX0VPRgorXSkKK2RubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKK2RubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCitpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAjIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorICAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KKworICAjIFNlbnRpbmVsIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgYmVmb3JlCisgICMgdGhlIGNvbmZ0ZXN0IG9iamVjdCBmaWxlLgorICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCisKKyAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbworICAgIGNhc2UgJHAgaW4KKworICAgIC1MKiB8IC1SKiB8IC1sKikKKyAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgorICAgICAgICMgUmVtb3ZlIHRoZSBzcGFjZS4KKyAgICAgICBpZiB0ZXN0ICRwID0gIi1MIiB8fAorICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisJIHByZXY9JHAKKwkgY29udGludWUKKyAgICAgICBlbHNlCisJIHByZXY9CisgICAgICAgZmkKKworICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCisJIGNhc2UgJHAgaW4KKwkgLUwqIHwgLVIqKQorCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQorCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQorCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgorCSAgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpIjsgdGhlbgorCSAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKT0iJHtwcmV2fSR7cH0iCisJICAgZWxzZQorCSAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKT0iJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSAke3ByZXZ9JHtwfSIKKwkgICBmaQorCSAgIDs7CisJICMgVGhlICItbCIgY2FzZSB3b3VsZCBuZXZlciBjb21lIGJlZm9yZSB0aGUgb2JqZWN0IGJlaW5nCisJICMgbGlua2VkLCBzbyBkb24ndCBib3RoZXIgaGFuZGxpbmcgdGhpcyBjYXNlLgorCSBlc2FjCisgICAgICAgZWxzZQorCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpIjsgdGhlbgorCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtwcmV2fSR7cH0iCisJIGVsc2UKKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKKwkgZmkKKyAgICAgICBmaQorICAgICAgIDs7CisKKyAgICAqLiRvYmpleHQpCisgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCisgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCisgICAgICAgaWYgdGVzdCAiJHAiID0gImNvbmZ0ZXN0LiRvYmpleHQiOyB0aGVuCisJIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9eWVzCisJIGNvbnRpbnVlCisgICAgICAgZmkKKworICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCisJIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkiOyB0aGVuCisJICAgX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPSIkcCIKKwkgZWxzZQorCSAgIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0iJF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKSAkcCIKKwkgZmkKKyAgICAgICBlbHNlCisJIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpIjsgdGhlbgorCSAgIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9IiRwIgorCSBlbHNlCisJICAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0iJF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkgJHAiCisJIGZpCisgICAgICAgZmkKKyAgICAgICA7OworCisgICAgKikgOzsgIyBJZ25vcmUgdGhlIHJlc3QuCisKKyAgICBlc2FjCisgIGRvbmUKKworICAjIENsZWFuIHVwLgorICBybSAtZiBhLm91dCBhLmV4ZQorZWxzZQorICBlY2hvICJsaWJ0b29sLm00OiBlcnJvcjogcHJvYmxlbSBjb21waWxpbmcgJDEgdGVzdCBwcm9ncmFtIgorZmkKKworJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorCisjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgorbTRfaWYoWyQxXSwgW0NYWF0sCitbY2FzZSAkaG9zdF9vcyBpbgoraW50ZXJpeFtbMy05XV0qKQorICAjIEludGVyaXggMy41IGluc3RhbGxzIGNvbXBsZXRlbHkgaG9zZWQgLmxhIGZpbGVzIGZvciBDKyssIHNvIHJhdGhlciB0aGFuCisgICMgaGFjayBhbGwgYXJvdW5kIGl0LCBsZXQncyBqdXN0IHRydXN0ICJnKysiIHRvIERUUlQuCisgIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsJDEpPQorICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywkMSk9CisgIF9MVF9UQUdWQVIocG9zdGRlcHMsJDEpPQorICA7OworCitsaW51eCopCisgIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorICAqU3VuXCBDKikKKyAgICAjIFN1biBDKysgNS45CisKKyAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKKyAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKKyAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCisgICAgIyAtbGlicmFyeT1zdGxwb3J0NCBkZXBlbmRzIG9uIGl0LgorICAgIGNhc2UgIiAkQ1hYICRDWFhGTEFHUyAiIGluCisgICAgKiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCisgICAgICBzb2xhcmlzX3VzZV9zdGxwb3J0ND15ZXMKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgaWYgdGVzdCAiJHNvbGFyaXNfdXNlX3N0bHBvcnQ0IiAhPSB5ZXM7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIocG9zdGRlcHMsJDEpPSctbGlicmFyeT1Dc3RkIC1saWJyYXJ5PUNydW4nCisgICAgZmkKKyAgICA7OworICBlc2FjCisgIDs7CisKK3NvbGFyaXMqKQorICBjYXNlICRjY19iYXNlbmFtZSBpbgorICBDQyopCisgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworICAgICMgLWxpYnJhcnk9c3RscG9ydDQgZGVwZW5kcyBvbiBpdC4KKyAgICBjYXNlICIgJENYWCAkQ1hYRkxBR1MgIiBpbgorICAgICoiIC1saWJyYXJ5PXN0bHBvcnQ0ICIqKQorICAgICAgc29sYXJpc191c2Vfc3RscG9ydDQ9eWVzCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgQWRkaW5nIHRoaXMgcmVxdWlyZXMgYSBrbm93bi1nb29kIHNldHVwIG9mIHNoYXJlZCBsaWJyYXJpZXMgZm9yCisgICAgIyBTdW4gY29tcGlsZXIgdmVyc2lvbnMgYmVmb3JlIDUuNiwgZWxzZSBQSUMgb2JqZWN0cyBmcm9tIGFuIG9sZAorICAgICMgYXJjaGl2ZSB3aWxsIGJlIGxpbmtlZCBpbnRvIHRoZSBvdXRwdXQsIGxlYWRpbmcgdG8gc3VidGxlIGJ1Z3MuCisgICAgaWYgdGVzdCAiJHNvbGFyaXNfdXNlX3N0bHBvcnQ0IiAhPSB5ZXM7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIocG9zdGRlcHMsJDEpPSctbGlicmFyeT1Dc3RkIC1saWJyYXJ5PUNydW4nCisgICAgZmkKKyAgICA7OworICBlc2FjCisgIDs7Citlc2FjCitdKQorCitjYXNlICIgJF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKSAiIGluCisqIiAtbGMgIiopIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubyA7OworZXNhYworIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSk9CitpZiB0ZXN0IC1uICIke19MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9IjsgdGhlbgorIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSk9YGVjaG8gIiAke19MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9IiB8ICR7U0VEfSAtZSAncyEgLUwhICFnJyAtZSAncyFeICEhJ2AKK2ZpCitfTFRfVEFHREVDTChbXSwgW2NvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc10sIFsxXSwKKyAgICBbVGhlIGRpcmVjdG9yaWVzIHNlYXJjaGVkIGJ5IHRoaXMgY29tcGlsZXIgd2hlbiBjcmVhdGluZyBhIHNoYXJlZCBsaWJyYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbcHJlZGVwX29iamVjdHNdLCBbMV0sCisgICAgW0RlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3RzIGJlaW5nIGxpbmtlZCB0bworICAgIGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbcG9zdGRlcF9vYmplY3RzXSwgWzFdKQorX0xUX1RBR0RFQ0woW10sIFtwcmVkZXBzXSwgWzFdKQorX0xUX1RBR0RFQ0woW10sIFtwb3N0ZGVwc10sIFsxXSkKK19MVF9UQUdERUNMKFtdLCBbY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoXSwgWzFdLAorICAgIFtUaGUgbGlicmFyeSBzZWFyY2ggcGF0aCB1c2VkIGludGVybmFsbHkgYnkgdGhlIGNvbXBpbGVyIHdoZW4gbGlua2luZworICAgIGEgc2hhcmVkIGxpYnJhcnldKQorXSkjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMKKworCisjIF9MVF9QUk9HX0Y3NworIyAtLS0tLS0tLS0tLS0KKyMgU2luY2UgQUNfUFJPR19GNzcgaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZworIyBpZiB0aGVyZSBpcyBubyBmb3J0cmFuIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgorbTRfZGVmdW4oW19MVF9QUk9HX0Y3N10sCitbCitwdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRjc3PXllc10pCitBQ19QUk9HX0Y3NworaWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRjc3PXllcworZmkKK3BvcGRlZihbQUNfTVNHX0VSUk9SXSkKK10pIyBfTFRfUFJPR19GNzcKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GNzddLCBbXSkKKworCisjIF9MVF9MQU5HX0Y3N19DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIDc3IGNvbXBpbGVyIGFyZQorIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19GNzdfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtfTFRfUFJPR19GNzddKWRubAorQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCisKK19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubworX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KK19MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPW5vCitfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQorX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgorX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KK19MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBmNzcgdGVzdCBzb3VyY2VzLgorYWNfZXh0PWYKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIGY3NyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgTm8gc2Vuc2UgaW4gcnVubmluZyBhbGwgdGhlc2UgdGVzdHMgaWYgd2UgYWxyZWFkeSBkZXRlcm1pbmVkIHRoYXQKKyMgdGhlIEY3NyBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKKyMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKKyMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgoraWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCisgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iXAorICAgICAgc3Vicm91dGluZSB0CisgICAgICByZXR1cm4KKyAgICAgIGVuZAorIgorCisgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCisgIGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0iXAorICAgICAgcHJvZ3JhbSB0CisgICAgICBlbmQKKyIKKworICAjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCisgIF9MVF9UQUdfQ09NUElMRVIKKworICAjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorICBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKKyAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgIGx0X3NhdmVfQ0M9IiRDQyIKKyAgbHRfc2F2ZV9HQ0M9JEdDQworICBDQz0ke0Y3Ny0iZjc3In0KKyAgY29tcGlsZXI9JENDCisgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorICBHQ0M9JEc3NworICBpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQorICAgIEFDX01TR19SRVNVTFQoWyRjYW5fYnVpbGRfc2hhcmVkXSkKKworICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKKyAgICB0ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KKworICAgICMgT24gQUlYLCBzaGFyZWQgbGlicmFyaWVzIGFuZCBzdGF0aWMgbGlicmFyaWVzIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UsIGFuZAorICAgICMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgzKikKKyAgICAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgICAgICAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgICAgICAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCisgICAgICAgICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgYWl4W1s0LTldXSopCisJaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0ICYmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IG5vIDsgdGhlbgorCSAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKwlmaQorICAgICAgICA7OworICAgIGVzYWMKKyAgICBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3NoYXJlZF0pCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCisgICAgIyBNYWtlIHN1cmUgZWl0aGVyIGVuYWJsZV9zaGFyZWQgb3IgZW5hYmxlX3N0YXRpYyBpcyB5ZXMuCisgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzIHx8IGVuYWJsZV9zdGF0aWM9eWVzCisgICAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQorCisgICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0iJEc3NyIKKyAgICBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKKworICAgICMjIENBVkVBVCBFTVBUT1I6CisgICAgIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKKyAgICAjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorICAgICMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgorICAgIF9MVF9DT01QSUxFUl9QSUMoJDEpCisgICAgX0xUX0NPTVBJTEVSX0NfTygkMSkKKyAgICBfTFRfQ09NUElMRVJfRklMRV9MT0NLUygkMSkKKyAgICBfTFRfTElOS0VSX1NITElCUygkMSkKKyAgICBfTFRfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorICAgIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSCgkMSkKKworICAgIF9MVF9DT05GSUcoJDEpCisgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorCisgIEdDQz0kbHRfc2F2ZV9HQ0MKKyAgQ0M9IiRsdF9zYXZlX0NDIgorZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKKworQUNfTEFOR19QT1AKK10pIyBfTFRfTEFOR19GNzdfQ09ORklHCisKKworIyBfTFRfUFJPR19GQworIyAtLS0tLS0tLS0tLQorIyBTaW5jZSBBQ19QUk9HX0ZDIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKKyMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KK200X2RlZnVuKFtfTFRfUFJPR19GQ10sCitbCitwdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRkM9eWVzXSkKK0FDX1BST0dfRkMKK2lmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgorICBfbHRfZGlzYWJsZV9GQz15ZXMKK2ZpCitwb3BkZWYoW0FDX01TR19FUlJPUl0pCitdKSMgX0xUX1BST0dfRkMKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GQ10sIFtdKQorCisKKyMgX0xUX0xBTkdfRkNfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIGNvbXBpbGVyIGFyZQorIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19GQ19DT05GSUddLAorW0FDX1JFUVVJUkUoW19MVF9QUk9HX0ZDXSlkbmwKK0FDX0xBTkdfUFVTSChGb3J0cmFuKQorCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KK19MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK19MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KK19MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPW5vCitfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT1ubworX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KK19MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CitfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubworCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgZmMgdGVzdCBzb3VyY2VzLgorYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9CisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBmYyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgTm8gc2Vuc2UgaW4gcnVubmluZyBhbGwgdGhlc2UgdGVzdHMgaWYgd2UgYWxyZWFkeSBkZXRlcm1pbmVkIHRoYXQKKyMgdGhlIEZDIGNvbXBpbGVyIGlzbid0IHdvcmtpbmcuICBTb21lIHZhcmlhYmxlcyAobGlrZSBlbmFibGVfc2hhcmVkKQorIyBhcmUgY3VycmVudGx5IGFzc3VtZWQgdG8gYXBwbHkgdG8gYWxsIGNvbXBpbGVycyBvbiB0aGlzIHBsYXRmb3JtLAorIyBhbmQgd2lsbCBiZSBjb3JydXB0ZWQgYnkgc2V0dGluZyB0aGVtIGJhc2VkIG9uIGEgbm9uLXdvcmtpbmcgY29tcGlsZXIuCitpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgorICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworICBsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9IlwKKyAgICAgIHN1YnJvdXRpbmUgdAorICAgICAgcmV0dXJuCisgICAgICBlbmQKKyIKKworICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworICBsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IlwKKyAgICAgIHByb2dyYW0gdAorICAgICAgZW5kCisiCisKKyAgIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorICBfTFRfVEFHX0NPTVBJTEVSCisKKyAgIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKKyAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICBsdF9zYXZlX0NDPSIkQ0MiCisgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgQ0M9JHtGQy0iZjk1In0KKyAgY29tcGlsZXI9JENDCisgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CisKKyAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCisKKyAgaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyAgICBBQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCisgICAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisKKyAgICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKKyAgICAjIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4MyopCisgICAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgICAgICAgICAgYXJjaGl2ZV9jbWRzPSIkYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkbGliIgorICAgICAgICAgIHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICAgIGFpeFtbNC05XV0qKQorCWlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KKwkgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisJZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQorICAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgorICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc3RhdGljXSkKKworICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9IiRhY19jdl9mY19jb21waWxlcl9nbnUiCisgICAgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisKKyAgICAjIyBDQVZFQVQgRU1QVE9SOgorICAgICMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisgICAgIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyAgICAjIyB3aGF0IHlvdSBhcmUgZG9pbmcuLi4KKyAgICBfTFRfU1lTX0hJRERFTl9MSUJERVBTKCQxKQorICAgIF9MVF9DT01QSUxFUl9QSUMoJDEpCisgICAgX0xUX0NPTVBJTEVSX0NfTygkMSkKKyAgICBfTFRfQ09NUElMRVJfRklMRV9MT0NLUygkMSkKKyAgICBfTFRfTElOS0VSX1NITElCUygkMSkKKyAgICBfTFRfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorICAgIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSCgkMSkKKworICAgIF9MVF9DT05GSUcoJDEpCisgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorCisgIEdDQz0kbHRfc2F2ZV9HQ0MKKyAgQ0M9IiRsdF9zYXZlX0NDIgorZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllcworCitBQ19MQU5HX1BPUAorXSkjIF9MVF9MQU5HX0ZDX0NPTkZJRworCisKKyMgX0xUX0xBTkdfR0NKX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgR05VIEphdmEgQ29tcGlsZXIgY29tcGlsZXIKKyMgYXJlIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKKyMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0dDSl9DT05GSUddLAorW0FDX1JFUVVJUkUoW0xUX1BST0dfR0NKXSlkbmwKK0FDX0xBTkdfU0FWRQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgSmF2YSB0ZXN0IHNvdXJjZXMuCithY19leHQ9amF2YQorCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgSmF2YSB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImNsYXNzIGZvbyB7fSIKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKK2x0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0ncHVibGljIGNsYXNzIGNvbmZ0ZXN0IHsgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW1tdXSBhcmd2KSB7fTsgfScKKworIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorX0xUX1RBR19DT01QSUxFUgorCisjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCitfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitsdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0dDQz0kR0NDCitHQ0M9eWVzCitDQz0ke0dDSi0iZ2NqIn0KK2NvbXBpbGVyPSRDQworX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCisKKyMgR0NKIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KK19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworCisjIyBDQVZFQVQgRU1QVE9SOgorIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKKyMjIHRoZSBydW5uaW5nIG9yZGVyIG9yIG90aGVyd2lzZSBtb3ZlIHRoZW0gYXJvdW5kIHVubGVzcyB5b3Uga25vdyBleGFjdGx5CisjIyB3aGF0IHlvdSBhcmUgZG9pbmcuLi4KK2lmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KKyAgX0xUX0NPTVBJTEVSX05PX1JUVEkoJDEpCisgIF9MVF9DT01QSUxFUl9QSUMoJDEpCisgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgIF9MVF9DT01QSUxFUl9GSUxFX0xPQ0tTKCQxKQorICBfTFRfTElOS0VSX1NITElCUygkMSkKKyAgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRIKCQxKQorCisgIF9MVF9DT05GSUcoJDEpCitmaQorCitBQ19MQU5HX1JFU1RPUkUKKworR0NDPSRsdF9zYXZlX0dDQworQ0M9IiRsdF9zYXZlX0NDIgorXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKKworCisjIF9MVF9MQU5HX1JDX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBXaW5kb3dzIHJlc291cmNlIGNvbXBpbGVyCisjIGFyZSBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19SQ19DT05GSUddLAorW0FDX1JFUVVJUkUoW0xUX1BST0dfUkNdKWRubAorQUNfTEFOR19TQVZFCisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBSQyB0ZXN0IHNvdXJjZXMuCithY19leHQ9cmMKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIFJDIHRlc3Qgc291cmNlcy4KK29iamV4dD1vCitfTFRfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKK2x0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0nc2FtcGxlIE1FTlUgeyBNRU5VSVRFTSAiJlNvdXAiLCAxMDAsIENIRUNLRUQgfScKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKK2x0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0iJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIKKworIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorX0xUX1RBR19DT01QSUxFUgorCisjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCitfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitsdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0dDQz0kR0NDCitHQ0M9CitDQz0ke1JDLSJ3aW5kcmVzIn0KK2NvbXBpbGVyPSRDQworX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcworCitpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgIDoKKyAgX0xUX0NPTkZJRygkMSkKK2ZpCisKK0dDQz0kbHRfc2F2ZV9HQ0MKK0FDX0xBTkdfUkVTVE9SRQorQ0M9IiRsdF9zYXZlX0NDIgorXSkjIF9MVF9MQU5HX1JDX0NPTkZJRworCisKKyMgTFRfUFJPR19HQ0oKKyMgLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9QUk9HX0dDSl0sCitbbTRfaWZkZWYoW0FDX1BST0dfR0NKXSwgW0FDX1BST0dfR0NKXSwKKyAgW200X2lmZGVmKFtBXVtNX1BST0dfR0NKXSwgW0FdW01fUFJPR19HQ0pdLAorICAgIFtBQ19DSEVDS19UT09MKEdDSiwgZ2NqLCkKKyAgICAgIHRlc3QgIngke0dDSkZMQUdTK3NldH0iID0geHNldCB8fCBHQ0pGTEFHUz0iLWcgLU8yIgorICAgICAgQUNfU1VCU1QoR0NKRkxBR1MpXSldKVtdZG5sCitdKQorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0xUX0FDX1BST0dfR0NKXSwgW0xUX1BST0dfR0NKXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbTFRfQUNfUFJPR19HQ0pdLCBbXSkKKworCisjIExUX1BST0dfUkMKKyMgLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1BST0dfUkNdLAorW0FDX0NIRUNLX1RPT0woUkMsIHdpbmRyZXMsKQorXSkKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtMVF9BQ19QUk9HX1JDXSwgW0xUX1BST0dfUkNdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtMVF9BQ19QUk9HX1JDXSwgW10pCisKKworIyBfTFRfREVDTF9FR1JFUAorIyAtLS0tLS0tLS0tLS0tLQorIyBJZiB3ZSBkb24ndCBoYXZlIGEgbmV3IGVub3VnaCBBdXRvY29uZiB0byBjaG9vc2UgdGhlIGJlc3QgZ3JlcAorIyBhdmFpbGFibGUsIGNob29zZSB0aGUgb25lIGZpcnN0IGluIHRoZSB1c2VyJ3MgUEFUSC4KK200X2RlZnVuKFtfTFRfREVDTF9FR1JFUF0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19FR1JFUF0pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0ZHUkVQXSlkbmwKK3Rlc3QgLXogIiRHUkVQIiAmJiBHUkVQPWdyZXAKK19MVF9ERUNMKFtdLCBbR1JFUF0sIFsxXSwgW0EgZ3JlcCBwcm9ncmFtIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzXSkKK19MVF9ERUNMKFtdLCBbRUdSRVBdLCBbMV0sIFtBbiBFUkUgbWF0Y2hlcl0pCitfTFRfREVDTChbXSwgW0ZHUkVQXSwgWzFdLCBbQSBsaXRlcmFsIHN0cmluZyBtYXRjaGVyXSkKK2RubCBOb24tYmxlZWRpbmctZWRnZSBhdXRvY29uZiBkb2Vzbid0IHN1YnN0IEdSRVAsIHNvIGRvIGl0IGhlcmUgdG9vCitBQ19TVUJTVChbR1JFUF0pCitdKQorCisKKyMgX0xUX0RFQ0xfT0JKRFVNUAorIyAtLS0tLS0tLS0tLS0tLQorIyBJZiB3ZSBkb24ndCBoYXZlIGEgbmV3IGVub3VnaCBBdXRvY29uZiB0byBjaG9vc2UgdGhlIGJlc3Qgb2JqZHVtcAorIyBhdmFpbGFibGUsIGNob29zZSB0aGUgb25lIGZpcnN0IGluIHRoZSB1c2VyJ3MgUEFUSC4KK200X2RlZnVuKFtfTFRfREVDTF9PQkpEVU1QXSwKK1tBQ19DSEVDS19UT09MKE9CSkRVTVAsIG9iamR1bXAsIGZhbHNlKQordGVzdCAteiAiJE9CSkRVTVAiICYmIE9CSkRVTVA9b2JqZHVtcAorX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXJdKQorQUNfU1VCU1QoW09CSkRVTVBdKQorXSkKKworCisjIF9MVF9ERUNMX1NFRAorIyAtLS0tLS0tLS0tLS0KKyMgQ2hlY2sgZm9yIGEgZnVsbHktZnVuY3Rpb25hbCBzZWQgcHJvZ3JhbSwgdGhhdCB0cnVuY2F0ZXMKKyMgYXMgZmV3IGNoYXJhY3RlcnMgYXMgcG9zc2libGUuICBQcmVmZXIgR05VIHNlZCBpZiBmb3VuZC4KK200X2RlZnVuKFtfTFRfREVDTF9TRURdLAorW0FDX1BST0dfU0VECit0ZXN0IC16ICIkU0VEIiAmJiBTRUQ9c2VkCitYc2VkPSIkU0VEIC1lIDFzL15YLy8iCitfTFRfREVDTChbXSwgW1NFRF0sIFsxXSwgW0Egc2VkIHByb2dyYW0gdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXRdKQorX0xUX0RFQ0woW10sIFtYc2VkXSwgWyJcJFNFRCAtZSAxcy9eWC8vIl0sCisgICAgW1NlZCB0aGF0IGhlbHBzIHVzIGF2b2lkIGFjY2lkZW50YWxseSB0cmlnZ2VyaW5nIGVjaG8oMSkgb3B0aW9ucyBsaWtlIC1uXSkKK10pIyBfTFRfREVDTF9TRUQKKworbTRfaWZuZGVmKFtBQ19QUk9HX1NFRF0sIFsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBOT1RFOiBUaGlzIG1hY3JvIGhhcyBiZWVuIHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGludG8gICAjCisjICBHTlUgQXV0b2NvbmYgYXMgQUNfUFJPR19TRUQuICBXaGVuIGl0IGlzIGF2YWlsYWJsZSBpbiAgICMKKyMgIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBBdXRvY29uZiB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgICAgIworIyAgbWFjcm8gYW5kIHVzZSBpdCBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbTRfZGVmdW4oW0FDX1BST0dfU0VEXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9TRUQsCitbIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBzZWQgYW5kIGdzZWQuCisjIFRoZW4gdXNlIHRoYXQgbGlzdCBvZiBzZWQncyBhcyBvbmVzIHRvIHRlc3QgZm9yIHRydW5jYXRpb24uCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgIGZvciBsdF9hY19wcm9nIGluIHNlZCBnc2VkOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kbHRfYWNfcHJvZyRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgICAgbHRfYWNfc2VkX2xpc3Q9IiRsdF9hY19zZWRfbGlzdCAkYXNfZGlyLyRsdF9hY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgZmkKKyAgICBkb25lCisgIGRvbmUKK2RvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKK2x0X2FjX21heD0wCitsdF9hY19jb3VudD0wCisjIEFkZCAvdXNyL3hwZzQvYmluL3NlZCBhcyBpdCBpcyB0eXBpY2FsbHkgZm91bmQgb24gU29sYXJpcworIyBhbG9uZyB3aXRoIC9iaW4vc2VkIHRoYXQgdHJ1bmNhdGVzIG91dHB1dC4KK2ZvciBsdF9hY19zZWQgaW4gJGx0X2FjX3NlZF9saXN0IC91c3IveHBnNC9iaW4vc2VkOyBkbworICB0ZXN0ICEgLWYgJGx0X2FjX3NlZCAmJiBjb250aW51ZQorICBjYXQgL2Rldi9udWxsID4gY29uZnRlc3QuaW4KKyAgbHRfYWNfY291bnQ9MAorICBlY2hvICRFQ0hPX04gIjAxMjM0NTY3ODkkRUNIT19DIiA+Y29uZnRlc3QuaW4KKyAgIyBDaGVjayBmb3IgR05VIHNlZCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICBpZiAiJGx0X2FjX3NlZCIgLS12ZXJzaW9uIDI+JjEgPCAvZGV2L251bGwgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9TRUQ9JGx0X2FjX3NlZAorICAgIGJyZWFrCisgIGZpCisgIHdoaWxlIHRydWU7IGRvCisgICAgY2F0IGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LmluID5jb25mdGVzdC50bXAKKyAgICBtdiBjb25mdGVzdC50bXAgY29uZnRlc3QuaW4KKyAgICBjcCBjb25mdGVzdC5pbiBjb25mdGVzdC5ubAorICAgIGVjaG8gPj5jb25mdGVzdC5ubAorICAgICRsdF9hY19zZWQgLWUgJ3MvYSQvLycgPCBjb25mdGVzdC5ubCA+Y29uZnRlc3Qub3V0IHx8IGJyZWFrCisgICAgY21wIC1zIGNvbmZ0ZXN0Lm91dCBjb25mdGVzdC5ubCB8fCBicmVhaworICAgICMgMTAwMDAgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICAgIGx0X2FjX2NvdW50PWBleHByICRsdF9hY19jb3VudCArIDFgCisgICAgaWYgdGVzdCAkbHRfYWNfY291bnQgLWd0ICRsdF9hY19tYXg7IHRoZW4KKyAgICAgIGx0X2FjX21heD0kbHRfYWNfY291bnQKKyAgICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKKyAgICBmaQorICBkb25lCitkb25lCitdKQorU0VEPSRsdF9jdl9wYXRoX1NFRAorQUNfU1VCU1QoW1NFRF0pCitBQ19NU0dfUkVTVUxUKFskU0VEXSkKK10pI0FDX1BST0dfU0VECitdKSNtNF9pZm5kZWYKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtMVF9BQ19QUk9HX1NFRF0sIFtBQ19QUk9HX1NFRF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0xUX0FDX1BST0dfU0VEXSwgW10pCisKKworIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZpbmQgb3V0IHdoZXRoZXIgdGhlIHNoZWxsIGlzIEJvdXJuZSBvciBYU0kgY29tcGF0aWJsZSwKKyMgb3IgaGFzIHNvbWUgb3RoZXIgdXNlZnVsIGZlYXR1cmVzLgorbTRfZGVmdW4oW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10sCitbQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzXSkKKyMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCit4c2lfc2hlbGw9bm8KKyggX2x0X2R1bW15PSJhL2IvYyIKKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKyAgICAgID0gYyxhL2IsLCBcCisgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICYmIHhzaV9zaGVsbD15ZXMKK0FDX01TR19SRVNVTFQoWyR4c2lfc2hlbGxdKQorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW3hzaV9zaGVsbD0nJHhzaV9zaGVsbCddKQorCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzICIrPSJdKQorbHRfc2hlbGxfYXBwZW5kPW5vCisoIGZvbz1iYXI7IHNldCBmb28gYmF6OyBldmFsICIkWzFdKz1cJFsyXSIgJiYgdGVzdCAiJGZvbyIgPSBiYXJiYXogKSBcCisgICAgPi9kZXYvbnVsbCAyPiYxIFwKKyAgJiYgbHRfc2hlbGxfYXBwZW5kPXllcworQUNfTVNHX1JFU1VMVChbJGx0X3NoZWxsX2FwcGVuZF0pCitfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbbHRfc2hlbGxfYXBwZW5kPSckbHRfc2hlbGxfYXBwZW5kJ10pCisKK2lmICggKE1BSUw9NjA7IHVuc2V0IE1BSUwpIHx8IGV4aXQpID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBsdF91bnNldD11bnNldAorZWxzZQorICBsdF91bnNldD1mYWxzZQorZmkKK19MVF9ERUNMKFtdLCBbbHRfdW5zZXRdLCBbMF0sIFt3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyAidW5zZXQiXSlkbmwKKworIyB0ZXN0IEVCQ0RJQyBvciBBU0NJSQorY2FzZSBgZWNobyBYfHRyIFggJ1wxMDEnYCBpbgorIEEpICMgQVNDSUkgYmFzZWQgc3lzdGVtCisgICAgIyBcbiBpcyBub3QgaW50ZXJwcmV0ZWQgY29ycmVjdGx5IGJ5IFNvbGFyaXMgOCAvdXNyL3VjYi90cgorICBsdF9TUDJOTD0ndHIgXDA0MCBcMDEyJworICBsdF9OTDJTUD0ndHIgXDAxNVwwMTIgXDA0MFwwNDAnCisgIDs7CisgKikgIyBFQkNESUMgYmFzZWQgc3lzdGVtCisgIGx0X1NQMk5MPSd0ciBcMTAwIFxuJworICBsdF9OTDJTUD0ndHIgXHJcbiBcMTAwXDEwMCcKKyAgOzsKK2VzYWMKK19MVF9ERUNMKFtTUDJOTF0sIFtsdF9TUDJOTF0sIFsxXSwgW3R1cm4gc3BhY2VzIGludG8gbmV3bGluZXNdKWRubAorX0xUX0RFQ0woW05MMlNQXSwgW2x0X05MMlNQXSwgWzFdLCBbdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlc10pZG5sCitdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCisKKworIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgorbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCitbY2FzZSAkeHNpX3NoZWxsIGluCisgIHllcykKKyAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorCisjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorZnVuY19kaXJuYW1lICgpCit7CisgIGNhc2UgJHsxfSBpbgorICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICBlc2FjCit9CisKKyMgZnVuY19iYXNlbmFtZSBmaWxlCitmdW5jX2Jhc2VuYW1lICgpCit7CisgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKK30KKworIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorIyBjYWxsOgorIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKyMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisjIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKyMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKyMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQoreworICBjYXNlICR7MX0gaW4KKyAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgZXNhYworICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCit9CisKKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorZnVuY19zdHJpcG5hbWUgKCkKK3sKKyAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CisgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CisgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Cit9CisKKyMgZnVuY19vcHRfc3BsaXQKK2Z1bmNfb3B0X3NwbGl0ICgpCit7CisgIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorfQorCisjIGZ1bmNfbG8ybyBvYmplY3QKK2Z1bmNfbG8ybyAoKQoreworICBjYXNlICR7MX0gaW4KKyAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworICBlc2FjCit9CisKKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCitmdW5jX3hmb3JtICgpCit7CisgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KK30KKworIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorZnVuY19hcml0aCAoKQoreworICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQorfQorCisjIGZ1bmNfbGVuIHN0cmluZworIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorZnVuY19sZW4gKCkKK3sKKyAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Cit9CisKK19MVF9FT0YKKyAgICA7OworICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKyAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorCisjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorZnVuY19kaXJuYW1lICgpCit7CisgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAorICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgIGVsc2UKKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisgIGZpCit9CisKKyMgZnVuY19iYXNlbmFtZSBmaWxlCitmdW5jX2Jhc2VuYW1lICgpCit7CisgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCit9CisKK2RubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCitkbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAorZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCisKKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorZnVuY19zdHJpcG5hbWUgKCkKK3sKKyAgY2FzZSAkezJ9IGluCisgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCisgICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlXFxcXCR7Mn1cJCUlImA7OworICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAorICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJSR7Mn1cJCUlImA7OworICBlc2FjCit9CisKKyMgc2VkIHNjcmlwdHM6CitteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCitteV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKKworIyBmdW5jX29wdF9zcGxpdAorZnVuY19vcHRfc3BsaXQgKCkKK3sKKyAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19vcHQiYAorICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX2FyZyJgCit9CisKKyMgZnVuY19sbzJvIG9iamVjdAorZnVuY19sbzJvICgpCit7CisgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAorfQorCisjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorZnVuY194Zm9ybSAoKQoreworICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICdzL1wuW1teLl1dKiQvLmxvLydgCit9CisKKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KK2Z1bmNfYXJpdGggKCkKK3sKKyAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAorfQorCisjIGZ1bmNfbGVuIHN0cmluZworIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorZnVuY19sZW4gKCkKK3sKKyAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCit9CisKK19MVF9FT0YKK2VzYWMKKworY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCisgIHllcykKKyAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICBldmFsICIkWzFdKz1cJFsyXSIKK30KK19MVF9FT0YKKyAgICA7OworICAqKQorICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisKKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCisjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KK2Z1bmNfYXBwZW5kICgpCit7CisgIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCit9CisKK19MVF9FT0YKKyAgICA7OworICBlc2FjCitdKQpkaWZmIC0tZ2l0IGEvbTQvbHRvcHRpb25zLm00IGIvbTQvbHRvcHRpb25zLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MTUxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9sdG9wdGlvbnMubTQKQEAgLTAsMCArMSwzNjggQEAKKyMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorIworIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDYgbHRvcHRpb25zLm00CisKKyMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCitBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCisKKworIyBfTFRfTUFOR0xFX09QVElPTihNQUNSTy1OQU1FLCBPUFRJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9NQU5HTEVfT1BUSU9OXSwKK1tbX0xUX09QVElPTl9dbTRfYnBhdHN1YnN0KCQxX18kMiwgW1teYS16QS1aMC05X11dLCBbX10pXSkKKworCisjIF9MVF9TRVRfT1BUSU9OKE1BQ1JPLU5BTUUsIE9QVElPTi1OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0IG9wdGlvbiBPUFRJT04tTkFNRSBmb3IgbWFjcm8gTUFDUk8tTkFNRSwgYW5kIGlmIHRoZXJlIGlzIGEKKyMgbWF0Y2hpbmcgaGFuZGxlciBkZWZpbmVkLCBkaXNwYXRjaCB0byBpdC4gIE90aGVyIE9QVElPTi1OQU1FcyBhcmUKKyMgc2F2ZWQgYXMgYSBmbGFnLgorbTRfZGVmaW5lKFtfTFRfU0VUX09QVElPTl0sCitbbTRfZGVmaW5lKF9MVF9NQU5HTEVfT1BUSU9OKFskMV0sIFskMl0pKWRubAorbTRfaWZkZWYoX0xUX01BTkdMRV9ERUZVTihbJDFdLCBbJDJdKSwKKyAgICAgICAgX0xUX01BTkdMRV9ERUZVTihbJDFdLCBbJDJdKSwKKyAgICBbbTRfd2FybmluZyhbVW5rbm93biAkMSBvcHRpb24gYCQyJ10pXSlbXWRubAorXSkKKworCisjIF9MVF9JRl9PUFRJT04oTUFDUk8tTkFNRSwgT1BUSU9OLU5BTUUsIElGLVNFVCwgW0lGLU5PVC1TRVRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhlY3V0ZSBJRi1TRVQgaWYgT1BUSU9OIGlzIHNldCwgSUYtTk9ULVNFVCBvdGhlcndpc2UuCittNF9kZWZpbmUoW19MVF9JRl9PUFRJT05dLAorW200X2lmZGVmKF9MVF9NQU5HTEVfT1BUSU9OKFskMV0sIFskMl0pLCBbJDNdLCBbJDRdKV0pCisKKworIyBfTFRfVU5MRVNTX09QVElPTlMoTUFDUk8tTkFNRSwgT1BUSU9OLUxJU1QsIElGLU5PVC1TRVQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhlY3V0ZSBJRi1OT1QtU0VUIHVubGVzcyBhbGwgb3B0aW9ucyBpbiBPUFRJT04tTElTVCBmb3IgTUFDUk8tTkFNRQorIyBhcmUgc2V0LgorbTRfZGVmaW5lKFtfTFRfVU5MRVNTX09QVElPTlNdLAorW200X2ZvcmVhY2goW19MVF9PcHRpb25dLCBtNF9zcGxpdChtNF9ub3JtYWxpemUoWyQyXSkpLAorCSAgICBbbTRfaWZkZWYoX0xUX01BTkdMRV9PUFRJT04oWyQxXSwgX0xUX09wdGlvbiksCisJCSAgICAgIFttNF9kZWZpbmUoWyQwX2ZvdW5kXSldKV0pW11kbmwKK200X2lmZGVmKFskMF9mb3VuZF0sIFttNF91bmRlZmluZShbJDBfZm91bmRdKV0sIFskMworXSlbXWRubAorXSkKKworCisjIF9MVF9TRVRfT1BUSU9OUyhNQUNSTy1OQU1FLCBPUFRJT04tTElTVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPUFRJT04tTElTVCBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIExpYnRvb2wgb3B0aW9ucyBhc3NvY2lhdGVkCisjIHdpdGggTUFDUk8tTkFNRS4gIElmIGFueSBPUFRJT04gaGFzIGEgbWF0Y2hpbmcgaGFuZGxlciBkZWNsYXJlZCB3aXRoCisjIExUX09QVElPTl9ERUZJTkUsIGRpc3BhdGNoIHRvIHRoYXQgbWFjcm87IG90aGVyd2lzZSBjb21wbGFpbiBhYm91dAorIyB0aGUgdW5rbm93biBvcHRpb24gYW5kIGV4aXQuCittNF9kZWZ1bihbX0xUX1NFVF9PUFRJT05TXSwKK1sjIFNldCBvcHRpb25zCittNF9mb3JlYWNoKFtfTFRfT3B0aW9uXSwgbTRfc3BsaXQobTRfbm9ybWFsaXplKFskMl0pKSwKKyAgICBbX0xUX1NFVF9PUFRJT04oWyQxXSwgX0xUX09wdGlvbildKQorCittNF9pZihbJDFdLFtMVF9JTklUXSxbCisgIGRubAorICBkbmwgU2ltcGx5IHNldCBzb21lIGRlZmF1bHQgdmFsdWVzIChpLmUgb2ZmKSBpZiBib29sZWFuIG9wdGlvbnMgd2VyZSBub3QKKyAgZG5sIHNwZWNpZmllZDoKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW2Rsb3Blbl0sIFtlbmFibGVfZGxvcGVuPW5vCisgIF0pCisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFt3aW4zMi1kbGxdLCBbZW5hYmxlX3dpbjMyX2RsbD1ubworICBdKQorICBkbmwKKyAgZG5sIElmIG5vIHJlZmVyZW5jZSB3YXMgbWFkZSB0byB2YXJpb3VzIHBhaXJzIG9mIG9wcG9zaW5nIG9wdGlvbnMsIHRoZW4KKyAgZG5sIHdlIHJ1biB0aGUgZGVmYXVsdCBtb2RlIGhhbmRsZXIgZm9yIHRoZSBwYWlyLiAgRm9yIGV4YW1wbGUsIGlmIG5laXRoZXIKKyAgZG5sIGBzaGFyZWQnIG5vciBgZGlzYWJsZS1zaGFyZWQnIHdhcyBwYXNzZWQsIHdlIGVuYWJsZSBidWlsZGluZyBvZiBzaGFyZWQKKyAgZG5sIGFyY2hpdmVzIGJ5IGRlZmF1bHQ6CisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtzaGFyZWQgZGlzYWJsZS1zaGFyZWRdLCBbX0xUX0VOQUJMRV9TSEFSRURdKQorICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbc3RhdGljIGRpc2FibGUtc3RhdGljXSwgW19MVF9FTkFCTEVfU1RBVElDXSkKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW3BpYy1vbmx5IG5vLXBpY10sIFtfTFRfV0lUSF9QSUNdKQorICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbZmFzdC1pbnN0YWxsIGRpc2FibGUtZmFzdC1pbnN0YWxsXSwKKyAgCQkgICBbX0xUX0VOQUJMRV9GQVNUX0lOU1RBTExdKQorICBdKQorXSkjIF9MVF9TRVRfT1BUSU9OUworCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTWFjcm9zIHRvIGhhbmRsZSBMVF9JTklUIG9wdGlvbnMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBfTFRfTUFOR0xFX0RFRlVOKE1BQ1JPLU5BTUUsIE9QVElPTi1OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfTUFOR0xFX0RFRlVOXSwKK1tbX0xUX09QVElPTl9ERUZVTl9dbTRfYnBhdHN1YnN0KG00X3RvdXBwZXIoWyQxX18kMl0pLCBbW15BLVowLTlfXV0sIFtfXSldKQorCisKKyMgTFRfT1BUSU9OX0RFRklORShNQUNSTy1OQU1FLCBPUFRJT04tTkFNRSwgQ09ERSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbTFRfT1BUSU9OX0RFRklORV0sCitbbTRfZGVmaW5lKF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksIFskM10pW11kbmwKK10pIyBMVF9PUFRJT05fREVGSU5FCisKKworIyBkbG9wZW4KKyMgLS0tLS0tCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2Rsb3Blbl0sIFtlbmFibGVfZGxvcGVuPXllcworXSkKKworQVVfREVGVU4oW0FDX0xJQlRPT0xfRExPUEVOXSwKK1tfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtkbG9wZW5dKQorQUNfRElBR05PU0UoW29ic29sZXRlXSwKK1skMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UKK3B1dCB0aGUgYGRsb3Blbicgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQorXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0RMT1BFTl0sIFtdKQorCisKKyMgd2luMzItZGxsCisjIC0tLS0tLS0tLQorIyBEZWNsYXJlIHBhY2thZ2Ugc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2luMzIgZGxsJ3MuCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3dpbjMyLWRsbF0sCitbZW5hYmxlX3dpbjMyX2RsbD15ZXMKKworY2FzZSAkaG9zdCBpbgorKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi1jZWdjYyopCisgIEFDX0NIRUNLX1RPT0woQVMsIGFzLCBmYWxzZSkKKyAgQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKKyAgQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKKyAgOzsKK2VzYWMKKwordGVzdCAteiAiJEFTIiAmJiBBUz1hcworX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzBdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAorCit0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCitfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMF0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCisKK3Rlc3QgLXogIiRPQkpEVU1QIiAmJiBPQkpEVU1QPW9iamR1bXAKK19MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFswXSwgW09iamVjdCBkdW1wZXIgcHJvZ3JhbV0pZG5sCitdKSMgd2luMzItZGxsCisKK0FVX0RFRlVOKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbd2luMzItZGxsXSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91CitwdXQgdGhlIGB3aW4zMi1kbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK10pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLCBbXSkKKworCisjIF9MVF9FTkFCTEVfU0hBUkVEKFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLXNoYXJlZCBmbGFnLCBhbmQgc3VwcG9ydHMgdGhlIGBzaGFyZWQnIGFuZAorIyBgZGlzYWJsZS1zaGFyZWQnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NIQVJFRF0sCitbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NIQVJFRF9ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAorQUNfQVJHX0VOQUJMRShbc2hhcmVkXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXNoYXJlZEA8OkA9UEtHU0A6PkBdLAorCVtidWlsZCBzaGFyZWQgbGlicmFyaWVzIEA8OkBkZWZhdWx0PV1fTFRfRU5BQkxFX1NIQVJFRF9ERUZBVUxUW0A6PkBdKV0sCisgICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkZW5hYmxldmFsIGluCisgICAgeWVzKSBlbmFibGVfc2hhcmVkPXllcyA7OworICAgIG5vKSBlbmFibGVfc2hhcmVkPW5vIDs7CisgICAgKikKKyAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbworCUlGUz0iJGx0X3NhdmVfaWZzIgorCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCisJICBlbmFibGVfc2hhcmVkPXllcworCWZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIDs7CisgICAgZXNhY10sCisgICAgW2VuYWJsZV9zaGFyZWQ9XV9MVF9FTkFCTEVfU0hBUkVEX0RFRkFVTFQpCisKKyAgICBfTFRfREVDTChbYnVpbGRfbGlidG9vbF9saWJzXSwgW2VuYWJsZV9zaGFyZWRdLCBbMF0sCisJW1doZXRoZXIgb3Igbm90IHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQorXSkjIF9MVF9FTkFCTEVfU0hBUkVECisKK0xUX09QVElPTl9ERUZJTkUoW0xUX0lOSVRdLCBbc2hhcmVkXSwgW19MVF9FTkFCTEVfU0hBUkVEKFt5ZXNdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2Rpc2FibGUtc2hhcmVkXSwgW19MVF9FTkFCTEVfU0hBUkVEKFtub10pXSkKKworIyBPbGQgbmFtZXM6CitBQ19ERUZVTihbQUNfRU5BQkxFX1NIQVJFRF0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBtNF9pZihbJDFdLCBbbm9dLCBbZGlzYWJsZS1dKVtzaGFyZWRdKQorXSkKKworQUNfREVGVU4oW0FDX0RJU0FCTEVfU0hBUkVEXSwKK1tfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtkaXNhYmxlLXNoYXJlZF0pCitdKQorCitBVV9ERUZVTihbQU1fRU5BQkxFX1NIQVJFRF0sIFtBQ19FTkFCTEVfU0hBUkVEKCRAKV0pCitBVV9ERUZVTihbQU1fRElTQUJMRV9TSEFSRURdLCBbQUNfRElTQUJMRV9TSEFSRUQoJEApXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBTV9FTkFCTEVfU0hBUkVEXSwgW10pCitkbmwgQUNfREVGVU4oW0FNX0RJU0FCTEVfU0hBUkVEXSwgW10pCisKKworCisjIF9MVF9FTkFCTEVfU1RBVElDKFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLXN0YXRpYyBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgYHN0YXRpYycgYW5kCisjIGBkaXNhYmxlLXN0YXRpYycgTFRfSU5JVCBvcHRpb25zLgorIyBERUZBVUxUIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYHllcycuCittNF9kZWZpbmUoW19MVF9FTkFCTEVfU1RBVElDXSwKK1ttNF9kZWZpbmUoW19MVF9FTkFCTEVfU1RBVElDX0RFRkFVTFRdLCBbbTRfaWYoJDEsIG5vLCBubywgeWVzKV0pZG5sCitBQ19BUkdfRU5BQkxFKFtzdGF0aWNdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtc3RhdGljQDw6QD1QS0dTQDo+QF0sCisJW2J1aWxkIHN0YXRpYyBsaWJyYXJpZXMgQDw6QGRlZmF1bHQ9XV9MVF9FTkFCTEVfU1RBVElDX0RFRkFVTFRbQDo+QF0pXSwKKyAgICBbcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpIGVuYWJsZV9zdGF0aWM9eWVzIDs7CisgICAgbm8pIGVuYWJsZV9zdGF0aWM9bm8gOzsKKyAgICAqKQorICAgICBlbmFibGVfc3RhdGljPW5vCisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgorCSAgZW5hYmxlX3N0YXRpYz15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWNdLAorICAgIFtlbmFibGVfc3RhdGljPV1fTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUKQorCisgICAgX0xUX0RFQ0woW2J1aWxkX29sZF9saWJzXSwgW2VuYWJsZV9zdGF0aWNdLCBbMF0sCisJW1doZXRoZXIgb3Igbm90IHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQorXSkjIF9MVF9FTkFCTEVfU1RBVElDCisKK0xUX09QVElPTl9ERUZJTkUoW0xUX0lOSVRdLCBbc3RhdGljXSwgW19MVF9FTkFCTEVfU1RBVElDKFt5ZXNdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2Rpc2FibGUtc3RhdGljXSwgW19MVF9FTkFCTEVfU1RBVElDKFtub10pXSkKKworIyBPbGQgbmFtZXM6CitBQ19ERUZVTihbQUNfRU5BQkxFX1NUQVRJQ10sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBtNF9pZihbJDFdLCBbbm9dLCBbZGlzYWJsZS1dKVtzdGF0aWNdKQorXSkKKworQUNfREVGVU4oW0FDX0RJU0FCTEVfU1RBVElDXSwKK1tfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtkaXNhYmxlLXN0YXRpY10pCitdKQorCitBVV9ERUZVTihbQU1fRU5BQkxFX1NUQVRJQ10sIFtBQ19FTkFCTEVfU1RBVElDKCRAKV0pCitBVV9ERUZVTihbQU1fRElTQUJMRV9TVEFUSUNdLCBbQUNfRElTQUJMRV9TVEFUSUMoJEApXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBTV9FTkFCTEVfU1RBVElDXSwgW10pCitkbmwgQUNfREVGVU4oW0FNX0RJU0FCTEVfU1RBVElDXSwgW10pCisKKworCisjIF9MVF9FTkFCTEVfRkFTVF9JTlNUQUxMKFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLWZhc3QtaW5zdGFsbCBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgYGZhc3QtaW5zdGFsbCcKKyMgYW5kIGBkaXNhYmxlLWZhc3QtaW5zdGFsbCcgTFRfSU5JVCBvcHRpb25zLgorIyBERUZBVUxUIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYHllcycuCittNF9kZWZpbmUoW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMXSwKK1ttNF9kZWZpbmUoW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMX0RFRkFVTFRdLCBbbTRfaWYoJDEsIG5vLCBubywgeWVzKV0pZG5sCitBQ19BUkdfRU5BQkxFKFtmYXN0LWluc3RhbGxdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZmFzdC1pbnN0YWxsQDw6QD1QS0dTQDo+QF0sCisgICAgW29wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBAPDpAZGVmYXVsdD1dX0xUX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVFtAOj5AXSldLAorICAgIFtwPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJGVuYWJsZXZhbCBpbgorICAgIHllcykgZW5hYmxlX2Zhc3RfaW5zdGFsbD15ZXMgOzsKKyAgICBubykgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubyA7OworICAgICopCisgICAgICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgorCSAgZW5hYmxlX2Zhc3RfaW5zdGFsbD15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWNdLAorICAgIFtlbmFibGVfZmFzdF9pbnN0YWxsPV1fTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUKQorCitfTFRfREVDTChbZmFzdF9pbnN0YWxsXSwgW2VuYWJsZV9mYXN0X2luc3RhbGxdLCBbMF0sCisJIFtXaGV0aGVyIG9yIG5vdCB0byBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb25dKWRubAorXSkjIF9MVF9FTkFCTEVfRkFTVF9JTlNUQUxMCisKK0xUX09QVElPTl9ERUZJTkUoW0xUX0lOSVRdLCBbZmFzdC1pbnN0YWxsXSwgW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMKFt5ZXNdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2Rpc2FibGUtZmFzdC1pbnN0YWxsXSwgW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMKFtub10pXSkKKworIyBPbGQgbmFtZXM6CitBVV9ERUZVTihbQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBtNF9pZihbJDFdLCBbbm9dLCBbZGlzYWJsZS1dKVtmYXN0LWluc3RhbGxdKQorQUNfRElBR05PU0UoW29ic29sZXRlXSwKK1skMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UgcHV0Cit0aGUgYGZhc3QtaW5zdGFsbCcgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQorXSkKKworQVVfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSwKK1tfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtkaXNhYmxlLWZhc3QtaW5zdGFsbF0pCitBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAorWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdSBwdXQKK3RoZSBgZGlzYWJsZS1mYXN0LWluc3RhbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK10pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9ESVNBQkxFX0ZBU1RfSU5TVEFMTF0sIFtdKQorCisKKyMgX0xUX1dJVEhfUElDKFtNT0RFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLXdpdGgtcGljIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSBgcGljLW9ubHknIGFuZCBgbm8tcGljJworIyBMVF9JTklUIG9wdGlvbnMuCisjIE1PREUgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYm90aCcuCittNF9kZWZpbmUoW19MVF9XSVRIX1BJQ10sCitbQUNfQVJHX1dJVEgoW3BpY10sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGljXSwKKwlbdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgQDw6QGRlZmF1bHQ9dXNlIGJvdGhAOj5AXSldLAorICAgIFtwaWNfbW9kZT0iJHdpdGh2YWwiXSwKKyAgICBbcGljX21vZGU9ZGVmYXVsdF0pCisKK3Rlc3QgLXogIiRwaWNfbW9kZSIgJiYgcGljX21vZGU9bTRfZGVmYXVsdChbJDFdLCBbZGVmYXVsdF0pCisKK19MVF9ERUNMKFtdLCBbcGljX21vZGVdLCBbMF0sIFtXaGF0IHR5cGUgb2Ygb2JqZWN0cyB0byBidWlsZF0pZG5sCitdKSMgX0xUX1dJVEhfUElDCisKK0xUX09QVElPTl9ERUZJTkUoW0xUX0lOSVRdLCBbcGljLW9ubHldLCBbX0xUX1dJVEhfUElDKFt5ZXNdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW25vLXBpY10sIFtfTFRfV0lUSF9QSUMoW25vXSldKQorCisjIE9sZCBuYW1lOgorQVVfREVGVU4oW0FDX0xJQlRPT0xfUElDTU9ERV0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbcGljLW9ubHldKQorQUNfRElBR05PU0UoW29ic29sZXRlXSwKK1skMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UKK3B1dCB0aGUgYHBpYy1vbmx5JyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfUElDTU9ERV0sIFtdKQorCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTFRETF9JTklUIE9wdGlvbnMgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisKK200X2RlZmluZShbX0xURExfTU9ERV0sIFtdKQorTFRfT1BUSU9OX0RFRklORShbTFRETF9JTklUXSwgW25vbnJlY3Vyc2l2ZV0sCisJCSBbbTRfZGVmaW5lKFtfTFRETF9NT0RFXSwgW25vbnJlY3Vyc2l2ZV0pXSkKK0xUX09QVElPTl9ERUZJTkUoW0xURExfSU5JVF0sIFtyZWN1cnNpdmVdLAorCQkgW200X2RlZmluZShbX0xURExfTU9ERV0sIFtyZWN1cnNpdmVdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVERMX0lOSVRdLCBbc3VicHJvamVjdF0sCisJCSBbbTRfZGVmaW5lKFtfTFRETF9NT0RFXSwgW3N1YnByb2plY3RdKV0pCisKK200X2RlZmluZShbX0xURExfVFlQRV0sIFtdKQorTFRfT1BUSU9OX0RFRklORShbTFRETF9JTklUXSwgW2luc3RhbGxhYmxlXSwKKwkJIFttNF9kZWZpbmUoW19MVERMX1RZUEVdLCBbaW5zdGFsbGFibGVdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVERMX0lOSVRdLCBbY29udmVuaWVuY2VdLAorCQkgW200X2RlZmluZShbX0xURExfVFlQRV0sIFtjb252ZW5pZW5jZV0pXSkKZGlmZiAtLWdpdCBhL200L2x0c3VnYXIubTQgYi9tNC9sdHN1Z2FyLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMDBhMDUKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9sdHN1Z2FyLm00CkBAIC0wLDAgKzEsMTIzIEBACisjIGx0c3VnYXIubTQgLS0gbGlidG9vbCBtNCBiYXNlIGxheWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAtKi1BdXRvY29uZi0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDA0CisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCisjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNiBsdHN1Z2FyLm00CisKKyMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCitBQ19ERUZVTihbTFRTVUdBUl9WRVJTSU9OXSwgW200X2lmKFswLjFdKV0pCisKKworIyBsdF9qb2luKFNFUCwgQVJHMSwgW0FSRzIuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9kdWNlIEFSRzFTRVBBUkcyLi4uU0VQQVJHbiwgb21pdHRpbmcgW10gYXJndW1lbnRzIGFuZCB0aGVpcgorIyBhc3NvY2lhdGVkIHNlcGFyYXRvci4KKyMgTmVlZGVkIHVudGlsIHdlIGNhbiByZWx5IG9uIG00X2pvaW4gZnJvbSBBdXRvY29uZiAyLjYyLCBzaW5jZSBhbGwgZWFybGllcgorIyB2ZXJzaW9ucyBpbiBtNHN1Z2FyIGhhZCBidWdzLgorbTRfZGVmaW5lKFtsdF9qb2luXSwKK1ttNF9pZihbJCNdLCBbMV0sIFtdLAorICAgICAgIFskI10sIFsyXSwgW1skMl1dLAorICAgICAgIFttNF9pZihbJDJdLCBbXSwgW10sIFtbJDJdX10pJDAoWyQxXSwgbTRfc2hpZnQobTRfc2hpZnQoJEApKSldKV0pCittNF9kZWZpbmUoW19sdF9qb2luXSwKK1ttNF9pZihbJCMkMl0sIFsyXSwgW10sCisgICAgICAgW200X2lmKFskMl0sIFtdLCBbXSwgW1skMSQyXV0pJDAoWyQxXSwgbTRfc2hpZnQobTRfc2hpZnQoJEApKSldKV0pCisKKworIyBsdF9jYXIoTElTVCkKKyMgbHRfY2RyKExJU1QpCisjIC0tLS0tLS0tLS0tLQorIyBNYW5pcHVsYXRlIG00IGxpc3RzLgorIyBUaGVzZSBtYWNyb3MgYXJlIG5lY2Vzc2FyeSBhcyBsb25nIGFzIHdpbGwgc3RpbGwgbmVlZCB0byBzdXBwb3J0CisjIEF1dG9jb25mLTIuNTkgd2hpY2ggcXVvdGVzIGRpZmZlcmVudGx5LgorbTRfZGVmaW5lKFtsdF9jYXJdLCBbWyQxXV0pCittNF9kZWZpbmUoW2x0X2Nkcl0sCitbbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKKyAgICAgICBbJCNdLCAxLCBbXSwKKyAgICAgICBbbTRfZHF1b3RlKG00X3NoaWZ0KCRAKSldKV0pCittNF9kZWZpbmUoW2x0X3VucXVvdGVdLCAkMSkKKworCisjIGx0X2FwcGVuZChNQUNSTy1OQU1FLCBTVFJJTkcsIFtTRVBBUkFUT1JdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVkZWZpbmUgTUFDUk8tTkFNRSB0byBob2xkIGl0cyBmb3JtZXIgY29udGVudCBwbHVzIGBTRVBBUkFUT1InYFNUUklORycuCisjIE5vdGUgdGhhdCBuZWl0aGVyIFNFUEFSQVRPUiBub3IgU1RSSU5HIGFyZSBleHBhbmRlZDsgdGhleSBhcmUgYXBwZW5kZWQKKyMgdG8gTUFDUk8tTkFNRSBhcyBpcyAobGVhdmluZyB0aGUgZXhwYW5zaW9uIGZvciB3aGVuIE1BQ1JPLU5BTUUgaXMgaW52b2tlZCkuCisjIE5vIFNFUEFSQVRPUiBpcyBvdXRwdXQgaWYgTUFDUk8tTkFNRSB3YXMgcHJldmlvdXNseSB1bmRlZmluZWQgKGRpZmZlcmVudAorIyB0aGFuIGRlZmluZWQgYW5kIGVtcHR5KS4KKyMKKyMgVGhpcyBtYWNybyBpcyBuZWVkZWQgdW50aWwgd2UgY2FuIHJlbHkgb24gQXV0b2NvbmYgMi42Miwgc2luY2UgZWFybGllcgorIyB2ZXJzaW9ucyBvZiBtNHN1Z2FyIG1pc3Rha2VubHkgZXhwYW5kZWQgU0VQQVJBVE9SIGJ1dCBub3QgU1RSSU5HLgorbTRfZGVmaW5lKFtsdF9hcHBlbmRdLAorW200X2RlZmluZShbJDFdLAorCSAgIG00X2lmZGVmKFskMV0sIFttNF9kZWZuKFskMV0pWyQzXV0pWyQyXSldKQorCisKKworIyBsdF9jb21iaW5lKFNFUCwgUFJFRklYLUxJU1QsIElORklYLCBTVUZGSVgxLCBbU1VGRklYMi4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBhIFNFUCBkZWxpbWl0ZWQgbGlzdCBvZiBhbGwgcGFpcmVkIGNvbWJpbmF0aW9ucyBvZiBlbGVtZW50cyBvZgorIyBQUkVGSVgtTElTVCB3aXRoIFNVRkZJWDEgdGhyb3VnaCBTVUZGSVhuLiAgRWFjaCBlbGVtZW50IG9mIHRoZSBsaXN0CisjIGhhcyB0aGUgZm9ybSBQUkVGSVhtSU5GSVhTVUZGSVhuLgorIyBOZWVkZWQgdW50aWwgd2UgY2FuIHJlbHkgb24gbTRfY29tYmluZSBhZGRlZCBpbiBBdXRvY29uZiAyLjYyLgorbTRfZGVmaW5lKFtsdF9jb21iaW5lXSwKK1ttNF9pZihtNF9ldmFsKFskIyA+IDNdKSwgWzFdLAorICAgICAgIFttNF9wdXNoZGVmKFtfTHRfc2VwXSwgW200X2RlZmluZShbX0x0X3NlcF0sIG00X2RlZm4oW2x0X2Nhcl0pKV0pXV1kbmwKK1tbbTRfZm9yZWFjaChbX0x0X3ByZWZpeF0sIFskMl0sCisJICAgICBbbTRfZm9yZWFjaChbX0x0X3N1ZmZpeF0sCisJCV1tNF9kcXVvdGUobTRfZHF1b3RlKG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpKSlbLAorCVtfTHRfc2VwKFskMV0pW11tNF9kZWZuKFtfTHRfcHJlZml4XSlbJDNdbTRfZGVmbihbX0x0X3N1ZmZpeF0pXSldKV0pXSkKKworCisjIGx0X2lmX2FwcGVuZF91bmlxKE1BQ1JPLU5BTUUsIFZBUk5BTUUsIFtTRVBBUkFUT1JdLCBbVU5JUV0sIFtOT1QtVU5JUV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmZiBNQUNSTy1OQU1FIGRvZXMgbm90IHlldCBjb250YWluIFZBUk5BTUUsIHRoZW4gYXBwZW5kIGl0IChkZWxpbWl0ZWQKKyMgYnkgU0VQQVJBVE9SIGlmIHN1cHBsaWVkKSBhbmQgZXhwYW5kIFVOSVEsIGVsc2UgTk9ULVVOSVEuCittNF9kZWZpbmUoW2x0X2lmX2FwcGVuZF91bmlxXSwKK1ttNF9pZmRlZihbJDFdLAorCSAgW200X2lmKG00X2luZGV4KFskM11tNF9kZWZuKFskMV0pWyQzXSwgWyQzJDIkM10pLCBbLTFdLAorCQkgW2x0X2FwcGVuZChbJDFdLCBbJDJdLCBbJDNdKSQ0XSwKKwkJIFskNV0pXSwKKwkgIFtsdF9hcHBlbmQoWyQxXSwgWyQyXSwgWyQzXSkkNF0pXSkKKworCisjIGx0X2RpY3RfYWRkKERJQ1QsIEtFWSwgVkFMVUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RpY3RfYWRkXSwKK1ttNF9kZWZpbmUoWyQxKCQyKV0sIFskM10pXSkKKworCisjIGx0X2RpY3RfYWRkX3N1YmtleShESUNULCBLRVksIFNVQktFWSwgVkFMVUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RpY3RfYWRkX3N1YmtleV0sCitbbTRfZGVmaW5lKFskMSgkMjokMyldLCBbJDRdKV0pCisKKworIyBsdF9kaWN0X2ZldGNoKERJQ1QsIEtFWSwgW1NVQktFWV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGljdF9mZXRjaF0sCitbbTRfaWZ2YWwoWyQzXSwKKwltNF9pZmRlZihbJDEoJDI6JDMpXSwgW200X2RlZm4oWyQxKCQyOiQzKV0pXSksCisgICAgbTRfaWZkZWYoWyQxKCQyKV0sIFttNF9kZWZuKFskMSgkMildKV0pKV0pCisKKworIyBsdF9pZl9kaWN0X2ZldGNoKERJQ1QsIEtFWSwgW1NVQktFWV0sIFZBTFVFLCBJRi1UUlVFLCBbSUYtRkFMU0VdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9pZl9kaWN0X2ZldGNoXSwKK1ttNF9pZihsdF9kaWN0X2ZldGNoKFskMV0sIFskMl0sIFskM10pLCBbJDRdLAorCVskNV0sCisgICAgWyQ2XSldKQorCisKKyMgbHRfZGljdF9maWx0ZXIoRElDVCwgW1NVQktFWV0sIFZBTFVFLCBbU0VQQVJBVE9SXSwgS0VZLCBbLi4uXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGljdF9maWx0ZXJdLAorW200X2lmKFskNV0sIFtdLCBbXSwKKyAgW2x0X2pvaW4obTRfcXVvdGUobTRfZGVmYXVsdChbJDRdLCBbWywgXV0pKSwKKyAgICAgICAgICAgbHRfdW5xdW90ZShtNF9zcGxpdChtNF9ub3JtYWxpemUobTRfZm9yZWFjaChfTHRfa2V5LCBsdF9jYXIoW200X3NoaWZ0big0LCAkQCldKSwKKwkJICAgICAgW2x0X2lmX2RpY3RfZmV0Y2goWyQxXSwgX0x0X2tleSwgWyQyXSwgWyQzXSwgW19MdF9rZXkgXSldKSkpKSldKVtdZG5sCitdKQpkaWZmIC0tZ2l0IGEvbTQvbHR2ZXJzaW9uLm00IGIvbTQvbHR2ZXJzaW9uLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTE1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9sdHZlcnNpb24ubTQKQEAgLTAsMCArMSwyMyBAQAorIyBsdHZlcnNpb24ubTQgLS0gdmVyc2lvbiBudW1iZXJzCQkJLSotIEF1dG9jb25mIC0qLQorIworIyAgIENvcHlyaWdodCAoQykgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBXcml0dGVuIGJ5IFNjb3R0IEphbWVzIFJlbW5hbnQsIDIwMDQKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KKworIyBzZXJpYWwgMzAxMiBsdHZlcnNpb24ubTQKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKKworbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjZdKQorbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzAxMl0pCisKK0FDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCitbbWFjcm9fdmVyc2lvbj0nMi4yLjYnCittYWNyb19yZXZpc2lvbj0nMS4zMDEyJworX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCitfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQorXSkKZGlmZiAtLWdpdCBhL200L2x0fm9ic29sZXRlLm00IGIvbTQvbHR+b2Jzb2xldGUubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM3YmIyMAotLS0gL2Rldi9udWxsCisrKyBiL200L2x0fm9ic29sZXRlLm00CkBAIC0wLDAgKzEsOTIgQEAKKyMgbHR+b2Jzb2xldGUubTQgLS0gYWNsb2NhbCBzYXRpc2Z5aW5nIG9ic29sZXRlIGRlZmluaXRpb25zLiAgICAtKi1BdXRvY29uZi0qLQorIworIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBXcml0dGVuIGJ5IFNjb3R0IEphbWVzIFJlbW5hbnQsIDIwMDQuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCisjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAorCisjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KKyMKKyMgSW4gdGhlIHBhc3QgbGlidG9vbC5tNCBoYXMgcHJvdmlkZWQgbWFjcm9zIHZpYSBBQ19ERUZVTiAob3IgQVVfREVGVU4pCisjIHdoaWNoIGhhdmUgbGF0ZXIgYmVlbiBjaGFuZ2VkIHRvIG00X2RlZmluZSBhcyB0aGV5IGFyZW4ndCBwYXJ0IG9mIHRoZQorIyBleHBvcnRlZCBBUEksIG9yIG1vdmVkIHRvIEF1dG9jb25mIG9yIEF1dG9tYWtlIHdoZXJlIHRoZXkgYmVsb25nLgorIworIyBUaGUgdHJvdWJsZSBpcywgYWNsb2NhbCBpcyBhIGJpdCB0aGljay4gIEl0J2xsIHNlZSB0aGUgb2xkIEFDX0RFRlVOCisjIGluIC91c3Ivc2hhcmUvYWNsb2NhbC9saWJ0b29sLm00IGFuZCByZW1lbWJlciBpdCwgdGhlbiB3aGVuIGl0IHNlZXMgdXMKKyMgdXNpbmcgYSBtYWNybyB3aXRoIHRoZSBzYW1lIG5hbWUgaW4gb3VyIGxvY2FsIG00L2xpYnRvb2wubTQgaXQnbGwKKyMgcHVsbCB0aGUgb2xkIGxpYnRvb2wubTQgaW4gKGl0IGRvZXNuJ3Qgc2VlIG91ciBzaGlueSBuZXcgbTRfZGVmaW5lCisjIGFuZCBkb2Vzbid0IGtub3cgYWJvdXQgQXV0b2NvbmYgbWFjcm9zIGF0IGFsbC4pCisjCisjIFNvIHdlIHByb3ZpZGUgdGhpcyBmaWxlLCB3aGljaCBoYXMgYSBzaWxseSBmaWxlbmFtZSBzbyBpdCdzIGFsd2F5cworIyBpbmNsdWRlZCBhZnRlciBldmVyeXRoaW5nIGVsc2UuICBUaGlzIHByb3ZpZGVzIGFjbG9jYWwgd2l0aCB0aGUKKyMgQUNfREVGVU5zIGl0IHdhbnRzLCBidXQgd2hlbiBtNCBwcm9jZXNzZXMgaXQsIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcKKyMgYmVjYXVzZSB0aG9zZSBtYWNyb3MgYWxyZWFkeSBleGlzdCwgb3Igd2lsbCBiZSBvdmVyd3JpdHRlbiBsYXRlci4KKyMgV2UgdXNlIEFDX0RFRlVOIG92ZXIgQVVfREVGVU4gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhY2xvY2FsLTEuNi4gCisjCisjIEFueXRpbWUgd2Ugd2l0aGRyYXcgYW4gQUNfREVGVU4gb3IgQVVfREVGVU4sIHJlbWVtYmVyIHRvIGFkZCBpdCBoZXJlLgorIyBZZXMsIHRoYXQgbWVhbnMgZXZlcnkgbmFtZSBvbmNlIHRha2VuIHdpbGwgbmVlZCB0byByZW1haW4gaGVyZSB1bnRpbAorIyB3ZSBnaXZlIHVwIGNvbXBhdGliaWxpdHkgd2l0aCB2ZXJzaW9ucyBiZWZvcmUgMS43LCBhdCB3aGljaCBwb2ludAorIyB3ZSBuZWVkIHRvIGtlZXAgb25seSB0aG9zZSBuYW1lcyB3aGljaCB3ZSBzdGlsbCByZWZlciB0by4KKworIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KK0FDX0RFRlVOKFtMVE9CU09MRVRFX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCisKK200X2lmbmRlZihbQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xJTktFUl9PUFRJT05dKV0pCittNF9pZm5kZWYoW0FDX1BST0dfRUdSRVBdLAkJW0FDX0RFRlVOKFtBQ19QUk9HX0VHUkVQXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCVtBQ19ERUZVTihbX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0hdKV0pCittNF9pZm5kZWYoW19MVF9BQ19TSEVMTF9JTklUXSwJCVtBQ19ERUZVTihbX0xUX0FDX1NIRUxMX0lOSVRdKV0pCittNF9pZm5kZWYoW19MVF9BQ19TWVNfTElCUEFUSF9BSVhdLAlbQUNfREVGVU4oW19MVF9BQ19TWVNfTElCUEFUSF9BSVhdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0xUTUFJTl0sCQlbQUNfREVGVU4oW19MVF9QUk9HX0xUTUFJTl0pXSkKK200X2lmbmRlZihbX0xUX0FDX1RBR1ZBUl0sCQlbQUNfREVGVU4oW19MVF9BQ19UQUdWQVJdKV0pCittNF9pZm5kZWYoW0FDX0xURExfRU5BQkxFX0lOU1RBTExdLAlbQUNfREVGVU4oW0FDX0xURExfRU5BQkxFX0lOU1RBTExdKV0pCittNF9pZm5kZWYoW0FDX0xURExfUFJFT1BFTl0sCQlbQUNfREVGVU4oW0FDX0xURExfUFJFT1BFTl0pXSkKK200X2lmbmRlZihbX0xUX0FDX1NZU19DT01QSUxFUl0sCVtBQ19ERUZVTihbX0xUX0FDX1NZU19DT01QSUxFUl0pXSkKK200X2lmbmRlZihbX0xUX0FDX0xPQ0tdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTE9DS10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfT0xEX0FSQ0hJVkVdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX09MRF9BUkNISVZFXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfVFJZX0RMT1BFTl9TRUxGXSwJW0FDX0RFRlVOKFtfTFRfQUNfVFJZX0RMT1BFTl9TRUxGXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1BST0dfQ0NfQ19PXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ0NfQ19PXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1NdLCBbQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLU10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9PQkpESVJdLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX09CSkRJUl0pXSkKK200X2lmbmRlZihbQUNfTFRETF9PQkpESVJdLAkJW0FDX0RFRlVOKFtBQ19MVERMX09CSkRJUl0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEhdLCBbQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1NZU19MSUJfU1RSSVBdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0xJQl9TVFJJUF0pXSkKK200X2lmbmRlZihbQUNfUEFUSF9NQUdJQ10sCQlbQUNfREVGVU4oW0FDX1BBVEhfTUFHSUNdKV0pCittNF9pZm5kZWYoW0FDX1BST0dfTERfR05VXSwJCVtBQ19ERUZVTihbQUNfUFJPR19MRF9HTlVdKV0pCittNF9pZm5kZWYoW0FDX1BST0dfTERfUkVMT0FEX0ZMQUddLAlbQUNfREVGVU4oW0FDX1BST0dfTERfUkVMT0FEX0ZMQUddKV0pCittNF9pZm5kZWYoW0FDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EXSwJW0FDX0RFRlVOKFtBQ19ERVBMSUJTX0NIRUNLX01FVEhPRF0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEldLCBbQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9OT19SVFRJXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEVdLCBbQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRV0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQ10sIFtBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQ10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QUk9HX0xEX1NITElCU10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0xEX1NITElCU10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUF0sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUF0pXSkKK200X2lmbmRlZihbTFRfQUNfUFJPR19FR1JFUF0sCQlbQUNfREVGVU4oW0xUX0FDX1BST0dfRUdSRVBdKV0pCittNF9pZm5kZWYoW0xUX0FDX1BST0dfU0VEXSwJCVtBQ19ERUZVTihbTFRfQUNfUFJPR19TRURdKV0pCittNF9pZm5kZWYoW19MVF9DQ19CQVNFTkFNRV0sCQlbQUNfREVGVU4oW19MVF9DQ19CQVNFTkFNRV0pXSkKK200X2lmbmRlZihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSwJW0FDX0RFRlVOKFtfTFRfQ09NUElMRVJfQk9JTEVSUExBVEVdKV0pCittNF9pZm5kZWYoW19MVF9MSU5LRVJfQk9JTEVSUExBVEVdLAlbQUNfREVGVU4oW19MVF9MSU5LRVJfQk9JTEVSUExBVEVdKV0pCittNF9pZm5kZWYoW19BQ19QUk9HX0xJQlRPT0xdLAkJW0FDX0RFRlVOKFtfQUNfUFJPR19MSUJUT09MXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1NFVFVQXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9TRVRVUF0pXSkKK200X2lmbmRlZihbX0xUX0FDX0NIRUNLX0RMRkNOXSwJCVtBQ19ERUZVTihbX0xUX0FDX0NIRUNLX0RMRkNOXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUl0sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVJdKV0pCittNF9pZm5kZWYoW19MVF9BQ19UQUdDT05GSUddLAkJW0FDX0RFRlVOKFtfTFRfQUNfVEFHQ09ORklHXSldKQorbTRfaWZuZGVmKFtBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTF0sCVtBQ19ERUZVTihbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NYWF0pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfRjc3XSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19HQ0pdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUkNdLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NfQ09ORklHXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NYWF9DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NYWF9DT05GSUddKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfRjc3X0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3X0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0dDSl9DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19HQ0pfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pfQ09ORklHXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfUkNfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfUkNfQ09ORklHXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19SQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX1JDX0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9DT05GSUddLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0ZJTEVfTFRETExfQ10sCVtBQ19ERUZVTihbX0xUX0FDX0ZJTEVfTFRETExfQ10pXSkKZGlmZiAtLWdpdCBhL200L25ldHNubXBfYXJnLm00IGIvbTQvbmV0c25tcF9hcmcubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMyMzMwYgotLS0gL2Rldi9udWxsCisrKyBiL200L25ldHNubXBfYXJnLm00CkBAIC0wLDAgKzEsMjcgQEAKK2RubCBSZXBvcnRzIGFuIGludmFsaWQgb3B0aW9uIGFuZCBzdWdnZXN0cyAtLWVuYWJsZS08QVJHVU1FTlQgMT4gaW5zdGVhZAorQUNfREVGVU4oW05FVFNOTVBfSU5WQUxJRF9FTkFCTEVdLAorICBbQUNfTVNHX0VSUk9SKFtJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLSQxLy0tZGlzYWJsZS0kMSBpbnN0ZWFkXSldKQorCitkbmwgUmVwb3J0cyBhbiBpbnZhbGlkIG9wdGlvbiBhbmQgc3VnZ2VzdHMgLS13aXRoLTxBUkdVTUVOVCAxPiBpbnN0ZWFkCitBQ19ERUZVTihbTkVUU05NUF9JTlZBTElEX1dJVEhdLAorICBbQUNfTVNHX0VSUk9SKFtJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC0kMS8tLXdpdGhvdXQtJDEgaW5zdGVhZF0pXSkKKworZG5sIFNpbWlsYXIgdG8gQUNfQVJHX0VOQUJMRSBidXQgYWxzbyBkZWZpbmVzIGEgbWF0Y2hpbmcgV0lUSCBvcHRpb24gdGhhdAorZG5sIHN1Z2dlc3RzIHRoZSB1c2Ugb2YgdGhlIEVOQUJMRSBvcHRpb24gaWYgY2FsbGVkCitBQ19ERUZVTihbTkVUU05NUF9BUkdfRU5BQkxFXSwKKyAgW0FDX0FSR19FTkFCTEUoWyQxXSxbJDJdZG5sCisgICAgIG00X2lmKG00X2V2YWwoJCMgPCAzKSwxLFtdLFssWyQzXV0pZG5sCisgICAgIG00X2lmKG00X2V2YWwoJCMgPCA0KSwxLFtdLFssWyQ0XV0pKQorICAgQUNfQVJHX1dJVEgoCisgICAgIFskMV0sLAorICAgICBbTkVUU05NUF9JTlZBTElEX0VOQUJMRShbJDFdKV0pXSkKKworZG5sIFNpbWlsYXIgdG8gQUNfQVJHX1dJVEggYnV0IGFsc28gZGVmaW5lcyBhIG1hdGNoaW5nIEVOQUJMRSBvcHRpb24gdGhhdAorZG5sIHN1Z2dlc3RzIHRoZSB1c2Ugb2YgdGhlIFdJVEggb3B0aW9uIGlmIGNhbGxlZAorQUNfREVGVU4oW05FVFNOTVBfQVJHX1dJVEhdLAorICBbQUNfQVJHX1dJVEgoWyQxXSxbJDJdZG5sCisgICAgIG00X2lmKG00X2V2YWwoJCMgPCAzKSwxLFtdLFssWyQzXV0pZG5sCisgICAgIG00X2lmKG00X2V2YWwoJCMgPCA0KSwxLFtdLFssWyQ0XV0pKQorICAgQUNfQVJHX0VOQUJMRSgKKyAgICAgWyQxXSwsCisgICAgIFtORVRTTk1QX0lOVkFMSURfV0lUSChbJDFdKV0pXSkKZGlmZiAtLWdpdCBhL200L25ldHNubXBfc2VhcmNoX2xpYnMubTQgYi9tNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZDhhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00CkBAIC0wLDAgKzEsMzUgQEAKK2RubCBAc3lub3BzaXMgTkVUU05NUF9TRUFSQ0hfTElCUyhGVU5DVElPTiwgU0VBUkNILUxJQlMsIFtBQ1RJT04tSUYtRk9VTkRdLAorZG5sICAgICAgICAgICAgIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSwgW09USEVSLUxJQlJBUklFU10sIFtUQVJHRVQtVkFSSUFCTEVdKQorZG5sIFNpbWlsYXIgdG8gQUNfU0VBUkNIX0xJQlMgYnV0IGNoYW5nZXMgVEFSR0VULVZBUklBQkxFIGluc3RlYWQgb2YgTElCUworZG5sIElmIFRBUkdFVC1WQVJJQUJMRSBpcyB1bnNldCB0aGVuIExJQlMgaXMgdXNlZAorQUNfREVGVU4oW05FVFNOTVBfU0VBUkNIX0xJQlNdLAorW200X3B1c2hkZWYoW25ldHNubXBfdGFyZ2V0XSxtNF9pZnZhbChbJDZdLFskNl0sW0xJQlNdKSkKKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGxpYnJhcnkgY29udGFpbmluZyAkMV0sCisgICAgW25ldHNubXBfY3ZfZnVuY18kMV9dbmV0c25tcF90YXJnZXQsCisgICAgW25ldHNubXBfZnVuY19zZWFyY2hfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgbTRfaWYobmV0c25tcF90YXJnZXQsIFtMSUJTXSwKKyAgICAgICAgIFtuZXRzbm1wX3RhcmdldF92YWw9IiRMSUJTIgorICAgICAgICAgIG5ldHNubXBfdGVtcF9MSUJTPSIkNSAke0xJQlN9Il0sCisgICAgICAgICBbbmV0c25tcF90YXJnZXRfdmFsPSIkbmV0c25tcF90YXJnZXQiCisgICAgICAgICAgbmV0c25tcF90ZW1wX0xJQlM9IiR7bmV0c25tcF90YXJnZXRfdmFsfSAkNSAke0xJQlN9Il0pCisgICAgIG5ldHNubXBfcmVzdWx0PW5vCisgICAgIExJQlM9IiR7bmV0c25tcF90ZW1wX0xJQlN9IgorICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19DQUxMKFtdLFskMV0pXSwKKyAgICAgICAgIFtuZXRzbm1wX3Jlc3VsdD0ibm9uZSByZXF1aXJlZCJdLAorICAgICAgICAgW2ZvciBuZXRzbm1wX2N1cl9saWIgaW4gJDIgOyBkbworICAgICAgICAgICAgICBMSUJTPSItbCR7bmV0c25tcF9jdXJfbGlifSAke25ldHNubXBfdGVtcF9MSUJTfSIKKyAgICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfQ0FMTChbXSxbJDFdKV0sCisgICAgICAgICAgICAgICAgICBbbmV0c25tcF9yZXN1bHQ9LWwke25ldHNubXBfY3VyX2xpYn0KKyAgICAgICAgICAgICAgICAgICBicmVha10pCisgICAgICAgICAgZG9uZV0pCisgICAgIExJQlM9IiR7bmV0c25tcF9mdW5jX3NlYXJjaF9zYXZlX0xJQlN9IgorICAgICBbbmV0c25tcF9jdl9mdW5jXyQxX11uZXRzbm1wX3RhcmdldD0iJHtuZXRzbm1wX3Jlc3VsdH0iXSkKKyBpZiB0ZXN0ICIke1tuZXRzbm1wX2N2X2Z1bmNfJDFfXW5ldHNubXBfdGFyZ2V0fSIgIT0gIm5vIiA7IHRoZW4KKyAgICBpZiB0ZXN0ICIke1tuZXRzbm1wX2N2X2Z1bmNfJDFfXW5ldHNubXBfdGFyZ2V0fSIgIT0gIm5vbmUgcmVxdWlyZWQiIDsgdGhlbgorICAgICAgIG5ldHNubXBfdGFyZ2V0PSIke25ldHNubXBfcmVzdWx0fSAke25ldHNubXBfdGFyZ2V0X3ZhbH0iCisgICAgZmkKKyAgICAkMworIG00X2lmdmFsKFskNF0sIFtlbHNlCisgICAgJDRdKQorIGZpCisgbTRfcG9wZGVmKFtuZXRzbm1wX3RhcmdldF0pXSkKZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5pbiBiL21hbi9NYWtlZmlsZS5pbgppbmRleCBhYjE4Mzc1Li5kOTAzNzEzIDEwMDY0NAotLS0gYS9tYW4vTWFrZWZpbGUuaW4KKysrIGIvbWFuL01ha2VmaWxlLmluCkBAIC0xOSw3ICsxOSw4IEBACiAJc25tcGJ1bGt3YWxrLjEgc25tcGdldG5leHQuMSBzbm1wdGVzdC4xIHNubXB0cmFuc2xhdGUuMSBzbm1wdHJhcC4xIFwKIAlzbm1wdXNtLjEgc25tcHZhY20uMSBzbm1wdGFibGUuMSBzbm1wc3RhdHVzLjEgc25tcGNvbmYuMSBtaWIyYy4xIFwKIAlzbm1wbmV0c3RhdC4xIHNubXBkZWx0YS4xIHNubXBkZi4xIGVuY29kZV9rZXljaGFuZ2UuMSBmaXhwcm9jLjEgXAotCW5ldC1zbm1wLWNvbmZpZy4xIG1pYjJjLXVwZGF0ZS4xIHRrbWliLjEgdHJhcHRvZW1haWwuMQorCW5ldC1zbm1wLWNvbmZpZy4xIG1pYjJjLXVwZGF0ZS4xIHRrbWliLjEgdHJhcHRvZW1haWwuMSBcCisJbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMQogCiBNQU4zICA9IHNubXBfY2xvc2UuMyBzbm1wX2ZyZWVfcGR1LjMgc25tcF9vcGVuLjMgc25tcF9yZWFkLjMgXAogCXNubXBfc2VsZWN0X2luZm8uMyBzbm1wX3NlbmQuMyBzbm1wX3RpbWVvdXQuMwkJCSAgICAgICBcCkBAIC00NiwxMCArNDcsMTggQEAKIAluZXRzbm1wX2NvbnRhaW5lci4zIG5ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMgbmV0c25tcF9sZWFmLjMgICBcCiAJbmV0c25tcF9yb3dfbWVyZ2UuMwkJICAgICAgIFwKIAluZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zIG5ldHNubXBfc3Rhc2hfY2FjaGUuMwkgICAgICAgXAotCW5ldHNubXBfdXRpbGl0aWVzLjMKKwluZXRzbm1wX3V0aWxpdGllcy4zIFwKKwluZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMgXAorCW5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMgXAorCW5ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMgXAorCW5ldHNubXBfdGFibGVfcm93LjMgXAorCW5ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMgXAorCW5ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMgXAorCW5ldHNubXBfbnVsbF9jb250YWluZXIuMyBcCisJbmV0c25tcF90b29scy5oLjMKIAotTUFOM0cgPSBkZWZhdWx0X3N0b3JlLjMgbWliX2FwaS4zIHJlYWRfY29uZmlnLjMgc25tcF9hZ2VudF9hcGkuMyBzbm1wX2FsYXJtLjMgXAotCXNubXBfYXBpLjMgc25tcF9zZXNzX2FwaS4zIHNubXBfdHJhcF9hcGkuMworTUFOM0cgPSBkZWZhdWx0X3N0b3JlLjMgbWliX2FwaS4zIGNvbmZpZ19hcGkuMyBzbm1wX2FnZW50X2FwaS4zIHNubXBfYWxhcm0uMyBcCisJc2Vzc2lvbl9hcGkuMyBzbm1wX3Nlc3NfYXBpLjMgc25tcF90cmFwX2FwaS4zIHZhcmJpbmRfYXBpLjMgcGR1X2FwaS4zIAogTUFONUcgPSBzbm1wZC5jb25mLjUgc25tcHRyYXBkLmNvbmYuNSBzbm1wLmNvbmYuNSBzbm1wX2NvbmZpZy41IHZhcmlhYmxlcy41IFwKICAgICAgICAgbWliMmMuY29uZi41IHNubXBkLmV4YW1wbGVzLjUgc25tcGQuaW50ZXJuYWwuNQogTUFOOEcgPSBzbm1wdHJhcGQuOCBzbm1wZC44CkBAIC02NCw3ICs3Myw3IEBACiAJcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyLjMgcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyLjMJXAogCXJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLjMgcmVnaXN0ZXJfbWliX2hhbmRsZXJzLjMgCQlcCiAJcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIuMyAJCQkJCVwKLQl1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlci4zIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIuMworCXVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyLjMgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlci4zIHJlYWRfY29uZmlnLjMKIFNOTVBfQUxBUk1fQUxJQVNFUyA9IHNubXBfYWxhcm1fcmVnaXN0ZXIuMyBzbm1wX2FsYXJtX3JlZ2lzdGVyX2hyLjMgCVwKIAlzbm1wX2FsYXJtX3VucmVnaXN0ZXIuMwogU05NUF9TRVRfU0FWRV9ERVNDUklQVElPTlNfQUxJQVNFUyA9IGZwcmludF9kZXNjcmlwdGlvbi4zIGZwcmludF9vYmppZC4zIFwKQEAgLTkyLDggKzEwMSw4IEBACiAJCWVjaG8gIi5zbyBtYW4zL2RlZmF1bHRfc3RvcmUuMyIgPiAkJGkgOyAJCVwKIAlkb25lCiAJQGZvciBpIGluICQoUkVBRF9DT05GSUdfQUxJQVNFUykgOyBkbwkJCQlcCi0JCWVjaG8gIm1ha2luZyBtYW4gcGFnZSBhbGlhcyAkJGkgLT4gcmVhZF9jb25maWcgQVBJcyIgOwlcCi0JCWVjaG8gIi5zbyBtYW4zL3JlYWRfY29uZmlnLjMiID4gJCRpIDsgCQkJXAorCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRpIC0+IGNvbmZpZ19hcGkgQVBJcyIgOwlcCisJCWVjaG8gIi5zbyBtYW4zL2NvbmZpZ19hcGkuMyIgPiAkJGkgOyAJCQlcCiAJZG9uZQogCUBmb3IgaSBpbiAkKFNOTVBfQUxBUk1fQUxJQVNFUykgOyBkbwkJCQlcCiAJCWVjaG8gIm1ha2luZyBtYW4gcGFnZSBhbGlhcyAkJGkgLT4gc25tcF9hbGFybSBBUElzIiA7CVwKQEAgLTEwNyw2ICsxMTYsNyBAQAogCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRpIC0+IHNubXBfdHJhcCBBUElzIiA7CVwKIAkJZWNobyAiLnNvIG1hbjMvc25tcF90cmFwX2FwaS4zIiA+ICQkaSA7CQkJXAogCWRvbmUKKwllY2hvICIuc28gbWFuMy9zZXNzaW9uX2FwaS4zIiA+IHNubXBfYXBpLjMKIAogc25tcGJ1bGtnZXQuMTogJChzcmNkaXIpL3NubXBidWxrZ2V0LjEuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2Rpcikvc25tcGJ1bGtnZXQuMS5kZWYgPiBzbm1wYnVsa2dldC4xCkBAIC0xODAsMTcgKzE5MCwyOSBAQAogbmV0LXNubXAtY29uZmlnLjE6ICQoc3JjZGlyKS9uZXQtc25tcC1jb25maWcuMS5kZWYgLi4vc2Vkc2NyaXB0CiAJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9uZXQtc25tcC1jb25maWcuMS5kZWYgPiBuZXQtc25tcC1jb25maWcuMQogCituZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xOiAkKHNyY2RpcikvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYgLi4vc2Vkc2NyaXB0CisJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9uZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xLmRlZiA+IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEKKwogdGttaWIuMTogJChzcmNkaXIpL3RrbWliLjEuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvdGttaWIuMS5kZWYgPiB0a21pYi4xCiAKIHRyYXB0b2VtYWlsLjE6ICQoc3JjZGlyKS90cmFwdG9lbWFpbC4xLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3RyYXB0b2VtYWlsLjEuZGVmID4gdHJhcHRvZW1haWwuMQogCit2YXJiaW5kX2FwaS4zOiAkKHNyY2RpcikvdmFyYmluZF9hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0CisJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS92YXJiaW5kX2FwaS4zLmRlZiA+IHZhcmJpbmRfYXBpLjMKKworcGR1X2FwaS4zOiAkKHNyY2RpcikvcGR1X2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKKwkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3BkdV9hcGkuMy5kZWYgPiBwZHVfYXBpLjMKKworc2Vzc2lvbl9hcGkuMzogJChzcmNkaXIpL3Nlc3Npb25fYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAorCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2Rpcikvc2Vzc2lvbl9hcGkuMy5kZWYgPiBzZXNzaW9uX2FwaS4zCisKIG1pYl9hcGkuMzogJChzcmNkaXIpL21pYl9hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0CiAJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9taWJfYXBpLjMuZGVmID4gbWliX2FwaS4zCiAKLXJlYWRfY29uZmlnLjM6ICQoc3JjZGlyKS9yZWFkX2NvbmZpZy4zLmRlZiAuLi9zZWRzY3JpcHQKLQkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3JlYWRfY29uZmlnLjMuZGVmID4gcmVhZF9jb25maWcuMworY29uZmlnX2FwaS4zOiAkKHNyY2RpcikvY29uZmlnX2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKKwkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL2NvbmZpZ19hcGkuMy5kZWYgPiBjb25maWdfYXBpLjMKIAogc25tcF9hZ2VudF9hcGkuMzogJChzcmNkaXIpL3NubXBfYWdlbnRfYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2Rpcikvc25tcF9hZ2VudF9hcGkuMy5kZWYgPiBzbm1wX2FnZW50X2FwaS4zCkBAIC0xOTgsOSArMjIwLDYgQEAKIHNubXBfYWxhcm0uMzogJChzcmNkaXIpL3NubXBfYWxhcm0uMy5kZWYgLi4vc2Vkc2NyaXB0CiAJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9zbm1wX2FsYXJtLjMuZGVmID4gc25tcF9hbGFybS4zCiAKLXNubXBfYXBpLjM6ICQoc3JjZGlyKS9zbm1wX2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKLQkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBfYXBpLjMuZGVmID4gc25tcF9hcGkuMwotCiBzbm1wX3Nlc3NfYXBpLjM6ICQoc3JjZGlyKS9zbm1wX3Nlc3NfYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2Rpcikvc25tcF9zZXNzX2FwaS4zLmRlZiA+IHNubXBfc2Vzc19hcGkuMwogCkBAIC0yNzQsMTEgKzI5MywxMSBAQAogIwogaHRtbDogJChNQU5BTEwpCiAJZm9yIGkgaW4gJChNQU5BTEwpOyBkbyBcCi0JICAgaWYgdGVzdCBgd2MgLWwgJCRpIHwgYXdrICd7cHJpbnQgJCQxfSdgICE9IDEgOyB0aGVuIFwKKyMJICAgaWYgdGVzdCBgd2MgLWwgJCRpIHwgYXdrICd7cHJpbnQgJCQxfSdgICE9IDEgOyB0aGVuIFwKIAkJICAgYmFzZT1gZWNobyAkJGkgfCBzZWQgJ3MvLlswLTldJCQvLzsnYCA7IFwKIAkJICAgZWNobyAiPEhUTUw+PEJPRFkgYmdjb2xvcj1cIiNmZmZmZmZcIiBiYWNrZ3JvdW5kPVwiLi4vdWNkLXNubXAtYmczLmdpZlwiPjxQUkU+IiA+ICQkYmFzZS5odG1sOyBcCiAJCSAgIG1hbjJodG1sIC1yIC4vJCRpIHwgJChQRVJMKSAtcCAtZSAncy9IUkVGPVwiLi5cL21hbi5cLy9IUkVGPVwiL2c7cy9cLlsxLTldXC5odG1sLy5odG1sL2c7JyB8IGdyZXAgLXYgJ0NvbnRlbnQtdHlwZTonID4+ICQkYmFzZS5odG1sOyBcCiAJCSAgIGE9IiQkYSAkJGkiOyBcCi0JICAgZmkgOyBcCisjCSAgIGZpIDsgXAogCWRvbmUgO1wKIAkkKFBFUkwpIG1ha2VfaW5kZXgucGwgbWFuX3NlY3Rpb25zLnR4dCAkJGEgPiBpbmRleC5odG1sCmRpZmYgLS1naXQgYS9tYW4vY29uZmlnX2FwaS4zLmRlZiBiL21hbi9jb25maWdfYXBpLjMuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMDdlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vY29uZmlnX2FwaS4zLmRlZgpAQCAtMCwwICsxLDMzMyBAQAorLlRIIENPTkZJR19BUEkgMyAiMjEgQXByIDIwMDkiICIiICJOZXQtU05NUCIKKy5TSCBOQU1FCityZWdpc3Rlcl9jb25maWdfaGFuZGxlciwgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIKK3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIHJlZ2lzdGVyX21pYl9oYW5kbGVycywgcmVhZF9jb25maWdzLAorcmVhZF9wcmVtaWJfY29uZmlncywgY29uZmlnX3BlcnJvciwgY29uZmlnX3B3YXJuIC0gY29uZmlnX2FwaSBmdW5jdGlvbnMKKy5TSCBTWU5PUFNJUworLkIgI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KKy5QUAorLkIgc3RydWN0IGNvbmZpZ19saW5lICoKKy5icgorLkJJICIgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgZmlsZVByZWZpeCAiLAorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdG9rZW4gLAorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHBhcnNlciAiKShjb25zdCBjaGFyICosIGNoYXIgKiksIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHJlbGVhc2VyICIpKHZvaWQpLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoidXNhZ2VMaW5lICIpOyIKKy5QUAorLkIgc3RydWN0IGNvbmZpZ19saW5lICoKKy5icgorLkJJICIgIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKGNvbnN0IGNoYXIgKiIgZmlsZVByZWZpeCAiLCAKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHRva2VuICwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB1c2FnZUxpbmUgIik7IgorLlBQCisuQiAidm9pZCByZWdpc3Rlcl9taWJfaGFuZGxlcnModm9pZCk7IgorLlBQCisuQkkgInZvaWQgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB0b2tlbiAiKTsiCisuYnIKKy5QUAorLkJJICJ2b2lkIHVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycyh2b2lkKTsiCisuYnIKKy5TUyBBcHBsaWNhdGlvbiBIYW5kbGVycworLlBQCisuQiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgorLmJyCisuQkkgIiAgcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gLAorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHBhcnNlciAiKShjb25zdCBjaGFyICosIGNoYXIgKiksIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHJlbGVhc2VyICIpKHZvaWQpLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoidXNhZ2VMaW5lICIpOyIKKy5QUAorLkIgc3RydWN0IGNvbmZpZ19saW5lICoKKy5icgorLkJJICIgIHJlZ2lzdGVyX2FwcF9wcmVtaWJfaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB1c2FnZUxpbmUgIik7IgorLlBQCisuQkkgInZvaWQgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAiKTsiCisuYnIKKy5TUyBSZWFkaW5nIENvbmZpZ3VyYXRpb24gRmlsZXMKKy5QUAorLkIgInZvaWQgcmVhZF9wcmVtaWJfY29uZmlncyh2b2lkKTsiCisuYnIKKy5CICJ2b2lkIHJlYWRfY29uZmlncyh2b2lkKTsiCisuYnIKKy5TUyBIZWxwIFN0cmluZ3MgYW5kIEVycm9ycworLlBQCisuQkkgInZvaWQgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoY2hhciAqIiBsZWFkICIpOyIKKy5icgorLkJJICJ2b2lkIGNvbmZpZ19wd2Fybihjb25zdCBjaGFyICoiIHN0cmluZyAiKTsiCisuYnIKKy5CSSAidm9pZCBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKiIgc3RyaW5nICIpOyIKKworLlNIIERFU0NSSVBUSU9OCitUaGUgZnVuY3Rpb25zIGFyZSBhIGZhaXJseSBleHRlbnNpYmxlIHN5c3RlbSBvZiBwYXJzaW5nIHZhcmlvdXMKK2NvbmZpZ3VyYXRpb24gZmlsZXMgYXQgdGhlIHJ1biB0aW1lIG9mIGFuIGFwcGxpY2F0aW9uLiAgVGhlCitjb25maWd1cmF0aW9uIGZpbGUgZmxvdyBpcyBicm9rZW4gaW50byB0aGUgZm9sbG93aW5nIHBoYXNlczoKKy5SUyA0CisuVFAgNAorMS4KK1JlZ2lzdHJhdGlvbiBvZiBoYW5kbGVycy4KKy5UUAorMi4KK1JlYWRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHByZS1NSUIgcGFyc2luZyByZXF1aXJlbWVudHMuCisuVFAKKzMuCitSZWFkaW5nIGFuZCBwYXJzaW5nIG9mIHRoZSB0ZXh0dWFsIE1JQiBmaWxlcy4KKy5UUAorNC4KK1JlYWRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcy4KKy5UUAorNS4KK09wdGlvbmFsbHkgcmUtcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhdCBhIGZ1dHVyZSBkYXRlLgorLlJFCisuUFAKK1RoZSBpZGVhIGlzIHRoYXQgdGhlIGNhbGxpbmcgYXBwbGljYXRpb24gaXMgYWJsZSB0byByZWdpc3RlcgorLkkgaGFuZGxlcnMKK2ZvciBjZXJ0YWluCisuSSB0b2tlbnMKK3NwZWNpZmllZCBpbiBjZXJ0YWluIG5hbWVkCisuSSAiY29uZmlndXJhdGlvbiBmaWxlcy4iCitUaGUgCisuQiByZWFkX2NvbmZpZ3MoKQorZnVuY3Rpb24gY2FuIHRoZW4gYmUgY2FsbGVkIHRvIGxvb2sgZm9yIGFsbCByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzLAorbWF0Y2ggdGhlIGZpcnN0IHdvcmQgb24gZWFjaCBsaW5lIGFnYWluc3QgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCB0b2tlbnMKK2FuZCBwYXNzIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUgdG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyZWQgaGFuZGxlci4KKy5TSCBSRUdJU1RFUklORyBBIEhBTkRMRVIKKy5UUAorLkIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKQorUmVnaXN0ZXJzIGEgY29uZmlndXJhdGlvbiBoYW5kbGVyIHJvdXRpbmUsIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQKK3RvIHByb2Nlc3MgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIHN0YXJ0aW5nIHdpdGggdGhlIHNwZWNpZmllZCB0b2tlbi4KK0ZvciBleGFtcGxlOgorLlBQCisuUlMKKy5SUworcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZXhhbXBsZVRva2VuIiwgZXhhbXBsZV9oYW5kbGVyLCBOVUxMLCAiQVJHMSBbQVJHMl0iKTsKKy5SRQorLlJFCisuSVAKK3dvdWxkIHJlZ2lzdGVyIHRoZQorLkIgZXhhbXBsZV9oYW5kbGVyKCkKK2Z1bmN0aW9uIHNvIHRoYXQgaXQgd2lsbCBnZXQgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZpcnN0IHdvcmQgb2YgYQorbGluZSBpbiB0aGUgCisuSSBzbm1wLmNvbmYKK2NvbmZpZ3VyYXRpb24gZmlsZShzKSBtYXRjaGVzICJleGFtcGxlVG9rZW4iLgorLmJyCitDYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVycyB0byBwcm9jZXNzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZGlyZWN0aXZlcworaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIAorLkIgcmVhZF9jb25maWdzKCkgCisoc2VlIGJlbG93KS4KKy5UUAorLkIgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoKQorU2ltaWxhciB0byB0aGUKKy5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK2Z1bmN0aW9uLCBidXQgdGhlIHJlZ2lzdGVyZWQgaGFuZGxlciByb3V0aW5lIHdpbGwgYmUgY2FsbGVkCitcZkliZWZvcmVcZlAgdGhlIHRleHR1YWwgTUlCcyBhcmUgcmVhZCBpbi4KK1RoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIHRva2VucyB0aGF0IHdpbGwgYWZmZWN0IHRoZSBjb25maWd1cmF0aW9uIG9mCit0aGUgTUlCIHBhcnNlciwgYW5kIHdpbGwgbm9ybWFsbHkgb25seSBiZSB1c2VkIHdpdGhpbiB0aGUgU05NUCBsaWJyYXJ5IGl0c2VsZi4KKy5UUAorLkIgcmVnaXN0ZXJfbWliX2hhbmRsZXJzKCkKK0luaXRpYWxpc2F0aW9uIHJvdXRpbmUgdG8gcmVnaXN0ZXIgdGhlIGludGVybmFsIFNOTVAgbGlicmFyeSBjb25maWd1cmF0aW9uIGhhbmRsZXJzLgorLlRQCisuQiB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK1JlbW92ZXMgdGhlIHJlZ2lzdGVyZWQgY29uZmlndXJhdGlvbiBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkCisuSSBmaWxlUHJlZml4CithbmQKKy5JUiB0b2tlbiAuCisuVFAKKy5CIHVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpCitSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMuCisKKy5TUyBUb2tlbiBIYW5kbGVycworLlBQCitIYW5kbGVyIGZ1bmN0aW9ucyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZToKKy5QUAorLlJTCisuQkkgInZvaWQgaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICIsIGNoYXIgKiIgbGluZSAiKTsiCisuUkUKKy5QUAorVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGJlaW5nIHRoZQordG9rZW4gdGhhdCB0cmlnZ2VyZWQgdGhlIGNhbGwgdG8gdGhpcyBmdW5jdGlvbiAoaS5lLiB0aGUgdG9rZW4gdXNlZAord2hlbiByZWdpc3RlcmluZyB0aGUgaGFuZGxlciksIGFuZCB0aGUgc2Vjb25kCitiZWluZyB0aGUgcmVtYWluZGVyIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgbGluZSAoaS5lLiBldmVyeXRoaW5nCitmb2xsb3dpbmcgdGhlIHdoaXRlIHNwYWNlIGZvbGxvd2luZyB0aGUgbWF0Y2hlZCB0b2tlbikuCisKKy5TUyBGcmVlaW5nIEhhbmRsZXJzCisuUFAKK0lmIHRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIGR5bmFtaWNhbGx5IGFsbG9jYXRlcyByZXNvdXJjZXMgd2hlbgorcHJvY2Vzc2luZyBhIGNvbmZpZ3VyYXRpb24gZW50cnksIHRoZW4gdGhlc2UgbWF5IG5lZWQgdG8gYmUgcmVsZWFzZWQKK2JlZm9yZSByZS1yZWFkaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLgorSWYgdGhlIGZvdXJ0aCBwYXJhbWV0ZXIgKAorLkkgcmVsZWFzZXIKKykgcGFzc2VkIHRvCisuQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcgoraXMgbm9uLU5VTEwsIHRoZW4gdGhpcyBzcGVjaWZpZXMgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYmVmb3JlCityZS1yZWFkaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgZnJlZSBhbnkKK3Jlc291cmNlcyBhbGxvY2F0ZWQgYnkgdGhlIHRva2VuIGhhbmRsZXIgZnVuY3Rpb24gYW5kIHJlc2V0IGl0cyBub3Rpb24KK29mIHRoZSBjb25maWd1cmF0aW9uIHRvIGl0cyBkZWZhdWx0LiAgVGhlIHRva2VuIGhhbmRsZXIgZnVuY3Rpb24gY2FuCit0aGVuIHNhZmVseSBiZSBjYWxsZWQgYWdhaW4uCitObyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgcmVzb3VyY2UgZnJlZWluZyBoYW5kbGVyLgorLmJyCitOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIHdoZW4gdGhlIGhhbmRsZXIgaXMKK3VucmVnaXN0ZXJlZCBpbmRpdmlkdWFsbHkgKGJ1dCBcZklpc1xmUCBjYWxsZWQgYXMgcGFydCBvZgorLkIgdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKCkKKykuCisKKy5TUyBBcHBsaWNhdGlvbiBIYW5kbGVycworLlRQCisuQiByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoKQorLlRQCisuQiByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoKQorLlRQCisuQiB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigpCitUaGVzZSBmdW5jdGlvbnMgYXJlIGFuYWxhZ291cyB0byAKKy5CUiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpICIsICIgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoKSAiIGFuZCAiCisuQiB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK2J1dCBkbyBub3QgcmVxdWlyZSB0aGUgZmlsZSB0eXBlIGFyZ3VtZW50ICh3aGljaCBpcyBmaWxsZWQgaW4gYnkgdGhlCithcHBsaWNhdGlvbikuICBJdCBpcyBpbnRlbmRlZCB0aGF0IE1JQiBtb2R1bGVzIHdyaXR0ZW4gZm9yIHRoZSBhZ2VudAordXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBhbGxvdyB0aGUgYWdlbnQgdG8gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB3aGljaAorY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmVhZCAodHlwaWNhbGx5IHRoZQorLkkgc25tcGQuY29uZgorZmlsZXMpLgorLlNIIFJFQURJTkcgQ09ORklHVVJBVElPTiBGSUxFUworLlRQCisuQiByZWFkX3ByZW1pYl9jb25maWdzKCkKKy5UUAorLkIgcmVhZF9jb25maWdzKCkKK1RoZXNlIHJvdXRpbmVzIHByb2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm91bmQgaW4gdGhlCitjb25maWd1cmF0aW9uIHNlYXJjaCBwYXRoIChzZWUgYmVsb3cpLiAgRm9yIGVhY2ggZW50cnksIHRoZQoraGFuZGxlciByZWdpc3RlcmVkIGZvciB0aGF0IGNvbmZpZ3VyYXRpb24gdG9rZW4gaXMgY2FsbGVkLgorLlBQCisuQiByZWFkX3ByZW1pYl9jb25maWdzKCkKK2lzIHJ1biBiZWZvcmUgdGhlIE1JQiBmaWxlcyBhcmUgcmVhZCBpbiwgYW5kIHByb2Nlc3NlcyB0aG9zZQorY29uZmlndXJhdGlvbiB0b2tlbnMgcmVnaXN0ZXJlZCB1c2luZworLkIgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoKQorKG9yCisuQiByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoKQorKS4KK0FsbCBvdGhlciBlbnRyaWVzIGFyZSBpZ25vcmVkLgorLlBQCisuQiByZWFkX2NvbmZpZ3MoKQoraXMgcnVuIGFmdGVyIHRoZSBNSUIgZmlsZXMgaGF2ZSBiZWVuIHJlYWQgaW4sIGFuZCBwcm9jZXNzZXMgdGhvc2UKK2NvbmZpZ3VyYXRpb24gdG9rZW5zIHJlZ2lzdGVyZWQgdXNpbmcKKy5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKKyhvcgorLkIgcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKCkKKykuCitJZiBpdCBlbmNvdW50ZXJzIGEgY29uZmlndXJhdGlvbiB0b2tlbiBmb3Igd2hpY2ggbm8gaGFuZGxlciBoYXMKK2JlZW4gcmVnaXN0ZXJlZCAoZWl0aGVyIHByZS0gb3IgcG9zdC1taWIpLCB0aGVuIGl0IHdpbGwgZGlzcGxheQorYSB3YXJuaW5nIG1lc3NhZ2UsIGFuZCBjb250aW51ZSBwcm9jZXNzaW5nIHdpdGggdGhlIG5leHQgbGluZQorb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKy5TUyBDb25maWd1cmF0aW9uIFNlYXJjaCBQYXRoCisuUFAKK1RoZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGJlIHJlYWQgYXJlIGZvdW5kIGJ5IHNlYXJjaGluZyBhIGxpc3QKK29mIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3JpZXMgZm9yIGFwcHJvcHJpYXRlbHkgbmFtZWQgZmlsZXMuCitJbiBlYWNoIHN1Y2ggZGlyZWN0b3J5LCB0aGUgbGlicmFyeSB3aWxsIGxvb2sgZm9yIGZpbGVzIG5hbWVkCitcZkMgc25tcC5jb25mXGZQLAorXGZDIHNubXAubG9jYWwuY29uZlxmUCwKK1xmSWFwcFxmUC5jb25mXGZQLAorXGZJYXBwXGZQLmxvY2FsLmNvbmZcZlAsCisod2hlcmUgXGZJYXBwXGZQIGlzIHRoZSBhcHBpY2F0aW9uLXNwZWNpZmljIGZpbGVQcmVmaXggdXNlZCB0bworcmVnaXN0ZXIgY29uZmlndXJhdGlvbiBoYW5kbGVycykuCitJdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBhbnkgb3IgYWxsIG9mIHRoZXNlIGZpbGVzIHRvIGJlIHByZXNlbnQKK2luIGVhY2ggZGlyZWN0b3J5LiAgTWlzc2luZyBmaWxlcyB3aWxsIGJlIHNpbGVudGx5IHNraXBwZWQuCisuYnIKK1RoZSBpZGVhIGJlaGluZCB0aGUgdHdvIGRpZmZlcmVudCBzdWZmaXhlcyBpcyB0aGF0IHRoZSBmaXJzdCBmaWxlIGNhbgorYmUgc2hhcmVkICh2aWEgcmRpc3Qgb3IgYW4gTkZTIG1vdW50KSBhY3Jvc3MgYSBsYXJnZSBudW1iZXIgb2YKK21hY2hpbmVzIGFuZCB0aGUgc2Vjb25kIGZpbGUgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGxvY2FsIHNldHRpbmdzCitmb3Igb25lIHBhcnRpY3VsYXIgbWFjaGluZS4KKy5QUAorVGhlIGRlZmF1bHQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggaXMKK1NZU0NPTkZESVIvc25tcCwgZm9sbG93ZWQgYnkgREFUQURJUi9zbm1wLCBmb2xsb3dlZCBieSBMSUJESVIvc25tcCwKK2ZvbGxvd2VkIGJ5ICRIT01FLy5zbm1wLgorVGhpcyBsaXN0IGNhbiBiZSBjaGFuZ2VkIGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUKKy5JIFNOTVBDT05GUEFUSAordG8gYmUgYSAoY29sb24gc2VwYXJhdGVkKSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaC4KKy5icgorLlNTIGluaXRfc25tcCgpCisuUFAKK1RoZSBub3JtYWwgbW9kZSBvZiBvcGVyYXRpb24gd291bGQgYmUgdG8gcmVnaXN0ZXIgdGhlIGFwcGxpY2F0aW9uLXNwZWNpZmljCitjb25maWd1cmF0aW9uIGhhbmRsZXJzLCBhbmQgdGhlbiBpbnZva2UKKy5CUiBpbml0X3NubXAoKSAiLiIKK1RoaXMgd291bGQgY2FsbCB0aGUgcm91dGluZXMgbGlzdGVkIGFib3ZlIHRvIHJlZ2lzdGVyIHRoZSBpbnRlcm5hbCBsaWJyYXJ5Citjb25maWd1cmF0aW9uIGhhbmRsZXJzLCBwcm9jZXNzIGFueSBjb25maWd1cmF0aW9uIHRva2VucyByZWdpc3RlcmVkIHdpdGgKKy5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCksCityZWFkIGluIHRoZSB0ZXh0dWFsIE1JQiBmaWxlcyB1c2luZworLkIgaW5pdF9taWIoKSwKK2FuZCBmaW5hbGx5IHBhcnNlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdG9rZW5zIHJlZ2lzdGVyZWQgd2l0aCAKKy5CUiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpIC4KKy5QUAorSWYgdGhlIAorLkIgaW5pdF9zbm1wKCkKK2Z1bmN0aW9uIGlzIHVzZWQsIG5vbmUgb2YgdGhlc2UgZnVuY3Rpb25zIG5lZWQgdG8gYmUgZXhwbGljaXRseQorY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKy5TSCBIRUxQIFNUUklOR1MgQU5EIEVSUk9SUworLlBQCitUaGUKKy5JIHVzYWdlTGluZQorcGFyYW1ldGVyIHBhc3NlZCB0bworLkIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKQorYW5kIHNpbWlsYXIgY2FsbHMsIGlzIHVzZWQgdG8gZGlzcGxheSBoZWxwIGluZm9ybWF0aW9uIHdoZW4gdGhlCisuQiByZWFkX2NvbmZpZ19wcmludF91c2FnZSgpCitmdW5jdGlvbiBpcyBjYWxsZWQuICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYWxsIG9mIHRoZSBhcHBsaWNhdGlvbnMKK3doZW4gdGhlIAorLkIgLUgKK2ZsYWcgaXMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuICBJdCBwcmludHMgYSBzdW1tYXJ5IG9mIGFsbCBvZiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZSBsaW5lcywgYW5kIHRoZSBhc3NvY2lhdGVkIGZpbGVzLCB0aGF0IHRoZQorY29uZmlndXJhdGlvbiBzeXN0ZW0gdW5kZXJzdGFuZHMuICBUaGUKKy5JIHVzYWdlTGluZQorcGFyYW1ldGVyIHNob3VsZCBiZSBhIGxpc3Qgb2YgYXJndW1lbnRzIGV4cGVjdGVkIGFmdGVyIHRoZSB0b2tlbiwgYW5kCitub3QgYSBsZW5ndGh5IGRlc2NyaXB0aW9uICh3aGljaCBzaG91bGQgZ28gaW50byBhIG1hbnVhbCBwYWdlCitpbnN0ZWFkKS4gIFRoZQorLkkgbGVhZAorcHJlZml4IHdpbGwgYmUgcHJlcGVuZGVkIHRvIGVhY2ggbGluZSB0aGF0IHRoZSBmdW5jdGlvbiBwcmludHMgdG8KK3N0ZGVyciwgd2hlcmUgaXQgZGlzcGxheXMgaXRzIG91dHB1dC4KKy5QUAorVGhlCisuQiBpbml0X3NubXAoKQorZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdGhlCisuQiByZWFkX2NvbmZpZ19wcmludF91c2FnZSgpCitmdW5jdGlvbiBpcyBjYWxsZWQsIHNvIHRoYXQgdGhlIGxpYnJhcnkgY2FuIHJlZ2lzdGVyIGl0cyBjb25maWd1cmF0aW9uIAorZmlsZSBkaXJlY3RpdmVzIGFzIHdlbGwgZm9yIHRoZSAKKy5CIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKCkKK2Z1bmN0aW9uIHRvIGRpc3BsYXkuCisuU1MgRXJyb3IgSGFuZGxpbmcgRnVuY3Rpb25zCisuUFAKK1RoZSB0d28gZnVuY3Rpb25zCisuQiBjb25maWdfcHdhcm4oKQorYW5kCisuQiBjb25maWdfcGVycm9yKCkKK2JvdGggdGFrZSBhbiBlcnJvciBzdHJpbmcgYXMgYW4gYXJndW1lbnQgYW5kIHByaW50IGl0IHRvIHN0ZGVyciBhbG9uZword2l0aCB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgdGhhdCBjYXVzZWQgdGhlIGVycm9yLiAgQSBjYWxsIHRvIHRoZQorc2Vjb25kIGZ1bmN0aW9uIHdpbGwgYWxzbyBmb3JjZSAKKy5CIHJlYWRfY29uZmlncygpIAordG8gZXZlbnR1YWxseSByZXR1cm4gd2l0aCBhbiBlcnJvciBjb2RlIGluZGljYXRpbmcgdG8gaXQncyBjYWxsaW5nCitmdW5jdGlvbiB0aGF0IGl0IHNob3VsZCBhYm9ydCB0aGUgb3BlcmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbi4KKy5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgorLlRQIDEwCitTTk1QQ09ORlBBVEgKK0EgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBjb25maWd1cmF0aW9uCitmaWxlcyBpbi4KK0RlZmF1bHQ6IFNZU0NPTkZESVIvc25tcDpEQVRBRElSL3NubXA6TElCRElSL3NubXA6JEhPTUUvLnNubXAKKy5TSCAiU0VFIEFMU08iCisuQlIgbWliX2FwaSAiKDMpLCAiIHNubXBfYXBpICgzKQorLlwiIExvY2FsIFZhcmlhYmxlczoKKy5cIiAgbW9kZTogbnJvZmYKKy5cIiBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vbWFrZV9pbmRleC5wbCBiL21hbi9tYWtlX2luZGV4LnBsCmluZGV4IDdhYjFkZDIuLjM3NTY2YmEgMTAwNjQ0Ci0tLSBhL21hbi9tYWtlX2luZGV4LnBsCisrKyBiL21hbi9tYWtlX2luZGV4LnBsCkBAIC0yNSw2ICsyNSw3IEBACiAJY2hvbXAoJG5hbWUpOwogCWlmICghZXhpc3RzKCRwYWdlc3skbmFtZX0pKSB7CiAJICAgIHByaW50IFNUREVSUiAiJG5hbWUgaXMgaW4gJGluZmlsZSwgYnV0IG5vdCBpbiB0aGUgcmVzdCBvZiB0aGUgYXJncy5cbiI7CisJICAgIHByaW50IFNUREVSUiAiTWFrZSBzdXJlIGl0J3Mgbm90IGxpc3RlZCB0d2ljZSBpbiAkaW5maWxlIVxuIjsKIAl9CiAJb3BlbihILCIkbmFtZS5odG1sIik7CiAJd2hpbGUgKDxIPikgewpkaWZmIC0tZ2l0IGEvbWFuL21hbl9zZWN0aW9ucy50eHQgYi9tYW4vbWFuX3NlY3Rpb25zLnR4dAppbmRleCBiODE4YjBkLi5mY2NlOGY5IDEwMDY0NAotLS0gYS9tYW4vbWFuX3NlY3Rpb25zLnR4dAorKysgYi9tYW4vbWFuX3NlY3Rpb25zLnR4dApAQCAtMSw0ICsxLDUgQEAKICMgU05NUCBiYXNpYyBhcHBsaWNhdGlvbnMKK2VuY29kZV9rZXljaGFuZ2UKIHNubXBjbWQKIHNubXB0cmFuc2xhdGUKIHNubXBnZXQKQEAgLTgsNiArOSw3IEBACiBzbm1wYnVsa3dhbGsKIHNubXBzZXQKIHNubXB0ZXN0Cit0a21pYgogIyBTTk1QICJzZWNvbmQtbGV2ZWwiIGFwcGxpY2F0aW9ucwogc25tcHRhYmxlCiBzbm1wZGVsdGEKQEAgLTE3LDE4ICsxOSwyNSBAQAogc25tcG5ldHN0YXQKIHNubXBkZgogIyBOb3RpZmljYXRpb24gbWFudWFsIHBhZ2VzCitzbm1waW5mb3JtCiBzbm1wdHJhcAogc25tcHRyYXBkCiBzbm1wdHJhcGQuY29uZgordHJhcHRvZW1haWwKICMgU05NUCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG1hbnVhbCBwYWdlcworbmV0LXNubXAtY29uZmlnCiBzbm1wY29uZgogc25tcF9jb25maWcKIHNubXAuY29uZgogIyBBZ2VudCBtYW51YWwgcGFnZXMKK2ZpeHByb2MKIHNubXBkCiBzbm1wZC5jb25mCitzbm1wZC5leGFtcGxlcworc25tcGQuaW50ZXJuYWwKIG1pYjJjCiBtaWIyYy5jb25mCittaWIyYy11cGRhdGUKICMgU05NUCBiYXNlIGxpYnJhcnkgQVBJcwogbmV0c25tcF9saWJyYXJ5CiByZWFkX2NvbmZpZwpAQCAtNDEsMzMgKzUwLDEwOSBAQAogbmV0c25tcF9taWJfdXRpbGl0aWVzCiBuZXRzbm1wX2RlYnVnCiAjIEFnZW50IEFQSSBtYW51YWxzCithZGRfbWliZGlyCithZGRfbW9kdWxlX3JlcGxhY2VtZW50Citjb25maWdfcGVycm9yCitjb25maWdfcHdhcm4KK2ZwcmludF9kZXNjcmlwdGlvbgorZnByaW50X29iamlkCitmcHJpbnRfdmFsdWUKK2ZwcmludF92YXJpYWJsZQorZ2V0X21vZHVsZV9ub2RlCitpbml0X21pYgoraW5pdF9taWJfaW50ZXJuYWxzCiBuZXRzbm1wX2FnZW50Ci1zbm1wX2FnZW50X2FwaQotc25tcF90cmFwX2FwaQotbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzCi1uZXRzbm1wX3V0aWxpdGllcwotbmV0c25tcF9oYW5kbGVyCi1uZXRzbm1wX3NjYWxhcgogbmV0c25tcF9iYWJ5X3N0ZXBzCiBuZXRzbm1wX2J1bGtfdG9fbmV4dAotbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAKLW5ldHNubXBfZXhhbXBsZV9zY2FsYXJfaW50Ci1uZXRzbm1wX3RhYmxlX2RhdGFzZXQKLW5ldHNubXBfaXRlcmF0b3JfaW5mb19zCi1uZXRzbm1wX29sZF9hcGkKLW5ldHNubXBfd2F0Y2hlcgotbmV0c25tcF90YWJsZV9hcnJheQotbmV0c25tcF9tdWx0aXBsZXhlcgotbmV0c25tcF9zZXJpYWxpemUKIG5ldHNubXBfY2FjaGVfaGFuZGxlcgotbmV0c25tcF9Db250YWluZXJfaXRlcmF0b3IKLW5ldHNubXBfdGFibGVfaXRlcmF0b3IKLW5ldHNubXBfdGFibGUKLW5ldHNubXBfdGFibGVfZGF0YQotbmV0c25tcF9zdGFzaF9jYWNoZQotbmV0c25tcF9yb3dfbWVyZ2UKLW5ldHNubXBfcmVhZF9vbmx5Ci1uZXRzbm1wX2xlYWYKLW5ldHNubXBfaW5zdGFuY2UKIG5ldHNubXBfY29udGFpbmVyCituZXRzbm1wX0NvbnRhaW5lcl9pdGVyYXRvcgorbmV0c25tcF9kc19nZXRfYm9vbGVhbgorbmV0c25tcF9kc19nZXRfaW50CituZXRzbm1wX2RzX2dldF9zdHJpbmcKK25ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnCituZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYgorbmV0c25tcF9kc19zZXRfYm9vbGVhbgorbmV0c25tcF9kc19zZXRfaW50CituZXRzbm1wX2RzX3NldF9zdHJpbmcKK25ldHNubXBfZHNfc2h1dGRvd24KK25ldHNubXBfZXhhbXBsZV9zY2FsYXJfaW50CituZXRzbm1wX2hhbmRsZXIKK25ldHNubXBfaW5zdGFuY2UKK25ldHNubXBfaXRlcmF0b3JfaW5mb19zCituZXRzbm1wX2xlYWYKK25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcwogbmV0c25tcF9tb2RlX2VuZF9jYWxsCituZXRzbm1wX211bHRpcGxleGVyCituZXRzbm1wX29sZF9hcGkKK25ldHNubXBfcmVhZF9vbmx5CituZXRzbm1wX3Jvd19tZXJnZQorbmV0c25tcF9zY2FsYXIKK25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwCituZXRzbm1wX3NlcmlhbGl6ZQorbmV0c25tcF9zdGFzaF9jYWNoZQorbmV0c25tcF90YWJsZQorbmV0c25tcF90YWJsZV9hcnJheQorbmV0c25tcF90YWJsZV9kYXRhCituZXRzbm1wX3RhYmxlX2RhdGFzZXQKK25ldHNubXBfdGFibGVfaXRlcmF0b3IKK25ldHNubXBfdXRpbGl0aWVzCituZXRzbm1wX3dhdGNoZXIKK3ByaW50X2Rlc2NyaXB0aW9uCitwcmludF9taWIKK3ByaW50X29iamlkCitwcmludF92YWx1ZQorcHJpbnRfdmFyaWFibGUKK3JlYWRfYWxsX21pYnMKK3JlYWRfY29uZmlnX3ByaW50X3VzYWdlCityZWFkX2NvbmZpZ3MKK3JlYWRfbWliCityZWFkX21vZHVsZQorcmVhZF9tb2R1bGVfbm9kZQorcmVhZF9vYmppZAorcmVhZF9wcmVtaWJfY29uZmlncworcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyCityZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIKK3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyCityZWdpc3Rlcl9taWJfaGFuZGxlcnMKK3JlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyCitzZW5kX2Vhc3lfdHJhcAorc2VuZF90cmFwX3ZhcnMKK3NlbmRfdjJ0cmFwCitzaHV0ZG93bl9taWIKK3NubXBfYWdlbnRfYXBpCitzbm1wX2FsYXJtX3JlZ2lzdGVyCitzbm1wX2FsYXJtX3JlZ2lzdGVyX2hyCitzbm1wX2FsYXJtX3VucmVnaXN0ZXIKK3NubXBfYXBpX2VycnN0cmluZworc25tcF9jbG9zZQorc25tcF9lcnJvcgorc25tcF9mcmVlX3BkdQorc25tcF9vcGVuCitzbm1wX3BlcnJvcgorc25tcF9yZWFkCitzbm1wX3NlbGVjdF9pbmZvCitzbm1wX3NlbmQKK3NubXBfc2Vzc19hc3luY19zZW5kCitzbm1wX3Nlc3NfY2xvc2UKK3NubXBfc2Vzc19lcnJvcgorc25tcF9zZXNzX2luaXQKK3NubXBfc2Vzc19vcGVuCitzbm1wX3Nlc3NfcGVycm9yCitzbm1wX3Nlc3NfcmVhZAorc25tcF9zZXNzX3NlbGVjdF9pbmZvCitzbm1wX3Nlc3Nfc2VuZAorc25tcF9zZXNzX3Nlc3Npb24KK3NubXBfc2Vzc190aW1lb3V0Citzbm1wX3NldF9taWJfd2FybmluZ3MKK3NubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zCitzbm1wX3RpbWVvdXQKK3NubXBfdHJhcF9hcGkKK3NucHJpbnRfb2JqaWQKK3NucHJpbnRfdmFsdWUKK3NucHJpbnRfdmFyaWFibGUKK3NwcmludF9yZWFsbG9jX29iamlkCitzcHJpbnRfcmVhbGxvY192YWx1ZQorc3ByaW50X3JlYWxsb2NfdmFyaWFibGUKK3VucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyCit1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWFuL21pYl9hcGkuMy5kZWYgYi9tYW4vbWliX2FwaS4zLmRlZgppbmRleCA1YjZkMWIwLi5iMDVlZDk0IDEwMDY0NAotLS0gYS9tYW4vbWliX2FwaS4zLmRlZgorKysgYi9tYW4vbWliX2FwaS4zLmRlZgpAQCAtMSwxMjAgKzEsMTQ5IEBACiAuVEggTUlCX0FQSSAzICIyMiBBcHIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBpbml0X21pYiwgYWRkX21pYmRpciwgaW5pdF9taWJfaW50ZXJuYWxzLAotYWRkX21vZHVsZV9yZXBsYWNlbWVudCwKLXJlYWRfbW9kdWxlLCByZWFkX21pYiwgcmVhZF9hbGxfbWlicywKLXJlYWRfb2JqaWQsIHJlYWRfbW9kdWxlX25vZGUsIGdldF9tb2R1bGVfbm9kZSwKLXNubXBfc2V0X21pYl93YXJuaW5ncywgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMsCiBzaHV0ZG93bl9taWIsCituZXRzbm1wX3JlYWRfbW9kdWxlLCByZWFkX21pYiwgcmVhZF9hbGxfbWlicywKK2FkZF9tb2R1bGVfcmVwbGFjZW1lbnQsCityZWFkX29iamlkLCBzbm1wX3BhcnNlX29pZCwgZ2V0X21vZHVsZV9ub2RlLAorc25tcF9zZXRfbWliX2Vycm9ycywgc25tcF9zZXRfbWliX3dhcm5pbmdzLCBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucywKIHByaW50X21pYiwKLXByaW50X3ZhcmlhYmxlLCBmcHJpbnRfdmFyaWFibGUsIHNucHJpbnRfdmFyaWFibGUsIHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlLAotcHJpbnRfdmFsdWUsIGZwcmludF92YWx1ZSwgc25wcmludF92YWx1ZSwgc3ByaW50X3JlYWxsb2NfdmFsdWUsCi1wcmludF9vYmppZCwgZnByaW50X29iamlkLCBzbnByaW50X29iamlkLCBzcHJpbnRfcmVhbGxvY19vYmppZCwKLXByaW50X2Rlc2NyaXB0aW9uLCBmcHJpbnRfZGVzY3JpcHRpb24gLSBtaWJfYXBpIGZ1bmN0aW9ucworcHJpbnRfb2JqaWQsIGZwcmludF9vYmppZCwgc25wcmludF9vYmppZCwKK3ByaW50X2Rlc2NyaXB0aW9uLCBmcHJpbnRfZGVzY3JpcHRpb24sIHNucHJpbnRfZGVzY3JpcHRpb24gLSBtaWJfYXBpIGZ1bmN0aW9ucwogLlNIIFNZTk9QU0lTCiAuQiAjaW5jbHVkZSA8bmV0LXNubXAvbWliX2FwaS5oPgogLlBQCiAuQiAidm9pZCBpbml0X21pYih2b2lkKTsKLS5icgorLlBQCiAuQkkgImludCBhZGRfbWliZGlyKGNvbnN0IGNoYXIgKiIgImRpcm5hbWUiICk7CiAuYnIKLS5CSSAiaW50IGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQoY29uc3QgY2hhciAqIiAib2xkX21vZHVsZSIgIiwgY29uc3QgY2hhciAqIiAibmV3X21vZHVsZSIgIiwgY29uc3QgY2hhciAqIiAidGFnIiAiLCBpbnQgIiAibGVuIiApOwotLmJyCiAuQiAidm9pZCBpbml0X21pYl9pbnRlcm5hbHModm9pZCk7Ci0uYnIKLS5CSSAic3RydWN0IHRyZWUgKnJlYWRfbW9kdWxlKGNvbnN0IGNoYXIgKiIgIm5hbWUiICk7CisuUFAKKy5CICJ2b2lkIHNodXRkb3duX21pYih2b2lkKTsKKy5TUyBSZWFkaW5nIGFuZCBQYXJzaW5nIE1JQnMKKy5QUAorLkJJICJzdHJ1Y3QgdHJlZSAqbmV0c25tcF9yZWFkX21vZHVsZShjb25zdCBjaGFyICoiICJuYW1lIiApOwogLmJyCiAuQkkgInN0cnVjdCB0cmVlICpyZWFkX21pYihjb25zdCBjaGFyICoiICJmaWxlbmFtZSIgKTsKIC5icgogLkIgInN0cnVjdCB0cmVlICpyZWFkX2FsbF9taWJzKHZvaWQpOwogLlBQCi0uQiAidm9pZCBzaHV0ZG93bl9taWIodm9pZCk7Ci0uUFAKLS5CSSAidm9pZCBwcmludF9taWIoRklMRSAqIiAiZnAiICk7Ci0uUFAKLS5CSSAiaW50IHJlYWRfb2JqaWQoY29uc3QgY2hhciAqIiAiaW5wdXQiICIsIG9pZCAqIiAib3V0cHV0IiAiLCBzaXplX3QgKiIgIm91dF9sZW4iICk7CisuQkkgImludCBhZGRfbW9kdWxlX3JlcGxhY2VtZW50KGNvbnN0IGNoYXIgKiIgIm9sZF9tb2R1bGUiICIsIgogLmJyCi0uQkkgImludCBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqIiAibmFtZSIgIiwgY29uc3QgY2hhciAqIiAibW9kdWxlIiAiLCBvaWQgKiIgIm9iamlkIiAiLCBzaXplX3QgKiIgIm9iamlkbGVuIiApOwotLlBQCi0uQkkgInZvaWQgcHJpbnRfdmFyaWFibGUoY29uc3Qgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICIgIm9iamlkbGVuIiAiLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgInZhcmlhYmxlIiApOworLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiICJuZXdfbW9kdWxlIiAiLCIKIC5icgotLkJJICJ2b2lkIGZwcmludF92YXJpYWJsZShGSUxFICoiIGZwICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgKTsKLS5icgotLkJJICJpbnQgc25wcmludF92YXJpYWJsZShjaGFyICoiICJidWYiICIsIHNpemVfdCAiICJsZW4iICIsIGNvbnN0IG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAiICJvYmppZGxlbiIgIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiICJ2YXJpYWJsZSIgKTsKLS5icgotLkJJICJpbnQgc3ByaW50X3JlYWxsb2NfdmFyaWFibGUodV9jaGFyICoqIiBidWYgIiwgc2l6ZV90ICoiIGJ1Zl9sZW4gIiwgc2l6ZV90ICoiIG91dF9sZW4gIiwgaW50ICIgYWxsb3dfcmVhbGxvYyAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICk7Ci0uUFAKLS5CSSAidm9pZCBwcmludF92YWx1ZShvaWQgKm9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyaWFibGUpCi0uYnIKLS5CSSAidm9pZCBmcHJpbnRfdmFsdWUoRklMRSAqIiBmcCAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICk7Ci0uYnIKLS5CSSAiaW50IHNucHJpbnRfdmFsdWUoY2hhciAqIiBidWYgIiwgc2l6ZV90ICIgImxlbiIgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSApOwotLmJyCi0uQkkgImludCBzcHJpbnRfcmVhbGxvY192YWx1ZSh1X2NoYXIgKioiIGJ1ZiAiLCBzaXplX3QgKiIgYnVmX2xlbiAiLCBzaXplX3QgKiIgb3V0X2xlbiAiLCBpbnQgIiBhbGxvd19yZWFsbG9jICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgKTsKLS5QUAotLkJJICJ2b2lkIHByaW50X29iamlkKGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiApOwotLmJyCi0uQkkgInZvaWQgZnByaW50X29iamlkKEZJTEUgKiIgZnAgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICk7Ci0uYnIKLS5CSSAiaW50IHNucHJpbnRfb2JqaWQoY2hhciAqIiBidWYgIiwgc2l6ZV90ICIgImxlbiIgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICk7Ci0uYnIKLS5CSSAiaW50IHNwcmludF9yZWFsbG9jX29iamlkKHVfY2hhciAqKiIgYnVmICIsIHNpemVfdCAqIiBidWZfbGVuICIsIHNpemVfdCAqIiBvdXRfbGVuICIsIGludCAiYWxsb3dfcmVhbGxvYyAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gKTsKLS5QUAotLkJJICJ2b2lkIHByaW50X2Rlc2NyaXB0aW9uKG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBpbnQgIiB3aWR0aCApOwotLmJyCi0uQkkgInZvaWQgZnByaW50X2Rlc2NyaXB0aW9uKEZJTEUgKiIgZnAgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGludCAiIHdpZHRoICk7CisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgInRhZyIgIiwgaW50ICIgImxlbiIgKTsKIC5QUAogLkJJICJ2b2lkIHNubXBfc2V0X21pYl93YXJuaW5ncyhpbnQgIiBsZXZlbCApOwogLmJyCisuQkkgInZvaWQgc25tcF9zZXRfbWliX2Vycm9ycyggIGludCAiIGxldmVsICk7CisuYnIKIC5CSSAidm9pZCBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucyhpbnQgIiBzYXZlICIpOyIKKy5TUyBTZWFyY2hpbmcgdGhlIE1JQiBUcmVlCisuUFAKKy5CSSAiaW50ICByZWFkX29iamlkKGNvbnN0IGNoYXIgKiIgImlucHV0IiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICoiICJvYmppZGxlbiIgKTsKKy5icgorLkJJICJvaWQgKnNubXBfcGFyc2Vfb2lkKGNvbnN0IGNoYXIgKiIgImlucHV0IiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICoiICJvYmppZGxlbiIgKTsKKy5icgorLkJJICJpbnQgIGdldF9tb2R1bGVfbm9kZShjb25zdCBjaGFyICoiICJuYW1lIiAiLCBjb25zdCBjaGFyICoiICJtb2R1bGUiICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICBvaWQgKiIgIm9iamlkIiAiLCBzaXplX3QgKiIgIm9iamlkbGVuIiApOworLlNTIE91dHB1dAorLlBQCisuQkkgInZvaWQgIHByaW50X21pYihGSUxFICoiICJmcCIgKTsKKy5QUAorLkJJICJ2b2lkICBwcmludF9vYmppZChjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gKTsKKy5icgorLkJJICJ2b2lkIGZwcmludF9vYmppZChGSUxFICoiIGZwICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiKTsiCisuYnIKKy5CSSAiaW50IHNucHJpbnRfb2JqaWQoY2hhciAqIiBidWYgIiwgc2l6ZV90ICIgImxlbiIgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIpOyIKKy5QUAorLkJJICJ2b2lkICBwcmludF9kZXNjcmlwdGlvbihjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKKy5icgorLkJJICJ2b2lkIGZwcmludF9kZXNjcmlwdGlvbihGSUxFICoiIGZwICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBpbnQgIiB3aWR0aCApOworLmJyCisuQkkgImludCBzbnByaW50X2Rlc2NyaXB0aW9uKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBpbnQgIiB3aWR0aCApOworLmJyCiAuUFAKIC5TSCBERVNDUklQVElPTgotVGhlIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggTUlCIG1vZHVsZXMgZmFsbCBpbnRvIGZvdXIgZ3JvdXBzLiAgVGhvc2UKLWRlYWxpbmcgd2l0aCBpbml0aWFsaXNhdGlvbiBhbmQgc2h1dGRvd24sIHRob3NlIHRoYXQgcmVhZCBpbiBhbmQKLXBhcnNlIE1JQiBmaWxlcywgdGhvc2UgdGhhdCBzZWFyY2ggdGhlIE1JQiB0cmVlLCBhbmQgdmFyaW91cyBvdXRwdXQKLXJvdXRpbmVzLgorVGhlIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggTUlCIG1vZHVsZXMgZmFsbCBpbnRvIGZvdXIgZ3JvdXBzIC0gdGhvc2UKK2RlYWxpbmcgd2l0aCBpbml0aWFsaXNhdGlvbiBhbmQgc2h1dGRvd24sIHdpdGggcmVhZGluZyBpbiBhbmQgcGFyc2luZworTUlCIGZpbGVzLCB3aXRoIHNlYXJjaGluZyB0aGUgTUlCIHRyZWUsIGFuZCBvdXRwdXQgcm91dGluZXMuCiAuU1MgSW5pdGlhbGlzYXRpb24gYW5kIFNodXRkb3duCi0uQiBpbml0X21pYgotaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgYWxsIGNhbGxzIHRvCi0uQlIgYWRkX21pYmRpciAiLCAiIHJlYWRfbW9kdWxlICIgYW5kICIgcmVhZF9taWIKLWZvciBzdGFuZGFyZCBhcHBsaWNhdGlvbnMuICBJdCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIKLXJvdXRpbmUgdGhhdCBtYW5pcHVsYXRlcyBvciBhY2Nlc3NlcyB0aGUgTUlCIHRyZWUuICBUaGlzIHJvdXRpbmUgc2V0cwotdXAgdmFyaW91cyBpbnRlcm5hbCBzdHJ1Y3R1cmVzLCBhcyB3ZWxsIGFzIHJlYWRpbmcgaW4gdGhlIGRlZmF1bHQgTUlCCi1tb2R1bGVzLCBhcyBkZXRhaWxlZCBiZWxvdy4KIC5QUAogLkIgYWRkX21pYmRpcgotaXMgdXNlZCB0byBkZWZpbmUgdGhlIHJhbmdlIG9mIGRpcmVjdG9yeSBsb2NhdGlvbnMgd2hpY2ggYXJlIHNlYXJjaGVkCi1mb3IgZmlsZXMgY29udGFpbmluZyBNSUIgbW9kdWxlcyAob25lIG1vZHVsZSBwZXIgZmlsZSkuICBCeSBkZWZhdWx0LAotdGhpcyB3aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0b3J5Ci0uSSBEQVRBRElSL21pYnMKLWJ1dCB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0uSSBNSUJESVJTCi10byBhIChjb2xvbi1zZXBhcmF0ZWQpIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoLgoraXMgdXNlZCB0byBhZGQgdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgdG8gdGhlIHBhdGggb2YgbG9jYXRpb25zIHdoaWNoIGFyZQorc2VhcmNoZWQgZm9yIGZpbGVzIGNvbnRhaW5pbmcgTUlCIG1vZHVsZXMuCiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhY3R1YWxseSBsb2FkIHRoZSBNSUIgbW9kdWxlcyBsb2NhdGVkCi1pbiB0aGF0IGRpcmVjdG9yeSwgYnV0IGlzIGFuIGluaXRpYWxpc2F0aW9uIHN0ZXAgdG8gbWFrZSB0aGVtIGF2YWlsYWJsZS4KK2luIHRoYXQgZGlyZWN0b3J5LCBidXQgaXMgc2ltcGx5IGFuIGluaXRpYWxpc2F0aW9uIHN0ZXAgdG8gbWFrZQordGhlbSBhdmFpbGFibGUgdG8KKy5CUiBuZXRzbm1wX3JlYWRfbW9kdWxlIC4KIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGNvdW50IG9mIGZpbGVzIGZvdW5kIGluIHRoZSBkaXJlY3RvcnksIG9yIGEgLTEKIGlmIHRoZXJlIGlzIGFuIGVycm9yLiAgCiAuUFAKIC5CIGluaXRfbWliX2ludGVybmFscwogc2V0cyB1cCB0aGUgaW50ZXJuYWwgc3RydWN0dXJlcywgcHJlcGFyYXRvcnkgdG8gcmVhZGluZyBpbiBNSUIKLW1vZHVsZXMuICBJdCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGFsbCBjYWxscyB0bworbW9kdWxlcy4gIEl0IHNob3VsZCBiZSBjYWxsZWQgXGZJYWZ0ZXJcZlAgYWxsIGNhbGxzIHRvCiAuQlIgYWRkX21pYmRpciAsCi1hbmQgYmVmb3JlIGFuZCBjYWxscyB0bwotLkJSIHJlYWRfbW9kdWxlIC4KLVRoaXMgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgaWYKK2FuZCBiZWZvcmUgYW55IGNhbGxzIHRvCisuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAuCisuUFAKIC5CIGluaXRfbWliCi1pcyB1c2VkLgoraXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbmZpZ3VyZXMgdGhlIE1JQiBkaXJlY3Rvcnkgc2VhcmNoIHBhdGggKHVzaW5nCisuQiBhZGRfbWliZGlyCispLCBzZXQgdXAgdGhlIGludGVybmFsIE1JQiBmcmFtZXdvcmsgKHVzaW5nCisuQiBpbml0X21pYl9pbnRlcm5hbHMKKyksIGFuZCB0aGVuIGxvYWRzIHRoZSBhcHByb3ByaWF0ZSBNSUIgbW9kdWxlcyAodXNpbmcKKy5CUiBuZXRzbm1wX3JlYWRfbW9kdWxlICIgYW5kICIgcmVhZF9taWIgIikuIgorU2VlIHRoZSBFTlZJUk9OTUVOVEFMIFZBUklBQkxFUyBzZWN0aW9uIGZvciBkZXRhaWxzLgorLmJyCitJdCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIKK3JvdXRpbmUgdGhhdCBtYW5pcHVsYXRlcyBvciBhY2Nlc3NlcyB0aGUgTUlCIHRyZWUuCiAuUFAKIC5CIHNodXRkb3duX21pYgogd2lsbCBjbGVhciB0aGUgaW5mb3JtYXRpb24gdGhhdCB3YXMgZ2F0aGVyZWQgYnkgCi0uQlIgcmVhZF9tb2R1bGUgIiwgIiBhZGRfbWliZGlyICIgYW5kICIgYWRkX21vZHVsZV9yZXBsYWNlbWVudCAuCisuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAiLCAiIGFkZF9taWJkaXIgIiBhbmQgIiBhZGRfbW9kdWxlX3JlcGxhY2VtZW50IC4KIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgb25lIGRvZXMgbm90IGludm9rZQogLkJSIHNodXRkb3duX21pYgogd2hpbGUgdGhlcmUgYXJlIFNOTVAgc2Vzc2lvbnMgYmVpbmcgYWN0aXZlbHkgbWFuYWdlZC4KIC5TUyBSZWFkaW5nIGFuZCBQYXJzaW5nIE1JQnMKKy5QUAorLkIgbmV0c25tcF9yZWFkX21vZHVsZQordGFrZXMgdGhlIG5hbWUgb2YgYSBNSUIgbW9kdWxlICh3aGljaCBuZWVkIG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKK25hbWUgb2YgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlKSwgbG9jYXRlcyB0aGlzIHdpdGhpbiB0aGUKK2NvbmZpZ3VyZWQgbGlzdCBvZiBNSUIgZGlyZWN0b3JpZXMsIGFuZCBsb2FkcyB0aGUgZGVmaW5pdGlvbnMgZnJvbQordGhlIG1vZHVsZSBpbnRvIHRoZSBhY3RpdmUgTUlCIHRyZWUuCitJdCBhbHNvIGxvYWRzIGFueSBNSUIgbW9kdWxlcyBsaXN0ZWQgaW4gdGhlIElNUE9SVFMgY2xhdXNlIG9mIHRoaXMgbW9kdWxlLgorLlBQCisuQiByZWFkX21pYgoraXMgc2ltaWxhciwgYnV0IHRha2VzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIE1JQiBtb2R1bGUuCitOb3RlIHRoYXQgdGhpcyBmaWxlIG5lZWQgbm90IGJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNSUIgZGlyZWN0b3J5CitzZWFyY2ggbGlzdCAoYWx0aG91Z2ggYW55IG1vZHVsZXMgbGlzdGVkIGluIHRoZSBJTVBPUlRTIGNsYXVzZSBkbykuCisuUFAKKy5CIHJlYWRfYWxsX21pYnMKK3dpbGwgcmVhZCBpbiBhbGwgdGhlIE1JQiBtb2R1bGVzIGZvdW5kIG9uIHRoZSBNSUIgZGlyZWN0b3J5IHNlYXJjaCBsaXN0LgorLlBQCitJbiBnZW5lcmFsIHRoZSBwYXJzZXIgaXMgc2lsZW50IGFib3V0IHdoYXQgc3RyYW5nZW5lc3NlcyBpdCBzZWVzIGluCit0aGUgTUlCIGZpbGVzLiBUbyBnZXQgd2FybmluZ3MgcmVwb3J0ZWQsIGNhbGwKKy5CIHNubXBfc2V0X21pYl93YXJuaW5ncword2l0aCBhCisuSSBsZXZlbAorb2YgMSAob3IgMiBmb3IgZXZlbiBtb3JlIHdhcm5pbmdzKS4KKy5QUAogLkIgYWRkX21vZHVsZV9yZXBsYWNlbWVudAogY2FuIGJlIHVzZWQgdG8gYWxsb3cgbmV3IE1JQiBtb2R1bGVzIHRvIG9ic29sZXRlIG9sZGVyIG9uZXMsIHdpdGhvdXQKLW5lZWRpbmcgdG8gYW1lbmQgdGhlIGltcG9ydHMgY2xhdXNlcyBvZiBvdGhlciBtb2R1bGVzLiAgSXQgdGFrZXMgdGhlCituZWVkaW5nIHRvIGFtZW5kIHRoZSBJTVBPUlRTIGNsYXVzZXMgb2Ygb3RoZXIgbW9kdWxlcy4gIEl0IHRha2VzIHRoZQogbmFtZXMgb2YgdGhlIG9sZCBhbmQgbmV3IG1vZHVsZXMsIHRvZ2V0aGVyIHdpdGggYW4gaW5kaWNhdGlvbiBvZiB3aGljaAogcG9ydGlvbnMgb2YgdGhlIG9sZCBtb2R1bGUgYXJlIGFmZmVjdGVkLgogLlJTCkBAIC0xMzAsNDggKzE1OSwxMSBAQAogLlRFCiAuUkUKIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gaGFuZGxlIGVycm9ycyBpbiB0aGUgbW9kdWxlIGlkZW50aWZpZXJzIHVzZWQKLWluIE1JQiBpbXBvcnQgY2xhdXNlcyAoc3VjaCBhcyByZWZlcnJpbmcgdG8KK2luIE1JQiBJTVBPUlRTIGNsYXVzZXMgKHN1Y2ggYXMgcmVmZXJyaW5nIHRvCiAuSSBSRkMxMjEzCiBpbnN0ZWFkIG9mCiAuSVIgUkZDMTIxMy1NSUIgKS4KLS5QUAotLkIgcmVhZF9tb2R1bGUKLWxvY2F0ZXMgYW5kIHBhcnNlcyB0aGUgbW9kdWxlIHNwZWNpZmllZCwgdG9nZXRoZXIgd2l0aCBhbnkgbW9kdWxlcwotdGhhdCBpdCBpbXBvcnRzIGZyb20sIGFuZCBhZGRzIHRoZSBjb250ZW50cyBvZiB0aGVzZSBtb2R1bGVzIHRvIHRoZQotYWN0aXZlIE1JQiB0cmVlLiAgTm90ZSB0aGF0Ci0uQiBhZGRfbWliZGlyCi1tdXN0IGZpcnN0IGJlIGNhbGxlZCB0byBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlIHdpdGggdGhlCi1tb2R1bGUgZGVmaW5pdGlvbiwgaWYgdGhpcyBpcyBub3QgaW4gdGhlIHN0YW5kYXJkIHBhdGguCi0uYnIKLUJ5IGRlZmF1bHQsIHRoZSBmb2xsb3dpbmcgTUlCIG1vZHVsZXMgd2lsbCBiZSBsb2FkZWQ6ICBJUC1NSUIsIElGLU1JQiwKLVRDUC1NSUIsIFVEUC1NSUIsIFNOTVB2Mi1NSUIsIFJGQzEyMTMtTUlCLCBVQ0QtU05NUC1NSUIuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0uSSBNSUJTCi10byBhIChjb2xvbi1zZXBhcmF0ZWQpIGxpc3Qgb2YgbW9kdWxlcyB0byBsb2FkLgotSWYgdGhpcyB2YXJpYWJsZSBzdGFydHMgd2l0aCBhIHBsdXMgY2hhcmFjdGVyLCB0aGVuIHRoZSBzcGVjaWZpZWQgbW9kdWxlcwotYXJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGxpc3QuICBPdGhlcndpc2Ugb25seSB0aG9zZSBtb2R1bGVzIGxpc3RlZCBhcmUKLWxvYWRlZCAodG9nZXRoZXIgd2l0aCBhbnkgb3RoZXJzIHRoZXkgaW1wb3J0IGZyb20pLgotSWYKLS5JIE1JQlMKLWlzIHNldCB0bwotLklSIEFMTCAsCi0uQiByZWFkX2FsbF9taWJzCi1pcyBjYWxsZWQgdG8gbG9hZCBhbGwgdGhlIE1JQiBmaWxlcyBmb3VuZCBpbiBhbGwgdGhlIHNwZWNpZmllZAotLklSIE1JQkRJUlMgLgotLlBQCi0uQiByZWFkX21pYgotcGFyc2VzIHRoZSBmaWxlIHNwZWNpZmllZCwgdG9nZXRoZXIgd2l0aCBhbnkgbW9kdWxlcyB0aGF0IGl0IGltcG9ydHMKLWZyb20sIGFuZCBhZGRzIHRoZSBjb250ZW50cyB0byB0aGUgYWN0aXZlIE1JQiB0cmVlLiAgU3VjaCBhIGZpbGUgY2FuCi1jb250YWluIG1vcmUgdGhlbiBvbmUgbW9kdWxlLCB0aG91Z2ggY2FyZSBtdXN0IGJlIHRha2VuIHRoYXQgYW55Ci1pbXBvcnRzIG9jY3VyIGVhcmxpZXIgaW4gdGhlIGZpbGUsIGlmIHRoZXkgYXJlIG5vdCB0byBiZSByZWFkIGZyb20gdGhlCi1pbnN0YWxsZWQgbW9kdWxlcy4gIE5vdGUgdGhhdCB0aGUgZmlsZSBzcGVjaWZpZWQgZG9lcyBub3QgbmVlZCB0byBiZQotaW4gYW55IG9mIHRoZSBkaXJlY3RvcmllcyBpbml0aWFsaXNlZCBieQotLkIgYWRkX21pYmRpcgotKG9yIHRoZSBkZWZhdWx0IHNldHVwKSwgdGhvdWdoIGFueSBpbXBvcnRlZCBtb2R1bGVzIGRvLgotLmJyCi1UaGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLS5JIE1JQkZJTEVTCi1jYW4gYmUgc2V0IHRvIGEgKGNvbG9uLXNlcGFyYXRlZCkgbGlzdCBvZiBmaWxlcyBjb250YWluaW5nIE1JQnMgdG8gbG9hZC4KKy5TUyBTZWFyY2hpbmcgdGhlIE1JQiBUcmVlCiAuUFAKIC5CIHJlYWRfb2JqaWQKIHRha2VzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB0ZXh0dWFsIHZlcnNpb24gb2YgYW4gb2JqZWN0IGlkZW50aWZpZXIKQEAgLTE4OSw3ICsxODEsMTAgQEAKIGxlbmd0aCBzaG91bGQgYmUgcmVzZXQgYmVmb3JlIGVhY2ggY2FsbC4KIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlIG9mIDEgaWYgaXQgc3VjY2VlZHMgaW4gcGFyc2luZyB0aGUgc3RyaW5nCiBhbmQgMCBvdGhlcndpc2UuCi0uU1MgU2VhcmNoaW5nIHRoZSBNSUIgVHJlZQorLlBQCisuQiBzbm1wX3BhcnNlX29pZAoraXMgc2ltaWxhciwgYnV0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBwYXJzZWQgT0lEIGJ1ZmZlciAob3IgTlVMTCkuCisuUFAKIC5CIGdldF9tb2R1bGVfbm9kZQogdGFrZXMgYSBkZXNjcmlwdG9yIGFuZCB0aGUgbmFtZSBvZiBhIG1vZHVsZSwgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcKIG9pZCBsaXN0LCBpbiB0aGUgc2FtZSB3YXkgYXMKQEAgLTIwMSwxMjIgKzE5Niw5NyBAQAogcmV0dXJuIHRoZSBtYXRjaGluZyBlbnRyeS4gIElmIHRoaXMgYXNzdW1wdGlvbiBpcyBpbnZhbGlkLCB0aGVuIHRoZQogYmVoYXZpb3VyIGFzIHRvIHdoaWNoIHZhcmlhYmxlIGlzIHJldHVybmVkIGlzIGltcGxlbWVudGF0aW9uCiBkZXBlbmRlbnQuCisuYnIKIC5TUyBPdXRwdXQKIC5CIHByaW50X21pYgogd2lsbCBwcmludCBvdXQgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBNSUIgdHJlZSB0bwogdGhlIHNwZWNpZmllZCBGSUxFIHBvaW50ZXIuCiAuUFAKLS5CIHByaW50X3ZhcmlhYmxlCisuQiBwcmludF9vYmppZAogd2lsbCB0YWtlIGFuIG9iamVjdCBpZGVudGlmaWVyIChhcyByZXR1cm5lZCBieQotLkIgcmVhZF9vYmppZAotb3IKLS5CUiBnZXRfbW9kdWxlX25vZGUgKQotYW5kIGFuIGluc3RhbmNlIG9mIHN1Y2ggYSB2YXJpYWJsZSwgYW5kIHByaW50cyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0Ci10aGUgdGV4dHVhbCBmb3JtIG9mIHRoZSBvYmplY3QgaWRlbnRpZmllciB0b2dldGhlciB3aXRoIHRoZSB2YWx1ZQotb2YgdGhlIHZhcmlhYmxlLgotLkIgZnByaW50X3ZhcmlhYmxlCisuQlIgcmVhZF9vYmppZCAiLCAiIHNubXBfcGFyc2Vfb2lkICIgb3IgIiBnZXRfbW9kdWxlX25vZGUgIiksIgorYW5kIHByaW50cyB0aGUgdGV4dHVhbCBmb3JtIG9mIHRoaXMgT0lEIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuCisuUFAKKy5CIGZwcmludF9vYmppZAogZG9lcyB0aGUgc2FtZSwgYnV0IHByaW50cyB0byB0aGUgRklMRSBwb2ludGVyIHNwZWNpZmllZCBieSB0aGUgaW5pdGlhbAogcGFyYW1ldGVyLgotLmJyCi0uQiBzbnByaW50X3ZhcmlhYmxlCisuUFAKKy5CIHNucHJpbnRfb2JqaWQKIHByaW50cyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBpbnRvIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieQogLkkgYnVmCiB3aGljaCBpcyBvZiBsZW5ndGgKLS5JUiBsZW4gCi1hbmQgcmV0dXJucyBlaXRoZXIgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQsIG9yIC0xIGlmIHRoZQorLklSIGxlbiAuCitJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBvciAtMSBpZiB0aGUKIGJ1ZmZlciB3YXMgbm90IGxhcmdlIGVub3VnaC4gIEluIHRoZSBsYXR0ZXIgY2FzZSwKIC5JIGJ1Zgotd2lsbCB0eXBpY2FsbHkgY29udGFpbmVkIGEgdHJ1bmNhdGVkIHZlcnNpb24gb2YgdGhlIGluZm9ybWF0aW9uIChidXQKLXRoaXMgYmVoYXZpb3VyIGlzIG5vdCBndWFyYW50ZWVkKS4gIFRoaXMgZnVuY3Rpb24gcmVwbGFjZXMgdGhlCi1vYnNvbGV0ZSBmdW5jdGlvbgotLkJSIHNwcmludF92YXJpYWJsZSAuCi0uYnIKLS5CIHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlCi1pcyB0aGUgbG93LWxldmVsIGZ1bmN0aW9uIHVzZWQgdG8gaW1wbGVtZW50IGFsbCB0aGVzZSBmdW5jdGlvbnMuICBJdAotcHJpbnRzIHRvIGEgc3BlY2lmaWVkIG9mZnNldCBpbiBhIHN0cmluZyBidWZmZXIuICBUaGUKLS5JIGJ1ZgotcGFyYW1ldGVyIHBvaW50cyB0byBhIHBvaW50ZXIgdG8gdGhhdCBidWZmZXI7Ci0uSSBidWZfbGVuCi1wb2ludHMgdG8gYSB2YXJpYWJsZSBob2xkaW5nIHRoZSBjdXJyZW50IHNpemUgb2YgdGhhdCBidWZmZXIsIGFuZAotLkkgb3V0X2xlbgotcG9pbnRzIHRvIGEgdmFyaWFibGUgaG9sZGluZyB0aGUgb2Zmc2V0IHRvIHdoaWNoIHRvIHByaW50LgotLkkgb3V0X2xlbgotd2lsbCBiZSB1cGRhdGVkIHRvIGhvbGQgdGhlIG9mZnNldCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgbGFzdAotb25lIGFkZGVkIHRvIHRoZSBidWZmZXIuICBJZgotLkkgYWxsb3dfcmVhbGxvYwotaXMgMSwgdGhlIGJ1ZmZlciB3aWxsIGJlIGR5bmFtaWNhbGx5IGV4cGFuZGVkLCBhcyBuZWNlc3NhcnksIHRvIGhvbGQKLXRoZSBvdXRwdXQ7IHRoZSB2YXJpYWJsZXMgcG9pbnRlZCB0byBieQotLkkgYnVmCi1hbmQKLS5JIGJ1Zl9sZW4KLXdpbGwgYmUgdXBkYXRlZC4gIElmCi0uSSBhbGxvd19yZWFsbG9jCi1pcyAwLCB0aGUgYnVmZmVyIHdpbGwgbm90IGJlIGR5bmFtaWNhbGx5IGV4cGFuZGVkLgotLkIgc3ByaW50X3JlYWxsb2NfdmFyaWFibGUKLXJldHVybnMgMCBpZgotLkkgYWxsb3dfcmVhbGxvYwotaXMgMSBhbmQgYW4gYXR0ZW1wdCB0byBhbGxvY2F0ZSBtZW1vcnkgdG8gZXhwYW5kIHRoZSBidWZmZXIgZmFpbHMsIG9yCi1pZgotLkkgYWxsb3dfcmVhbGxvYwotaXMgMCBhbmQgdGhlIG91dHB1dCB3b3VsZG4ndCBmaXQgaW4gdGhlIGJ1ZmZlci4gIE90aGVyd2lzZSBpdCByZXR1cm5zCi0xLiAgV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uIHlvdSBzaG91bGQgYmUgY2FyZWZ1bCB0byBjYWxsCi0uQlIgZnJlZSAoMykKLW9uCi0uSSAqYnVmCi13aGVuIHlvdSBoYXZlIGZpbmlzaGVkIHdpdGggaXQuCit3aWxsIHR5cGljYWxseSBjb250YWluIGEgdHJ1bmNhdGVkIHZlcnNpb24gb2YgdGhlIGluZm9ybWF0aW9uIChidXQKK3RoaXMgYmVoYXZpb3VyIGlzIG5vdCBndWFyYW50ZWVkKS4KIC5QUAotLkJSIHByaW50X3ZhbHVlICwKLS5CUiBmcHJpbnRfdmFsdWUgLAotLkJSIHNucHJpbnRfdmFsdWUKKy5CUiBwcmludF9kZXNjcmlwdGlvbiAsCisuQlIgZnByaW50X2Rlc2NyaXB0aW9uICwKIGFuZAotLkIgc3ByaW50X3JlYWxsb2NfdmFsdWUKLWRvIHRoZSBzYW1lIGFzIHRoZSBlcXVpdmFsZW50Ci0uQiBwcmludF92YXJpYWJsZQotcm91dGluZXMsIGJ1dCBvbmx5IGRpc3BsYXlpbmcgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgd2l0aG91dCB0aGUKLWNvcnJlc3BvbmRpbmcgb2JqZWN0IGlkZW50aWZpZXIuCi0uUFAKLS5CUiBwcmludF9vYmppZCAsCi0uQlIgZnByaW50X29iamlkICwKLS5CUiBzbnByaW50X29iamlkICwKLWFuZAotLkIgc3ByaW50X3JlYWxsb2Nfb2JqaWQKLXRha2UgYW4gb2JqZWN0IGlkZW50aWZpZXIgKHdpdGhvdXQgYW4gYWNjb21wYW55aW5nIHZhcmlhYmxlIGluc3RhbmNlKQotYW5kIHByaW50IG91dCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbi4KLS5QUAotLkJJIHByaW50X2Rlc2NyaXB0aW9uICwKLS5CSSBmcHJpbnRfZGVzY3JpcHRpb24gLAotLkJJIHNucHJpbnRfZGVzY3JpcHRpb24gLAotYW5kCi0uQiBzcHJpbnRfcmVhbGxvY19kZXNjcmlwdGlvbgotdGFrZSBhbiBvYmplY3QgaWRlbnRpZmllciAoYXMgZm9yCi0uQiBwcmludF9vYmppZAotYWJvdmUpIGFuZCBwcmludCBvdXQgYSB2ZXJzaW9uIG9mIHRoZSBNSUIgZGVmaW5pdGlvbiBmb3IgdGhhdCBvYmplY3QsCisuQiBzbnByaW50X2Rlc2NyaXB0aW9uCit0YWtlIGEgc2ltaWxhciBvYmplY3QgaWRlbnRpZmllcgorYW5kIHByaW50IG91dCBhIHZlcnNpb24gb2YgdGhlIE1JQiBkZWZpbml0aW9uIGZvciB0aGF0IG9iamVjdCwKIHRvZ2V0aGVyIHdpdGggdGhlIGZ1bGwgT0lELiBUaGUKIC5JIHdpZHRoCiBhcmd1bWVudCBjb250cm9scyBob3cgdGhlIE9JRCBpcyBsYXllZCBvdXQuCiAuUFAKIEJ5IGRlZmF1bHQgdGhlIHBhcnNlciBkb2VzIG5vdCBzYXZlIGRlc2NyaXB0aW9ucyBzaW5jZSB0aGV5IG1heSBiZQotaHVnZS4gIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHJpbnQgdGhlbSwgeW91IG11c3QgY2FsbAotLkJSIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zKDEpIC4KLS5QUAotSW4gZ2VuZXJhbCB0aGUgcGFyc2VyIGlzIHNpbGVudCBhYm91dCB3aGF0IHN0cmFuZ2VuZXNzZXMgaXQgc2VlcyBpbgotdGhlIE1JQiBmaWxlcy4gVG8gZ2V0IHdhcm5pbmdzIHJlcG9ydGVkLCBjYWxsCi0uQiBzbm1wX3NldF9taWJfd2FybmluZ3MKLXdpdGggYQotLkkgbGV2ZWwKLW9mIDEgKG9yIDIgZm9yIGV2ZW4gbW9yZSB3YXJuaW5ncykuCitodWdlLiAgSW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwcmludCB0aGVtLCBpdCBpcyBuZWNlc3NhcnkgdG8gaW52b2tlCisuQkkgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMoMSkgYmVmb3JlCitjYWxsaW5nCisuQiBpbml0X21pYgorKG9yIHNpbWlsYXIpLgogLlNIICJFTlZJUk9OTUVOVCBWQVJJQUJMRVMiCisuUFAKK1RoZSBtYWluIHVzZSBvZiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyB3aXRoIHJlc3BlY3QgdG8gdGhlc2UgQVBJIGNhbGxzCitpcyB0byBjb25maWd1cmUgd2hpY2ggTUlCIG1vZHVsZXMgc2hvdWxkIGJlIGxvYWRlZCwgYW5kIHdoZXJlIHRoZXkgYXJlCitsb2NhdGVkLgogLlRQIDEwCiBNSUJESVJTCiBBIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCIG1vZHVsZXMuCisuYnIKIERlZmF1bHQ6IERBVEFESVIvc25tcC9taWJzCi0uVFAgMTAKLU1JQkZJTEVTCi1BIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIHRvIGxvYWQuCi1EZWZhdWx0OiAobm9uZSkKKy5icgorVXNlZCBieQorLkJSIGluaXRfbWliICIsICIgbmV0c25tcF9yZWFkX21vZHVsZSAiLCAiIHJlYWRfYWxsX21pYnMKK2FuZCAoaW1wbGljaXRseSkgYnkKKy5CUiByZWFkX21pYiAuCiAuVFAgMTAKIE1JQlMKIEEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgTUlCIG1vZHVsZXMgdG8gbG9hZC4KLURlZmF1bHQ6IElQLU1JQjpJRi1NSUI6VENQLU1JQjpVRFAtTUlCOlNOTVB2Mi1NSUI6IFJGQzEyMTMtTUlCOlVDRC1TTk1QLU1JQi4KKy5icgorVGhlIGRlZmF1bHQgbGlzdCBvZiBtb2R1bGVzIHdpbGwgZGVwZW5kIG9uIGhvdyB0aGUgTmV0LVNOTVAgc29mdHdhcmUKK3dhcyBvcmlnaW5hbGx5IGNvbXBpbGVkLCBidXQgaXMgdHlwaWNhbGx5OgorSVAtTUlCOklGLU1JQjpUQ1AtTUlCOlVEUC1NSUI6U05NUHYyLU1JQjpSRkMxMjEzLU1JQjogVUNELVNOTVAtTUlCOkhPU1QtUkVTT1VSQ0VTLU1JQgorLklQCitJZiB0aGUgdmFsdWUgb2YgdGhlCisuQiBNSUJTCitlbnZpcm9ubWVudGFsIHZhcmlhYmxlIHN0YXJ0cyB3aXRoIGEgJysnIGNoYXJhY3RlciwKK3RoZW4gdGhlc2UgTUlCIG1vZHVsZXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBsaXN0LgorT3RoZXJ3aXNlIHRoZXNlIG1vZHVsZXMgKHBsdXMgYW55IHRoYXQgdGhleSBJTVBPUlQgZnJvbSkgd2lsbCBiZSBsb2FkZWQKKy5JIGluc3RlYWQKK29mIHRoZSBkZWZhdWx0IGxpc3QuCisuSVAKK0lmIHRoZSAKKy5CIE1JQlMKK2Vudmlyb25tZW50YWwgdmFyaWFibGUgaGFzIHRoZSB2YWx1ZQorLkJSIEFMTCAiIHRoZW4gIiByZWFkX2FsbF9taWJzCit3aWxsIGJlIGNhbGxlZCB0byBsb2FkIHRoZSBmdWxsIGNvbGxlY3Rpb24gb2YgYWxsIGF2YWlsYWJsZSBNSUIgbW9kdWxlcy4KKy5JUAorVXNlZCBieQorLkIgaW5pdF9taWIKK29ubHkuCisuVFAgMTAKK01JQkZJTEVTCitBIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIHRvIGxvYWQuCisuYnIKK0RlZmF1bHQ6IChub25lKQorLmJyCitVc2VkIGJ5CisuQiBpbml0X21pYgorb25seS4KIC5TSCAiU0VFIEFMU08iCi0uQlIgc25tcF9hcGkgIigzKSIKKy5CUiBzbm1wX2FwaSAiKDMpLCIKKy5CUiBvdXRwdXRfYXBpICIoMykiCmRpZmYgLS1naXQgYS9tYW4vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYgYi9tYW4vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2OTQ0YwotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xLmRlZgpAQCAtMCwwICsxLDI4IEBACisuVEggbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgMSAiMTcgU2VwIDIwMDgiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuU0ggTkFNRQorbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgXC0gY3JlYXRlIGEgU05NUHYzIHVzZXIgaW4gbmV0LXNubXAgY29uZmlndXJhdGlvbiBmaWxlCisuU0ggU1lOT1BTSVMKKy5QUAorLkIgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgWy1yb10gWy1hIGF1dGhwYXNzXSBbLXggcHJpdnBhc3NdIFstWCBERVN8QUVTXQorLkIgW3VzZXJuYW1lXQorLlNIIERFU0NSSVBUSU9OCisuUFAKK1RoZSBcZkluZXQtc25tcC1jcmVhdGUtdjMtdXNlclxmUCBzaGVsbCBzY3JpcHQgaXMgZGVzaWduZWQgdG8gY3JlYXRlIGEKK25ldyB1c2VyIGluIG5ldC1zbm1wIGNvbmZpZ3VyYXRpb24gZmlsZSAoL3Zhci9uZXQtc25tcC9zbm1wZC5jb25mIGJ5IGRlZmF1bHQpLgorCisuU0ggT1BUSU9OUworLlRQCitcZkJcLVwtdmVyc2lvblxmUgorZGlzcGxheXMgdGhlIG5ldC1zbm1wIHZlcnNpb24gbnVtYmVyCisuVFAKK1xmQlwtcm9cZlIKK2NyZWF0ZSBhbiB1c2VyIHdpdGggcmVhZC1vbmx5IHBlcm1pc3Npb25zCisuVFAKK1xmQlwtYSBhdXRocGFzc1xmUgorc3BlY2lmeSBhdXRoZW50aWNhdGlvbiBwYXNzd29yZAorLlRQCitcZkJcLXggcHJpdnBhc3NcZlIKK3NwZWNpZnkgZW5jcnlwdGlvbiBwYXNzd29yZAorLlRQCitcZkJcLVggREVTfEFFU1xmUgorc3BlY2lmeSBlbmNyeXB0aW9uIGFsZ29yaXRobQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMgYi9tYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjU4ZWEyCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMKQEAgLTAsMCArMSwyNiBAQAorLlRIICJiYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcjogY2FsbHMgaW5kaXZpZHVhbCBhY2Nlc3MgbWV0aG9kcyBiYXNlZCBvbiBiYWJ5X3N0ZXAgbW9kZS4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyOiBjYWxscyBpbmRpdmlkdWFsIGFjY2VzcyBtZXRob2RzIGJhc2VkIG9uIGJhYnlfc3RlcCBtb2RlLiBcLSAKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldFxmUCAoXGZCbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzXGZQICphbSkiCisuYnIKKy5SSSAiXGZJcmV0dXJucyBhIGJhYnlfc3RlcHMgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9iYWJ5X3N0ZXBfbW9kZTJmbGFnXGZQICh1X2ludCBtb2RlKSIKKy5icgorLmluIC0xYworLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgorLlBQIAorLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldCAoXGZCbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzXGZQICogYW0pIgorLlBQCityZXR1cm5zIGEgYmFieV9zdGVwcyBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNiBvZiBmaWxlIGJhYnlfc3RlcHMuYy4KKy5TSCAiQXV0aG9yIgorLlBQIAorR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudC4zIGIvbWFuL25ldHNubXBfYWdlbnQuMwppbmRleCBmM2M3ZGQ1Li5kNDVhZTY0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9hZ2VudC4zCisrKyBiL21hbi9uZXRzbm1wX2FnZW50LjMKQEAgLTEsNCArMSw0IEBACi0uVEggIlRoZSBOZXQtU05NUCBhZ2VudCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJUaGUgTmV0LVNOTVAgYWdlbnQiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zIGIvbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE0MjllNAotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zCkBAIC0wLDAgKzEsMjQwIEBACisuVEggImFnZW50X2hhbmRsZXIuaCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQorYWdlbnRfaGFuZGxlci5oIFwtIAorLlNIIFNZTk9QU0lTCisuYnIKKy5QUAorLlNTICJEYXRhIFN0cnVjdHVyZXMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAic3RydWN0IFxmQm5ldHNubXBfbWliX2hhbmRsZXJfc1xmUCIKKy5icgorLlJJICJcZkl0aGUgbWliIGhhbmRsZXIgc3RydWN0dXJlIHRvIGJlIHJlZ2lzdGVyZWQgXGZQIgorLnRpIC0xYworLlJJICJzdHJ1Y3QgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zXGZQIgorLmJyCisuUkkgIlxmSVJvb3QgcmVnaXN0cmF0aW9uIGluZm8uIFxmUCIKKy50aSAtMWMKKy5SSSAic3RydWN0IFxmQm5ldHNubXBfaGFuZGxlcl9hcmdzX3NcZlAiCisuYnIKKy50aSAtMWMKKy5SSSAic3RydWN0IFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlX3NcZlAiCisuYnIKKy5pbiAtMWMKKy5TUyAiRGVmaW5lcyIKKworLmluICsxYworLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQk1JQl9IQU5ETEVSX0FVVE9fTkVYVFxmUCAgIDB4MDAwMDAwMDEiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9BVVRPX05FWFRfT1ZFUlJJREVfT05DRVxmUCAgIDB4MDAwMDAwMDIiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9JTlNUQU5DRVxmUCAgIDB4MDAwMDAwMDQiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9DVVNUT000XGZQICAgMHgxMDAwMDAwMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQk1JQl9IQU5ETEVSX0NVU1RPTTNcZlAgICAweDIwMDAwMDAwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQ1VTVE9NMlxmUCAgIDB4NDAwMDAwMDAiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9DVVNUT00xXGZQICAgMHg4MDAwMDAwMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX0dFVEFOREdFVE5FWFRcZlAgICAweDAxIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fU0VUXGZQICAgMHgwMiIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX0dFVEJVTEtcZlAgICAweDA0IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fTk9UX0NSRUFURVxmUCAgIDB4MDgiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9CQUJZX1NURVBcZlAgICAweDEwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fU1RBU0hcZlAgICAweDIwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fUk9OTFlcZlAgICAoSEFORExFUl9DQU5fR0VUQU5ER0VUTkVYVCkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9SV1JJVEVcZlAgICAoSEFORExFUl9DQU5fR0VUQU5ER0VUTkVYVCB8IEhBTkRMRVJfQ0FOX1NFVCkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9TRVRfT05MWVxmUCAgIChIQU5ETEVSX0NBTl9TRVQgfCBIQU5ETEVSX0NBTl9OT1RfQ1JFQVRFKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX0RFRkFVTFRcZlAgICAoSEFORExFUl9DQU5fUk9OTFkgfCBIQU5ETEVSX0NBTl9OT1RfQ1JFQVRFKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlJFUVVFU1RfSVNfREVMRUdBVEVEXGZQICAgMSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRFxmUCAgIDAiCisuYnIKKy5pbiAtMWMKKy5TUyAiVHlwZWRlZnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBzdHJ1Y3QgXGZCbmV0c25tcF9taWJfaGFuZGxlcl9zXGZQIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAiCisuYnIKKy5SSSAiXGZJVHlwZWRlZnMgdGhlIFxmQm5ldHNubXBfbWliX2hhbmRsZXJfc1xmUCBzdHJ1Y3QgaW50byBuZXRzbm1wX21pYl9oYW5kbGVyLiBcZlAiCisudGkgLTFjCisuUkkgInR5cGVkZWYgc3RydWN0IFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fc1xmUCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQIgorLmJyCisuUkkgIlxmSVR5cGVkZWZzIHRoZSBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3NcZlAgc3RydWN0IGludG8gbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbi4gXGZQIgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9Ob2RlX0hhbmRsZXJcZlAgKShcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzKSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIHN0cnVjdCBcZkJuZXRzbm1wX2hhbmRsZXJfYXJnc19zXGZQIFxmQm5ldHNubXBfaGFuZGxlcl9hcmdzXGZQIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgc3RydWN0IFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlX3NcZlAgXGZCbmV0c25tcF9kZWxlZ2F0ZWRfY2FjaGVcZlAiCisuYnIKKy5pbiAtMWMKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X2hhbmRsZXJfY29uZlxmUCAodm9pZCkiCisuYnIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJcmVnaXN0ZXIgYSBoYW5kbGVyLCBhcyBkZWZpbmVkIGJ5IHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLlJJICJcZkl1bnJlZ2lzdGVyIGEgaGFuZGxlciwgYXMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXJfbm9jYWxsYmFja1xmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJcmVnaXN0ZXIgYSBoYW5kbGVyLCBhcyBkZWZpbmVkIGJ5IHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfaW5qZWN0X2hhbmRsZXJcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIpIgorLmJyCisuUkkgIlxmSWluamVjdCBhIG5ldyBoYW5kbGVyIGludG8gdGhlIGNhbGxpbmcgY2hhaW4gb2YgdGhlIGhhbmRsZXJzIGRlZmluZWQgYnkgdGhlIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gcG9pbnRlci4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9pbmplY3RfaGFuZGxlcl9iZWZvcmVcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIGNvbnN0IGNoYXIgKmJlZm9yZV93aGF0KSIKKy5icgorLlJJICJcZklpbmplY3QgYSBuZXcgaGFuZGxlciBpbnRvIHRoZSBjYWxsaW5nIGNoYWluIG9mIHRoZSBoYW5kbGVycyBkZWZpbmVkIGJ5IHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfZmluZF9oYW5kbGVyX2J5X25hbWVcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIGNvbnN0IGNoYXIgKm5hbWUpIgorLmJyCisuUkkgIlxmSVJldHVybnMgYSBoYW5kbGVyIGZyb20gYSBjaGFpbiBiYXNlZCBvbiB0aGUgbmFtZS4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkICogXGZCbmV0c25tcF9maW5kX2hhbmRsZXJfZGF0YV9ieV9uYW1lXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLlJJICJcZklSZXR1cm5zIGEgaGFuZGxlcidzIHZvaWQgKiBwb2ludGVyIGZyb20gYSBjaGFpbiBiYXNlZCBvbiB0aGUgbmFtZS4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9jYWxsX2hhbmRsZXJzXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBpbnQgXGZCbmV0c25tcF9jYWxsX2hhbmRsZXJcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKm5leHRfaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy5SSSAiXGZJY2FsbHMgYSBoYW5kbGVyIHdpdGggd2l0aCBhcHByb3ByaWF0ZSBOVUxMIGNoZWNraW5nIG9mIGFyZ3VtZW50cywgZXRjLiBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIGludCBcZkJuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpjdXJyZW50LCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzKSIKKy5icgorLlJJICJcZkljYWxscyB0aGUgbmV4dCBoYW5kbGVyIGluIHRoZSBjaGFpbiBhZnRlciB0aGUgY3VycmVudCBvbmUgd2l0aCB3aXRoIGFwcHJvcHJpYXRlIE5VTEwgY2hlY2tpbmcsIGV0Yy4gXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBpbnQgXGZCbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcl9vbmVfcmVxdWVzdFxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqY3VycmVudCwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy5SSSAiXGZJY2FsbHMgdGhlIG5leHQgaGFuZGxlciBpbiB0aGUgY2hhaW4gYWZ0ZXIgdGhlIGN1cnJlbnQgb25lIHdpdGggd2l0aCBhcHByb3ByaWF0ZSBOVUxMIGNoZWNraW5nLCBldGMuIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfY3JlYXRlX2hhbmRsZXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpoYW5kbGVyX2FjY2Vzc19tZXRob2QpIgorLmJyCisuUkkgIlxmSWNyZWF0ZXMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIHN0cnVjdHVyZSBnaXZlbiBhIG5hbWUgYW5kIGEgYWNjZXNzIG1ldGhvZC4gXGZQIgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGVcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLmJyCisuUkkgIlxmSWNyZWF0ZXMgYSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBzdHJ1Y3R1cmUgZ2l2ZW4gYSBuYW1lLCBhIGFjY2Vzc19tZXRob2QgZnVuY3Rpb24sIGEgcmVnaXN0cmF0aW9uIGxvY2F0aW9uIG9pZCBhbmQgdGhlIG1vZGVzIHRoZSBoYW5kbGVyIHN1cHBvcnRzLiBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAoY29uc3QgY2hhciAqbmFtZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKmhhbmRsZXJfYWNjZXNzX21ldGhvZCwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF9kZWxlZ2F0ZWRfY2FjaGVcZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9kZWxlZ2F0ZWRfY2FjaGVcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMsIHZvaWQgKmxvY2FsaW5mbykiCisuYnIKKy5SSSAiXGZJY3JlYXRlcyBhIGNhY2hlIG9mIGluZm9ybWF0aW9uIHdoaWNoIGNhbiBiZSBzYXZlZCBmb3IgZnV0dXJlIHJlZmVyZW5jZS4gXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9kZWxlZ2F0ZWRfY2FjaGVcZlAgKFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQICpkY2FjaGUpIgorLmJyCisuUkkgIlxmSWZyZWVzIGEgY2FjaGUgb25jZSB5b3UncmUgZmluaXNoZWQgdXNpbmcgaXQgXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfaGFuZGxlcl9jaGVja19jYWNoZVxmUCAoXGZCbmV0c25tcF9kZWxlZ2F0ZWRfY2FjaGVcZlAgKmRjYWNoZSkiCisuYnIKKy5SSSAiXGZJY2hlY2sncyBhIGdpdmVuIGNhY2hlIGFuZCByZXR1cm5zIGl0IGlmIGl0IGlzIHN0aWxsIHZhbGlkIChpZSwgdGhlIGFnZW50IHN0aWxsIGNvbnNpZGVycyBpdCB0byBiZSBhbiBvdXRzdGFuZGluZyByZXF1ZXN0LiBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyX2J5X25hbWVcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIpIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVycyBhIGdpdmVuIGhhbmRsZXIgYnkgbmFtZSBzbyB0aGF0IGl0IGNhbiBiZSBmb3VuZCBlYXNpbHkgbGF0ZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2NsZWFyX2hhbmRsZXJfbGlzdFxmUCAodm9pZCkiCisuYnIKKy5SSSAiXGZJY2xlYXJzIHRoZSBlbnRpcmUgaGFuZGxlci1yZWdpc3RyYXRpb24gbGlzdCBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0LCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCisuYnIKKy5SSSAiXGZJYWRkIGRhdGEgdG8gYSByZXF1ZXN0IHRoYXQgY2FuIGJlIGV4dHJhY3RlZCBsYXRlciBieSBzdWJtb2R1bGVzIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgaW50IFxmQm5ldHNubXBfcmVxdWVzdF9yZW1vdmVfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJcmVtb3ZlIGRhdGEgZnJvbSBhIHJlcXVlc3QgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkICogXGZCbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0LCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLlJJICJcZklleHRyYWN0IGRhdGEgZnJvbSBhIHJlcXVlc3QgdGhhdCB3YXMgYWRkZWQgcHJldmlvdXNseSBieSBhIHBhcmVudCBcZkJtb2R1bGVcZlAgXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCisuYnIKKy5SSSAiXGZJRnJlZSB0aGUgZXh0cmEgZGF0YSBzdG9yZWQgaW4gYSByZXF1ZXN0LiBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX3JlcXVlc3RfZGF0YV9zZXRzXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCisuYnIKKy5SSSAiXGZJRnJlZSB0aGUgZXh0cmEgZGF0YSBzdG9yZWQgaW4gYSBidW5jaCBvZiByZXF1ZXN0cyAoYWxsIGRhdGEgaW4gdGhlIGNoYWluKS4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfaGFuZGxlcl9mcmVlXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyKSIKKy5icgorLlJJICJcZklmcmVlcyB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGhhbmRsZXIgXGZQIgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9oYW5kbGVyX2R1cFxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlcikiCisuYnIKKy5SSSAiXGZJZHVwbGljYXRlcyBhIGhhbmRsZXIgYW5kIGFsbCBzdWJzZXF1ZW50IGhhbmRsZXJzIHNlZSBhbHNvIF9jbG9uZV9oYW5kbGVyIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZHVwXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLlJJICJcZklkdXBsaWNhdGVzIHRoZSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBvYmplY3QgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZVxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJZnJlZSB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhIGhhbmRsZXIgcmVnaXN0cmF0aW9uIG9iamVjdCBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9oYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMsIGludCBpc2RlbGVnYXRlZCkiCisuYnIKKy5SSSAiXGZJbWFya3MgYSBsaXN0IG9mIHJlcXVlc3RzIGFzIGRlbGVnYXRlZCAob3Igbm90IGlmIGlzZGVsZWdhZGVkID0gMCkgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkICogXGZCbmV0c25tcF9oYW5kbGVyX2dldF9wYXJlbnRfZGF0YVxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiwgY29uc3QgY2hhciAqKSIKKy5icgorLmluIC0xYworLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKKy5QUCAKKworLlBQCitEZWZpbml0aW9uIGluIGZpbGUgXGZCYWdlbnRfaGFuZGxlci5oXGZQLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMgYi9tYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zCmluZGV4IDEwYmEyZjIuLjM2YzhkOWYgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMKKysrIGIvbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiTWFpbnRhaW4gYSByZWdpc3RyeSBvZiBNSUIgc3VidHJlZXMsIHRvZ2V0aGVyIHdpdGggcmVsYXRlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgbWlibW9kdWxlLCBzZXNzaW9ucywgZXRjIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIk1haW50YWluIGEgcmVnaXN0cnkgb2YgTUlCIHN1YnRyZWVzLCB0b2dldGhlciB3aXRoIHJlbGF0ZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIG1pYm1vZHVsZSwgc2Vzc2lvbnMsIGV0YyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNDAsOSArNDAsNiBAQAogCiAuaW4gKzFjCiAudGkgLTFjCi0uUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQmludmFsaWRhdGVfbG9va3VwX2NhY2hlXGZQIChjb25zdCBjaGFyICpjb250ZXh0KSIKLS5icgotLnRpIC0xYwogLlJJICJ2b2lkIFxmQm5ldHNubXBfc2V0X2xvb2t1cF9jYWNoZV9zaXplXGZQIChpbnQgbmV3c2l6ZSkiCiAuYnIKIC5SSSAiXGZJc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4gXGZQIgpAQCAtNTEsNiArNDgsMjEgQEAKIC5icgogLlJJICJcZklyZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxvb2t1cCBjYWNoZSBzaXplIFxmUCIKIC50aSAtMWMKKy5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIFxmQmxvb2t1cF9jYWNoZV9jb250ZXh0XGZQICogXGZCZ2V0X2NvbnRleHRfbG9va3VwX2NhY2hlXGZQIChjb25zdCBjaGFyICpjb250ZXh0KSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJsb29rdXBfY2FjaGVfYWRkXGZQIChjb25zdCBjaGFyICpjb250ZXh0LCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKm5leHQsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqcHJldmlvdXMpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQmxvb2t1cF9jYWNoZV9yZXBsYWNlXGZQIChcZkJsb29rdXBfY2FjaGVcZlAgKnB0ciwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpuZXh0LCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKnByZXZpb3VzKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgXGZCbG9va3VwX2NhY2hlXGZQICogXGZCbG9va3VwX2NhY2hlX2ZpbmRcZlAgKGNvbnN0IGNoYXIgKmNvbnRleHQsIG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuLCBpbnQgKnJldGNtcCkiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQgXGZCaW52YWxpZGF0ZV9sb29rdXBfY2FjaGVcZlAgKGNvbnN0IGNoYXIgKmNvbnRleHQpIgorLmJyCisudGkgLTFjCiAuUkkgInZvaWQgXGZCbmV0c25tcF9zdWJ0cmVlX2ZyZWVcZlAgKFxmQm5ldHNubXBfc3VidHJlZVxmUCAqYSkiCiAuYnIKIC50aSAtMWMKQEAgLTE0MCwxOCArMTUyLDYgQEAKIC5icgogLlJJICJcZkljaGVja3MgdG8gc2VlIGlmIGV2ZXJ5dGhpbmcgd2l0aGluIGEgZ2l2ZW4gc3VidHJlZSBpcyBlaXRoZXI6IGluIHZpZXcsIG5vdCBpbiB2aWV3LCBvciBwb3NzaWJseSBib3RoLiBcZlAiCiAudGkgLTFjCi0uUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSBcZkJsb29rdXBfY2FjaGVfY29udGV4dFxmUCAqIFxmQmdldF9jb250ZXh0X2xvb2t1cF9jYWNoZVxmUCAoY29uc3QgY2hhciAqY29udGV4dCkiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQgXGZCbG9va3VwX2NhY2hlX2FkZFxmUCAoY29uc3QgY2hhciAqY29udGV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpuZXh0LCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKnByZXZpb3VzKSIKLS5icgotLnRpIC0xYwotLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJsb29rdXBfY2FjaGVfcmVwbGFjZVxmUCAoXGZCbG9va3VwX2NhY2hlXGZQICpwdHIsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqbmV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpwcmV2aW91cykiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIFxmQmxvb2t1cF9jYWNoZVxmUCAqIFxmQmxvb2t1cF9jYWNoZV9maW5kXGZQIChjb25zdCBjaGFyICpjb250ZXh0LCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbiwgaW50ICpyZXRjbXApIgotLmJyCi0udGkgLTFjCiAuUkkgIlxmQm5ldHNubXBfc3VidHJlZVxmUCAqIFxmQm5ldHNubXBfc3VidHJlZV9maW5kX3ByZXZcZlAgKG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpzdWJ0cmVlLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpIgogLmJyCiAudGkgLTFjCkBAIC0yMDEsMTAgKzIwMSwxMCBAQAogCiAuaW4gKzFjCiAudGkgLTFjCi0uUkkgIlxmQnN1YnRyZWVfY29udGV4dF9jYWNoZVxmUCAqIFxmQmNvbnRleHRfc3VidHJlZXNcZlAgPSBOVUxMIgorLlJJICJpbnQgXGZCbG9va3VwX2NhY2hlX3NpemVcZlAgPSAwIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJsb29rdXBfY2FjaGVfc2l6ZVxmUCA9IDAiCisuUkkgIlxmQnN1YnRyZWVfY29udGV4dF9jYWNoZVxmUCAqIFxmQmNvbnRleHRfc3VidHJlZXNcZlAgPSBOVUxMIgogLmJyCiAudGkgLTFjCiAuUkkgImludCBcZkJleHRlcm5hbF9zaWduYWxfc2NoZWR1bGVkXGZQIFtOVU1fRVhURVJOQUxfU0lHU10iCkBAIC0yMjYsNyArMjI2LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzIzIG9mIGZpbGUgYWdlbnRfcmVnaXN0cnkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDc1IG9mIGZpbGUgYWdlbnRfcmVnaXN0cnkuYy4KIC5TUyAiaW50IG5ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplICh2b2lkKSIKIC5QUAogcmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBcZkJSZXR1cm5zOlxmUApAQCAtMjM2LDcgKzIzNiw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM5NiBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTE4IG9mIGZpbGUgYWdlbnRfcmVnaXN0cnkuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3NldF9sb29rdXBfY2FjaGVfc2l6ZSAoaW50IG5ld3NpemUpIgogLlBQCiBzZXQgdGhlIGxvb2t1cCBjYWNoZSBzaXplIGZvciBvcHRpbWl6ZWQgYWdlbnQgcmVnaXN0cmF0aW9uIHBlcmZvcm1hbmNlLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMjQ2LDcgKzI0Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM4MyBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA1IG9mIGZpbGUgYWdlbnRfcmVnaXN0cnkuYy4KIC5TUyAiaW50IHVucmVnaXN0ZXJfbWliX2NvbnRleHQgKG9pZCAqIG5hbWUsIHNpemVfdCBsZW4sIGludCBwcmlvcml0eSwgaW50IHJhbmdlX3N1YmlkLCBvaWQgcmFuZ2VfdWJvdW5kLCBjb25zdCBjaGFyICogY29udGV4dCkiCiAuUFAKIFVucmVnaXN0ZXJzIGFuIE9JRCB0aGF0IGhhcyBhbiBhc3NvY2lhdGVkIGNvbnRleHQgbmFtZSB2YWx1ZS4gVHlwaWNhbGx5IHVzZWQgd2hlbiBhIFxmQm1vZHVsZVxmUCBoYXMgbXVsdGlwbGUgY29udGV4dHMgZGVmaW5lZC4gVGhlIHBhcmFtZXRlcnMgcHJpb3JpdHksIHJhbmdlX3N1YmlkLCBhbmQgcmFuZ2VfdWJvdW5kIHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYWdlbnR4LCBzZWUgUkZDIDI3NDEsIG90aGVyd2lzZSB0aGVzZSB2YWx1ZXMgc2hvdWxkIGFsd2F5cyBiZSAwLgpAQCAtMjcyLDcgKzI3Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTY5IG9mIGZpbGUgYWdlbnRfcmVnaXN0cnkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTIxIG9mIGZpbGUgYWdlbnRfcmVnaXN0cnkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudF90cmFwLjMgYi9tYW4vbmV0c25tcF9hZ2VudF90cmFwLjMKaW5kZXggNWI1MTcxZC4uZDM2MjYxNyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zCisrKyBiL21hbi9uZXRzbm1wX2FnZW50X3RyYXAuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiVHJhcCBnZW5lcmF0aW9uIHJvdXRpbmVzIGZvciBtaWIgbW9kdWxlcyB0byB1c2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiVHJhcCBnZW5lcmF0aW9uIHJvdXRpbmVzIGZvciBtaWIgbW9kdWxlcyB0byB1c2UiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTc0LDYgKzc0LDkgQEAKIC5SSSAidm9pZCBcZkJzZW5kX3RyYXBfdmFyc1xmUCAoaW50IHRyYXAsIGludCBzcGVjaWZpYywgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXJzKSIKIC5icgogLnRpIC0xYworLlJJICJ2b2lkIFxmQnNlbmRfdHJhcF92YXJzX3dpdGhfY29udGV4dFxmUCAoaW50IHRyYXAsIGludCBzcGVjaWZpYywgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXJzLCBjaGFyICpjb250ZXh0KSIKKy5icgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNlbmRfZWFzeV90cmFwXGZQIChpbnQgdHJhcCwgaW50IHNwZWNpZmljKSIKIC5icgogLlJJICJcZklTZW5kcyBhbiBTTk1QdjEgdHJhcCAob3IgdGhlIFNOTVB2MiBlcXVpdmFsZW50KSB0byB0aGUgbGlzdCBvZiBjb25maWd1cmVkIHRyYXAgZGVzdGluYXRpb25zIChvciAnc2lua3MnKSwgdXNpbmcgdGhlIHByb3ZpZGVkIHZhbHVlcyBmb3IgdGhlIGdlbmVyaWMgdHJhcCB0eXBlIGFuZCBzcGVjaWZpYyB0cmFwIHZhbHVlLiBcZlAiCkBAIC04Miw2ICs4NSwxMCBAQAogLmJyCiAuUkkgIlxmSVVzZXMgdGhlIHN1cHBsaWVkIGxpc3Qgb2YgXGZCdmFyaWFibGVcZlAgYmluZGluZ3MgdG8gZm9ybSBhbiBTTk1QdjIgdHJhcCwgd2hpY2ggaXMgc2VudCB0byBTTk1QdjItY2FwYWJsZSBzaW5rcyBvbiB0aGUgY29uZmlndXJlZCBsaXN0LiBcZlAiCiAudGkgLTFjCisuUkkgInZvaWQgXGZCc2VuZF92M3RyYXBcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY2hhciAqY29udGV4dCkiCisuYnIKKy5SSSAiXGZJU2ltaWxhciB0byBcZkJzZW5kX3YydHJhcCgpXGZQLCB3aXRoIHRoZSBhZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgYSBjb250ZXh0LiBcZlAiCisudGkgLTFjCiAuUkkgInZvaWQgXGZCc2VuZF90cmFwX3BkdVxmUCAoXGZCbmV0c25tcF9wZHVcZlAgKnBkdSkiCiAuYnIKIC50aSAtMWMKQEAgLTE4Miw3ICsxODksNyBAQAogLlJJICJjaGFyICogXGZCc25tcF90cmFwY29tbXVuaXR5XGZQID0gTlVMTCIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCc25tcF9lbmFibGVhdXRoZW50cmFwc1xmUCA9IFNOTVBfQVVUSEVOVElDQVRFRF9UUkFQU19ESVNBQkxFRCIKKy5SSSAibG9uZyBcZkJzbm1wX2VuYWJsZWF1dGhlbnRyYXBzXGZQID0gU05NUF9BVVRIRU5USUNBVEVEX1RSQVBTX0RJU0FCTEVEIgogLmJyCiAudGkgLTFjCiAuUkkgImludCBcZkJzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0XGZQID0gMCIKQEAgLTE5NCw3ICsyMDEsNyBAQAogLlBQCiBDYXB0dXJlcyByZXNwb25zZXMgb3IgdGhlIGxhY2sgdGhlcmUgb2YgZnJvbSBJTkZPUk1zIHRoYXQgd2VyZSBzZW50IDEpIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSBhbiBJTkZPUk0gMikgb25lIGlzbid0IHJlY2VpdmVkIGFuZCB0aGUgcmV0cmllcy90aW1lb3V0cyBoYXZlIGZhaWxlZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NTAgb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODc1IG9mIGZpbGUgYWdlbnRfdHJhcC5jLgogLlNTICJpbnQgbmV0c25tcF9zZW5kX3RyYXBzIChpbnQgdHJhcCwgaW50IHNwZWNpZmljLCBvaWQgKiBlbnRlcnByaXNlLCBpbnQgZW50ZXJwcmlzZV9sZW5ndGgsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcnMsIGNoYXIgKiBjb250ZXh0LCBpbnQgZmxhZ3MpIgogLlBQCiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gbWFrZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gZ2VuZXJpYyB0cmFwcyBmcm9tIGRpZmZlcmVudCBjbGFzc2VzIG9mIGVxdWlwbWVudC4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0byBoYW5kbGUgYSBTTk1QX1RSQVBfTElOS0RPV04gdHJhcCBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZSBpbiBhIGRpZmZlcmVudCBtYW5uZXIgdG8gYSBnZW5lcmljIHN5c3RlbSBTTk1QX1RSQVBfTElOS0RPV04gdHJhcC4KQEAgLTI0NSw3ICsyNTIsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDYyOSBvZiBmaWxlIGFnZW50X3RyYXAuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2MzIgb2YgZmlsZSBhZ2VudF90cmFwLmMuCiAuU1MgInZvaWQgc2VuZF9lYXN5X3RyYXAgKGludCB0cmFwLCBpbnQgc3BlY2lmaWMpIgogLlBQCiBTZW5kcyBhbiBTTk1QdjEgdHJhcCAob3IgdGhlIFNOTVB2MiBlcXVpdmFsZW50KSB0byB0aGUgbGlzdCBvZiBjb25maWd1cmVkIHRyYXAgZGVzdGluYXRpb25zIChvciAnc2lua3MnKSwgdXNpbmcgdGhlIHByb3ZpZGVkIHZhbHVlcyBmb3IgdGhlIGdlbmVyaWMgdHJhcCB0eXBlIGFuZCBzcGVjaWZpYyB0cmFwIHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGV2ZW50dWFsbHkgY2FsbHMgc2VuZF9lbnRlcnByaXNlX3RyYXBfdmFycy4gSWYgdGhlIHRyYXAgdHlwZSBpcyBub3Qgc2V0IHRvIFNOTVBfVFJBUF9FTlRFUlBSSVNFU1BFQ0lGSUMgdGhlIGVudGVycHJpc2UgYW5kIGVudGVycHJpc2VfbGVuZ3RoIHBhcmFtYXRlciBpcyBzZXQgdG8gdGhlIHByZSBkZWZpbmVkIE5FVFNOTVBfU1lTVEVNX01JQiBvaWQgYW5kIGxlbmd0aCByZXNwZWN0aXZlbHkuIElmIHRoZSB0cmFwIHR5cGUgaXMgc2V0IHRvIFNOTVBfVFJBUF9FTlRFUlBSSVNFU1BFQ0lGSUMgdGhlIGVudGVycHJpc2UgYW5kIGVudGVycHJpc2VfbGVuZ3RoIHBhcmFtZXRlcnMgYXJlIHNldCB0byB0aGUgcHJlLWRlZmluZWQgTkVUU05NUF9OT1RJRklDQVRJT05fTUlCIG9pZCBhbmQgbGVuZ3RoIHJlc3BlY3RpdmVseS4KQEAgLTI3MSw3ICsyNzgsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk3OCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMDE4IG9mIGZpbGUgYWdlbnRfdHJhcC5jLgogLlNTICJ2b2lkIHNlbmRfdjJ0cmFwIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJzKSIKIC5QUAogVXNlcyB0aGUgc3VwcGxpZWQgbGlzdCBvZiBcZkJ2YXJpYWJsZVxmUCBiaW5kaW5ncyB0byBmb3JtIGFuIFNOTVB2MiB0cmFwLCB3aGljaCBpcyBzZW50IHRvIFNOTVB2Mi1jYXBhYmxlIHNpbmtzIG9uIHRoZSBjb25maWd1cmVkIGxpc3QuIEFuIGVxdWl2YWxlbnQgSU5GT1JNIGlzIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgbGlzdCBvZiBpbmZvcm0gc2lua3MuIFNpbmtzIHRoYXQgY2FuIG9ubHkgaGFuZGxlIFNOTVB2MSB0cmFwcyBhcmUgc2tpcHBlZC4KQEAgLTMwMSw3ICszMDgsMzEgQEAKIC5pbiArMWMKIFxmQm5vdGlmaWNhdGlvbi5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTAwNyBvZiBmaWxlIGFnZW50X3RyYXAuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMDQ3IG9mIGZpbGUgYWdlbnRfdHJhcC5jLgorLlNTICJ2b2lkIHNlbmRfdjN0cmFwIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJzLCBjaGFyICogY29udGV4dCkiCisuUFAKK1NpbWlsYXIgdG8gXGZCc2VuZF92MnRyYXAoKVxmUCwgd2l0aCB0aGUgYWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IGEgY29udGV4dC4gSWYgdGhlIGxhc3QgcGFyYW1ldGVyIGlzIE5VTEwsIHRoZW4gdGhpcyBjYWxsIGlzIGVxdWl2YWxlbnQgdG8gXGZCc2VuZF92MnRyYXAoKVxmUC4KKy5QUAorXGZCUGFyYW1ldGVyczpcZlAKKy5SUyA0CitcZkl2YXJzXGZQIGlzIHVzZWQgdG8gc3VwcGx5IHRoZSBsaXN0IG9mIFxmQnZhcmlhYmxlXGZQIGJpbmRpbmdzIGZvciB0aGUgdHJhcC4KKy5icgorXGZJY29udGV4dFxmUCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbnRleHQgb2YgdGhlIHRyYXAuCisuUkUKKy5QUAorXGZCUmV0dXJuczpcZlAKKy5SUyA0Cit2b2lkCisuUkUKKy5QUAorXGZCU2VlIGFsc286XGZQCisuUlMgNAorXGZCc2VuZF92MnRyYXBcZlAgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMDY0IG9mIGZpbGUgYWdlbnRfdHJhcC5jLgogLlNIICJWYXJpYWJsZSBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJvaWQgc25tcHRyYXBlbnRlcnByaXNlX29pZFtdIlxmQkluaXRpYWwgdmFsdWU6XGZQCkBAIC0zMTEsNyArMzQyLDcgQEAKICAgICB7IFNOTVBWMl9UUkFQX09CSlNfUFJFRklYLCAzLCAwIH0KIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTkgb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTAwIG9mIGZpbGUgYWdlbnRfdHJhcC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMgYi9tYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zCmluZGV4IGE1MmQ1YjAuLmViODY2ZDUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMKKysrIGIvbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiYXNuMSBwYXJzaW5nIGFuZCBkYXRhdHlwZSBtYW5pcHVsYXRpb24gcm91dGluZXMuIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImFzbjEgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYmFieV9zdGVwcy4zIGIvbWFuL25ldHNubXBfYmFieV9zdGVwcy4zCmluZGV4IGZhODc0YmIuLjFlZTRlNjAgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMworKysgYi9tYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggImJhYnlfc3RlcHMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiYmFieV9zdGVwcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMgYi9tYW4vbmV0c25tcF9idWxrX3RvX25leHQuMwppbmRleCA5ZDI4MjIwLi42MmI0N2ZkIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9idWxrX3RvX25leHQuMworKysgYi9tYW4vbmV0c25tcF9idWxrX3RvX25leHQuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiYnVsa190b19uZXh0IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImJ1bGtfdG9fbmV4dCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzYsMTcgKzM2LDE3IEBACiAuUFAKIHRha2VzIGFuc3dlcmVkIHJlcXVlc3RzIGFuZCBkZWNyZW1lbnRzIHRoZSByZXBlYXQgY291bnQgYW5kIHVwZGF0ZXMgdGhlIHJlcXVlc3RzIHRvIHRoZSBuZXh0IHRvLWRvIHZhcmJpbmQgaW4gdGhlIGxpc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MiBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2IG9mIGZpbGUgYnVsa190b19uZXh0LmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X2J1bGtfdG9fbmV4dF9oYW5kbGVyICh2b2lkKSIKIC5QUAogcmV0dXJucyBhIGJ1bGtfdG9fbmV4dCBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3IG9mIGZpbGUgYnVsa190b19uZXh0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjEgb2YgZmlsZSBidWxrX3RvX25leHQuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2luaXRfYnVsa190b19uZXh0X2hlbHBlciAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBidWxrX3RvX25leHQgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgYnVsa190b19uZXh0IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM5IG9mIGZpbGUgYnVsa190b19uZXh0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMzIG9mIGZpbGUgYnVsa190b19uZXh0LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zIGIvbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zCmluZGV4IGI1M2JiODEuLmUwYTlhZDAgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMworKysgYi9tYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggImNhY2hlX2hhbmRsZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiY2FjaGVfaGFuZGxlciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTQsMTQgKzE0LDE4IEBACiAuYnIKIC5SSSAiXGZJZ2V0IGNhY2hlIGhlYWQgXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX2NhY2hlXGZQICogXGZCbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZFxmUCAob2lkICpyb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorLlJJICJcZkJuZXRzbm1wX2NhY2hlXGZQICogXGZCbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZFxmUCAoY29uc3Qgb2lkICpyb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgogLmJyCiAuUkkgIlxmSWZpbmQgZXhpc3RpbmcgY2FjaGUgXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX2NhY2hlXGZQICogXGZCbmV0c25tcF9jYWNoZV9jcmVhdGVcZlAgKGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICpsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKmZyZWVfaG9vaywgb2lkICpyb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorLlJJICJcZkJuZXRzbm1wX2NhY2hlXGZQICogXGZCbmV0c25tcF9jYWNoZV9jcmVhdGVcZlAgKGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICpsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKmZyZWVfaG9vaywgY29uc3Qgb2lkICpyb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgogLmJyCiAuUkkgIlxmSXJldHVybnMgYSBjYWNoZSBcZlAiCiAudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX2NhY2hlX2ZyZWVcZlAgKFxmQm5ldHNubXBfY2FjaGVcZlAgKmNhY2hlKSIKKy5icgorLlJJICJcZklmcmVlcyBhIGNhY2hlIFxmUCIKKy50aSAtMWMKIC5SSSAidW5zaWduZWQgaW50IFxmQm5ldHNubXBfY2FjaGVfdGltZXJfc3RhcnRcZlAgKFxmQm5ldHNubXBfY2FjaGVcZlAgKmNhY2hlKSIKIC5icgogLlJJICJcZklzdGFydHMgdGhlIHJlY3VycmluZyBjYWNoZV9sb2FkIGNhbGxiYWNrIFxmUCIKQEAgLTM0LDcgKzM4LDcgQEAKIC5icgogLlJJICJcZklyZXR1cm5zIGEgY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlclxmUCAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKmxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqZnJlZV9ob29rLCBvaWQgKnJvb3RvaWQsIGludCByb290b2lkX2xlbikiCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyXGZQIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICpmcmVlX2hvb2ssIGNvbnN0IG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5icgogLlJJICJcZklyZXR1cm5zIGEgY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gXGZQIgogLnRpIC0xYwpAQCAtOTUsNyArOTksNyBAQAogLlBQCiBUbyBtaW5pbXplIHJlc291cmNlIHVzZSBieSB0aGUgYWdlbnQsIGEgcGVyaW9kaWMgY2FsbGJhY2sgY2hlY2tzIGZvciBleHBpcmVkIGNhY2hlcywgYW5kIHdpbGwgY2FsbCB0aGUgZnJlZV9jYWNoZSBmdW5jdGlvbiBmb3IgYW55IGV4cGlyZWQgY2FjaGUuCiAuUFAKLVRoZSBsb2FkX2NhY2hlIHJvdXRlIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIgaWYgdGhlIGNhY2hlIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4gMCBvciBhbnkgcG9zaXRpdmUgbnVtYmVyIGluZGljYXRlcyBzdWNjZXNzcy4KK1RoZSBsb2FkX2NhY2hlIHJvdXRpbmUgc2hvdWxkIHJldHVybiBhIG5lZ2F0aXZlIG51bWJlciBpZiB0aGUgY2FjaGUgd2FzIG5vdCBzdWNjZXNzZnVsbHkgbG9hZGVkLiAwIG9yIGFueSBwb3NpdGl2ZSBudW1iZXIgaW5kaWNhdGVzIHN1Y2Nlc3NzLgogLlBQCiBTZXZlcmFsIGZsYWdzIGNhbiBiZSBzZXQgdG8gYWZmZWN0IHRoZSBvcGVyYXRpb25zIG9uIHRoZSBjYWNoZS4KIC5QUApAQCAtMTI2LDM3ICsxMzAsNDIgQEAKIC5QUAogUmVsb2FkIHRoZSBjYWNoZSBpZiByZXF1aXJlZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzODUgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDI5IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJpbnQgbmV0c25tcF9jYWNoZV9jaGVja19leHBpcmVkIChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiBDaGVjayBpZiB0aGUgY2FjaGUgdGltZW91dCBoYXMgcGFzc2VkLiBTZXRzIGFuZCByZXR1cm4gdGhlIGV4cGlyZWQgZmxhZy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCi0uU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfY3JlYXRlIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaywgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSA0MTQgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCisuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfY3JlYXRlIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaywgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5QUAogcmV0dXJucyBhIGNhY2hlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM2IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgotLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2ZpbmRfYnlfb2lkIChvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0NiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KKy5TUyAiXGZCbmV0c25tcF9jYWNoZVxmUCogbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZCAoY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5QUAogZmluZCBleGlzdGluZyBjYWNoZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyMCBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCisuU1MgImludCBuZXRzbm1wX2NhY2hlX2ZyZWUgKFxmQm5ldHNubXBfY2FjaGVcZlAgKiBjYWNoZSkiCisuUFAKK2ZyZWVzIGEgY2FjaGUgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxODkgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfZ2V0X2hlYWQgKHZvaWQpIgogLlBQCiBnZXQgY2FjaGUgaGVhZCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExMiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjIgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQgKFxmQm5ldHNubXBfY2FjaGVcZlAgKiBjYWNoZSkiCiAuUFAKIHJldHVybnMgYSBjYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0NyBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyOTEgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfcmVnaXN0ZXIgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgY2FsbGluZyBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKVxmUCBidXQgYWxzbyBpbmplY3RzIGEgY2FjaGUgaGFuZGxlciBhdCB0aGUgc2FtZSB0aW1lIGZvciB5b3UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjk1IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzOSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAiaW50IG5ldHNubXBfY2FjaGVfaGVscGVyX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSIKIC5QUAogSW1wbGVtZW50cyB0aGUgY2FjaGUgaGFuZGxlci4gCkBAIC0xNjcsNTkgKzE3Niw1OSBAQAogLlBQCiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQyMCBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NjQgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogSXMgdGhlIGNhY2hlIHZhbGlkIGZvciBhIGdpdmVuIHJlcXVlc3Q/IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDAyIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ0NiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAiXGZCbmV0c25tcF9jYWNoZVxmUCogbmV0c25tcF9jYWNoZV9yZXFpbmZvX2V4dHJhY3QgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgY29uc3QgY2hhciAqIG5hbWUpIgogLlBQCiBFeHRyYWN0IHRoZSBjYWNoZSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiByZXF1ZXN0IChQRFUpLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1MCBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzOTQgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgInZvaWQgbmV0c25tcF9jYWNoZV9yZXFpbmZvX2luc2VydCAoXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogSW5zZXJ0IHRoZSBjYWNoZSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiByZXF1ZXN0IChQRFUpLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMzMyBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNzcgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgInVuc2lnbmVkIGludCBuZXRzbm1wX2NhY2hlX3RpbWVyX3N0YXJ0IChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiBzdGFydHMgdGhlIHJlY3VycmluZyBjYWNoZV9sb2FkIGNhbGxiYWNrIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTkxIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzNSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2NhY2hlX3RpbWVyX3N0b3AgKFxmQm5ldHNubXBfY2FjaGVcZlAgKiBjYWNoZSkiCiAuUFAKIHN0b3BzIHRoZSByZWN1cnJpbmcgY2FjaGVfbG9hZCBjYWxsYmFjayAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyNiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNzAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfZXh0cmFjdF9jYWNoZV9pbmZvIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8pIgogLlBQCiBFeHRyYWN0IHRoZSBjYWNoZSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiByZXF1ZXN0IChQRFUpLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM2MiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KLS5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlciAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCitEZWZpbml0aW9uIGF0IGxpbmUgNDA2IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaywgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5QUAogcmV0dXJucyBhIGNhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc2IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMyMCBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAiaW50IG5ldHNubXBfaXNfY2FjaGVfdmFsaWQgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbykiCiAuUFAKIElzIHRoZSBjYWNoZSB2YWxpZCBmb3IgYSBnaXZlbiByZXF1ZXN0PyBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkuIGZvciBiYWNrd2FyZHMgY29tcGF0CiAuUFAKIFxmQm5ldHNubXBfY2FjaGVfaXNfdmFsaWQoKVxmUCBpcyBwcmVmZXJyZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDEzIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ1NyBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfY2FjaGVfaGFuZGxlciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICogbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICogZnJlZV9ob29rKSIKIC5QUAogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgYnV0IGFsc28gaW5qZWN0cyBhIGNhY2hlIGhhbmRsZXIgYXQgdGhlIHNhbWUgdGltZSBmb3IgeW91LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMwOCBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNTIgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgInZvaWQgcmVsZWFzZV9jYWNoZWRfcmVzb3VyY2VzICh1bnNpZ25lZCBpbnQgcmVnTm8sIHZvaWQgKiBjbGllbnRhcmdzKSIKIC5QUAogcnVuIHJlZ3VsYXJseSB0byBhdXRvbWF0aWNhbGx5IHJlbGVhc2UgY2FjaGVkIHJlc291cmNlcy4geHh4IC0gbWV0aG9kIHRvIHByZXZlbnQgY2FjaGUgZnJvbSBleHBpcmluZyB3aGlsZSBhIHJlcXVlc3QgaXMgYmVpbmcgcHJvY2Vzc2VkIChlLmcuIGRlbGVnYXRlZCByZXF1ZXN0KS4gcHJvcG9zYWw6IHNldCBhIGZsYWcsIHdoaWNoIHdvdWxkIGJlIGNsZWFyZWQgd2hlbiByZXF1ZXN0IGZpbmlzaGVkICh3aGljaCBjb3VsZCBiZSBhY29tcGxpc2hlZCBieSBhIGR1bW15IGRhdGEgbGlzdCBpdGVtIGluIGFnZW50IHJlcSBpbmZvICYgY3VzdG9tIGZyZWUgZnVuY3Rpb24pLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU4MSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2MjMgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfY2FsbGJhY2suMyBiL21hbi9uZXRzbm1wX2NhbGxiYWNrLjMKaW5kZXggY2ZlZWM4OS4uZTY5MWFiOCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfY2FsbGJhY2suMworKysgYi9tYW4vbmV0c25tcF9jYWxsYmFjay4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJBIGdlbmVyaWMgY2FsbGJhY2sgbWVjaGFuaXNtIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIkEgZ2VuZXJpYyBjYWxsYmFjayBtZWNoYW5pc20iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zIGIvbWFuL25ldHNubXBfY29udGFpbmVyLjMKaW5kZXggYjJmNDE0ZC4uZjc1YmU0YyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfY29udGFpbmVyLjMKKysrIGIvbWFuL25ldHNubXBfY29udGFpbmVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggImNvbnRhaW5lciIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJjb250YWluZXIiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zIGIvbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJmY2Y3ZQotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zCkBAIC0wLDAgKzEsNDMgQEAKKy5USCAiQ29udGFpbmVyX2l0ZXJhdG9yIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCitDb250YWluZXJfaXRlcmF0b3IgXC0gCisuU1MgIlR5cGVkZWZzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfS2V5XGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqa2V5KSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9Mb29wX0RhdGFcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmxvb3BfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpkYXRhKSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9DdHhcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmxvb3BfY3R4KSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9DdHhfRHVwXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqZHVwX2N0eCwgaW50IHJldXNlKSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9PcFxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfRGF0YVxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgY29uc3Qgdm9pZCAqZGF0YSkiCisuYnIKKy5pbiAtMWMKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3JfaW5pdFxmUCAodm9pZCkiCisuYnIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9jb250YWluZXJcZlAgKiBcZkJuZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvcl9nZXRcZlAgKHZvaWQgKml0ZXJhdG9yX3VzZXJfY3R4LCBuZXRzbm1wX2NvbnRhaW5lcl9jb21wYXJlICpjb21wYXJlLCBOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfS2V5ICpnZXRfZmlyc3QsIE5ldHNubXBfSXRlcmF0b3JfTG9vcF9LZXkgKmdldF9uZXh0LCBOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfRGF0YSAqZ2V0X2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfQ3R4X0R1cCAqc2F2ZV9wb3MsIE5ldHNubXBfSXRlcmF0b3JfQ3R4ICppbml0X2xvb3BfY3R4LCBOZXRzbm1wX0l0ZXJhdG9yX0N0eCAqY2xlYW51cF9sb29wX2N0eCwgTmV0c25tcF9JdGVyYXRvcl9EYXRhICpmcmVlX3VzZXJfY3R4LCBpbnQgc29ydGVkKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yX3NldF9kYXRhX2NiXGZQIChcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqYywgTmV0c25tcF9JdGVyYXRvcl9EYXRhICppbnNlcnRfZGF0YSwgTmV0c25tcF9JdGVyYXRvcl9EYXRhICpyZW1vdmVfZGF0YSwgTmV0c25tcF9JdGVyYXRvcl9PcCAqZ2V0X3NpemUpIgorLmJyCisuaW4gLTFjCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZlYzU4NQotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMKQEAgLTAsMCArMSw1NCBAQAorLlRIICJjb250YWluZXJfaXRlcmF0b3IuaCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQorY29udGFpbmVyX2l0ZXJhdG9yLmggXC0gCisuU0ggU1lOT1BTSVMKKy5icgorLlBQCitcZkMjaW5jbHVkZSAnY29udGFpbmVyLmgnXGZQCisuYnIKKworLlNTICJUeXBlZGVmcyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleVxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmtleSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfTG9vcF9EYXRhXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqZGF0YSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfQ3R4XGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfQ3R4X0R1cFxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmR1cF9jdHgsIGludCByZXVzZSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfT3BcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0RhdGFcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIGNvbnN0IHZvaWQgKmRhdGEpIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yX2luaXRcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfY29udGFpbmVyXGZQICogXGZCbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3JfZ2V0XGZQICh2b2lkICppdGVyYXRvcl91c2VyX2N0eCwgbmV0c25tcF9jb250YWluZXJfY29tcGFyZSAqY29tcGFyZSwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleSAqZ2V0X2ZpcnN0LCBOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfS2V5ICpnZXRfbmV4dCwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0RhdGEgKmdldF9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX0N0eF9EdXAgKnNhdmVfcG9zLCBOZXRzbm1wX0l0ZXJhdG9yX0N0eCAqaW5pdF9sb29wX2N0eCwgTmV0c25tcF9JdGVyYXRvcl9DdHggKmNsZWFudXBfbG9vcF9jdHgsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqZnJlZV91c2VyX2N0eCwgaW50IHNvcnRlZCkiCisuYnIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvcl9zZXRfZGF0YV9jYlxmUCAoXGZCbmV0c25tcF9jb250YWluZXJcZlAgKmMsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqaW5zZXJ0X2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqcmVtb3ZlX2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfT3AgKmdldF9zaXplKSIKKy5icgorLmluIC0xYworLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKKy5QUCAKKworLlBQCitEZWZpbml0aW9uIGluIGZpbGUgXGZCY29udGFpbmVyX2l0ZXJhdG9yLmhcZlAuCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfZGF0YV9saXN0LjMgYi9tYW4vbmV0c25tcF9kYXRhX2xpc3QuMwppbmRleCAwZWNjYWZlLi5jY2ExMDhhIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9kYXRhX2xpc3QuMworKysgYi9tYW4vbmV0c25tcF9kYXRhX2xpc3QuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZ2VuZXJpYyBsaW5rZWQtbGlzdCBkYXRhIGhhbmRsaW5nIHdpdGggYSBzdHJpbmcgYXMgYSBrZXkuIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImdlbmVyaWMgbGlua2VkLWxpc3QgZGF0YSBoYW5kbGluZyB3aXRoIGEgc3RyaW5nIGFzIGEga2V5LiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTksMTEgKzE5LDExIEBACiAuYnIKIC5SSSAiXGZJYWRkcyBjcmVhdGVzIGEgZGF0YV9saXN0IFxmQm5vZGVcZlAgZ2l2ZW4gYSBuYW1lLCBkYXRhIGFuZCBhIGZyZWUgZnVuY3Rpb24gcHRyLiBcZlAiCiAudGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9hZGRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqKmhlYWQsIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICpcZkJub2RlXGZQKSIKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2RhdGFfbGlzdF9hZGRfbm9kZVxmUCAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKipoZWFkLCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCiAuYnIKIC5SSSAiXGZJYWRkcyBkYXRhIHRvIGEgZGF0YWxpc3QgXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlXGZQIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqKmhlYWQsIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICpcZkJub2RlXGZQKSIKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2FkZF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqaGVhZCwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgogLmJyCiAuUkkgIlxmSWFkZHMgZGF0YSB0byBhIGRhdGFsaXN0IFxmUCIKIC50aSAtMWMKQEAgLTc5LDcgKzc5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyMSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCogbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0IChjb25zdCBjaGFyICogbmFtZSwgdm9pZCAqIGRhdGEsIE5ldHNubXBfRnJlZV9MaXN0X0RhdGEgKiBiZWVyKSIKIC5QUAogYWRkcyBjcmVhdGVzIGEgZGF0YV9saXN0IFxmQm5vZGVcZlAgZ2l2ZW4gYSBuYW1lLCBkYXRhIGFuZCBhIGZyZWUgZnVuY3Rpb24gcHRyLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMTAyLDcgKzEwMiw3IEBACiAuaW4gKzFjCiBcZkJkZWxheWVkX2luc3RhbmNlLmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2MCBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDUzIG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQKiBuZXRzbm1wX2RhdGFfbGlzdF9hZGRfZGF0YSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiogaGVhZCwgY29uc3QgY2hhciAqIG5hbWUsIHZvaWQgKiBkYXRhLCBOZXRzbm1wX0ZyZWVfTGlzdF9EYXRhICogYmVlcikiCiAuUFAKIGFkZHMgZGF0YSB0byBhIGRhdGFsaXN0IFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0xMjMsNyArMTIzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDEgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzQgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX2RhdGFfbGlzdF9hZGRfbm9kZSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiogaGVhZCwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiBub2RlKSIKIC5QUAogYWRkcyBkYXRhIHRvIGEgZGF0YWxpc3QgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTEzNSw3ICsxMzUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk3IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzggb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiBoZWFkKSIKIC5QUAogZnJlZXMgYWxsIGRhdGEgYW5kIG5vZGVzIGluIGEgbGlzdC4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTE0NSw3ICsxNDUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQyIG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzUgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX2ZyZWVfbGlzdF9kYXRhIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqIG5vZGUpIgogLlBQCiBmcmVlcyB0aGUgZGF0YSBhbmQgYSBuYW1lIGF0IGEgZ2l2ZW4gZGF0YV9saXN0IFxmQm5vZGVcZlAuIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgZnJlZSB0aGUgXGZCbm9kZVxmUCBpdHNlbGYuIApAQCAtMTU3LDcgKzE1Nyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjYgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkKiBuZXRzbm1wX2dldF9saXN0X2RhdGEgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogaGVhZCwgY29uc3QgY2hhciAqIG5hbWUpIgogLlBQCiByZXR1cm5zIGEgZGF0YV9saXN0IG5vZGUncyBkYXRhIGZvciBhIGdpdmVuIG5hbWUgd2l0aGluIGEgZGF0YV9saXN0IFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0xNzQsNyArMTc0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjYgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTkgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAqIG5ldHNubXBfZ2V0X2xpc3Rfbm9kZSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiBoZWFkLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIHJldHVybnMgYSBkYXRhX2xpc3QgXGZCbm9kZVxmUCBmb3IgYSBnaXZlbiBuYW1lIHdpdGhpbiBhIGRhdGFfbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMTkxLDcgKzE5MSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg0IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTc3IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgInZvaWQgbmV0c25tcF9yZWFkX2RhdGFfY2FsbGJhY2sgKGNvbnN0IGNoYXIgKiB0b2tlbiwgY2hhciAqIGxpbmUpIgogLlBQCiBpbnRlbmRlZCB0byBiZSByZWdpc3RlcmQgYXMgYSAuY29uZiBwYXJzZXIgSXQgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdXNpbmc6IHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigndG9rZW4nLCBuZXRzbm1wX3JlYWRfZGF0YV9jYWxsYmFjaywgWFhYKQpAQCAtMjA1LDcgKzIwNSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzM3IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzM1IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgInZvaWQgbmV0c25tcF9yZWdpc3Rlcl9zYXZlX2xpc3QgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIGRhdGFsaXN0LCBjb25zdCBjaGFyICogdHlwZSwgY29uc3QgY2hhciAqIHRva2VuLCBOZXRzbm1wX1NhdmVfTGlzdF9EYXRhICogZGF0YV9saXN0X3NhdmVfcHRyLCBOZXRzbm1wX1JlYWRfTGlzdF9EYXRhICogZGF0YV9saXN0X3JlYWRfcHRyLCBOZXRzbm1wX0ZyZWVfTGlzdF9EYXRhICogZGF0YV9saXN0X2ZyZWVfcHRyKSIKIC5QUAogcmVnaXN0ZXJzIHRvIHN0b3JlIGEgZGF0YV9saXN0IHNldCBvZiBkYXRhIGF0IHBlcnNpc3RlbnQgc3RvcmFnZSB0aW1lIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0yMzIsNyArMjMyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzUgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMjggb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiogcmVhbGhlYWQsIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogUmVtb3ZlcyBhIG5hbWVkIFxmQm5vZGVcZlAgZnJvbSBhIGRhdGFfbGlzdCAoYW5kIGZyZWVzIGl0KS4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTI0OSwxMiArMjQ5LDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjAyIG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTk1IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgImludCBuZXRzbm1wX3NhdmVfYWxsX2RhdGEgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogaGVhZCwgY29uc3QgY2hhciAqIHR5cGUsIGNvbnN0IGNoYXIgKiB0b2tlbiwgTmV0c25tcF9TYXZlX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9zYXZlX3B0cikiCiAuUFAKIGludGVuZGVkIHRvIGJlIGNhbGxlZCBhcyBhIGNhbGxiYWNrIGR1cmluZyBwZXJzaXN0ZW50IHNhdmUgb3BlcmF0aW9ucy4gU2VlIHRoZSBuZXRzbm1wX3NhdmVfYWxsX2RhdGFfY2FsbGJhY2sgZm9yIHdoZXJlIHRoaXMgaXMgdHlwaWNhbGx5IHVzZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzAxIG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjk5IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgImludCBuZXRzbm1wX3NhdmVfYWxsX2RhdGFfY2FsbGJhY2sgKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkICogc2VydmVyYXJnLCB2b2lkICogY2xpZW50YXJnKSIKIC5QUAogaW50ZW5kZWQgdG8gYmUgcmVnaXN0ZXJkIGFzIGEgY2FsbGJhY2sgb3BlcmF0aW9uLiBJdCBzaG91bGQgYmUgcmVnaXN0ZXJlZCB1c2luZzoKQEAgLTI2Myw3ICsyNjMsNyBAQAogLlBQCiB3aGVyZSBJTkZPX1BPSU5URVIgaXMgYSBwb2ludGVyIHRvIGEgbmV0c25tcF9kYXRhX2xpc3Rfc2F2ZWluZm8gb2JqZWN0IGNvbnRhaW5pbmcgYXBwb3JwcmlhdGUgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjg0IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjgyIG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfZGVidWcuMyBiL21hbi9uZXRzbm1wX2RlYnVnLjMKaW5kZXggNjNhOGI4OS4uNDVkNzEwMiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfZGVidWcuMworKysgYi9tYW4vbmV0c25tcF9kZWJ1Zy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJkZWJ1ZyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJkZWJ1ZyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMjQsMzMgKzI0LDYgQEAKIC5icgogLlJJICJcZklpbml0aWFsaXplcyB0aGUgZGVidWcgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgZGVidWcgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gXGZQIgogLmluIC0xYwotLlNTICJoYW5kbGVyIgotIAotLmluICsxYwotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF9zZXJpYWxpemVcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWluaXRpYWxpemVzIHRoZSBzZXJpYWxpemUgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgc2VyaWFsaXplIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIFxmUCIKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfcmVhZF9vbmx5X2hlbHBlclxmUCAodm9pZCkiCi0uYnIKLS5SSSAiXGZJaW5pdGlhbGl6ZXMgdGhlIHJlYWRfb25seSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSByZWFkX29ubHkgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gXGZQIgotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF9idWxrX3RvX25leHRfaGVscGVyXGZQICh2b2lkKSIKLS5icgotLlJJICJcZklpbml0aWFsaXplcyB0aGUgYnVsa190b19uZXh0IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIGJ1bGtfdG9fbmV4dCBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiBcZlAiCi0udGkgLTFjCi0uUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X3RhYmxlX2RhdGFzZXRcZlAgKHZvaWQpIgotLmJyCi0udGkgLTFjCi0uUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X3N0YXNoX2NhY2hlX2hlbHBlclxmUCAodm9pZCkiCi0uYnIKLS5SSSAiXGZJaW5pdGlhbGl6ZXMgdGhlIHN0YXNoX2NhY2hlIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHN0YXNoX2NhY2hlIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIFxmUCIKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfaGVscGVyc1xmUCAodm9pZCkiCi0uYnIKLS5SSSAiXGZJY2FsbCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIGFsbCBoYW5kbGVycyB3aXRoIGluaXRfIHJvdXRpbmVzLiBcZlAiCi0uaW4gLTFjCiAuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgogLlBQIAogUHJpbnQgb3V0IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFuZGxlciBjaGFpbiBiZWluZyBjYWxsZWQuIApAQCAtNzAsMzcgKzQzLDEyIEBACiAuUFAKIHJldHVybnMgYSBkZWJ1ZyBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUxIG9mIGZpbGUgZGVidWdfaGFuZGxlci5jLgotLlNTICJ2b2lkIG5ldHNubXBfaW5pdF9idWxrX3RvX25leHRfaGVscGVyICh2b2lkKSIKLS5QUAotaW5pdGlhbGl6ZXMgdGhlIGJ1bGtfdG9fbmV4dCBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBidWxrX3RvX25leHQgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzkgb2YgZmlsZSBidWxrX3RvX25leHQuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NCBvZiBmaWxlIGRlYnVnX2hhbmRsZXIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2luaXRfZGVidWdfaGVscGVyICh2b2lkKSIKIC5QUAogaW5pdGlhbGl6ZXMgdGhlIGRlYnVnIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIGRlYnVnIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU1IG9mIGZpbGUgZGVidWdfaGFuZGxlci5jLgotLlNTICJ2b2lkIG5ldHNubXBfaW5pdF9oZWxwZXJzICh2b2lkKSIKLS5QUAotY2FsbCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIGFsbCBoYW5kbGVycyB3aXRoIGluaXRfIHJvdXRpbmVzLiAKLS5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM2IG9mIGZpbGUgYWxsX2hlbHBlcnMuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfcmVhZF9vbmx5X2hlbHBlciAodm9pZCkiCi0uUFAKLWluaXRpYWxpemVzIHRoZSByZWFkX29ubHkgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgcmVhZF9vbmx5IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODEgb2YgZmlsZSByZWFkX29ubHkuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfc2VyaWFsaXplICh2b2lkKSIKLS5QUAotaW5pdGlhbGl6ZXMgdGhlIHNlcmlhbGl6ZSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBzZXJpYWxpemUgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSA5MyBvZiBmaWxlIHNlcmlhbGl6ZS5jLgotLlNTICJ2b2lkIG5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXIgKHZvaWQpIgotLlBQCi1pbml0aWFsaXplcyB0aGUgc3Rhc2hfY2FjaGUgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgc3Rhc2hfY2FjaGUgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzggb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0OCBvZiBmaWxlIGRlYnVnX2hhbmRsZXIuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMgYi9tYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMKaW5kZXggNGEzMjg3Yi4uMDdjZGI1MyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zCisrKyBiL21hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic3RvcmFnZSBzcGFjZSBmb3IgZGVmYXVsdHMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic3RvcmFnZSBzcGFjZSBmb3IgZGVmYXVsdHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTY0LDcgKzY0LDcgQEAKIC5SSSAiaW50IFxmQm5ldHNubXBfZHNfcmVnaXN0ZXJfcHJlbWliXGZQICh1X2NoYXIgdHlwZSwgY29uc3QgY2hhciAqZnR5cGUsIGNvbnN0IGNoYXIgKnRva2VuLCBpbnQgc3RvcmVpZCwgaW50IHdoaWNoKSIKIC5icgogLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfZHNfc2h1dGRvd25cZlAgKCkiCisuUkkgInZvaWQgXGZCbmV0c25tcF9kc19zaHV0ZG93blxmUCAodm9pZCkiCiAuYnIKIC5pbiAtMWMKIC5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9oYW5kbGVyLjMgYi9tYW4vbmV0c25tcF9oYW5kbGVyLjMKaW5kZXggMTFjYTNhMC4uM2YzMzc3OCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfaGFuZGxlci4zCisrKyBiL21hbi9uZXRzbm1wX2hhbmRsZXIuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiTmV0LVNOTVAgQWdlbnQgaGFuZGxlciBhbmQgZXh0ZW5zaWJpbGl0eSBBUEkiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiTmV0LVNOTVAgQWdlbnQgaGFuZGxlciBhbmQgZXh0ZW5zaWJpbGl0eSBBUEkiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE1NCwxMSArMTU0LDExIEBACiAuYnIKIC5SSSAiXGZJY3JlYXRlcyBhIG5ldHNubXBfbWliX2hhbmRsZXIgc3RydWN0dXJlIGdpdmVuIGEgbmFtZSBhbmQgYSBhY2Nlc3MgbWV0aG9kLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCisuUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCiAuYnIKIC5SSSAiXGZJY3JlYXRlcyBhIGhhbmRsZXIgcmVnaXN0cmF0aW9uIHN0cnVjdHVyZSBnaXZlbiBhIG5hbWUsIGEgYWNjZXNzX21ldGhvZCBmdW5jdGlvbiwgYSByZWdpc3RyYXRpb24gbG9jYXRpb24gb2lkIGFuZCB0aGUgbW9kZXMgdGhlIGhhbmRsZXIgc3VwcG9ydHMuIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIFxmQm5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQIChjb25zdCBjaGFyICpuYW1lLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50IG1vZGVzKSIKKy5SSSAiXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIFxmQm5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQIChjb25zdCBjaGFyICpuYW1lLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50IG1vZGVzKSIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKQEAgLTM4Miw3ICszODIsNyBAQAogLlNTICJ2b2lkIG5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cywgaW50IGlzZGVsZWdhdGVkKSIKIC5QUAogbWFya3MgYSBsaXN0IG9mIHJlcXVlc3RzIGFzIGRlbGVnYXRlZCAob3Igbm90IGlmIGlzZGVsZWdhZGVkID0gMCkgCi0uU1MgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSAoY29uc3QgY2hhciAqIG5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCisuU1MgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSAoY29uc3QgY2hhciAqIG5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCiAuUFAKIGNyZWF0ZXMgYSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBzdHJ1Y3R1cmUgZ2l2ZW4gYSBuYW1lLCBhIGFjY2Vzc19tZXRob2QgZnVuY3Rpb24sIGEgcmVnaXN0cmF0aW9uIGxvY2F0aW9uIG9pZCBhbmQgdGhlIG1vZGVzIHRoZSBoYW5kbGVyIHN1cHBvcnRzLiBJZiBtb2RlcyA9PSAwLCB0aGVuIG1vZGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUgb2Ygb25seSBIQU5ETEVSX0NBTl9ERUZBVUxULCB3aGljaCBpcyBieSBkZWZhdWx0IHJlYWQtb25seSBHRVQgYW5kIEdFVE5FWFQgcmVxdWVzdHMuIEEgaGFuZGVyIHdoaWNoIHN1cHBvcnRzIHNldHMgYnV0IG5vdCByb3cgY3JlYXRpb24gc2hvdWxkIHNldCB1cyBhIG1vZGUgb2YgSEFORExFUl9DQU5fU0VUX09OTFkuIAogLlBQCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9pbnN0YW5jZS4zIGIvbWFuL25ldHNubXBfaW5zdGFuY2UuMwppbmRleCBmMzg3NzI1Li44ZWQ4MWRkIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9pbnN0YW5jZS4zCisrKyBiL21hbi9uZXRzbm1wX2luc3RhbmNlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggImluc3RhbmNlIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImluc3RhbmNlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0yMiw2MSArMjIsNjEgQEAKIC5icgogLlJJICJcZklUaGlzIGZ1bmN0aW9uIGluamVjdHMgYSAncmVhZCBvbmx5JyBoYW5kbGVyIGludG8gdGhlIGhhbmRsZXIgY2hhaW4gcHJpb3IgdG8gc2VyaWFsaXppbmcvcmVnaXN0ZXJpbmcgdGhlIGhhbmRsZXIuIFxmUCIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91aW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdW5zaWduZWQgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91aW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdW5zaWduZWQgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91aW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdW5zaWduZWQgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJyZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJyZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGNoYXIgKmZpbGVfbmFtZSwgaW50IGFzbl90eXBlLCBpbnQgbW9kZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBjb25zdCBjaGFyICpmaWxlX25hbWUsIGludCBhc25fdHlwZSwgaW50IG1vZGUsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC5SSSAiXGZJVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgYW4gaW50IGhlbHBlciBoYW5kbGVyIHRvIGEgc3BlY2lmaWVkIE9JRC4gXGZQIgogLnRpIC0xYwpAQCAtMTE1LDEyICsxMTUsNTIgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0OCBvZiBmaWxlIGluc3RhbmNlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDkgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV9jb3VudGVyMzJfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIlxmQkRlcHJlY2F0ZWRcZlAKKy5SUyA0CitUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDU3MiBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiXGZCRGVwcmVjYXRlZFxmUAorLlJTIDQKK1RoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42IAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNjg5IG9mIGZpbGUgaW5zdGFuY2UuYy4KKy5TUyAiaW50IG5ldHNubXBfaW5zdGFuY2VfbG9uZ19oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiXGZCRGVwcmVjYXRlZFxmUAorLlJTIDQKK1RoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42IAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNjExIG9mIGZpbGUgaW5zdGFuY2UuYy4KIC5TUyAiaW50IG5ldHNubXBfaW5zdGFuY2VfbnVtX2ZpbGVfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIgogLlBQCiBmYWxsIHRocm91Z2ggCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NDIgb2YgZmlsZSBpbnN0YW5jZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc3MSBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX3VpbnRfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIlxmQkRlcHJlY2F0ZWRcZlAKKy5SUyA0CitUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDkwNSBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSJcZkJEZXByZWNhdGVkXGZQCisuUlMgNAorVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA0OTIgb2YgZmlsZSBpbnN0YW5jZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8pIgogLlBQCiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhbiBpbnN0YW5jZSBoZWxwZXIgaGFuZGxlciwgd2hpY2ggaXMgYSB3YXkgb2YgcmVnaXN0ZXJpbmcgYW4gZXhhY3QgT0lEIHN1Y2ggdGhhdCBHRU5FWFQgcmVxdWVzdHMgYXJlIGhhbmRsZWQgZW50aXJlbHkgYnkgdGhlIGhlbHBlci4gRmlyc3QgbmVlZCB0byBpbmplY3QgaXQgaW50byB0aGUgY2FsbGluZyBjaGFpbiBvZiB0aGUgaGFuZGxlciBkZWZpbmVkIGJ5IHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHN0cnVjdCwgcmVnaW5mby4gVGhlIG5ldyBoYW5kbGVyIGlzIGluamVjdGVkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QgYW5kIHdpbGwgYmUgdGhlIG5ldyBoYW5kbGVyIHRvIGJlIGNhbGxlZCBmaXJzdC4gVGhpcyBmdW5jdGlvbiBhbHNvIGluamVjdHMgYSBzZXJpYWxpemUgaGFuZGxlciBiZWZvcmUgYWN0dWFsbHkgY2FsbGluZyBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZSwgcmVnaXN0ZXJpbmcgcmVnaW5mby4KQEAgLTE0MSw4ICsxODEsOCBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzMgb2YgZmlsZSBpbnN0YW5jZS5jLgotLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2UgKGNvbnN0IGNoYXIgKiBuYW1lLCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqIGl0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpIgorRGVmaW5pdGlvbiBhdCBsaW5lIDc0IG9mIGZpbGUgaW5zdGFuY2UuYy4KKy5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlIChjb25zdCBjaGFyICogbmFtZSwgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKiBpdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKSIKIC5QUAogVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgYW4gaW50IGhlbHBlciBoYW5kbGVyIHRvIGEgc3BlY2lmaWVkIE9JRC4gXGZCUGFyYW1ldGVyczpcZlAKIC5SUyA0CkBAIC0xNjQsNyArMjA0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NjEgb2YgZmlsZSBpbnN0YW5jZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ3NSBvZiBmaWxlIGluc3RhbmNlLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8pIgogLlBQCiBUaGlzIGZ1bmN0aW9uIGluamVjdHMgYSAncmVhZCBvbmx5JyBoYW5kbGVyIGludG8gdGhlIGhhbmRsZXIgY2hhaW4gcHJpb3IgdG8gc2VyaWFsaXppbmcvcmVnaXN0ZXJpbmcgdGhlIGhhbmRsZXIuIFRoZSBvbmx5IHB1cnBvc2Ugb2YgdGhpcyAncmVhZCBvbmx5JyBoYW5kbGVyIGlzIHRvIHJldHVybiBhbiBhcHByb3ByaWF0ZSBlcnJvciBmb3IgYW55IHJlcXVlc3RzIHBhc3NlZCB0byBpdCBpbiBhIFNFVCBtb2RlLiBJbnNlcnRpbmcgaXQgaW50byB5b3VyIGhhbmRsZXIgY2hhaW4gd2lsbCBlbnN1cmUgeW91J3JlIG5ldmVyIGFza2VkIHRvIHBlcmZvcm0gYSBTRVQgcmVxdWVzdCBzbyB5b3UgY2FuIGlnbm9yZSB0aG9zZSBlcnJvciBjb25kaXRpb25zLgpAQCAtMTgxLDcgKzIyMSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTAwIG9mIGZpbGUgaW5zdGFuY2UuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMDEgb2YgZmlsZSBpbnN0YW5jZS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zIGIvbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMKaW5kZXggMDMwYmNjMC4uODI5NjYwZSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMKKysrIGIvbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIml0ZXJhdG9yX2luZm9fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJpdGVyYXRvcl9pbmZvX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2xlYWYuMyBiL21hbi9uZXRzbm1wX2xlYWYuMwppbmRleCBiOGI2OWEwLi4xOWYyODg4IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9sZWFmLjMKKysrIGIvbWFuL25ldHNubXBfbGVhZi4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJsZWFmX2hhbmRsZXJzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImxlYWZfaGFuZGxlcnMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2xpYnJhcnkuMyBiL21hbi9uZXRzbm1wX2xpYnJhcnkuMwppbmRleCA4MDk2ZDM4Li40MWNjNmZjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9saWJyYXJ5LjMKKysrIGIvbWFuL25ldHNubXBfbGlicmFyeS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJUaGUgTmV0LVNOTVAgbGlicmFyeSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJUaGUgTmV0LVNOTVAgbGlicmFyeSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTkwLDYgKzE5MCw3IEBACiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc25tcF9zZXNzX2luaXRcZlAgKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqc2Vzc2lvbikiCiAuYnIKKy5SSSAiXGZJTGlicmFyeSBBUEkgcm91dGluZXMgY29uY2VybmVkIHdpdGggc3BlY2lmeWluZyBhbmQgdXNpbmcgU05NUCAnc2Vzc2lvbnMnIGluY2x1ZGluZyBzZW5kaW5nIGFuZCByZWNlaXZpbmcgcmVxdWVzdHMuIFxmUCIKIC50aSAtMWMKIC5SSSAidm9pZCBcZkJpbml0X3NubXBcZlAgKGNvbnN0IGNoYXIgKnR5cGUpIgogLmJyCkBAIC0yMDgsNiArMjA5LDEwIEBACiAuUkkgIlxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIFxmQnNubXBfb3Blbl9leFxmUCAoXGZCbmV0c25tcF9zZXNzaW9uXGZQICpzZXNzaW9uLCBpbnQoKmZwcmVfcGFyc2UpKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqLCBcZkJuZXRzbm1wX3RyYW5zcG9ydFxmUCAqLCB2b2lkICosIGludCksIGludCgqZnBhcnNlKShcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiwgXGZCbmV0c25tcF9wZHVcZlAgKiwgdV9jaGFyICosIHNpemVfdCksIGludCgqZnBvc3RfcGFyc2UpKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqLCBcZkJuZXRzbm1wX3BkdVxmUCAqLCBpbnQpLCBpbnQoKmZidWlsZCkoXGZCbmV0c25tcF9zZXNzaW9uXGZQICosIFxmQm5ldHNubXBfcGR1XGZQICosIHVfY2hhciAqLCBzaXplX3QgKiksIGludCgqZnJidWlsZCkoXGZCbmV0c25tcF9zZXNzaW9uXGZQICosIFxmQm5ldHNubXBfcGR1XGZQICosIHVfY2hhciAqKiwgc2l6ZV90ICosIHNpemVfdCAqKSwgaW50KCpmY2hlY2spKHVfY2hhciAqLCBzaXplX3QpKSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzXGZQICh2b2lkICpzbHAsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqc2Vzc2lvbikiCisuYnIKKy5SSSAiXGZJcHJvYmUgZm9yIGVuZ2luZUlEIHVzaW5nIFJGQyA1MzQzIHByb2JpbmcgbWVjaGFuaXNtcyBcZlAiCisudGkgLTFjCiAuUkkgImludCBcZkJzbm1wdjNfZW5naW5lSURfcHJvYmVcZlAgKHN0cnVjdCBcZkJzZXNzaW9uX2xpc3RcZlAgKnNscCwgXGZCbmV0c25tcF9zZXNzaW9uXGZQICppbl9zZXNzaW9uKSIKIC5icgogLlJJICJcZklwcm9iZSBmb3IgcGVlciBlbmdpbmVJRCBcZlAiCkBAIC0yODQsNiArMjg5LDkgQEAKIC5SSSAiaW50IFxmQnNubXBfc2Vzc19hc3luY19zZW5kXGZQICh2b2lkICpzZXNzcCwgXGZCbmV0c25tcF9wZHVcZlAgKnBkdSwgc25tcF9jYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2JfZGF0YSkiCiAuYnIKIC50aSAtMWMKKy5SSSAidm9pZCBcZkJzbm1wX2ZyZWVfdmFyX2ludGVybmFsc1xmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXIpIgorLmJyCisudGkgLTFjCiAuUkkgInZvaWQgXGZCc25tcF9mcmVlX3ZhclxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXIpIgogLmJyCiAudGkgLTFjCkBAIC0yOTksMTggKzMwNywzMCBAQAogLlJJICJ2b2lkIFxmQnNubXBfcmVhZFxmUCAoZmRfc2V0ICpmZHNldCkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQl9zZXNzX3JlYWRcZlAgKHZvaWQgKnNlc3NwLCBmZF9zZXQgKmZkc2V0KSIKKy5SSSAidm9pZCBcZkJzbm1wX3JlYWQyXGZQIChcZkJuZXRzbm1wX2xhcmdlX2ZkX3NldFxmUCAqZmRzZXQpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJfc2Vzc19yZWFkXGZQICh2b2lkICpzZXNzcCwgXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0KSIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcF9zZXNzX3JlYWRcZlAgKHZvaWQgKnNlc3NwLCBmZF9zZXQgKmZkc2V0KSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9zZXNzX3JlYWQyXGZQICh2b2lkICpzZXNzcCwgXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0KSIKKy5icgorLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcF9zZWxlY3RfaW5mb1xmUCAoaW50ICpudW1mZHMsIGZkX3NldCAqZmRzZXQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBpbnQgKmJsb2NrKSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9zZWxlY3RfaW5mbzJcZlAgKGludCAqbnVtZmRzLCBcZkJuZXRzbm1wX2xhcmdlX2ZkX3NldFxmUCAqZmRzZXQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBpbnQgKmJsb2NrKSIKKy5icgorLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcF9zZXNzX3NlbGVjdF9pbmZvXGZQICh2b2lkICpzZXNzcCwgaW50ICpudW1mZHMsIGZkX3NldCAqZmRzZXQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBpbnQgKmJsb2NrKSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9zZXNzX3NlbGVjdF9pbmZvMlxmUCAodm9pZCAqc2Vzc3AsIGludCAqbnVtZmRzLCBcZkJuZXRzbm1wX2xhcmdlX2ZkX3NldFxmUCAqZmRzZXQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBpbnQgKmJsb2NrKSIKKy5icgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNubXBfdGltZW91dFxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKQEAgLTM0NywxMCArMzY3LDExIEBACiAuYnIKIC5SSSAiXGZJR2l2ZW4gdHdvIE9JRHMsIGRldGVybWluZSB0aGUgY29tbW9uIHByZWZpeCB0byB0aGVtIGJvdGguIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF9wZHVfYWRkX3ZhcmlhYmxlXGZQIChcZkJuZXRzbm1wX3BkdVxmUCAqcGR1LCBjb25zdCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwgdV9jaGFyIHR5cGUsIGNvbnN0IHVfY2hhciAqdmFsdWUsIHNpemVfdCBsZW4pIgorLlJJICJcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBcZkJzbm1wX3BkdV9hZGRfdmFyaWFibGVcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBsZW4pIgogLmJyCisuUkkgIlxmSUxpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIFxmQnZhcmlhYmxlXGZQIGJpbmRpbmdzIGFuZCB2YWx1ZXMuIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZVxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICoqdmFybGlzdCwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsIHVfY2hhciB0eXBlLCBjb25zdCB1X2NoYXIgKnZhbHVlLCBzaXplX3QgbGVuKSIKKy5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZVxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICoqdmFybGlzdCwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsIHVfY2hhciB0eXBlLCBjb25zdCB2b2lkICp2YWx1ZSwgc2l6ZV90IGxlbikiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfYWRkX3ZhclxmUCAoXGZCbmV0c25tcF9wZHVcZlAgKnBkdSwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsIGNoYXIgdHlwZSwgY29uc3QgY2hhciAqdmFsdWUpIgpAQCAtNDM2LDE2ICs0NTcsMTYgQEAKICAgICAgICAgKHR2cCktPnR2X3VzZWMgY21wICh1dnApLT50dl91c2VjKSkKIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQ4IG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDkgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgogLlBQIAotLlNTICJpbnQgX3Nlc3NfcmVhZCAodm9pZCAqIHNlc3NwLCBmZF9zZXQgKiBmZHNldCkiCisuU1MgImludCBfc2Vzc19yZWFkICh2b2lkICogc2Vzc3AsIFxmQm5ldHNubXBfbGFyZ2VfZmRfc2V0XGZQICogZmRzZXQpIgogLlBQCiBYWFgtcmtzOiB3aHkgbm8gU05NUF9GUkVFKGlzcC0+cGFja2V0KTsgPz8KIC5QUAogWFhYLXJrczogd2h5IG5vIFNOTVBfRlJFRShpc3AtPnBhY2tldCk7ID8/IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTQ0OCBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTcxNSBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBpbml0X2FnZW50IChjb25zdCBjaGFyICogYXBwKSIKIC5QUAogSW5pdGlhbGl6ZSB0aGUgYWdlbnQuIENhbGxzIGludG8gaW5pdF9hZ2VudF9yZWFkX2NvbmZpZyB0byBzZXQgdGhhIGFwcCdzIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgYXBwcm9wcmlhdGUgZGVmYXVsdCBzdG9yYWdlIHNwYWNlLCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFLiBOZWVkIHRvIGNhbGwgaW5pdF9hZ2VudCBiZWZvcmUgY2FsbGluZyBpbml0X3NubXAuCkBAIC00NjcsNyArNDg4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzAgb2YgZmlsZSBzbm1wX3ZhcnMuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNzcgb2YgZmlsZSBzbm1wX3ZhcnMuYy4KIC5TUyAidm9pZCBpbml0X3NubXAgKGNvbnN0IGNoYXIgKiB0eXBlKSIKIC5QUAogQ2FsbHMgdGhlIGZ1bmN0aW9ucyB0byBkbyBjb25maWcgZmlsZSBsb2FkaW5nIGFuZCBtaWIgXGZCbW9kdWxlXGZQIHBhcnNpbmcgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00ODcsNyArNTA4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3ODcgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc5NiBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBuZXRzbm1wX29pZF9jb21wYXJlX2xsIChjb25zdCBvaWQgKiBpbl9uYW1lMSwgc2l6ZV90IGxlbjEsIGNvbnN0IG9pZCAqIGluX25hbWUyLCBzaXplX3QgbGVuMiwgc2l6ZV90ICogb2ZmcHQpIgogLlBQCiBsZXhpY29ncmFwaGljYWwgY29tcGFyZSB0d28gb2JqZWN0IGlkZW50aWZpZXJzIGFuZCByZXR1cm4gdGhlIHBvaW50IHdoZXJlIHRoZXkgZGlmZmVyIENhdXRpb246IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvZnRlbiBieSBjb21tYW5kIHJlc3BvbmRlciBhcHBsaWNhdGlvbnMgKGllLCBhZ2VudCkuCkBAIC00OTksNyArNTIwLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2Mzg2IG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2NzE2IG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkX2VxdWFscyAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIpIgogLlBQCiBDb21wYXJlcyAyIE9JRHMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGV4YWN0bHkgZXF1YWwuIFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGRvaW5nIGEgc25tcF9vaWRfY29tcGFyZSBmb3IgZGlmZmVyZW50IGxlbmd0aCBPSURzLCBzaW5jZSB0aGUgbGVuZ3RoIGlzIGNoZWNrZWQgZmlyc3QgYW5kIGlmICE9IHJldHVybnMgaW1tZWRpYXRlbHkuIE1pZ2h0IGJlIHZlcnkgc2xpZ2hseSBmYXN0ZXIgaWYgbGVuZ3RocyBhcmUgPT0uIApAQCAtNTIyLDcgKzU0Myw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjQ2NyBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjc5NyBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBuZXRzbm1wX29pZF9maW5kX3ByZWZpeCAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIpIgogLlBQCiBHaXZlbiB0d28gT0lEcywgZGV0ZXJtaW5lIHRoZSBjb21tb24gcHJlZml4IHRvIHRoZW0gYm90aC4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTU0Myw3ICs1NjQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY1MzEgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY4NjEgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vaWRfaXNfc3VidHJlZSAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIpIgogLlBQCiBJZGVudGljYWwgdG8gbmV0c25tcF9vaWRfZXF1YWxzLCBleGNlcHQgb25seSB0aGUgbGVuZ3RoIHVwIHRvIGxlbjEgaXMgY29tcGFyZWQuIEZ1bmN0aW9uYWxseSwgdGhpcyBkZXRlcm1pbmVzIGlmIGluX25hbWUyIGlzIGVxdWFsIG9yIGEgc3VidHJlZSBvZiBpbl9uYW1lMSAKQEAgLTU2Niw3ICs1ODcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY1MTAgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY4NDAgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgc25tcF9vaWRfY29tcGFyZSAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIpIgogLlBQCiBsZXhpY29ncmFwaGljYWwgY29tcGFyZSB0d28gb2JqZWN0IGlkZW50aWZpZXJzLiBDYXV0aW9uOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb2Z0ZW4gYnkgY29tbWFuZCByZXNwb25kZXIgYXBwbGljYXRpb25zIChpZSwgYWdlbnQpLgpAQCAtNTc4LDcgKzU5OSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjMzNyBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjY2NyBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBzbm1wX29pZHRyZWVfY29tcGFyZSAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIpIgogLlBQCiBDb21wYXJlcyAyIE9JRHMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWFsIHVwIHVudGlsIHRoZSBzaG9ydGVzdCBsZW5ndGguIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC01OTksNyArNjIwLDE3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjQzOSBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjc2OSBvZiBmaWxlIHNubXBfYXBpLmMuCisuU1MgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCogc25tcF9wZHVfYWRkX3ZhcmlhYmxlIChcZkJuZXRzbm1wX3BkdVxmUCAqIHBkdSwgY29uc3Qgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgbGVuKSIKKy5QUAorTGlicmFyeSBBUEkgcm91dGluZXMgY29uY2VybmVkIHdpdGggXGZCdmFyaWFibGVcZlAgYmluZGluZ3MgYW5kIHZhbHVlcy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA2OTMyIG9mIGZpbGUgc25tcF9hcGkuYy4KKy5TUyAidm9pZCBzbm1wX3Nlc3NfaW5pdCAoXGZCbmV0c25tcF9zZXNzaW9uXGZQICogc2Vzc2lvbikiCisuUFAKK0xpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIHNwZWNpZnlpbmcgYW5kIHVzaW5nIFNOTVAgJ3Nlc3Npb25zJyBpbmNsdWRpbmcgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHJlcXVlc3RzLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDcxOCBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgIlxmQm5ldHNubXBfc2Vzc2lvblxmUCogc25tcF9zZXNzX3Nlc3Npb25fbG9va3VwICh2b2lkICogc2Vzc3ApIgogLlBQCiBMb29rIHVwIGEgc2Vzc2lvbiB0aGF0IGFscmVhZHkgbWF5IGhhdmUgYmVlbiBjbG9zZWQuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MTksNyArNjUwLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3MTk3IG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3NTI1IG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAidm9pZCBzbm1wX3NodXRkb3duIChjb25zdCBjaGFyICogdHlwZSkiCiAuUFAKIFNodXRzIGRvd24gdGhlIGFwcGxpY2F0aW9uLCBzYXZpbmcgYW55IG5lZWRlZCBwZXJzaXN0ZW50IHN0b3JhZ2UsIGFuZCBhcHByb3ByaWF0ZSBjbGVhbiB1cC4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTYzNCw3ICs2NjUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg1MyBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODYyIG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAiaW50IHNubXB2M19lbmdpbmVJRF9wcm9iZSAoc3RydWN0IFxmQnNlc3Npb25fbGlzdFxmUCAqIHNscCwgXGZCbmV0c25tcF9zZXNzaW9uXGZQICogaW5fc2Vzc2lvbikiCiAuUFAKIHByb2JlIGZvciBwZWVyIGVuZ2luZUlEIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02NjQsNyArNjk1LDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI3OCBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTM3NyBvZiBmaWxlIHNubXBfYXBpLmMuCisuU1MgImludCBzbm1wdjNfcHJvYmVfY29udGV4dEVuZ2luZUlEX3JmYzUzNDMgKHZvaWQgKiBzbHAsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIHNlc3Npb24pIgorLlBQCitwcm9iZSBmb3IgZW5naW5lSUQgdXNpbmcgUkZDIDUzNDMgcHJvYmluZyBtZWNoYW5pc21zIERlc2lnbmVkIHRvIGJlIGEgY2FsbGJhY2sgZm9yIHdpdGhpbiBhIHNlY3VyaXR5IG1vZGVsJ3MgcHJvYmVfZW5naW5laWQgaG9vay4gU2luY2UgaXQncyBsaWtlbHkgbXVsdGlwbGUgc2VjdXJpdHkgbW9kZWxzIHdvbid0IGhhdmUgZW5naW5lSURzIHRvIHByb2JlIGZvciB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBsaWtlbHkgdG8gYmUgdXNlZCBieSBtdWx0aXBsZSBmdXR1cmUgc2VjdXJpdHkgbW9kZWxzLiBFLkcuIGJvdGggU1NIIGFuZCBEVExTLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEyNzkgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zIGIvbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMKaW5kZXggNjViMzkxNi4uZjQwODgwNiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMKKysrIGIvbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm1pYl9tYWludGVuYW5jZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJtaWJfbWFpbnRlbmFuY2UiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMyBiL21hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMwppbmRleCAwNzcyN2JkLi41NDJkMzgxIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMKKysrIGIvbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJtaWIgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLiIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJtaWIgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTUxLDYgKzE1MSwxOCBAQAogLlJJICJ2b2lkIFxmQmluaXRfbWliXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCX21pYmluZGV4X2FkZFxmUCAoY29uc3QgY2hhciAqZGlybmFtZSwgaW50IGkpIgorLmJyCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9taWJpbmRleF9sb2FkXGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJjaGFyICogXGZCbmV0c25tcF9taWJpbmRleF9sb29rdXBcZlAgKGNvbnN0IGNoYXIgKmRpcm5hbWUpIgorLmJyCisudGkgLTFjCisuUkkgIkZJTEUgKiBcZkJuZXRzbm1wX21pYmluZGV4X25ld1xmUCAoY29uc3QgY2hhciAqZGlybmFtZSkiCisuYnIKKy50aSAtMWMKIC5SSSAidm9pZCBcZkJzaHV0ZG93bl9taWJcZlAgKHZvaWQpIgogLmJyCiAuUkkgIlxmSVVubG9hZHMgYWxsIG1pYnMuIFxmUCIKQEAgLTM4Niw2ICszOTgsOSBAQAogLnRpIC0xYwogLlJJICJcZkJQcmVmaXhMaXN0XGZQIFxmQm1pYl9wcmVmaXhlc1xmUCBbXSIKIC5icgorLnRpIC0xYworLlJJICJjaGFyICoqIFxmQl9taWJpbmRleGVzXGZQID0gTlVMTCIKKy5icgogLmluIC0xYwogLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgogLlBQIApAQCAtNDE3LDEyICs0MzIsMTIgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzQgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyOTIgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IGJ1aWxkX29pZCAob2lkICoqIG91dCwgc2l6ZV90ICogb3V0X2xlbiwgb2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4X2xlbiwgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogaW5kZXhlcykiCiAuUFAKIHh4eC1ya3M6IHNob3VsZCBmcmVlIHByZXZpb3VzIHZhbHVlPyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1ODIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNzMxIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBidWlsZF9vaWRfc2VnbWVudCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyKSIKIC5QUAogVGFrZXMgdGhlIHZhbHVlIGluIFZBUiBhbmQgdHVybnMgaXQgaW50byBhbiBPSUQgc2VnbWVudCBpbiB2YXItPm5hbWUuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00MzcsNyArNDUyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNDQ4IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzU5NyBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIGZwcmludF9kZXNjcmlwdGlvbiAoRklMRSAqIGYsIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCkiCiAuUFAKIFByaW50cyBvbiBvaWQgZGVzY3JpcHRpb24gaW50byBhIGZpbGUgZGVzY3JpcHRvci4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTQ1Myw3ICs0NjgsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ0NTIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NjAxIG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgZnByaW50X29iamlkIChGSUxFICogZiwgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbikiCiAuUFAKIFByaW50cyBhbiBvaWQgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00NjcsNyArNDgyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMTY3IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzMyMCBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIGZwcmludF92YXJpYWJsZSAoRklMRSAqIGYsIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcmlhYmxlKSIKIC5QUAogUHJpbnRzIGEgXGZCdmFyaWFibGVcZlAgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00ODMsNyArNDk4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMzIxIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzQ3NCBvZiBmaWxlIG1pYi5jLgogLlNTICJzdHJ1Y3QgXGZCdHJlZVxmUCogZ2V0X3RyZWVfaGVhZCAodm9pZClcZkMgW3JlYWRdXGZQIgogLlBQCiBSZXRyaWV2ZXMgdGhlIFxmQnRyZWVcZlAgaGVhZC4gXGZCUmV0dXJuczpcZlAKQEAgLTQ5Myw3ICs1MDgsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwMjAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMDMxIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBnZXRfd2lsZF9ub2RlIChjb25zdCBjaGFyICogbmFtZSwgb2lkICogb2JqaWQsIHNpemVfdCAqIG9iamlkbGVuKSJcZkJTZWUgYWxzbzpcZlAKIC5SUyA0CiBjb21tZW50cyBvbiBmaW5kX2Jlc3RfdHJlZV9ub2RlIGZvciB1c2FnZSBhZnRlciBmaXJzdCB0aW1lLiAKQEAgLTUwMSwyNCArNTE2LDI2IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTQ5MSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU2Mzkgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2ZpeHVwX21pYl9kaXJlY3RvcnkgKHZvaWQpIgogLlBQCiBzd2FwIGluIHRoZSBuZXcgdmFsdWUgYW5kIHJlcGVhdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0ODMgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNDk2IG9mIGZpbGUgbWliLmMuCiAuU1MgImNoYXIqIG5ldHNubXBfZ2V0X21pYl9kaXJlY3RvcnkgKHZvaWQpIgogLlBQCiBDaGVjayBpZiB0aGUgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgaXMgc2V0CiAuUFAKIE5vdCBzZXQgdXNlIGhhcmQgY29kZWQgcGF0aCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0MzYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNDQ5IG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X21pYiAodm9pZCkiCiAuUFAKLUluaXRpYWxpc2VzIHRoZSBtaWIgcmVhZGVyLiBSZWFkcyBpbiBhbGwgc2V0dGluZ3MgZnJvbSB0aGUgZW52aXJvbm1lbnQuIAorSW5pdGlhbGlzZXMgdGhlIG1pYiByZWFkZXIuIExpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIE1JQiBmaWxlcyBhbmQgb2JqZWN0cywgYW5kIE9JRHMuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTMwIG9mIGZpbGUgbWliLmMuCitSZWFkcyBpbiBhbGwgc2V0dGluZ3MgZnJvbSB0aGUgZW52aXJvbm1lbnQuIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMjU0MyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgbmV0c25tcF9vaWQyY2hhcnMgKGNoYXIgKiBDLCBpbnQgTCwgY29uc3Qgb2lkICogTykiCiAuUFAKIENvbnZlcnRzIGFuIE9JRCB0byBpdHMgY2hhcmFjdGVyIGZvcm0uIGluIGV4YW1wbGUgNSAuIDEgLiAyIC4gMyAuIDQgLiA1ID0gMTIzNDUKQEAgLTU0MSw3ICs1NTgsNyBAQAogLlBQCiBsZW5ndGggCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2Mjc4IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjQyNSBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgbmV0c25tcF9vaWQyc3RyIChjaGFyICogUywgaW50IEwsIG9pZCAqIE8pIgogLlBQCiBDb252ZXJ0cyBhbiBPSUQgdG8gaXRzIHN0cmluZyBmb3JtLiBpbiBleGFtcGxlIDUgLiAnaCcgLiAnZScgLiAnbCcgLiAnbCcgLiAnbycgPSAnaGVsbG9cXDAnIChudWxsIHRlcm1pbmF0ZWQpCkBAIC01NjIsNyArNTc5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2MzA2IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjQ1MyBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIG5ldHNubXBfc2V0X21pYl9kaXJlY3RvcnkgKGNvbnN0IGNoYXIgKiBkaXIpIgogLlBQCiBOZXcgZGlyIHN0YXJ0cyB3aXRoICcrJywgdGh1cyB3ZSBhZGQgaXQuCkBAIC01NzEsNyArNTg4LDcgQEAKIC5QUAogc2V0X3N0cmluZyBjYWxscyBzdHJkdXAsIHNvIGlmIHdlIGFsbG9jYXRlZCBtZW1vcnksIGZyZWUgaXQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzgxIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjM5NCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgbmV0c25tcF9zdHIyb2lkIChjb25zdCBjaGFyICogUywgb2lkICogTywgaW50IEwpIgogLlBQCiBDb252ZXJ0cyBhIHN0cmluZyB0byBpdHMgT0lEIGZvcm0uIGluIGV4YW1wbGUgJ2hlbGxvJyA9IDUgLiAnaCcgLiAnZScgLiAnbCcgLiAnbCcgLiAnbycKQEAgLTU5Miw3ICs2MDksNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDYyNDMgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2MzkwIG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgcHJpbnRfZGVzY3JpcHRpb24gKG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCkiCiAuUFAKIFByaW50cyBvbiBvaWQgZGVzY3JpcHRpb24gb24gc3Rkb3V0LiBcZkJTZWUgYWxzbzpcZlAKQEAgLTYwMiw3ICs2MTksNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ0MzYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NTg1IG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgcHJpbnRfbWliIChGSUxFICogZnApIgogLlBQCiBQcmludHMgdGhlIE1JQnMgdG8gdGhlIGZpbGUgZnAuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MTIsNyArNjI5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzQ1IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjkwMSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHByaW50X29iamlkIChjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKSIKIC5QUAogUHJpbnRzIGFuIG9pZCB0byBzdGRvdXQuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MjQsNyArNjQxLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMTUzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzMwNiBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHByaW50X3ZhcmlhYmxlIChjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJpYWJsZSkiCiAuUFAKIFByaW50cyBhIFxmQnZhcmlhYmxlXGZQIHRvIHN0ZG91dC4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTYzOCw3ICs2NTUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMzMDUgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNDU4IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCByZWFkX29iamlkIChjb25zdCBjaGFyICogaW5wdXQsIG9pZCAqIG91dHB1dCwgc2l6ZV90ICogb3V0X2xlbikiCiAuUFAKIFJlYWRzIGFuIG9iamVjdCBpZGVudGlmaWVyIGZyb20gYW4gaW5wdXQgc3RyaW5nIGludG8gaW50ZXJuYWwgT0lEIGZvcm0uIFdoZW4gY2FsbGVkLCBvdXRfbGVuIG11c3QgaG9sZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIG91dHB1dCBhcnJheS4KQEAgLTY1OSw3ICs2NzYsNyBAQAogLlBQCiBJZiBhbiBlcnJvciBvY2N1cnMsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGFuZCBNQVkgc2V0IHNubXBfZXJybm8uIHNubXBfZXJybm8gaXMgTk9UIHNldCBpZiBTRVRfU05NUF9FUlJPUiBldmFsdWF0ZXMgdG8gbm90aGluZy4gVGhpcyBjYW4gbWFrZSBtdWx0aS10aHJlYWRlZCB1c2UgYSB0aW55IGJpdCBtb3JlIHJvYnVzdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODQzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjk5OSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHNldF9mdW5jdGlvbiAoc3RydWN0IFxmQnRyZWVcZlAgKiBzdWJ0cmVlKSIKIC5QUAogU2V0J3MgdGhlIHByaW50aW5nIGZ1bmN0aW9uIHByaW50b21hdCBpbiBhIHN1YnRyZWUgYWNjb3JkaW5nIGl0J3MgdHlwZS4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTY2OSwxMiArNjg2LDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc2NiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5MjIgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBzaHV0ZG93bl9taWIgKHZvaWQpIgogLlBQCiBVbmxvYWRzIGFsbCBtaWJzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3MjAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyODY3IG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgc25tcF9pbl90b2dnbGVfb3B0aW9uc191c2FnZSAoY29uc3QgY2hhciAqIGxlYWQsIEZJTEUgKiBvdXRmKSIKIC5QUAogUHJpbnRzIG91dCBhIGhlbHAgdXNhZ2UgZm9yIHRoZSBpbiogdG9nZ2xlIG9wdGlvbnMuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02ODYsNyArNzAzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjkzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMwNCBvZiBmaWxlIG1pYi5jLgogLlNTICJvaWQqIHNubXBfcGFyc2Vfb2lkIChjb25zdCBjaGFyICogYXJndiwgb2lkICogcm9vdCwgc2l6ZV90ICogcm9vdGxlbikiCiAuUFAKIEdpdmVuIGEgc3RyaW5nLCBwYXJzZXMgYW4gb2lkIG91dCBvZiBpdCAoaWYgcG9zc2libGUpLiBJdCB3aWxsIHRyeSB0byBwYXJzZSBpdCBiYXNlZCBvbiBwcmVkZXRlcm1pbmVkIGNvbmZpZ3VyYXRpb24gaWYgcHJlc2VudCBvciBieSBldmVyeSBtZXRob2QgcG9zc2libGUgb3RoZXJ3aXNlLiBJZiBhIHN1ZmZpeCBoYXMgYmVlbiByZWdpc3RlcmVkIHVzaW5nIE5FVFNOTVBfRFNfTElCX09JRFNVRkZJWCwgaXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgaW5wdXQgc3RyaW5nIGJlZm9yZSBwcm9jZXNzaW5nLgpAQCAtNzA3LDcgKzcyNCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTg0OSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU5OTYgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2FzY2lpc3RyaW5nICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgdV9jaGFyICogY3AsIHNpemVfdCBsZW4pIgogLlBQCiBQcmludHMgYW4gYXNjaWkgc3RyaW5nIGludG8gYSBidWZmZXIuIFRoZSBjaGFyYWN0ZXJzIHBvaW50ZWQgYnkgKmNwIGFyZSBlbmNvZGVkIGFzIGFuIGFzY2lpIHN0cmluZy4KQEAgLTczNiw3ICs3NTMsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3MCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4OCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfYmFkdHlwZSAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogRmFsbGJhY2sgcm91dGluZSBmb3IgYSBiYWQgdHlwZSwgcHJpbnRzICdWYXJpYWJsZSBoYXMgYmFkIHR5cGUnIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTc2Nyw3ICs3ODQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5MDUgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOTE2IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19iaXRzdHJpbmcgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIGJpdCBzdHJpbmcgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtNzk4LDcgKzgxNSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTc2NiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3Nzcgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2J5X3R5cGUgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFVuaXZlcnNhbCBwcmludCByb3V0aW5lLCBwcmludHMgYSBcZkJ2YXJpYWJsZVxmUCBpbnRvIGEgYnVmZmVyIGFjY29yZGluZyB0byB0aGUgXGZCdmFyaWFibGVcZlAgdHlwZS4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtODI5LDcgKzg0Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTk0MCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5NTEgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2NvdW50ZXIgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIGNvdW50ZXIgdmFsdWUgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtODYwLDcgKzg3Nyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTUzMyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1NDQgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2NvdW50ZXI2NCAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGEgY291bnRlciBpbnRvIGEgYnVmZmVyLiBUaGUgXGZCdmFyaWFibGVcZlAgdmFyIGlzIGVuY29kZWQgYXMgYSBjb3VudGVyIHZhbHVlLgpAQCAtODkzLDcgKzkxMCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODQ5IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODYwIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19nYXVnZSAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGEgZ2F1Z2UgdmFsdWUgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtOTI0LDcgKzk0MSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQ2MCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0NzEgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2hpbnRlZF9pbnRlZ2VyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgbG9uZyB2YWwsIGNvbnN0IGNoYXIgZGVjaW1hbHR5cGUsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGhpbnQgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtOTU1LDcgKzk3Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE4NiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExOTcgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2ludGVnZXIgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhbiBpbnRlZ2VyIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTk4Niw3ICsxMDAzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjYwIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTI3MSBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfaXBhZGRyZXNzICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gaXAtYWRkcmVzcyBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC0xMDE3LDcgKzEwMzQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE2NjIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNjczIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19uZXR3b3JrYWRkcmVzcyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGEgbmV0d29yayBhZGRyZXNzIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTEwNDgsNyArMTA2NSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU5NiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE2MDcgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX251bGwgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIG51bGwgdmFsdWUgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTA3OSw3ICsxMDk2LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNzIyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTczMyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2Nfb2JqZWN0X2lkZW50aWZpZXIgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhbiBvYmplY3QgaWRlbnRpZmllciBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC0xMTEwLDcgKzExMjcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwNDIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMDUzIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19vY3RldF9zdHJpbmcgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhbiBvY3RldCBzdHJpbmcgaW50byBhIGJ1ZmZlci4gVGhlIFxmQnZhcmlhYmxlXGZQIHZhciBpcyBlbmNvZGVkIGFzIG9jdGV0IHN0cmluZy4KQEAgLTExNDMsNyArMTE2MCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDMwIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDQ4IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19vcGFxdWUgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhbiBvYmplY3QgaWRlbnRpZmllciBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC0xMTc0LDcgKzExOTEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk1MiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDk2MyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfdGltZXRpY2tzICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSB0aW1ldGljayBcZkJ2YXJpYWJsZVxmUCBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC0xMjA1LDcgKzEyMjIsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExMTIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTIzIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY191aW50ZWdlciAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGFuIHVuc2lnbmVkIGludGVnZXIgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTIzNiw3ICsxMjUzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzYzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTM3NCBvZiBmaWxlIG1pYi5jLgogLlNTICJjaGFyKiB1cHRpbWVfc3RyaW5nICh1X2xvbmcgdGltZXRpY2tzLCBjaGFyICogYnVmKSIKIC5QUAogQ29udmVydHMgdGltZXRpY2tzIHRvIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIHN0cmluZy4gQ01VIGNvbXBhdGlibGUgZG9lcyBub3Qgc2hvdyBjZW50aXNlY29uZHMuCkBAIC0xMjYwLDcgKzEyNzcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU4MTQgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1OTYxIG9mIGZpbGUgbWliLmMuCiAuU0ggIlZhcmlhYmxlIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgIlxmQlByZWZpeExpc3RcZlAgbWliX3ByZWZpeGVzW10iXGZCSW5pdGlhbCB2YWx1ZTpcZlAKQEAgLTEyNzcsNyArMTI5NCw3IEBACiB9CiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE2MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE4MSBvZiBmaWxlIG1pYi5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMyBiL21hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMwppbmRleCBlOTQxYjA5Li5kMzY2OTIxIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMKKysrIGIvbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJtb2RlX2VuZF9jYWxsIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm1vZGVfZW5kX2NhbGwiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX211bHRpcGxleGVyLjMgYi9tYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zCmluZGV4IGM2YjJjNGQuLmUzNzQzNjUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX211bHRpcGxleGVyLjMKKysrIGIvbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibXVsdGlwbGV4ZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibXVsdGlwbGV4ZXIiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMwppbmRleCAyZmU2ZmU0Li5kMzcwOTYxIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMKaW5kZXggN2U4NTJiYy4uZThhMjkxYyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfY29sdW1uX2luZm9fdCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX2NvbHVtbl9pbmZvX3QiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTQzLDE0ICs0MywxNCBAQAogCiBPVkVSTEFQUElORyBSQU5HRVMgQVJFIE5PVCBTVVBQT1JURUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTIgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU4IG9mIGZpbGUgdGFibGUuaC4KIC5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAiY2hhciBcZkJuZXRzbm1wX2NvbHVtbl9pbmZvX3Q6Omxpc3RfY291bnRcZlAiCiAuUFAKIG9ubHkgdXNlZnVsIGlmIGlzUmFuZ2UgPT0gMCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU1IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA2MSBvZiBmaWxlIHRhYmxlLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zCmluZGV4IGRlNTc5YTguLjFjZmQ2OWQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfZGF0YV9saXN0X3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9kYXRhX2xpc3RfcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMwppbmRleCAwNzMxYWQyLi44NWRkM2UxIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMKaW5kZXggMzU5Zjc4OC4uNDI2NmUwMiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX2l0ZXJhdG9yX2luZm9fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX2l0ZXJhdG9yX2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zCmluZGV4IDM2NzkxYjEuLjZhYjU3YTAgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMwppbmRleCA5MzRhZTA5Li43NDk0MWY5IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMwppbmRleCA2NWZiM2NhLi41NTU2MjYxIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9taWJfaGFuZGxlcl9zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfbWliX2hhbmRsZXJfcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTRjNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMKQEAgLTAsMCArMSw4NSBAQAorLlRIICJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcyBcLSAKKy5QUAorY2FsbGJhY2sgaGVhZGVyICAKKworLlNIIFNZTk9QU0lTCisuYnIKKy5QUAorLlBQCitcZkMjaW5jbHVkZSA8b2JqZWN0X21vbml0b3IuaD5cZlAKKy5TUyAiRGF0YSBGaWVsZHMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidW5zaWduZWQgaW50IFxmQmV2ZW50XGZQIgorLmJyCisuUkkgIlxmSWNhbGxiYWNrIHR5cGUgXGZQIgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2luZGV4XGZQIFxmQm1vbml0b3JlZF9vYmplY3RcZlAiCisuYnIKKy5SSSAiXGZJcmVnaXN0ZXJlZCBvaWQgXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCcHJpb3JpdHlcZlAiCisuYnIKKy5SSSAiXGZJcHJpb3JpdHkgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkICogXGZCd2F0Y2hlcl9kYXRhXGZQIgorLmJyCisuUkkgIlxmSXBvaW50ZXIgZ2l2ZW4gYnkgd2F0Y2hlciBhdCByZWdpc3RyYXRpb24gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkICogXGZCb2JqZWN0X2luZm9cZlAiCisuYnIKKy5SSSAiXGZJcG9pbnRlciBwYXNzZWQgZnJvbSB0aGUgbW9uaXRvcmVkIG9iamVjdCBcZlAiCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3NcZlAgKiBcZkJwcml2YXRlXGZQIgorLmJyCisuUkkgIlxmSURPIE5PVCBVU0UsIElOVEVSTkFMIFVTRSBPTkxZLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJyZWZzXGZQIgorLmJyCisuaW4gLTFjCisuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgorLlBQIAorY2FsbGJhY2sgaGVhZGVyIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNjQgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorLlNIICJGaWVsZCBEb2N1bWVudGF0aW9uIgorLlBQIAorLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjpldmVudFxmUCIKKy5QUAorY2FsbGJhY2sgdHlwZSAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDY3IG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TUyAiXGZCbmV0c25tcF9pbmRleFxmUCBcZkJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3M6Om1vbml0b3JlZF9vYmplY3RcZlAiCisuUFAKK3JlZ2lzdGVyZWQgb2lkIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzAgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorLlNTICJ2b2lkKiBcZkJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3M6Om9iamVjdF9pbmZvXGZQIgorLlBQCitwb2ludGVyIHBhc3NlZCBmcm9tIHRoZSBtb25pdG9yZWQgb2JqZWN0IAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzkgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorLlNTICJpbnQgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjpwcmlvcml0eVxmUCIKKy5QUAorcHJpb3JpdHkgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3MyBvZiBmaWxlIG9iamVjdF9tb25pdG9yLmguCisuU1MgInN0cnVjdCBcZkJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3NcZlAqIFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6cHJpdmF0ZVxmUFxmQyBbcmVhZF1cZlAiCisuUFAKK0RPIE5PVCBVU0UsIElOVEVSTkFMIFVTRSBPTkxZLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDgyIG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TUyAidm9pZCogXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjp3YXRjaGVyX2RhdGFcZlAiCisuUFAKK3BvaW50ZXIgZ2l2ZW4gYnkgd2F0Y2hlciBhdCByZWdpc3RyYXRpb24gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3NiBvZiBmaWxlIG9iamVjdF9tb25pdG9yLmguCisKKy5TSCAiQXV0aG9yIgorLlBQIAorR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMKaW5kZXggMTViZDE2OC4uNmY0YWYxOCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9yZXF1ZXN0X2luZm9fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX3JlcXVlc3RfaW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zCmluZGV4IDFlYzVlOWIuLmU4YjBjMzMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zOSwzNCArMzksMzQgQEAKIC5QUCAKIFRhYmxlIHJlZ2lzdHJhdGlvbiBzdHJ1Y3R1cmUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzQgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgwIG9mIGZpbGUgdGFibGUuaC4KIC5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQKiBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3M6OmluZGV4ZXNcZlAiCiAuUFAKIGxpc3Qgb2YgdmFyYmluZHMgd2l0aCBvbmx5ICd0eXBlJyBzZXQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NiBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgODIgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjptYXhfY29sdW1uXGZQIgogLlBQCiB0aGUgbWF4aW11bSBjb2x1bW5zIG51bWJlciAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg3IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA5MyBvZiBmaWxlIHRhYmxlLmguCiAuU1MgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3M6Om1pbl9jb2x1bW5cZlAiCiAuUFAKIHRoZSBtaW5pbXVtIGNvbHVtbnMgbnVtYmVyLiBJZiB0aGVyZSBhcmUgY29sdW1ucyBpbi1iZXR3ZWVuIHdoaWNoIGFyZSBub3QgdmFsaWQsIHVzZSB2YWxpZF9jb2x1bW5zIHRvIGdldCBhdXRvbWF0aWMgY29sdW1uIHJhbmdlIGNoZWNraW5nLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg1IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA5MSBvZiBmaWxlIHRhYmxlLmguCiAuU1MgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3M6Om51bWJlcl9pbmRleGVzXGZQIgogLlBQCiBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3OCBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgODQgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJcZkJuZXRzbm1wX2NvbHVtbl9pbmZvXGZQKiBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3M6OnZhbGlkX2NvbHVtbnNcZlAiCiAuUFAKIG1vcmUgZGV0YWlscyBvbiBjb2x1bW5zIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTAgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDk2IG9mIGZpbGUgdGFibGUuaC4KIAogLlNIICJBdXRob3IiCiAuUFAgCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMKaW5kZXggNTU2Yzg2OS4uM2I5NDM5NyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC00MCwyNCArNDAsMjQgQEAKIC5QUCAKIFRoZSB0YWJsZSByZXF1ZXN0IGluZm8gc3RydWN0dXJlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwMiBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTA4IG9mIGZpbGUgdGFibGUuaC4KIC5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAidW5zaWduZWQgaW50IFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3M6OmNvbG51bVxmUCIKIC5QUAogMCBpZiBPSUQgbm90IGxvbmcgZW5vdWdoIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA0IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMTAgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAqIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3M6OmluZGV4ZXNcZlAiCiAuUFAKIGNvbnRlbnRzIGZyZWVkIGJ5IGhlbHBlciB1cG9uIGV4aXQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDggb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExNCBvZiBmaWxlIHRhYmxlLmguCiAuU1MgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zOjpudW1iZXJfaW5kZXhlc1xmUCIKIC5QUAogMCBpZiBmYWlsdXJlIHRvIHBhcnNlIGFueSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwNiBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTEyIG9mIGZpbGUgdGFibGUuaC4KIAogLlNIICJBdXRob3IiCiAuUFAgCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zIGIvbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2MyZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMwpAQCAtMCwwICsxLDMzIEBACisuVEggIm51bGxfY29udGFpbmVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCitudWxsX2NvbnRhaW5lciBcLSAKKy5QUAorSGVscHMgeW91IGltcGxlbWVudCBzcGVjaWFsaXplZCBjb250YWluZXJzLiAgCisKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfY29udGFpbmVyXGZQICogXGZCbmV0c25tcF9jb250YWluZXJfZ2V0X251bGxcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfZmFjdG9yeVxmUCAqIFxmQm5ldHNubXBfY29udGFpbmVyX2dldF9udWxsX2ZhY3RvcnlcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jb250YWluZXJfbnVsbF9pbml0XGZQICh2b2lkKSIKKy5icgorLmluIC0xYworLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKKy5QUCAKK0hlbHBzIHlvdSBpbXBsZW1lbnQgc3BlY2lhbGl6ZWQgY29udGFpbmVycy4gCisKK1RoaXMgaXMgYSBzaW1wbGUgY29udGFpbmVyIHRoYXQgZG9lc24ndCBhY3R1YWxseSBjb250YWluIGFueXRoaW5nLiBBbGwgdGhlIG1ldGhvZHMgc2ltcGx5IGxvZyBhIGRlYnVnIG1lc3NhZ2UgYW5kIHJldHVybi4KKy5QUAorVGhlIG9yaWdpbmFsIGludGVudCBmb3IgdGhpcyBjb250YWluZXIgaXMgYXMgYSB3cmFwcGVyIGZvciBhIHNwZWNpYWxpemVkIGNvbnRhaW5lci4gSW1wbGVtZW50IHRoZSBmdW5jdGlvbnMgeW91IG5lZWQsIGNyZWF0ZSBhIG51bGxfY29udGFpbmVyLCBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgZnVuY3Rpb25zIHdpdGggeW91ciBzcGVjaWFsaXplZCB2ZXJzaW9ucy4KKy5QUAorWW91IGNhbiB1c2UgdGhlICdjb250YWluZXI6bnVsbCcgZGVidWcgdG9rZW4gdG8gc2VlIHdoYXQgZnVuY3Rpb25zIGFyZSBiZWluZyBjYWxsZWQsIHRvIGhlbHAgZGV0ZXJtaW5lIGlmIHlvdSBuZWVkIHRvIGltcGxlbWVudCB0aGVtLiAKKy5TSCAiQXV0aG9yIgorLlBQIAorR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMyBiL21hbi9uZXRzbm1wX29pZF9zdGFzaC4zCmluZGV4IDhhYjAzNGIuLmZhZDI4ZTkgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX29pZF9zdGFzaC4zCisrKyBiL21hbi9uZXRzbm1wX29pZF9zdGFzaC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJTdG9yZSBhbmQgcmV0cmlldmUgZGF0YSByZWZlcmVuY2VkIGJ5IGFuIE9JRC4iIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiU3RvcmUgYW5kIHJldHJpZXZlIGRhdGEgcmVmZXJlbmNlZCBieSBhbiBPSUQuIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0xOCwxMSArMTgsMTEgQEAKIC5icgogLlJJICJcZklDcmVhdGVzIGEgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZS4gXGZQIgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9vaWRfc3Rhc2hfYWRkX2RhdGFcZlAgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKipyb290LCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4sIHZvaWQgKm15ZGF0YSkiCisuUkkgImludCBcZkJuZXRzbm1wX29pZF9zdGFzaF9hZGRfZGF0YVxmUCAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqKnJvb3QsIGNvbnN0IG9pZCAqbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbiwgdm9pZCAqbXlkYXRhKSIKIC5icgogLlJJICJcZklhZGRzIGRhdGEgdG8gdGhlIHN0YXNoIGF0IGEgZ2l2ZW4gb2lkLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiBcZkJuZXRzbm1wX29pZF9zdGFzaF9nZXRfbm9kZVxmUCAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqcm9vdCwgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKKy5SSSAiXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqIFxmQm5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlXGZQIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICpyb290LCBjb25zdCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4pIgogLmJyCiAuUkkgIlxmSXJldHVybnMgYSBcZkJub2RlXGZQIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIE9JRC4gXGZQIgogLnRpIC0xYwpAQCAtMzAsNyArMzAsNyBAQAogLmJyCiAuUkkgIlxmSXJldHVybnMgdGhlIG5leHQgXGZCbm9kZVxmUCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuIFxmUCIKIC50aSAtMWMKLS5SSSAidm9pZCAqIFxmQm5ldHNubXBfb2lkX3N0YXNoX2dldF9kYXRhXGZQIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICpyb290LCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4pIgorLlJJICJ2b2lkICogXGZCbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X2RhdGFcZlAgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKnJvb3QsIGNvbnN0IG9pZCAqbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCiAuYnIKIC5SSSAiXGZJcmV0dXJucyBhIGRhdGEgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuIFxmUCIKIC50aSAtMWMKQEAgLTYwLDcgKzYwLDcgQEAKIEl0IHN0b3JlcyBhIGJ1bmNoIG9mIGRhdGEgcG9pbnRlcnMgd2l0aGluIGEgbWVtb3J5IFxmQnRyZWVcZlAgdGhhdCBhbGxvd3MgZmFpcmx5IGVmZmljaWVudCBsb29rdXBzIHdpdGggYSBoZWF2aWx5IHBvcHVsYXRlZCBcZkJ0cmVlXGZQLiAKIC5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKIC5QUCAKLS5TUyAiaW50IG5ldHNubXBfb2lkX3N0YXNoX2FkZF9kYXRhIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICoqIHJvb3QsIG9pZCAqIGxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4sIHZvaWQgKiBteWRhdGEpIgorLlNTICJpbnQgbmV0c25tcF9vaWRfc3Rhc2hfYWRkX2RhdGEgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiogcm9vdCwgY29uc3Qgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbiwgdm9pZCAqIG15ZGF0YSkiCiAuUFAKIGFkZHMgZGF0YSB0byB0aGUgc3Rhc2ggYXQgYSBnaXZlbiBvaWQuIFxmQlBhcmFtZXRlcnM6XGZQCiAuUlMgNApAQCAtMTIwLDcgKzEyMCw3IEBACiAKIC5QUAogRGVmaW5pdGlvbiBhdCBsaW5lIDQwMSBvZiBmaWxlIG9pZF9zdGFzaC5jLgotLlNTICJ2b2lkKiBuZXRzbm1wX29pZF9zdGFzaF9nZXRfZGF0YSAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqIHJvb3QsIG9pZCAqIGxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4pIgorLlNTICJ2b2lkKiBuZXRzbm1wX29pZF9zdGFzaF9nZXRfZGF0YSAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqIHJvb3QsIGNvbnN0IG9pZCAqIGxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4pIgogLlBQCiByZXR1cm5zIGEgZGF0YSBwb2ludGVyIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIE9JRC4gVGhpcyBpcyBlcXVpdmVsZW50IHRvIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlLCBidXQgcmV0dXJucyBvbmx5IHRoZSBkYXRhIG5vdCB0aGUgZW50aXJlIFxmQm5vZGVcZlAuCiAuUFAKQEAgLTEzNiw3ICsxMzYsNyBAQAogCiAuUFAKIERlZmluaXRpb24gYXQgbGluZSAyODIgb2YgZmlsZSBvaWRfc3Rhc2guYy4KLS5TUyAiXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X25vZGUgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiByb290LCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKKy5TUyAiXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X25vZGUgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiByb290LCBjb25zdCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKIC5QUAogcmV0dXJucyBhIFxmQm5vZGVcZlAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELiBcZkJQYXJhbWV0ZXJzOlxmUAogLlJTIDQKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX29sZF9hcGkuMyBiL21hbi9uZXRzbm1wX29sZF9hcGkuMwppbmRleCAxZTZjYzc1Li5hMTMyOGRlIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9vbGRfYXBpLjMKKysrIGIvbWFuL25ldHNubXBfb2xkX2FwaS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJvbGRfYXBpIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm9sZF9hcGkiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTM3LDI0ICszNywyNCBAQAogLlBQCiByZXR1cm5zIGEgb2xkX2FwaSBoYW5kbGVyIHRoYXQgc2hvdWxkIGJlIHRoZSBmaW5hbCBjYWxsaW5nIGhhbmRsZXIuIERvbid0IHVzZSB0aGlzIGZ1bmN0aW9uLiBVc2UgdGhlIFxmQm5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpXGZQIGZ1bmN0aW9uIGluc3RlYWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzcgb2YgZmlsZSBvbGRfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzggb2YgZmlsZSBvbGRfYXBpLmMuCiAuU1MgImludCBuZXRzbm1wX29sZF9hcGlfaGVscGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiCiAuUFAKIGltcGxlbWVudHMgdGhlIG9sZF9hcGkgaGFuZGxlciAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyNiBvZiBmaWxlIG9sZF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMzUgb2YgZmlsZSBvbGRfYXBpLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX21pYl90YWJsZV9yb3cgKGNvbnN0IGNoYXIgKiBtb2R1bGVOYW1lLCBzdHJ1Y3QgXGZCdmFyaWFibGVcZlAgKiB2YXIsIHNpemVfdCB2YXJzaXplLCBzaXplX3QgbnVtdmFycywgb2lkICogbWlibG9jLCBzaXplX3QgbWlibG9jbGVuLCBpbnQgcHJpb3JpdHksIGludCB2YXJfc3ViaWQsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIHNzLCBjb25zdCBjaGFyICogY29udGV4dCwgaW50IHRpbWVvdXQsIGludCBmbGFncykiCiAuUFAKIHJlZ2lzdGVycyBhIHJvdyB3aXRoaW4gYSBtaWIgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDcgb2YgZmlsZSBvbGRfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTE2IG9mIGZpbGUgb2xkX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpIChjb25zdCBjaGFyICogbW9kdWxlTmFtZSwgc3RydWN0IFxmQnZhcmlhYmxlXGZQICogdmFyLCBzaXplX3QgdmFyc2l6ZSwgc2l6ZV90IG51bXZhcnMsIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5LCBpbnQgcmFuZ2Vfc3ViaWQsIG9pZCByYW5nZV91Ym91bmQsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIHNzLCBjb25zdCBjaGFyICogY29udGV4dCwgaW50IHRpbWVvdXQsIGludCBmbGFncykiCiAuUFAKIFJlZ2lzdGVycyBhbiBvbGQgQVBJIHNldCBpbnRvIHRoZSBtaWIgXGZCdHJlZVxmUC4gRnVuY3Rpb25hbGx5IHRoaXMgbWltaWNzIHRoZSBvbGQgcmVnaXN0ZXJfbWliX2NvbnRleHQoKSBmdW5jdGlvbiAoYW5kIGluIGZhY3QgdGhlIG5ldyByZWdpc3Rlcl9taWJfY29udGV4dCgpIGZ1bmN0aW9uIG1lcmVseSBjYWxscyB0aGlzIG5ldyBvbGRfYXBpIG9uZSkuIAogLlBQCiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnaW5mbyk7IGFscmVhZHkgZnJlZWQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0OCBvZiBmaWxlIG9sZF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0OSBvZiBmaWxlIG9sZF9hcGkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zIGIvbWFuL25ldHNubXBfcmVhZF9jb25maWcuMwppbmRleCBkMjQwZTFiLi41M2MxMzdhIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zCisrKyBiL21hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInBhcnNpbmcgdmFyaW91cyBjb25maWd1cmF0aW9uIGZpbGVzIGF0IHJ1biB0aW1lIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInBhcnNpbmcgdmFyaW91cyBjb25maWd1cmF0aW9uIGZpbGVzIGF0IHJ1biB0aW1lIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zNyw3ICszNyw3IEBACiAuUkkgInZvaWQgXGZCdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXJcZlAgKGNvbnN0IGNoYXIgKnRva2VuKSIKIC5icgogLnRpIC0xYwotLlJJICJ2b2lkIFxmQnVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVyc1xmUCAoKSIKKy5SSSAidm9pZCBcZkJ1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnNcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCiAuUkkgInN0cnVjdCBcZkJjb25maWdfbGluZVxmUCAqIFxmQnJlYWRfY29uZmlnX2dldF9oYW5kbGVyc1xmUCAoY29uc3QgY2hhciAqdHlwZSkiCkBAIC05NywxOSArOTcsMTkgQEAKIC5SSSAidm9pZCBcZkJzZXRfY29uZmlndXJhdGlvbl9kaXJlY3RvcnlcZlAgKGNvbnN0IGNoYXIgKmRpcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiY29uc3QgY2hhciAqIFxmQmdldF9jb25maWd1cmF0aW9uX2RpcmVjdG9yeVxmUCAoKSIKKy5SSSAiY29uc3QgY2hhciAqIFxmQmdldF9jb25maWd1cmF0aW9uX2RpcmVjdG9yeVxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKIC5SSSAidm9pZCBcZkJzZXRfcGVyc2lzdGVudF9kaXJlY3RvcnlcZlAgKGNvbnN0IGNoYXIgKmRpcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiY29uc3QgY2hhciAqIFxmQmdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeVxmUCAoKSIKKy5SSSAiY29uc3QgY2hhciAqIFxmQmdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeVxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKIC5SSSAidm9pZCBcZkJzZXRfdGVtcF9maWxlX3BhdHRlcm5cZlAgKGNvbnN0IGNoYXIgKnBhdHRlcm4pIgogLmJyCiAudGkgLTFjCi0uUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfdGVtcF9maWxlX3BhdHRlcm5cZlAgKCkiCisuUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfdGVtcF9maWxlX3BhdHRlcm5cZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCcmVhZF9jb25maWdfZmlsZXNcZlAgKGludCB3aGVuKSIKQEAgLTEzMSw2ICsxMzEsMTIgQEAKIC5SSSAidm9pZCBcZkJzbm1wX2NsZWFuX3BlcnNpc3RlbnRcZlAgKGNvbnN0IGNoYXIgKnR5cGUpIgogLmJyCiAudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jb25maWdfZXJyb3JcZlAgKGNvbnN0IGNoYXIgKnN0ciwuLi4pIgorLmJyCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jb25maWdfd2FyblxmUCAoY29uc3QgY2hhciAqc3RyLC4uLikiCisuYnIKKy50aSAtMWMKIC5SSSAidm9pZCBcZkJjb25maWdfcGVycm9yXGZQIChjb25zdCBjaGFyICpzdHIpIgogLmJyCiAudGkgLTFjCkBAIC0yNTIsNyArMjU4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODM2IG9mIGZpbGUgcmVhZF9jb25maWcuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxODU5IG9mIGZpbGUgcmVhZF9jb25maWcuYy4KIC5TUyAidm9pZCByZWFkX2NvbmZpZ19zdG9yZSAoY29uc3QgY2hhciAqIHR5cGUsIGNvbnN0IGNoYXIgKiBsaW5lKSIKIC5QUAogcmVhZF9jb25maWdfc3RvcmUgaW50ZW5kZWQgZm9yIHVzZSBieSBhcHBsaWNhdGlvbnMgdG8gc3RvcmUgcGVybWVuYW50IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZ2VuZXJhdGVkIGJ5IHNldHMgb3IgcGVyc2lzdGVudCBjb3VudGVycy4gQXBwZW5kcyBsaW5lIHRvIGEgZmlsZSBuYW1lZCBlaXRoZXIgRU5WKFNOTVBfUEVSU0lTVEVOVF9GSUxFKSBvciAnPE5FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlk+Lzx0eXBlPi5jb25mJy4gQWRkcyBhIHRyYWlsaW5nIG5ld2xpbmUgdG8gdGhlIHN0b3JlZCBmaWxlIGlmIG5lY2Vzc2FyeS4KQEAgLTI3MSw3ICsyNzcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNzIgb2YgZmlsZSByZWFkX2NvbmZpZy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyNjIgb2YgZmlsZSByZWFkX2NvbmZpZy5jLgogLlNTICJjaGFyKiByZWFkX2NvbmZpZ19zdG9yZV9kYXRhIChpbnQgdHlwZSwgY2hhciAqIHN0b3JldG8sIHZvaWQgKiBkYXRhcHRyLCBzaXplX3QgKiBsZW4pIgogLlBQCiByZWFkX2NvbmZpZ19zdG9yZV9kYXRhIHN0b3JlcyBkYXRhIG9mIGEgZ2l2ZW4gdHlwZSB0byBhIGNvbmZpZ3VyYXRpb24gbGluZSBpbnRvIHRoZSBzdG9yZXRvIGJ1ZmZlci4gQ2FsbHMgcmVhZF9jb25maWdfc3RvcmVfZGF0YV9wcmVmaXggd2l0aCB0aGUgcHJlZml4IHBhcmFtZXRlciBzZXQgdG8gYSBjaGFyIHNwYWNlLiBUaGUgc3VwcG9ydGVkIHR5cGVzIGFyZToKQEAgLTMwOCwxMCArMzE0LDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTk5NSBvZiBmaWxlIHJlYWRfY29uZmlnLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjAxMyBvZiBmaWxlIHJlYWRfY29uZmlnLmMuCiAuU1MgInN0cnVjdCBcZkJjb25maWdfbGluZVxmUCogcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIgKGNvbnN0IGNoYXIgKiB0eXBlLCBjb25zdCBjaGFyICogdG9rZW4sIHZvaWQoKikoY29uc3QgY2hhciAqLCBjaGFyICopIHBhcnNlciwgdm9pZCgqKSh2b2lkKSByZWxlYXNlciwgY29uc3QgY2hhciAqIGhlbHApXGZDIFtyZWFkXVxmUCIKIC5QUAotcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIgcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciBjZXJ0YWluIHRva2VucyBzcGVjaWZpZWQgaW4gY2VydGFpbiB0eXBlcyBvZiBmaWxlcy4gQWxsb3dzIGEgXGZCbW9kdWxlXGZQIHdyaXRlciB1c2UvcmVnaXN0ZXIgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBmaWxlcyBiYXNlZCBvZmYgb2YgdGhlIHR5cGUgcGFyYW1ldGVyLiBBIFxmQm1vZHVsZVxmUCB3cml0ZXIgbWF5IHdhbnQgdG8gc2V0IHVwIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gc2VwYXJhdGUgb3V0IHJlbGF0ZWQgdGFza3MvdmFyaWFibGVzIG9yIGp1c3QgZm9yIG1hbmFnZW1lbnQgb2Ygd2hlcmUgdG8gcHV0IHRva2VucyBhcyB0aGUgXGZCbW9kdWxlXGZQIG9yIG1vZHVsZXMgZ2V0IG1vcmUgY29tcGxleCBpbiByZWdhcmQgdG8gaGFuZGxpbmcgdG9rZW4gcmVnaXN0cmF0aW9ucy4KK3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgY2VydGFpbiB0b2tlbnMgc3BlY2lmaWVkIGluIGNlcnRhaW4gdHlwZXMgb2YgZmlsZXMuIExpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIGNvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wgb2YgdGhlIGJlaGF2aW91ciBvZiB0aGUgbGlicmFyeSwgYWdlbnQgYW5kIG90aGVyIGFwcGxpY2F0aW9ucy4KKy5QUAorQWxsb3dzIGEgXGZCbW9kdWxlXGZQIHdyaXRlciB1c2UvcmVnaXN0ZXIgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBmaWxlcyBiYXNlZCBvZmYgb2YgdGhlIHR5cGUgcGFyYW1ldGVyLiBBIFxmQm1vZHVsZVxmUCB3cml0ZXIgbWF5IHdhbnQgdG8gc2V0IHVwIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gc2VwYXJhdGUgb3V0IHJlbGF0ZWQgdGFza3MvdmFyaWFibGVzIG9yIGp1c3QgZm9yIG1hbmFnZW1lbnQgb2Ygd2hlcmUgdG8gcHV0IHRva2VucyBhcyB0aGUgXGZCbW9kdWxlXGZQIG9yIG1vZHVsZXMgZ2V0IG1vcmUgY29tcGxleCBpbiByZWdhcmQgdG8gaGFuZGxpbmcgdG9rZW4gcmVnaXN0cmF0aW9ucy4KIC5QUAogXGZCUGFyYW1ldGVyczpcZlAKIC5SUyA0CmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9yZWFkX29ubHkuMyBiL21hbi9uZXRzbm1wX3JlYWRfb25seS4zCmluZGV4IDUzYTQwZmQuLjFlNWEzNWIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3JlYWRfb25seS4zCisrKyBiL21hbi9uZXRzbm1wX3JlYWRfb25seS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJyZWFkX29ubHkiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAicmVhZF9vbmx5IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zMiwxMiArMzIsMTIgQEAKIC5QUAogcmV0dXJucyBhIHJlYWRfb25seSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5IG9mIGZpbGUgcmVhZF9vbmx5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMgb2YgZmlsZSByZWFkX29ubHkuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2luaXRfcmVhZF9vbmx5X2hlbHBlciAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSByZWFkX29ubHkgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgcmVhZF9vbmx5IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODEgb2YgZmlsZSByZWFkX29ubHkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3MiBvZiBmaWxlIHJlYWRfb25seS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zIGIvbWFuL25ldHNubXBfcm93X21lcmdlLjMKaW5kZXggOTZjNjJkMi4uYzZkYWE0ZSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfcm93X21lcmdlLjMKKysrIGIvbWFuL25ldHNubXBfcm93X21lcmdlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInJvd19tZXJnZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJyb3dfbWVyZ2UiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3NjYWxhci4zIGIvbWFuL25ldHNubXBfc2NhbGFyLjMKaW5kZXggODllZDRjYy4uZGNjYTY3MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc2NhbGFyLjMKKysrIGIvbWFuL25ldHNubXBfc2NhbGFyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInNjYWxhciIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJzY2FsYXIiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTQ2LDcgKzQ2LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NiBvZiBmaWxlIHNjYWxhci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ3IG9mIGZpbGUgc2NhbGFyLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9zY2FsYXIgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgYSByZWFkIG9ubHkgc2NhbGFyIGhlbHBlciBoYW5kbGVyLiBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgc2ltaWxhciB0byBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhciB0aGUgb25seSBhZGRpdGlvbiBpcyB0aGF0IHRoZSAncmVhZF9vbmx5JyBoYW5kbGVyIGlzIGluamVjdGVkIGludG8gdGhlIGhhbmRsZXIgY2hhaW4gcHJpb3IgdG8gaW5qZWN0aW5nIHRoZSBzZXJpYWxpemUgaGFuZGxlciBhbmQgcmVnaXN0ZXJpbmcgcmVnaW5mby4KQEAgLTcwLDcgKzcwLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDkgb2YgZmlsZSBzY2FsYXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTAgb2YgZmlsZSBzY2FsYXIuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbykiCiAuUFAKIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGEgc2NhbGFyIGhlbHBlciBoYW5kbGVyLiBUaGUgcmVnaXN0ZXJlZCBPSUQsIHJlZ2luZm8tPnJvb3RvaWQsIHNwYWNlIGlzIGV4dGVuZGVkIGZvciB0aGUgaW5zdGFuY2Ugc3ViaWQgdXNpbmcgcmVhbGxvYygpIGJ1dCB0aGUgcmVnaW5mby0+cm9vdG9pZF9sZW4gbGVuZ3RoIGlzIG5vdCBleHRlbmRlZCBqdXN0IHlldC4gLlRoaXMgZnVuY3Rpb24gc3Vic2VxdWVudGx5IGluamVjdHMgdGhlIGluc3RhbmNlLCBzY2FsYXIsIGFuZCBzZXJpYWxpemUgaGVscGVyIGhhbmRsZXJzIGJlZm9yZSBhY3R1YWxseSByZWdpc3RlcmluZyByZWdpbmZvLgpAQCAtOTYsNyArOTYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc0IG9mIGZpbGUgc2NhbGFyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzUgb2YgZmlsZSBzY2FsYXIuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMyBiL21hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zCmluZGV4IGNiYmE5YjAuLjU0MDJmYmMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zCisrKyBiL21hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzY2FsYXJfZ3JvdXAiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic2NhbGFyX2dyb3VwIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zZXJpYWxpemUuMyBiL21hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zCmluZGV4IDQ0NzRmM2QuLmRmMDhlODkgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zCisrKyBiL21hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzZXJpYWxpemUiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic2VyaWFsaXplIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zNywyMiArMzcsMjIgQEAKIC5QUAogcmV0dXJucyBhIHNlcmlhbGl6ZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMxIG9mIGZpbGUgc2VyaWFsaXplLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjUgb2YgZmlsZSBzZXJpYWxpemUuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2luaXRfc2VyaWFsaXplICh2b2lkKSIKIC5QUAogaW5pdGlhbGl6ZXMgdGhlIHNlcmlhbGl6ZSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBzZXJpYWxpemUgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5MyBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg3IG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3NlcmlhbGl6ZSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8pIgogLlBQCiBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgY2FsbGluZyBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKVxmUCBidXQgYWxzbyBpbmplY3RzIGEgc2VyaWFsaXplIGhhbmRsZXIgYXQgdGhlIHNhbWUgdGltZSBmb3IgeW91LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQwIG9mIGZpbGUgc2VyaWFsaXplLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzQgb2YgZmlsZSBzZXJpYWxpemUuYy4KIC5TUyAiaW50IG5ldHNubXBfc2VyaWFsaXplX2hlbHBlcl9oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiCiAuUFAKIEltcGxlbWVudHMgdGhlIHNlcmlhbCBoYW5kbGVyLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ4IG9mIGZpbGUgc2VyaWFsaXplLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDIgb2YgZmlsZSBzZXJpYWxpemUuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX2FnZW50LjMgYi9tYW4vbmV0c25tcF9zbm1wX2FnZW50LjMKaW5kZXggYjkyMWRhZC4uZDZmNDc4NCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc25tcF9hZ2VudC4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfYWdlbnQuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0LXNubXAgYWdlbnQgcmVsYXRlZCBwcm9jZXNzaW5nIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldC1zbm1wIGFnZW50IHJlbGF0ZWQgcHJvY2Vzc2luZyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNTAsNiArNTAsMjQgQEAKIAogLmluICsxYwogLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfYWdlbnRfYWRkX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIGludCBcZkJuZXRzbm1wX2FnZW50X3JlbW92ZV9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIGNvbnN0IGNoYXIgKm5hbWUpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgKiBcZkJuZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIGNvbnN0IGNoYXIgKm5hbWUpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldHNcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmkpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSkiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfYWdlbnRfY2hlY2tfcGFja2V0XGZQIChcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiwgc3RydWN0IFxmQm5ldHNubXBfdHJhbnNwb3J0X3NcZlAgKiwgdm9pZCAqLCBpbnQpIgogLmJyCiAudGkgLTFjCkBAIC02MSw3ICs3OSw2IEBACiAudGkgLTFjCiAuUkkgImludCBcZkJoYW5kbGVfcGR1XGZQIChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKmFzcCkiCiAuYnIKLS5SSSAiXGZJVGhpcyBmdW5jdGlvbiBjYWxscyBpbnRvIG5ldHNubXBfc2V0X21vZGVfcmVxdWVzdF9lcnJvciwgc2V0cyBlcnJvcl92YWx1ZSBnaXZlbiBhIHJlcWluZm8tPm1vZGUgdmFsdWUuIFxmUCIKIC50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfaGFuZGxlX3JlcXVlc3RcZlAgKFxmQm5ldHNubXBfYWdlbnRfc2Vzc2lvblxmUCAqYXNwLCBpbnQgc3RhdHVzKSIKIC5icgpAQCAtMTEyLDcgKzEyOSw3IEBACiAuUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQl9maXhfZW5kb2ZtaWJ2aWV3XGZQIChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKmFzcCkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQmdldE5leHRTZXNzSURcZlAgKCkiCisuUkkgImludCBcZkJnZXROZXh0U2Vzc0lEXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3NcZlAgKGludCBibG9jaykiCkBAIC0yNDksMjQgKzI2Niw2IEBACiAuUkkgInVfbG9uZyBcZkJuZXRzbm1wX2dldF9hZ2VudF91cHRpbWVcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9hZ2VudF9hZGRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpLCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9JTkxJTkUgaW50IFxmQm5ldHNubXBfYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSwgY29uc3QgY2hhciAqbmFtZSkiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCAqIFxmQm5ldHNubXBfYWdlbnRfZ2V0X2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSwgY29uc3QgY2hhciAqbmFtZSkiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmkpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0c1xmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSkiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfYWdlbnRfcmVxdWVzdF9pbmZvXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpKSIKLS5icgotLnRpIC0xYwogLlJJICJpbnQgXGZCbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvclxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0LCBpbnQgZXJyb3JfdmFsdWUpIgogLmJyCiAuUkkgIlxmSXNldCBlcnJvciBmb3IgYSByZXF1ZXN0IFxmUCIKQEAgLTMxNiw3ICszMTUsNyBAQAogLlBQCiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM0MTcgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzQzMSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzIChpbnQgYmxvY2spIgogLlBQCiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgcGFja2V0cyBhcnJpdmluZyBvbiB0aGUgU05NUCBwb3J0IGFuZCBwcm9jZXNzZXMgdGhlbShzbm1wX3JlYWQpIGlmIHNvbWUgYXJlIGZvdW5kLCB1c2luZyB0aGUgc2VsZWN0KCkuIElmIGJsb2NrIGlzIG5vbiB6ZXJvLCB0aGUgZnVuY3Rpb24gY2FsbCBibG9ja3MgdW50aWwgYSBwYWNrZXQgYXJyaXZlcwpAQCAtMzMzLDkyICszMzIsMjIgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NjYgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjI2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgY2hlY2tfZ2V0bmV4dF9yZXN1bHRzIChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKiBhc3ApIgogLlBQCiByZXR1cm5zIDEgaWYgdGhlcmUgYXJlIHZhbGlkIEdFVE5FWFQgcmVxdWVzdHMgbGVmdC4gUmV0dXJucyAwIGlmIG5vdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODE4IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI4ODMgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBoYW5kbGVfZ2V0bmV4dF9sb29wIChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKiBhc3ApIgogLlBQCiByZXBlYXRlZGx5IGNhbGxzIGdldG5leHQgaGFuZGxlcnMgbG9va2luZyBmb3IgYW4gYW5zd2VyIHRpbGwgYWxsIHJlcXVlc3RzIGFyZSBzYXRpc2lmaWVkLiBJdCdzIGV4cGVjdGVkIHRoYXQgb25lIHBhc3MgaGFzIGJlZW4gbWFkZSBiZWZvcmUgZW50ZXJpbmcgdGhpcyBmdW5jdGlvbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5MzUgb2YgZmlsZSBzbm1wX2FnZW50LmMuCi0uU1MgImludCBoYW5kbGVfcGR1IChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKiBhc3ApIgotLlBQCi1UaGlzIGZ1bmN0aW9uIGNhbGxzIGludG8gbmV0c25tcF9zZXRfbW9kZV9yZXF1ZXN0X2Vycm9yLCBzZXRzIGVycm9yX3ZhbHVlIGdpdmVuIGEgcmVxaW5mby0+bW9kZSB2YWx1ZS4gSXQncyB1c2VkIHRvIHNlbmQgc3BlY2lmaWMgZXJyb3JzIGJhY2sgdG8gdGhlIGFnZW50IHRvIHByb2Nlc3MgYWNjb3JkaW5nbHkuCi0uUFAKLUlmIGVycm9yX3ZhbHVlIGlzIHNldCB0byBTTk1QX05PU1VDSE9CSkVDVCwgU05NUF9OT1NVQ0hJTlNUQU5DRSwgb3IgU05NUF9FTkRPRk1JQlZJRVcgdGhlIGZvbGxvd2luZyBpcyBhcHBsaWNhYmxlOiBTZXRzIHRoZSBlcnJvcl92YWx1ZSB0byByZXF1ZXN0LT5yZXF1ZXN0dmItPnR5cGUgaWYgcmVxaW5mby0+bW9kZSB2YWx1ZSBpcyBzZXQgdG8gTU9ERV9HRVQuIElmIHRoZSByZXFpbmZvLT5tb2RlIHZhbHVlIGlzIHNldCB0byBNT0RFX0dFVE5FWFQgb3IgTU9ERV9HRVRCVUxLIHRoZSBjb2RlIGNhbGxzIHNubXBfbG9nIGxvZ2dpbmcgYW4gZXJyb3IgbWVzc2FnZS4KLS5QUAotT3RoZXJ3aXNlLCB0aGUgcmVxdWVzdC0+c3RhdHVzIHZhbHVlIGlzIGNoZWNrZWQsIGlmIGl0J3MgPCAwIHNubXBfbG9nIGlzIGNhbGxlZCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgYW5kIFNOTVBfRVJSX0dFTkVSUiBpcyBhc3NpZ25lZCB0byByZXF1ZXN0LT5zdGF0dXMuIElmIHRoZSByZXF1ZXN0LT5zdGF0dXMgdmFsdWUgaXMgPj0gMCB0aGUgZXJyb3JfdmFsdWUgaXMgc2V0IHRvIHJlcXVlc3QtPnN0YXR1cy4KLS5QUAotXGZCUGFyYW1ldGVyczpcZlAKLS5SUyA0Ci1cZklyZXFpbmZvXGZQIGlzIGEgcG9pbnRlciB0byB0aGUgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gc3RydWN0LiBJdCBjb250YWlucyB0aGUgcmVxaW5mby0+bW9kZSB3aGljaCBpcyByZXF1aXJlZCB0byBzZXQgZXJyb3JfdmFsdWUgb3IgbG9nIGVycm9yIG1lc3NhZ2VzLgotLmJyCi1cZklyZXF1ZXN0XGZQIGlzIGEgcG9pbnRlciB0byB0aGUgbmV0c25tcF9yZXF1ZXN0X2luZm8gc3RydWN0LiBUaGUgZXJyb3JfdmFsdWUgaXMgc2V0IHRvIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dHlwZQotLmJyCi1cZkllcnJvcl92YWx1ZVxmUCBpcyB0aGUgZXhjZXB0aW9uIHZhbHVlIHlvdSB3YW50IHRvIHNldCwgYmVsb3cgYXJlIHBvc3NpYmxlIHZhbHVlcy4KLS5JUCAiXChidSIgMgotU05NUF9OT1NVQ0hPQkpFQ1QKLS5JUCAiXChidSIgMgotU05NUF9OT1NVQ0hJTlNUQU5DRQotLklQICJcKGJ1IiAyCi1TTk1QX0VORE9GTUlCVklFVwotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9OT0VSUk9SCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1RPT0JJRwotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9OT1NVQ0hOQU1FCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX0JBRFZBTFVFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1JFQURPTkxZCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX0dFTkVSUgotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9OT0FDQ0VTUwotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9XUk9OR1RZUEUKLS5JUCAiXChidSIgMgotU05NUF9FUlJfV1JPTkdMRU5HVEgKLS5JUCAiXChidSIgMgotU05NUF9FUlJfV1JPTkdFTkNPRElORwotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9XUk9OR1ZBTFVFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX05PQ1JFQVRJT04KLS5JUCAiXChidSIgMgotU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUUKLS5JUCAiXChidSIgMgotU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9DT01NSVRGQUlMRUQKLS5JUCAiXChidSIgMgotU05NUF9FUlJfVU5ET0ZBSUxFRAotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9BVVRIT1JJWkFUSU9ORVJST1IKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9UV1JJVEFCTEUKLS5JUCAiXChidSIgMgotU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRQotLlBQCi0uUkUKLS5QUAotXGZCUmV0dXJuczpcZlAKLS5SUyA0Ci1SZXR1cm5zIGVycm9yX3ZhbHVlIHVuZGVyIGFsbCBjb25kaXRpb25zLiAKLS5SRQotLlBQCi0KLS5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMyMjkgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzAwMCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IGhhbmRsZV9zbm1wX3BhY2tldCAoaW50IG9wLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzZXNzaW9uLCBpbnQgcmVxaWQsIFxmQm5ldHNubXBfcGR1XGZQICogcGR1LCB2b2lkICogbWFnaWMpIgogLlBQCiBoYW5kbGVzIGFuIGluY29taW5nIFNOTVAgcGFja2V0IGludG8gdGhlIGFnZW50IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTc3NCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxODM1IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCogbmV0c25tcF9hZGRfdmFyYmluZF90b19jYWNoZSAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwLCBpbnQgdmJjb3VudCwgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyYmluZF9wdHIsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqIHRwKSIKIC5QUAogXGZCVG9kb1xmUApAQCAtNDI4LDE0ICszNTcsMTQgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODgzIG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5NDQgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBuZXRzbm1wX2NoZWNrX3RyYW5zYWN0aW9uX2lkIChpbnQgdHJhbnNhY3Rpb25faWQpIgogLlBQCiBEZWNpZGUgaWYgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbl9pZCBpcyBzdGlsbCBiZWluZyBwcm9jZXNzZWQgd2l0aGluIHRoZSBhZ2VudC4gVGhpcyBpcyB1c2VkIHRvIHZhbGlkYXRlIHdoZXRoZXIgYSBkZWxheWVkIGNhY2hlIChjb250YWluaW5nIHBvc3NpYmx5IGZyZWVkIHBvaW50ZXJzKSBpcyBzdGlsbCB1c2FibGUuCiAuUFAKIHJldHVybnMgU05NUEVSUl9TVUNDRVNTIGlmIGl0J3Mgc3RpbGwgdmFsaWQsIG9yIFNOTVBFUlJfR0VORVJSIGlmIG5vdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzIxIG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI3ODYgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIGludCBlcnJvcl92YWx1ZSkiCiAuUFAKIHNldCBlcnJvciBmb3IgYSByZXF1ZXN0IFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00NDcsNyArMzc2LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNDg1IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0OTkgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIGludCBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cywgaW50IGVycm9yKSIKIC5QUAogc2V0IGVycm9yIGZvciBhbGwgcmVxdWVzdHMgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTQ2Niw3ICszOTUsNyBAQAogLlBQCiBwYXJhbm9pZCBzYW5pdHkgY2hlY2tzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzUyOCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNTQyIG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9pZHggKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgaW50IGVycm9yX3ZhbHVlLCBpbnQgaWR4KSIKIC5QUAogc2V0IGVycm9yIGZvciBhIHJlcXVlc3Qgd2l0aGluIGEgcmVxdWVzdCBsaXN0IFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00ODAsNyArNDA5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTAwIG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1MTQgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBuZXRzbm1wX3NldF9hbGxfcmVxdWVzdHNfZXJyb3IgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cywgaW50IGVycm9yX3ZhbHVlKSIKIC5QUAogc2V0IGVycm9yIGZvciBhbGwgcmVxdWVzdCBcZkJEZXByZWNhdGVkXGZQCkBAIC01MDQsNyArNDMzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzAyIG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2NTUgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBuZXRzbm1wX3NldF9tb2RlX3JlcXVlc3RfZXJyb3IgKGludCBtb2RlLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIGludCBlcnJvcl92YWx1ZSkiCiAuUFAKIHNldCBlcnJvciBmb3IgYSByZXF1ZXN0IGRlcHJlY2F0ZWQsIHVzZSBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yIGluc3RlYWQKQEAgLTUzMCw3ICs0NTksNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM2ODYgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzYzOSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBpbnQgZXJyb3JfdmFsdWUpIgogLlBQCiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBkZXByZWNhdGVkLCB1c2UgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvciBpbnN0ZWFkCkBAIC01NjAsMTIgKzQ4OSwxMiBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzY2NyBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNjIwIG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF93cmFwX3VwX3JlcXVlc3QgKFxmQm5ldHNubXBfYWdlbnRfc2Vzc2lvblxmUCAqIGFzcCwgaW50IHN0YXR1cykiCiAuUFAKIGlmIGFzcC0+cGR1IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTUyMCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTgxIG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3NubXBfYWxhcm0uMyBiL21hbi9uZXRzbm1wX3NubXBfYWxhcm0uMwppbmRleCA2YjgzZDU4Li4wMWJjYmFkIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMKKysrIGIvbWFuL25ldHNubXBfc25tcF9hbGFybS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzbm1wX2FsYXJtIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNubXBfYWxhcm0iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMgYi9tYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zCmluZGV4IDRmZmYxYzUuLjhjOGMxYWIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMKKysrIGIvbWFuL25ldHNubXBfc25tcF9jbGllbnQuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidmFyaW91cyBQRFUgcHJvY2Vzc2luZyByb3V0aW5lcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ2YXJpb3VzIFBEVSBwcm9jZXNzaW5nIHJvdXRpbmVzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC05LDYgKzksNyBAQAogLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3BkdVxmUCAqIFxmQnNubXBfcGR1X2NyZWF0ZVxmUCAoaW50IGNvbW1hbmQpIgogLmJyCisuUkkgIlxmSUxpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIFNOTVAgUERVcy4gXGZQIgogLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBcZkJzbm1wX2FkZF9udWxsX3ZhclxmUCAoXGZCbmV0c25tcF9wZHVcZlAgKnBkdSwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgpIgogLmJyCkBAIC0xNiw3ICsxNyw3IEBACiAuUkkgImludCBcZkJzbm1wX2Nsb25lX3ZhclxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXIsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCc25tcF9jbG9uZV9tZW1cZlAgKHZvaWQgKipkc3RQdHIsIHZvaWQgKnNyY1B0ciwgdW5zaWduZWQgbGVuKSIKKy5SSSAiaW50IFxmQnNubXBfY2xvbmVfbWVtXGZQICh2b2lkICoqZHN0UHRyLCBjb25zdCB2b2lkICpzcmNQdHIsIHVuc2lnbmVkIGxlbikiCiAuYnIKIC50aSAtMWMKIC5SSSAidm9pZCBcZkJzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzXGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKnZhcikiCkBAIC00MCw3ICs0MSw3IEBACiAuUkkgImludCBcZkJzbm1wX3NldF92YXJfb2JqaWRcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdnAsIGNvbnN0IG9pZCAqb2JqaWQsIHNpemVfdCBuYW1lX2xlbmd0aCkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZVxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICpuZXd2YXIsIHVfY2hhciB0eXBlLCBjb25zdCB1X2NoYXIgKnZhbF9zdHIsIHNpemVfdCB2YWxfbGVuKSIKKy5SSSAiaW50IFxmQnNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZVxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICpuZXd2YXIsIHVfY2hhciB0eXBlLCBjb25zdCB2b2lkICp2YWxfc3RyLCBzaXplX3QgdmFsX2xlbikiCiAuYnIKIC5SSSAiXGZJc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlIGlzIHVzZWQgdG8gc2V0IGRhdGEgaW50byB0aGUgbmV0c25tcF92YXJpYWJsZV9saXN0IHN0cnVjdHVyZS4gXGZQIgogLnRpIC0xYwpAQCAtNTksNyArNjAsNyBAQAogLlJJICJcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBcZkJmaW5kX3ZhcmJpbmRfaW5fbGlzdFxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2Ymxpc3QsIG9pZCAqbmFtZSwgc2l6ZV90IGxlbikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnNubXBfc2V0X3Zhcl92YWx1ZVxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXJzLCBjb25zdCB1X2NoYXIgKnZhbHVlLCBzaXplX3QgbGVuKSIKKy5SSSAiaW50IFxmQnNubXBfc2V0X3Zhcl92YWx1ZVxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXJzLCBjb25zdCB2b2lkICp2YWx1ZSwgc2l6ZV90IGxlbikiCiAuYnIKIC50aSAtMWMKIC5SSSAidm9pZCBcZkJzbm1wX3JlcGxhY2VfdmFyX3R5cGVzXGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKnZibCwgdV9jaGFyIG9sZF90eXBlLCB1X2NoYXIgbmV3X3R5cGUpIgpAQCAtODMsOCArODQsMTMgQEAKIC5SSSAidm9pZCBcZkJuZXRzbm1wX3F1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb25cZlAgKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqc2VzcykiCiAuYnIKIC50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9zZXNzaW9uXGZQICogXGZCbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uX3VuY2hlY2tlZFxmUCAodm9pZCkiCisuYnIKKy5SSSAiXGZJUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uLiBcZlAiCisudGkgLTFjCiAuUkkgIlxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIFxmQm5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvblxmUCAodm9pZCkiCiAuYnIKKy5SSSAiXGZJUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uIGFuZCBsb2cgYSB3YXJuaW5nIG1lc3NhZ2Ugb25jZSBpZiB0aGlzIHNlc3Npb24gZG9lcyBub3QgZXhpc3QuIFxmUCIKIC50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfcXVlcnlfZ2V0XGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKmxpc3QsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqc2Vzc2lvbikiCiAuYnIKQEAgLTEwMCw3ICsxMDYsMjIgQEAKIC5pbiAtMWMKIC5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKIC5QUCAKLS5TUyAiaW50IHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogbmV3dmFyLCB1X2NoYXIgdHlwZSwgY29uc3QgdV9jaGFyICogdmFsX3N0ciwgc2l6ZV90IHZhbF9sZW4pIgorLlNTICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAqIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbiAodm9pZCkiCisuUFAKK1JldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbiBhbmQgbG9nIGEgd2FybmluZyBtZXNzYWdlIG9uY2UgaWYgdGhpcyBzZXNzaW9uIGRvZXMgbm90IGV4aXN0LiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEyNDIgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAqIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbl91bmNoZWNrZWQgKHZvaWQpIgorLlBQCitSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24uIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTIzMiBvZiBmaWxlIHNubXBfY2xpZW50LmMuCisuU1MgIlxmQm5ldHNubXBfcGR1XGZQKiBzbm1wX3BkdV9jcmVhdGUgKGludCBjb21tYW5kKSIKKy5QUAorTGlicmFyeSBBUEkgcm91dGluZXMgY29uY2VybmVkIHdpdGggU05NUCBQRFVzLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEzMSBvZiBmaWxlIHNubXBfY2xpZW50LmMuCisuU1MgImludCBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIG5ld3ZhciwgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKiB2YWxfc3RyLCBzaXplX3QgdmFsX2xlbikiCiAuUFAKIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSBpcyB1c2VkIHRvIHNldCBkYXRhIGludG8gdGhlIG5ldHNubXBfdmFyaWFibGVfbGlzdCBzdHJ1Y3R1cmUuIFVzZWQgdG8gcmV0dXJuIGRhdGEgdG8gdGhlIHNubXAgcmVxdWVzdCB2aWEgdGhlIG5ldHNubXBfcmVxdWVzdF9pbmZvIHN0cnVjdHVyZSdzIHJlcXVlc3R2YiBwb2ludGVyLgogLlBQCkBAIC0xMjYsMTIgKzE0NywxMiBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjg3IG9mIGZpbGUgc25tcF9jbGllbnQuYy4KLS5TUyAiaW50IHNubXBfc2V0X3Zhcl92YWx1ZSAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFycywgY29uc3QgdV9jaGFyICogdmFsdWUsIHNpemVfdCBsZW4pIgorRGVmaW5pdGlvbiBhdCBsaW5lIDcxOSBvZiBmaWxlIHNubXBfY2xpZW50LmMuCisuU1MgImludCBzbm1wX3NldF92YXJfdmFsdWUgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcnMsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbikiCiAuUFAKIEZBTEwgVEhST1VHSCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc1NCBvZiBmaWxlIHNubXBfY2xpZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzg0IG9mIGZpbGUgc25tcF9jbGllbnQuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMyBiL21hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zCmluZGV4IDdkZmNmYmEuLjM1NTJlNWUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJnZW5lcmljIGxvZ2dpbmcgZm9yIG5ldC1zbm1wIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImdlbmVyaWMgbG9nZ2luZyBmb3IgbmV0LXNubXAiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTMyLDYgKzMyLDkgQEAKIC5SSSAidm9pZCBcZkJzaHV0ZG93bl9zbm1wX2xvZ2dpbmdcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmdcZlAgKEZJTEUgKnN0cmVhbSkiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQmRlY29kZV9wcmlvcml0eVxmUCAoY2hhciAqKm9wdGFyZywgaW50ICpwcmlfbWF4KSIKIC5icgogLnRpIC0xYwpAQCAtMTU5LDcgKzE2Miw3IEBACiAuUFAKIGhtbSwgZG9uJ3QgemVybyBzdGF0dXMgaXNuJ3Qgc2F2ZWQuLiBpIHRoaW5rIGl0J3Mgc2FmZXIgbm90IHRvIG92ZXJ3cml0ZSwgaW4gY2FzZSBhIGh1cCBpcyBqdXN0IHRvIHJlLXJlYWQgY29uZmlnIGZpbGVzLi4uCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2Mzkgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2NTcgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KIC5TUyAiaW50IHNubXBfZ2V0X2RvX2xvZ2dpbmcgKHZvaWQpIgogLlBQCiBJcyBsb2dnaW5nIGRvbmU/IFxmQlJldHVybnM6XGZQCkBAIC0xNjksNyArMTcyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0OTYgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1MTQgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KIC5TUyAiaW50IHNubXBfbG9nIChpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKiBmb3JtYXQsICAuLi4pIgogLlBQCiBUaGlzIHNubXAgbG9nZ2luZyBmdW5jdGlvbiBhbGxvd3MgXGZCdmFyaWFibGVcZlAgYXJndW1lbnQgbGlzdCBnaXZlbiB0aGUgc3BlY2lmaWVkIGZvcm1hdCBhbmQgcHJpb3JpdHkuIENhbGxzIHRoZSBzbm1wX3Zsb2cgZnVuY3Rpb24uIFRoZSBkZWZhdWx0IGxvZ2ZpbGUgdGhpcyBmdW5jdGlvbiB3cml0ZXMgdG8gaXMgL3Zhci9sb2cvc25tcGQubG9nLgpAQCAtMTg1LDcgKzE4OCw3IEBACiAuaW4gKzFjCiBcZkJkZWxheWVkX2luc3RhbmNlLmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjc4IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTI4NiBvZiBmaWxlIHNubXBfbG9nZ2luZy5jLgogLlNTICJpbnQgc25tcF92bG9nIChpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKiBmb3JtYXQsIHZhX2xpc3QgYXApIgogLlBQCiBUaGlzIHNubXAgbG9nZ2luZyBmdW5jdGlvbiBhbGxvd3MgXGZCdmFyaWFibGVcZlAgYXJndW1lbnQgbGlzdCBnaXZlbiB0aGUgc3BlY2lmaWVkIHByaW9yaXR5LCBmb3JtYXQgYW5kIGEgcG9wdWxhdGVkIHZhX2xpc3Qgc3RydWN0dXJlLiBUaGUgZGVmYXVsdCBsb2dmaWxlIHRoaXMgZnVuY3Rpb24gd3JpdGVzIHRvIGlzIC92YXIvbG9nL3NubXBkLmxvZy4KQEAgLTI0MCw3ICsyNDMsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyMTcgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjI2IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9wZHUuMyBiL21hbi9uZXRzbm1wX3NubXBfcGR1LjMKaW5kZXggNzk2NDgyNy4uYWQ2NThmNCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc25tcF9wZHUuMworKysgYi9tYW4vbmV0c25tcF9zbm1wX3BkdS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzbm1wX3BkdSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJzbm1wX3BkdSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTAsNyArMTAsNyBAQAogLmJyCiAuUFAKIC5QUAotXGZDI2luY2x1ZGUgPHNubXBfYXBpLmg+XGZQCitcZkMjaW5jbHVkZSA8dHlwZXMuaD5cZlAKIC5TUyAiRGF0YSBGaWVsZHMiCiAKIC5pbiArMWMKQEAgLTE1MywxMzkgKzE1MywxMzkgQEAKIC5QUCAKIFRoZSBzbm1wIHByb3RvY29sIGRhdGEgdW5pdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTY5IG9mIGZpbGUgdHlwZXMuaC4KIC5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAidW5zaWduZWQgY2hhciBcZkJzbm1wX3BkdTo6YWdlbnRfYWRkclxmUFs0XSIKIC5QUAogVGhpcyBpcyBPTkxZIHVzZWQgZm9yIHYxIFRSQVBzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjM5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfcGR1Ojpjb21tYW5kXGZQIgogLlBQCiBUeXBlIG9mIHRoaXMgUERVLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgzIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxODAgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfcGR1Ojpjb21tdW5pdHlcZlAiCiAuUFAKIGNvbW11bml0eSBmb3Igb3V0Z29pbmcgcmVxdWVzdHMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMjQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9wZHU6OmNvbW11bml0eV9sZW5cZlAiCiAuUFAKIGxlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjkgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIyNiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9wZHU6OmNvbnRleHRFbmdpbmVJRFxmUCIKIC5QUAogY29udGV4dCBzbm1wRW5naW5lSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDggb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI0NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3BkdTo6Y29udGV4dEVuZ2luZUlETGVuXGZQIgogLlBQCiBMZW5ndGggb2YgY29udGV4dEVuZ2luZUlELiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ3IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY2hhciogXGZCc25tcF9wZHU6OmNvbnRleHROYW1lXGZQIgogLlBQCiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTUyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNDkgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9wZHU6OmNvbnRleHROYW1lTGVuXGZQIgogLlBQCiBMZW5ndGggb2YgY29udGV4dE5hbWUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNTEgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJvaWQqIFxmQnNubXBfcGR1OjplbnRlcnByaXNlXGZQIgogLlBQCiBTeXN0ZW0gT0lELiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzNSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjMyIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6ZXJyaW5kZXhcZlAiCiAuUFAKIEVycm9yIGluZGV4IChtYXhfcmVwZXRpdGlvbnMgaW4gR2V0QnVsaykuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6OmVycnN0YXRcZlAiCiAuUFAKIEVycm9yIHN0YXR1cyAobm9uX3JlcGVhdGVycyBpbiBHZXRCdWxrKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5MyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTkwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6bXNnaWRcZlAiCiAuUFAKIE1lc3NhZ2UgaWQgZm9yIFYzIG1lc3NhZ2VzIG5vdGU6IGluY3JlbWVudGVkIGZvciBlYWNoIHJldHJ5LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxODQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1OjpyZXFpZFxmUCIKIC5QUAogUmVxdWVzdCBpZCAtIG5vdGU6IG5vdCBpbmNyZW1lbnRlZCBvbiByZXRyaWVzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg1IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxODIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfcGR1OjpzZWN1cml0eUVuZ2luZUlEXGZQIgogLlBQCiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCBmb3Igc2VjdXJpdHkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNTYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1MyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3BkdTo6c2VjdXJpdHlFbmdpbmVJRExlblxmUCIKIC5QUAogTGVuZ3RoIG9mIHNlY3VyaXR5RW5naW5lSUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNTUgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJpbnQgXGZCc25tcF9wZHU6OnNlY3VyaXR5TGV2ZWxcZlAiCiAuUFAKIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5OSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfcGR1OjpzZWN1cml0eU5hbWVcZlAiCiAuUFAKIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE2MCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjU3IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfcGR1OjpzZWN1cml0eU5hbWVMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBzZWN1cml0eU5hbWUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTYyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNTkgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1OjpzZXNzaWRcZlAiCiAuUFAKIFNlc3Npb24gaWQgZm9yIEFnZW50WCBtZXNzYWdlcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5MSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTg4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6c3BlY2lmaWNfdHlwZVxmUCIKIC5QUAogc3BlY2lmaWMgdHlwZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0MCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjM3IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY29uc3Qgb2lkKiBcZkJzbm1wX3BkdTo6dERvbWFpblxmUCIKIC5QUAogVGhlIGFjdHVhbCB0cmFuc3BvcnQgZG9tYWluLiBUaGlzIFNIT1VMRCBOT1QgQkUgRlJFRSgpRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTcgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIxNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfbG9uZyBcZkJzbm1wX3BkdTo6dGltZVxmUCIKIC5QUAogVXB0aW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxOTQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1Ojp0cmFuc2lkXGZQIgogLlBQCiBVbmlxdWUgSUQgZm9yIGluY29taW5nIHRyYW5zYWN0aW9ucy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4OSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTg2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidm9pZCogXGZCc25tcF9wZHU6OnRyYW5zcG9ydF9kYXRhXGZQIgogLlBQCiBUcmFuc3BvcnQtc3BlY2lmaWMgb3BhcXVlIGRhdGEuIFRoaXMgcmVwbGFjZXMgdGhlIElQLWNlbnRyaWMgYWRkcmVzcyBmaWVsZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIwNyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6OnRyYXBfdHlwZVxmUCIKIC5QUAogdHJhcCB0eXBlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMzUgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1Ojp2ZXJzaW9uXGZQIgogLlBQCiBzbm1wIHZlcnNpb24gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTc4IG9mIGZpbGUgdHlwZXMuaC4KIAogLlNIICJBdXRob3IiCiAuUFAgCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMyBiL21hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zCmluZGV4IDAwZTM4M2YuLjA0YWI5NDQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzbm1wX3Nlc3Npb24iIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic25tcF9zZXNzaW9uIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0xMCw3ICsxMCw3IEBACiAuYnIKIC5QUAogLlBQCi1cZkMjaW5jbHVkZSA8c25tcF9hcGkuaD5cZlAKK1xmQyNpbmNsdWRlIDx0eXBlcy5oPlxmUAogLlNTICJEYXRhIEZpZWxkcyIKIAogLmluICsxYwpAQCAtMjA4LDcgKzIwOCw3IEBACiAuUFAgCiBUaGUgc25tcCBzZXNzaW9uIHN0cnVjdHVyZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODcgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI4NyBvZiBmaWxlIHR5cGVzLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgInVfY2hhciooKiBcZkJzbm1wX3Nlc3Npb246OmF1dGhlbnRpY2F0b3JcZlApKHVfY2hhciAqLCBzaXplX3QgKiwgdV9jaGFyICosIHNpemVfdCkiCkBAIC0yMTgsMjIyICsyMTgsMjIyIEBACiAuUFAKIEZ1bmN0aW9uIHRvIGludGVycHJldCBpbmNvbWluZyBkYXRhLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIxNCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzE0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidm9pZCogXGZCc25tcF9zZXNzaW9uOjpjYWxsYmFja19tYWdpY1xmUCIKIC5QUAogUG9pbnRlciB0byBkYXRhIHRoYXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSBjb25zaWRlciBpbXBvcnRhbnQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjE4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMTggb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfc2Vzc2lvbjo6Y29tbXVuaXR5XGZQIgogLlBQCiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzMCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzMwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6Y29tbXVuaXR5X2xlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbW11bml0eSBuYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzMiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzMyIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3Nlc3Npb246OmNvbnRleHRFbmdpbmVJRFxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0NCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OmNvbnRleHRFbmdpbmVJRExlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0NiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6Y29udGV4dE5hbWVcZlAiCiAuUFAKIGF1dGhvcml0YXRpdmUgY29udGV4dE5hbWUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OmNvbnRleHROYW1lTGVuXGZQIgogLlBQCiBMZW5ndGggb2YgY29udGV4dE5hbWUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjU0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNTQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2ludCBcZkJzbm1wX3Nlc3Npb246OmVuZ2luZUJvb3RzXGZQIgogLlBQCiBpbml0aWFsIGVuZ2luZUJvb3RzIGZvciByZW1vdGUgZW5naW5lIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQ4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNDggb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2ludCBcZkJzbm1wX3Nlc3Npb246OmVuZ2luZVRpbWVcZlAiCiAuUFAKIGluaXRpYWwgZW5naW5lVGltZSBmb3IgcmVtb3RlIGVuZ2luZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI1MCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzUwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyIFxmQnNubXBfc2Vzc2lvbjo6aXNBdXRob3JpdGF0aXZlXGZQIgogLlBQCiBhcmUgd2UgdGhlIGF1dGhvcml0YXRpdmUgZW5naW5lPyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzQyIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9zaG9ydCBcZkJzbm1wX3Nlc3Npb246OmxvY2FsX3BvcnRcZlAiCiAuUFAKIE15IFVEUCBwb3J0IG51bWJlciwgMCBmb3IgZGVmYXVsdCwgcGlja2VkIHJhbmRvbWx5LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwOCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzA4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY2hhciogXGZCc25tcF9zZXNzaW9uOjpsb2NhbG5hbWVcZlAiCiAuUFAKIE15IERvbWFpbiBuYW1lIG9yIGRvdHRlZCBJUCBhZGRyZXNzLCAwIGZvciBkZWZhdWx0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwNiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzA2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidm9pZCogXGZCc25tcF9zZXNzaW9uOjpteXZvaWRcZlAiCiAuUFAKIHVzZSBhcyB5b3Ugd2FudCBkYXRhIHVzZWQgYnkgJ1NOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSycgaGFuZGxpbmcgaW4gdGhlIGFnZW50IFhYWDogb3Igc2hvdWxkIHdlIGFkZCBhIG5ldyBmaWVsZCBpbnRvIHRoaXMgc3RydWN0dXJlPyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMwOCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNDA4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY2hhciogXGZCc25tcF9zZXNzaW9uOjpwYXJhbU5hbWVcZlAiCiAuUFAKIHRhcmdldCBwYXJhbSBuYW1lIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjk1IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzOTUgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJjaGFyKiBcZkJzbm1wX3Nlc3Npb246OnBlZXJuYW1lXGZQIgogLlBQCiBuYW1lIG9yIGFkZHJlc3Mgb2YgZGVmYXVsdCBwZWVyIChtYXkgaW5jbHVkZSB0cmFuc3BvcnQgc3BlY2lmaWVyIGFuZC9vciBwb3J0IG51bWJlcikgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwMiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnJjdk1zZ01heFNpemVcZlAiCiAuUFAKIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gcmVjZWl2ZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfc2hvcnQgXGZCc25tcF9zZXNzaW9uOjpyZW1vdGVfcG9ydFxmUCIKIC5QUAogVURQIHBvcnQgbnVtYmVyIG9mIHBlZXIuIChOTyBMT05HRVIgVVNFRCAtIFVTRSBwZWVybmFtZSBJTlNURUFEKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwNCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzA0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfc2Vzc2lvbjo6cmV0cmllc1xmUCIKIC5QUAogTnVtYmVyIG9mIHJldHJpZXMgYmVmb3JlIHRpbWVvdXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTk0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyOTQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJpbnQgXGZCc25tcF9zZXNzaW9uOjpzX2Vycm5vXGZQIgogLlBQCiBjb3B5IG9mIHN5c3RlbSBlcnJubyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyMCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzIwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfc2Vzc2lvbjo6c19zbm1wX2Vycm5vXGZQIgogLlBQCiBjb3B5IG9mIGxpYnJhcnkgZXJybm8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMyMiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5QXV0aEtleVxmUFtVU01fQVVUSF9LVV9MRU5dIgogLlBQCiBLdSBmb3IgYXV0aCBwcm90b2NvbCBYWFguIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjY5IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNjkgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUF1dGhLZXlMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBLdSBmb3IgYXV0aCBwcm90b2NvbC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3MSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUF1dGhMb2NhbEtleVxmUCIKIC5QUAogS3VsIGZvciBhdXRoIHByb3RvY29sLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3MyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzczIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlBdXRoTG9jYWxLZXlMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBLdWwgZm9yIGF1dGggcHJvdG9jb2wgWFhYLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzc1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkKiBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5QXV0aFByb3RvXGZQIgogLlBQCiBhdXRoIHByb3RvY29sIG9pZCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzY1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlBdXRoUHJvdG9MZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBhdXRoIHByb3RvY29sIG9pZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjcgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2NyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUVuZ2luZUlEXGZQIgogLlBQCiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI1NiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzU2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlFbmdpbmVJRExlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTggb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1OCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlJbmZvXGZQIgogLlBQCiBzZWN1cml0eSBcZkJtb2R1bGVcZlAgc3BlY2lmaWMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMDAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwMCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5TGV2ZWxcZlAiCiAuUFAKIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOTMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM5MyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5TW9kZWxcZlAiCiAuUFAKIHNubXAgc2VjdXJpdHkgbW9kZWwsIHYxLCB2MmMsIHVzbSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5MSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzkxIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY2hhciogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eU5hbWVcZlAiCiAuUFAKIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2MCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzYwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlOYW1lTGVuXGZQIgogLlBQCiBMZW5ndGggb2Ygc2VjdXJpdHlOYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzYyIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlQcml2S2V5XGZQW1VTTV9QUklWX0tVX0xFTl0iCiAuUFAKIEt1IGZvciBwcml2YWN5IHByb3RvY29sIFhYWC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5UHJpdktleUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIEt1IGZvciBwcml2IHByb3RvY29sLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzg0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5UHJpdkxvY2FsS2V5XGZQIgogLlBQCiBLdWwgZm9yIHByaXYgcHJvdG9jb2wuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjg2IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzODYgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eVByaXZMb2NhbEtleUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIEt1bCBmb3IgcHJpdiBwcm90b2NvbCBYWFguIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjg4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzODggb2YgZmlsZSB0eXBlcy5oLgogLlNTICJvaWQqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlQcml2UHJvdG9cZlAiCiAuUFAKIHByaXYgcHJvdG9jb2wgb2lkIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNzggb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eVByaXZQcm90b0xlblxmUCIKIC5QUAogTGVuZ3RoIG9mIHByaXYgcHJvdG9jb2wgb2lkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4MCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzgwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3Nlc3Npb246OnNlc3NpZFxmUCIKIC5QUAogU2Vzc2lvbiBpZCAtIEFnZW50WCBvbmx5LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyNCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzI0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c25kTXNnTWF4U2l6ZVxmUCIKIC5QUAogTGFyZ2VzdCBtZXNzYWdlIHRvIHRyeSB0byBzZW5kLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzNiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzM2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3Nlc3Npb246OnRpbWVvdXRcZlAiCiAuUFAKIE51bWJlciBvZiB1UyB1bnRpbCBmaXJzdCB0aW1lb3V0LCB0aGVuIGV4cG9uZW50aWFsIGJhY2tvZmYuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTk2IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyOTYgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfc2Vzc2lvbjo6dmVyc2lvblxmUCIKIC5QUAogc25tcCB2ZXJzaW9uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTkyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyOTIgb2YgZmlsZSB0eXBlcy5oLgogCiAuU0ggIkF1dGhvciIKIC5QUCAKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMgYi9tYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zCmluZGV4IDBmM2E0NzQuLjM0ZTIzN2YgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMKKysrIGIvbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic3Rhc2hfY2FjaGUiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic3Rhc2hfY2FjaGUiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTU4LDM3ICs1OCwzNyBAQAogLlBQCiB1cGRhdGVzIGEgZ2l2ZW4gY2FjaGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgbmVlZHMgdG8gb3Igbm90LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NSBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTkwIG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAiXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCoqIG5ldHNubXBfZXh0cmFjdF9zdGFzaF9jYWNoZSAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvKSIKIC5QUAogZXh0cmFjdHMgYSBwb2ludGVyIHRvIHRoZSBzdGFzaF9jYWNoZSBpbmZvIGZyb20gdGhlIHJlcWluZm8gc3RydWN0dXJlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExMyBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA5IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfYmFyZV9zdGFzaF9jYWNoZV9oYW5kbGVyICh2b2lkKSIKIC5QUAogcmV0dXJucyBhIHNpbmdsZSBzdGFzaF9jYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluICh3aXRoIGEgZml4ZWQgdGltZW91dCksIGJ1dCAqb25seSogaWYgdGhhdCBoYW5kbGVyIGNoYWluIGV4cGxpY2l0bHkgc3VwcG9ydHMgc3Rhc2ggY2FjaGUgcHJvY2Vzc2luZy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3OSBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzUgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF9zdGFzaF9jYWNoZV9oYW5kbGVyICh2b2lkKSIKIC5QUAogcmV0dXJucyBhIHN0YXNoX2NhY2hlIGhhbmRsZXIgc3ViLWNoYWluIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiAoYXJiaXRyYXJ5KSBoYW5kbGVyIGNoYWluLCB1c2luZyBhIGZpeGVkIGNhY2hlIHRpbWVvdXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODggb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg0IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfdGltZWRfYmFyZV9zdGFzaF9jYWNoZV9oYW5kbGVyIChpbnQgdGltZW91dCwgb2lkICogcm9vdG9pZCwgc2l6ZV90IHJvb3RvaWRfbGVuKSIKIC5QUAogcmV0dXJucyBhIHN0YXNoX2NhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4gKHdpdGggdGhlIHNwZWNpZmllZCB0aW1lb3V0IGFuZCByb290IE9JRCB2YWx1ZXMpLCBidXQgKm9ubHkqIGlmIHRoYXQgaGFuZGxlciBjaGFpbiBleHBsaWNpdGx5IHN1cHBvcnRzIHN0YXNoIGNhY2hlIHByb2Nlc3NpbmcuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDQgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwIG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfdGltZWRfc3Rhc2hfY2FjaGVfaGFuZGxlciAoaW50IHRpbWVvdXQsIG9pZCAqIHJvb3RvaWQsIHNpemVfdCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIHN1Yi1jaGFpbiB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gKGFyYml0cmFyeSkgaGFuZGxlciBjaGFpbiwgdXNpbmcgYSBjb25maWd1cmFibGUgY2FjaGUgdGltZW91dC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDEgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDk3IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2luaXRfc3Rhc2hfY2FjaGVfaGVscGVyICh2b2lkKSIKIC5QUAogaW5pdGlhbGl6ZXMgdGhlIHN0YXNoX2NhY2hlIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHN0YXNoX2NhY2hlIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM4IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMzMgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMyBiL21hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMwppbmRleCA0NzgyMjBlLi4yNDBiZGVhIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMKKysrIGIvbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzdGFzaF90b19uZXh0IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInN0YXNoX3RvX25leHQiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTI4LDcgKzI4LDcgQEAKIC5QUAogcmV0dXJucyBhIHN0YXNoX3RvX25leHQgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOCBvZiBmaWxlIHN0YXNoX3RvX25leHQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMyBvZiBmaWxlIHN0YXNoX3RvX25leHQuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF90YWJsZS4zIGIvbWFuL25ldHNubXBfdGFibGUuMwppbmRleCAwOWU1NTE1Li5hMDcwYTVhIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZS4zCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC03MSw2ICs3MSw5IEBACiAuYnIKIC5SSSAiXGZJY3JlYXRlcyBhIHRhYmxlIGhhbmRsZXIgZ2l2ZW4gdGhlIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gb2JqZWN0LCBpbnNlcnRzIGl0IGludG8gdGhlIHJlcXVlc3QgY2hhaW4gYW5kIHRoZW4gY2FsbHMgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgdG8gcmVnaXN0ZXIgdGhlIHRhYmxlIGludG8gdGhlIGFnZW50LiBcZlAiCiAudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGVcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisudGkgLTFjCiAuUkkgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogXGZCbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm9cZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0KSIKIC5icgogLlJJICJcZklFeHRyYWN0cyB0aGUgcHJvY2Vzc2VkIHRhYmxlIGluZm9ybWF0aW9uIGZyb20gYSBnaXZlbiByZXF1ZXN0LiBcZlAiCkBAIC0xMTQsNiArMTE3LDkgQEAKIC5SSSAiaW50IFxmQm5ldHNubXBfY2hlY2tfZ2V0bmV4dF9yZXBseVxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIG9pZCAqcHJlZml4LCBzaXplX3QgcHJlZml4X2xlbiwgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICpuZXd2YXIsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqKm91dHZhcikiCiAuYnIKIC5SSSAiXGZJY2hlY2tzIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGFnYWluc3QgdGhlIGN1cnJlbnQgZGF0YSBiZWluZyBwYXNzZWQgaW4gaWYgaXRzIGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdCBvaWQgYnV0IGxlc3MgdGhhbiB0aGUgY3VycmVudCB2YWxpZCByZXR1cm4sIHNldCB0aGUgY3VycmVudCB2YWxpZCByZXR1cm4gdG8gdGhlIG5ldyB2YWx1ZS4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZVxmUCAoXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqdHJpKSIKKy5icgogLmluIC0xYwogLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKIC5QUCAKQEAgLTEzMCw3ICsxMzYsNyBAQAogLlBQCiBjaGVja3MgdGhlIG9yaWdpbmFsIHJlcXVlc3QgYWdhaW5zdCB0aGUgY3VycmVudCBkYXRhIGJlaW5nIHBhc3NlZCBpbiBpZiBpdHMgZ3JlYXRlciB0aGFuIHRoZSByZXF1ZXN0IG9pZCBidXQgbGVzcyB0aGFuIHRoZSBjdXJyZW50IHZhbGlkIHJldHVybiwgc2V0IHRoZSBjdXJyZW50IHZhbGlkIHJldHVybiB0byB0aGUgbmV3IHZhbHVlLiByZXR1cm5zIDEgaWYgb3V0dmFyIHdhcyByZXBsYWNlZCB3aXRoIHRoZSBvaWQgZnJvbSBuZXd2YXIgKHN1Y2Nlc3MpLiByZXR1cm5zIDAgaWYgbm90LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg4MSBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTI5IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9cZlAqIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBFeHRyYWN0cyB0aGUgcHJvY2Vzc2VkIHRhYmxlIGluZm9ybWF0aW9uIGZyb20gYSBnaXZlbiByZXF1ZXN0LiBDYWxsIHRoaXMgZnJvbSBzdWJoYW5kbGVycyBvbiBhIHJlcXVlc3QgdG8gZXh0cmFjdCB0aGUgcHJvY2Vzc2VkIG5ldHNubXBfcmVxdWVzdF9pbmZvIGluZm9ybWF0aW9uLiBUaGUgcmVzdWx0aW5nIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBpbmRleCB2YWx1ZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVyLgpAQCAtMTQ3LDEyICsxNTMsMTIgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjUgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0MyBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAqIG5ldHNubXBfZmluZF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8pIgogLlBQCiBleHRyYWN0cyB0aGUgcmVnaXN0ZXJlZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCBmcm9tIGEgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBvYmplY3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzQgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1MiBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIgKFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJyZXEpIgogLlBQCiBHaXZlbiBhIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gb2JqZWN0LCBjcmVhdGVzIGEgdGFibGUgaGFuZGxlci4gWW91IGNhbiB1c2UgdGhpcyB0YWJsZSBoYW5kbGVyIGJ5IGluamVjdGluZyBpdCBpbnRvIGEgY2FsbGluZyBjaGFpbi4gV2hlbiB0aGUgaGFuZGxlciBnZXRzIGNhbGxlZCwgaXQnbGwgZG8gcHJvY2Vzc2luZyBhbmQgc3RvcmUgaXQncyBpbmZvcm1hdGlvbiBpbnRvIHRoZSByZXF1ZXN0LT5wYXJlbnRfZGF0YSBzdHJ1Y3R1cmUuCkBAIC0xNzEsMjIgKzE3NywyNiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg1IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5MSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYnJlcSkiCiAuUFAKIGNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgaW5zZXJ0cyBpdCBpbnRvIHRoZSByZXF1ZXN0IGNoYWluIGFuZCB0aGVuIGNhbGxzIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIHRvIHJlZ2lzdGVyIHRoZSB0YWJsZSBpbnRvIHRoZSBhZ2VudC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDggb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExNCBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfc3BhcnNlX3RhYmxlX2hhbmRsZXJfZ2V0ICh2b2lkKSIKIC5QUAogY3JlYXRlIHNwYXJzZSB0YWJsZSBoYW5kbGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzIyIG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3NDUgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF9zcGFyc2VfdGFibGVfcmVnaXN0ZXIgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFicmVxKSIKIC5QUAogY3JlYXRlcyBhIHRhYmxlIGhhbmRsZXIgZ2l2ZW4gdGhlIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gb2JqZWN0LCBpbnNlcnRzIGl0IGludG8gdGhlIHJlcXVlc3QgY2hhaW4gYW5kIHRoZW4gY2FsbHMgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgdG8gcmVnaXN0ZXIgdGhlIHRhYmxlIGludG8gdGhlIGFnZW50LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDczMyBvZiBmaWxlIHRhYmxlLmMuCitoYW5kbGVyMSBpcyBpbiByZWdpbmZvLi4uIHJlbW92ZSBhbmQgZnJlZT8/CisuUFAKK2JvdGggaGFuZGxlcnMgbm93IGluIHJlZ2luZm8sIHNvIG5vdGhpbmcgdG8gZG8gb24gZXJyb3IgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3NTYgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9idWlsZF9vaWQgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdGFibGVfaW5mbykiCiAuUFAKIGdpdmVuIGEgcmVnaXN0cmF0aW9uIGluZm8gb2JqZWN0LCBhIHJlcXVlc3Qgb2JqZWN0IGFuZCB0aGUgdGFibGUgaW5mbyBvYmplY3QgaXQgYnVpbGRzIHRoZSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUgb2lkIGZyb20gdGhlIGluZGV4IHZhbHVlcyBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvdW5kIGluIHRoZSB0YWJsZV9pbmZvIG9iamVjdC4gSW5kZXggdmFsdWVzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgdGFibGVfaW5mbyB2YXJiaW5kcy4gCkBAIC0xOTUsMjcgKzIwNSwyNyBAQAogLlBQCiAuY29sdW1uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzg0IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4MzIgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9idWlsZF9vaWRfZnJvbV9pbmRleCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9cZlAgKiB0YWJsZV9pbmZvKSIKIC5QUAogZ2l2ZW4gYSByZWdpc3RyYXRpb24gaW5mbyBvYmplY3QsIGEgcmVxdWVzdCBvYmplY3QgYW5kIHRoZSB0YWJsZSBpbmZvIG9iamVjdCBpdCBidWlsZHMgdGhlIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSBvaWQgZnJvbSB0aGUgaW5kZXggdmFsdWVzIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIHRhYmxlX2luZm8gb2JqZWN0LiBJbmRleCB2YWx1ZXMgYXJlIGV4dHJhY3RlZCBmcm9tIHRoZSB0YWJsZV9pbmZvIGluZGV4IG9pZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MjEgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg2OSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX2J1aWxkX3Jlc3VsdCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9cZlAgKiB0YWJsZV9pbmZvLCB1X2NoYXIgdHlwZSwgdV9jaGFyICogcmVzdWx0LCBzaXplX3QgcmVzdWx0X2xlbikiCiAuUFAKIEJ1aWxkcyB0aGUgcmVzdWx0IHRvIGJlIHJldHVybmVkIHRvIHRoZSBhZ2VudCBnaXZlbiB0aGUgdGFibGUgaW5mb3JtYXRpb24uIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiByZXN1bHRzIGZyb20gbG93ZWwgbGV2ZWwgaGFuZGxlcnMgdG8gdGhlIGFnZW50LiBJdCB0YWtlcyBjYXJlIG9mIGJ1aWxkaW5nIHRoZSBwcm9wZXIgcmVzdWx0aW5nIG9pZCAoY29udGFpbmluZyBwcm9wZXIgaW5kZXhpbmcpIGFuZCBpbnNlcnRzIHRoZSByZXN1bHQgdmFsdWUgaW50byB0aGUgcmV0dXJuaW5nIHZhcmJpbmQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzUxIG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3OTkgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF91cGRhdGVfaW5kZXhlc19mcm9tX3ZhcmlhYmxlX2xpc3QgKFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdHJpKSIKIC5QUAogYnVpbGRzIGFuIG9pZCBnaXZlbiBhIHNldCBvZiBpbmRleGVzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg2MyBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTExIG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdXBkYXRlX3ZhcmlhYmxlX2xpc3RfZnJvbV9pbmRleCAoXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9cZlAgKiB0cmkpIgogLlBQCiBwYXJzZXMgYW4gT0lEIGludG8gdGFibGUgaW5kZXhzZXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NDcgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg5NSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgImludCB0YWJsZV9oZWxwZXJfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIgogLlBQCiBpbXBsZW1lbnRzIHRoZSB0YWJsZSBoZWxwZXIgaGFuZGxlciAKQEAgLTIyOCw3ICsyMzgsNyBAQAogLlBQCiBmb3IgbG9vcCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0MiBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTYwIG9mIGZpbGUgdGFibGUuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF90YWJsZV9hcnJheS4zIGIvbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMwppbmRleCA0ZGViNDA0Li4zOGIxYmVjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9hcnJheS4zCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX2FycmF5IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2FycmF5IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC02NCwyMiArNjQsMjIgQEAKIC5QUAogZmluZCB0aGUgY29udGV4dCBkYXRhIHVzZWQgYnkgdGhlIHRhYmxlX2FycmF5IGhlbHBlciAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyOSBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMwIG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9maW5kX3RhYmxlX2FycmF5X2hhbmRsZXIgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogZmluZCB0aGUgaGFuZGxlciBmb3IgdGhlIHRhYmxlX2FycmF5IGhlbHBlci4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMTIgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIxMyBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX2FycmF5X2NoZWNrX3Jvd19zdGF0dXMgKFxmQm5ldHNubXBfdGFibGVfYXJyYXlfY2FsbGJhY2tzXGZQICogY2IsIFxmQm5ldHNubXBfcmVxdWVzdF9ncm91cFxmUCAqIGFnLCBsb25nICogcnNfbmV3LCBsb25nICogcnNfb2xkKSIKIC5QUAogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gdmFsaWRhdGUgUm93U3RhdHVzIHRyYW5zaXRpb25zLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzNiBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjM3IG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KIC5TUyAiaW50IG5ldHNubXBfdGFibGVfY29udGFpbmVyX3JlZ2lzdGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYnJlZywgXGZCbmV0c25tcF90YWJsZV9hcnJheV9jYWxsYmFja3NcZlAgKiBjYiwgXGZCbmV0c25tcF9jb250YWluZXJcZlAgKiBjb250YWluZXIsIGludCBncm91cF9yb3dzKSIKIC5QUAogcmVnaXN0ZXIgc3BlY2lmaWVkIGNhbGxiYWNrcyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS9vaWQuIElmIHRoZSBncm91cF9yb3dzIHBhcmFtZXRlciBpcyBzZXQsIHRoZSByb3cgcmVsYXRlZCBjYWxsYmFja3Mgd2lsbCBiZSBjYWxsZWQgb25jZSBmb3IgZWFjaCB1bmlxdWUgcm93IGluZGV4LiBPdGhlcndpc2UsIGVhY2ggY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgb25seSBvbmNlLCBmb3IgYWxsIG9iamVjdHMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQ5IG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTAgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zIGIvbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMKaW5kZXggYzA4NzI1OC4uZTI1ZWMwMiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX2NvbnRhaW5lciIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZV9jb250YWluZXIiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTMyLDYgKzMyLDkgQEAKIC5SSSAiaW50IFxmQm5ldHNubXBfY29udGFpbmVyX3RhYmxlX3JlZ2lzdGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICp0YWJyZWcsIFxmQm5ldHNubXBfY29udGFpbmVyXGZQICpjb250YWluZXIsIGNoYXIga2V5X3R5cGUpIgogLmJyCiAudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV91bnJlZ2lzdGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIFxmQm5ldHNubXBfY29udGFpbmVyX3RhYmxlX2NvbnRhaW5lcl9leHRyYWN0XGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCiAuYnIKIC5SSSAiXGZJcmV0cmlldmUgdGhlIGNvbnRhaW5lciB1c2VkIGJ5IHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyIFxmUCIKQEAgLTg3LDE3ICs5MCwxNyBAQAogLlBQCiByZXRyaWV2ZSB0aGUgY29udGFpbmVyIHVzZWQgYnkgdGhlIHRhYmxlX2NvbnRhaW5lciBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMjAgb2YgZmlsZSB0YWJsZV9jb250YWluZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzMzkgb2YgZmlsZSB0YWJsZV9jb250YWluZXIuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQgKFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJyZWcsIFxmQm5ldHNubXBfY29udGFpbmVyXGZQICogY29udGFpbmVyLCBjaGFyIGtleV90eXBlKSIKIC5QUAogcmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI1NCBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1NSBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgogLlNTICJ2b2lkIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19pbnNlcnQgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgXGZCbmV0c25tcF9pbmRleFxmUCAqIHJvdykiCiAuUFAKIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2NvbnRhaW5lciBlbnRyeSBpbnRvIGEgcmVxdWVzdCBsaXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzUxIG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzcwIG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCiAuU1MgIlxmQm5ldHNubXBfaW5kZXhcZlAqIG5ldHNubXBfdGFibGVfaW5kZXhfZmluZF9uZXh0X3JvdyAoXGZCbmV0c25tcF9jb250YWluZXJcZlAgKiBjLCBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIHRibHJlcSkiCiAuUFAKIGRlcHJlY2F0ZWQsIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5IG9ubHkgZXhwZWN0ZWQgaW1wYWN0IHRvIHJlbW92ZTogbm9uZQpAQCAtMTExLDcgKzExNCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzIxIG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzQwIG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfZGF0YS4zIGIvbWFuL25ldHNubXBfdGFibGVfZGF0YS4zCmluZGV4IGUzMzI5MGIuLmM4MWQ4NzQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9kYXRhLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX2RhdGEiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfZGF0YSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNDMsNyArNDMsNyBAQAogLmJyCiAuUkkgIlxmSUFkZHMgYSByb3cgb2YgZGF0YSB0byBhIGdpdmVuIHRhYmxlIChzdG9yZWQgaW4gcHJvcGVyIGxleG9ncmFwaGljYWwgb3JkZXIpLiBcZlAiCiAudGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF90YWJsZV9kYXRhX3JlcGxhY2Vfcm93XGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKnRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqb3JpZ3JvdywgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKm5ld3JvdykiCisuUkkgInZvaWQgXGZCbmV0c25tcF90YWJsZV9kYXRhX3JlcGxhY2Vfcm93XGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKnRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqb3JpZ3JvdywgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKm5ld3JvdykiCiAuYnIKIC5SSSAiXGZJc3dhcHMgb3V0IG9yaWdyb3cgd2l0aCBuZXdyb3cuIFxmUCIKIC50aSAtMWMKQEAgLTgyLDYgKzgyLDkgQEAKIC5icgogLlJJICJcZklyZWdpc3RlcnMgYSBoYW5kbGVyIGFzIGEgcmVhZC1vbmx5IGRhdGEgdGFibGUgSWYgdGFibGVfaW5mbyAhPSBOVUxMLCBpdCByZWdpc3RlcnMgaXQgYXMgYSBub3JtYWwgdGFibGUgdG9vLiBcZlAiCiAudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGVfZGF0YVxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfdGFibGVfZGF0YV9oZWxwZXJfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCiAuYnIKIC50aSAtMWMKQEAgLTk3LDcgKzEwMCw3IEBACiAuYnIKIC5SSSAiXGZJZXh0cmFjdHMgdGhlIGRhdGEgZnJvbSB0aGUgcm93IGJlaW5nIGFjY2Vzc2VkIHBhc3NlZCBmcm9tIHRoZSB0YWJsZV9kYXRhIGhlbHBlciBcZlAiCiAudGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9pbnNlcnRfdGFibGVfcm93XGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKnJvdykiCisuUkkgInZvaWQgXGZCbmV0c25tcF9pbnNlcnRfdGFibGVfcm93XGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKnJvdykiCiAuYnIKIC5SSSAiXGZJaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGFibGVfZGF0YSByb3cgaW50byBhIHJlcXVlc3QgXGZQIgogLnRpIC0xYwpAQCAtMTgxLDcgKzE4NCw3IEBACiAuUFAKIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIHRhYmxlIGRhdGEgc2V0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTIgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTMgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQKiBuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhX3JvdyAodm9pZCkiCiAuUFAKIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIHRhYmxlIGRhdGEgc2V0IApAQCAtMTkwLDQyICsxOTMsNDIgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2MiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2MyBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGUgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSB0YWJsZSBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUgdGFibGVfZGF0YSBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NTYgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjYyIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF9leHRyYWN0X3RhYmxlX3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgdGhlIHJvdyBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUgdGFibGVfZGF0YSBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NjQgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjcwIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJ2b2lkKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfcm93X2RhdGEgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSBkYXRhIGZyb20gdGhlIHJvdyBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUgdGFibGVfZGF0YSBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NzMgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjc5IG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF90YWJsZV9kYXRhX2hhbmRsZXIgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlKSIKIC5QUAogQ3JlYXRlcyBhIHRhYmxlX2RhdGEgaGFuZGxlciBhbmQgcmV0dXJucyBpdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzggb2YgZmlsZSB0YWJsZV9kYXRhLmMuCi0uU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9pbnNlcnRfdGFibGVfcm93IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKK0RlZmluaXRpb24gYXQgbGluZSAzNzcgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCisuU1MgInZvaWQgbmV0c25tcF9pbnNlcnRfdGFibGVfcm93IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGFibGVfZGF0YSByb3cgaW50byBhIHJlcXVlc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2ODUgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjkxIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdGFibGVfZGF0YSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFibGVfaW5mbykiCiAuUFAKIHJlZ2lzdGVycyBhIGhhbmRsZXIgYXMgYSByZWFkLW9ubHkgZGF0YSB0YWJsZSBJZiB0YWJsZV9pbmZvICE9IE5VTEwsIGl0IHJlZ2lzdGVycyBpdCBhcyBhIG5vcm1hbCB0YWJsZSB0b28uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDEyIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQxMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFibGVfaW5mbykiCiAuUFAKIHJlZ2lzdGVycyBhIGhhbmRsZXIgYXMgYSBkYXRhIHRhYmxlLiBJZiB0YWJsZV9pbmZvICE9IE5VTEwsIGl0IHJlZ2lzdGVycyBpdCBhcyBhIG5vcm1hbCB0YWJsZSB0b28uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDAxIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwMCBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfdGFibGVfZGF0YV9hZGRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiBBZGRzIGEgcm93IG9mIGRhdGEgdG8gYSBnaXZlbiB0YWJsZSAoc3RvcmVkIGluIHByb3BlciBsZXhvZ3JhcGhpY2FsIG9yZGVyKS4gcmV0dXJucyBTTk1QRVJSX1NVQ0NFU1Mgb24gc3VjY2Vzc2Z1bCBhZGRpdGlvbi4gb3IgU05NUEVSUl9HRU5FUlIgb24gZmFpbHVyZSAoRS5HLiwgaW5kZXhlcyBhbHJlYWR5IGV4aXN0ZWQpIApAQCAtMjM3LDcgKzI0MCw3IEBACiAuUFAKIGNsb25lcyBhIGRhdGEgcm93LiBET0VTIE5PVCBDTE9ORSBUSEUgQ09OVEFJTkVEIERBVEEuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzAgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzEgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGRlbGV0ZXMgYSByb3cncyBtZW1vcnkuIHJldHVybnMgdGhlIHZvaWQgZGF0YSB0aGF0IGl0IGRvZXNuJ3Qga25vdyBob3cgdG8gZGVsZXRlLiAKQEAgLTI0NywyMiArMjUwLDIyIEBACiAuUFAKIGZpbmRzIHRoZSBkYXRhIGluICdkYXRhbGlzdCcgc3RvcmVkIGF0ICdpbmRleGVzJyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4MTcgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFfZ2V0X2ZpcnN0X3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUpIgogLlBQCiByZXR1cm5zIHRoZSBmaXJzdCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzkyIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc5OCBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9nZXRfZnJvbV9vaWQgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBvaWQgKiBzZWFyY2hmb3IsIHNpemVfdCBzZWFyY2hmb3JfbGVuKSIKIC5QUAogZmluZHMgdGhlIGRhdGEgaW4gJ2RhdGFsaXN0JyBzdG9yZWQgYXQgdGhlIHNlYXJjaGZvciBvaWQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MjUgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODMxIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX2dldF9uZXh0X3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgbmV4dCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODAxIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgwNyBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90YWJsZV9kYXRhX3JlbW92ZV9hbmRfZGVsZXRlX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogcmVtb3ZlcyBhbmQgZnJlZXMgYSByb3cgb2YgZGF0YSB0byBhIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIHRoZSB2b2lkICogcmV0dXJucyB0aGUgdm9pZCAqIGRhdGEgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbi4gb3IgTlVMTCBvbiBmYWlsdXJlIChiYWQgYXJndW1lbnRzKSAKQEAgLTI3Myw3ICsyNzYsNyBAQAogcmVtb3ZlcyBhIHJvdyBvZiBkYXRhIHRvIGEgZ2l2ZW4gdGFibGUgYW5kIHJldHVybnMgaXQgKG5vIGZyZWUncyBjYWxsZWQpIHJldHVybnMgdGhlIHJvdyBwb2ludGVyIGl0c2VsZiBvbiBzdWNjZXNzZnVsIHJlbW92aW5nLiBvciBOVUxMIG9uIGZhaWx1cmUgKGJhZCBhcmd1bWVudHMpIAogLlBQCiBEZWZpbml0aW9uIGF0IGxpbmUgMjQ4IG9mIGZpbGUgdGFibGVfZGF0YS5jLgotLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfdGFibGVfZGF0YV9yZXBsYWNlX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogb3JpZ3JvdywgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBuZXdyb3cpIgorLlNTICJ2b2lkIG5ldHNubXBfdGFibGVfZGF0YV9yZXBsYWNlX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogb3JpZ3JvdywgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBuZXdyb3cpIgogLlBQCiBzd2FwcyBvdXQgb3JpZ3JvdyB3aXRoIG5ld3Jvdy4gVGhpcyBkb2VzICpub3QqIGRlbGV0ZS9mcmVlIGFueXRoaW5nISAKIC5QUApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zIGIvbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zCmluZGV4IDhhMDFjM2MuLjRhMGNkNGMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX2RhdGFzZXQiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfZGF0YXNldCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTMsMTcgKzEzLDYgQEAKIC5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfdGFibGVfZGF0YXNldFxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIFxmQm5ldHNubXBfY3JlYXRlX3RhYmxlX2RhdGFfc2V0XGZQIChjb25zdCBjaGFyICp0YWJsZV9uYW1lKSIKLS5icgotLlJJICJcZklDcmVhdGUgYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IHN0cnVjdHVyZSBnaXZlbiBhIHRhYmxlX2RhdGEgZGVmaW5pdGlvbi4gXGZQIgotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICp0YWJsZV9zZXQpIgotLmJyCi0udGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQICogXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3dcZlAgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgotLmJyCi0uUkkgIlxmSWNsb25lcyBhIGRhdGFzZXQgcm93LCBpbmNsdWRpbmcgYWxsIGRhdGEuIFxmUCIKLS50aSAtMWMKIC5SSSAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICogXGZCbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9kYXRhXGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKmRhdGEpIgogLmJyCiAuUkkgIlxmSWRlbGV0ZXMgYSBzaW5nbGUgZGF0YXNldCB0YWJsZSBkYXRhLiBcZlAiCkBAIC01Miw2ICs0MSwxNyBAQAogLmJyCiAuUkkgIlxmSXJlbW92ZXMgYSByb3cgZnJvbSB0aGUgdGFibGUgYW5kIHRoZW4gZGVsZXRlcyBpdCAoYW5kIGFsbCBpdHMgZGF0YSkgXGZQIgogLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogXGZCbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YV9zZXRcZlAgKGNvbnN0IGNoYXIgKnRhYmxlX25hbWUpIgorLmJyCisuUkkgIlxmSUNyZWF0ZSBhIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgc3RydWN0dXJlIGdpdmVuIGEgdGFibGVfZGF0YSBkZWZpbml0aW9uLiBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXRcZlAgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKnRhYmxlX3NldCkiCisuYnIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2Nsb25lX3Jvd1xmUCAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKnJvdykiCisuYnIKKy5SSSAiXGZJY2xvbmVzIGEgZGF0YXNldCByb3csIGluY2x1ZGluZyBhbGwgZGF0YS4gXGZQIgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfY3JlYXRlX3Jvd19mcm9tX2RlZmF1bHRzXGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKmRlZnJvdykiCiAuYnIKIC5SSSAiXGZJY3JlYXRlcyBhIG5ldyByb3cgZnJvbSBhbiBleGlzdGluZyBkZWZpbmVkIGRlZmF1bHQgc2V0IFxmUCIKQEAgLTExNSw3ICsxMTUsNyBAQAogLmJyCiAuUkkgIlxmSW1hcmtzIGEgZ2l2ZW4gY29sdW1uIGluIGEgcm93IGFzIHdyaXRhYmxlIG9yIG5vdC4gXGZQIgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9zZXRfcm93X2NvbHVtblxmUCAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKnJvdywgdW5zaWduZWQgaW50IGNvbHVtbiwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKnZhbHVlLCBzaXplX3QgdmFsdWVfbGVuKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfc2V0X3Jvd19jb2x1bW5cZlAgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3csIHVuc2lnbmVkIGludCBjb2x1bW4sIGludCB0eXBlLCBjb25zdCB2b2lkICp2YWx1ZSwgc2l6ZV90IHZhbHVlX2xlbikiCiAuYnIKIC5SSSAiXGZJc2V0cyBhIGdpdmVuIGNvbHVtbiBpbiBhIHJvdyB3aXRoIGRhdGEgZ2l2ZW4gYSB0eXBlLCB2YWx1ZSwgYW5kIGxlbmd0aC4gXGZQIgogLnRpIC0xYwpAQCAtMTQ0LDIyICsxNDQsMjIgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NyBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNjUgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAqIG5ldHNubXBfZXh0cmFjdF90YWJsZV9kYXRhX3NldCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IHBvaW50ZXIgZnJvbSBhIGdpdmVuIHJlcXVlc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4Mzggb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODM5IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAqIG5ldHNubXBfZXh0cmFjdF90YWJsZV9kYXRhX3NldF9jb2x1bW4gKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgdW5zaWduZWQgaW50IGNvbHVtbikiCiAuUFAKIGV4dHJhY3RzIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBwb2ludGVyIGZyb20gYSBnaXZlbiByZXF1ZXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODQ4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg0OSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfdGFibGVfZGF0YV9zZXRfaGFuZGxlciAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIGRhdGFfc2V0KSIKIC5QUAogR2l2ZW4gYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IGRlZmluaXRpb24sIGNyZWF0ZSBhIGhhbmRsZXIgZm9yIGl0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3MiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNjMgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgImludCBuZXRzbm1wX21hcmtfcm93X2NvbHVtbl93cml0YWJsZSAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3csIGludCBjb2x1bW4sIGludCB3cml0YWJsZSkiCiAuUFAKIG1hcmtzIGEgZ2l2ZW4gY29sdW1uIGluIGEgcm93IGFzIHdyaXRhYmxlIG9yIG5vdC4gCkBAIC0xNjgsNyArMTY4LDcgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjE0IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyMTcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgInZvaWQgbmV0c25tcF9yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZV9zZXQsIGNoYXIgKiByZWdpc3RyYXRpb25fbmFtZSkiCiAuUFAKIHJlZ2lzdGVycyBhIHRhYmxlX2RhdGFzZXQgc28gdGhhdCB0aGUgJ2FkZF9yb3cnIHNubXBkLmNvbmYgdG9rZW4gY2FuIGJlIHVzZWQgdG8gYWRkIGRhdGEgdG8gdGhpcyB0YWJsZS4gSWYgcmVnaXN0cmF0aW9uX25hbWUgaXMgTlVMTCB0aGVuIHRoZSBuYW1lIHVzZWQgd2hlbiB0aGUgdGFibGUgd2FzIGNyZWF0ZWQgd2lsbCBiZSB1c2VkIGluc3RlYWQuCkBAIC0xODQsNyArMTg0LDcgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NzUgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODc2IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhX3NldCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiBkYXRhX3NldCwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlciBhIGdpdmVuIGRhdGFfc2V0IGF0IGEgZ2l2ZW4gb2lkIChzcGVjaWZpZWQgaW4gdGhlIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gcG9pbnRlcikuIFRoZSByZWdpbmZvLT5oYW5kbGVyLT5hY2Nlc3NfbWV0aG9kICptYXkqIGJlIG51bGwgaWYgdGhlIGNhbGwgZG9lc24ndCBldmVyIHdhbnQgdG8gYmUgY2FsbGVkIGZvciBTTk1QIG9wZXJhdGlvbnMuIApAQCAtMTkzLDggKzE5Myw4IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzk4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgotLlNTICJpbnQgbmV0c25tcF9zZXRfcm93X2NvbHVtbiAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3csIHVuc2lnbmVkIGludCBjb2x1bW4sIGludCB0eXBlLCBjb25zdCBjaGFyICogdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pIgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4OSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KKy5TUyAiaW50IG5ldHNubXBfc2V0X3Jvd19jb2x1bW4gKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgdmFsdWVfbGVuKSIKIC5QUAogc2V0cyBhIGdpdmVuIGNvbHVtbiBpbiBhIHJvdyB3aXRoIGRhdGEgZ2l2ZW4gYSB0eXBlLCB2YWx1ZSwgYW5kIGxlbmd0aC4gRGF0YSBpcyBtZW1kdXAnZWQgYnkgdGhlIGZ1bmN0aW9uLiAKIC5QUApAQCAtMjAyLDMyICsyMDIsMzIgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjQ5IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyNTIgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2Nsb25lX3JvdyAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiBjbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwOCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOTYgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2NyZWF0ZV9yb3dfZnJvbV9kZWZhdWx0cyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICogZGVmcm93KSIKIC5QUAogY3JlYXRlcyBhIG5ldyByb3cgZnJvbSBhbiBleGlzdGluZyBkZWZpbmVkIGRlZmF1bHQgc2V0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQyIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI0NCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2ZpbmRfY29sdW1uIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKiBzdGFydCwgdW5zaWduZWQgaW50IGNvbHVtbikiCiAuUFAKIEZpbmRzIGEgY29sdW1uIHdpdGhpbiBhIGdpdmVuIHN0b3JhZ2Ugc2V0LCBnaXZlbiB0aGUgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHN0b3JhZ2Ugc2V0IGxpc3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTIwMiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjA1IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9nZXRfZmlyc3Rfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUpIgogLlBQCiByZXR1cm5zIHRoZSBmaXJzdCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE3MSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTc0IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9nZXRfbmV4dF9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiByZXR1cm5zIHRoZSBuZXh0IHJvdyBpbiB0aGUgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTc4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExODEgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgInZvaWQgbmV0c25tcF90YWJsZV9kYXRhc2V0X2FkZF9pbmRleCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRhYmxlLCB1X2NoYXIgdHlwZSkiCiAuUFAKIGFkZHMgYW4gaW5kZXggdG8gdGhlIHRhYmxlLiBDYWxsIHRoaXMgcmVwZWF0bHkgZm9yIGVhY2ggaW5kZXguIApAQCAtMjM2LDcgKzIzNiw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMwMyBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzA2IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9hZGRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogYWRkcyBhIG5ldyByb3cgdG8gYSBkYXRhc2V0IHRhYmxlIApAQCAtMjQ1LDQ5ICsyNDUsNDkgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTE3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfYWxsX2RhdGEgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCAqIGRhdGEpIgogLlBQCiBkZWxldGVzIGFsbCB0aGUgZGF0YSBmcm9tIHRoaXMgXGZCbm9kZVxmUCBhbmQgYmV5b25kIGluIHRoZSBsaW5rZWQgbGlzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE2NCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5NCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX2RhdGEgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCAqIGRhdGEpIgogLlBQCiBkZWxldGVzIGEgc2luZ2xlIGRhdGFzZXQgdGFibGUgZGF0YS4gcmV0dXJucyB0aGUgKHBvc3NpYmx5IHN0aWxsIGdvb2QpIG5leHQgcG9pbnRlciBvZiB0aGUgZGVsZXRlZCBkYXRhIG9iamVjdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNTEgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODEgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogZGVsZXRlcyBhbGwgdGhlIGRhdGEgZnJvbSB0aGlzIFxmQm5vZGVcZlAgYW5kIGJleW9uZCBpbiB0aGUgbGlua2VkIGxpc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNzQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA0IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9yZW1vdmVfYW5kX2RlbGV0ZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiByZW1vdmVzIGEgcm93IGZyb20gdGhlIHRhYmxlIGFuZCB0aGVuIGRlbGV0ZXMgaXQgKGFuZCBhbGwgaXRzIGRhdGEpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjE5IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0OSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfcmVtb3ZlX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIHJlbW92ZXMgYSByb3cgZnJvbSB0aGUgdGFibGUsIGJ1dCBkb2Vzbid0IGRlbGV0ZS9mcmVlIHRoZSBjb2x1bW4gdmFsdWVzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjA4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzOCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfcmVwbGFjZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBvcmlncm93LCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIG5ld3JvdykiCiAuUFAKIGFkZHMgYSBuZXcgcm93IHRvIGEgZGF0YXNldCB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NyBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX3NldF9hZGRfZGVmYXVsdF9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZV9zZXQsIHVuc2lnbmVkIGludCBjb2x1bW4sIGludCB0eXBlLCBpbnQgd3JpdGFibGUsIHZvaWQgKiBkZWZhdWx0X3ZhbHVlLCBzaXplX3QgZGVmYXVsdF92YWx1ZV9sZW4pIgogLlBQCiBhZGRzIGEgbmV3IGRlZmF1bHQgcm93IHRvIGEgdGFibGVfc2V0LiBBcmd1bWVudHMgc2hvdWxkIGJlIHRoZSB0YWJsZV9zZXQsIGNvbHVtbiBudW1iZXIsIFxmQnZhcmlhYmxlXGZQIHR5cGUgYW5kIGZpbmFsbHkgYSAxIGlmIGl0IGlzIGFsbG93ZWQgdG8gYmUgd3JpdGFibGUsIG9yIGEgMCBpZiBub3QuIElmIHRoZSBkZWZhdWx0X3ZhbHVlIGZpZWxkIGlzIG5vdCBOVUxMLCBpdCB3aWxsIGJlIHVzZWQgdG8gcG9wdWxhdGUgbmV3IHZhbHVzZSBpbiB0aGF0IGNvbHVtbiBmcm8gbmV3bHkgY3JlYXRlZCByb3dzLiBJdCBpcyBjb3BpZWQgaW50byB0aGUgc3RvcmFnZSB0ZW1wbGF0ZSAoZnJlZSB5b3VyIGNhbGxpbmcgYXJndW1lbnQpLgogLlBQCiByZXR1cm5zIFNOTVBFUlJfU1VDQ0VTUyBvciBTTk1QRVJSX0ZBSUxVUkUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjggb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjcwIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdHNldCwgIC4uLikiCiAuUFAKIGFkZHMgbXVsdGlwbGUgaW5kZXhlcyB0byBhIHRhYmxlX2RhdGFzZXQgaGVscGVyIG9iamVjdC4gVG8gZW5kIHRoZSBsaXN0LCB1c2UgYSAwIGFmdGVyIHRoZSBsaXN0IG9mIEFTTiBpbmRleCB0eXBlcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzE0IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzMTYgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgInZvaWQgbmV0c25tcF90YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdHNldCwgIC4uLikiCiAuUFAKIGFkZHMgbXVsdGlwbGUgZGF0YSBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gZWFjaCByb3cuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgbmV0c25tcF90YWJsZV9zZXRfYWRkX2RlZmF1bHRfcm93IHJlcGVhdGVkbHkgZm9yIHlvdS4gCkBAIC0yOTYsNyArMjk2LDcgQEAKIC5pbiArMWMKIFxmQmRhdGFfc2V0LmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMjkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzMyIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMwppbmRleCBhZWJjODllLi5kZDQ0NTZmIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJnZW5lcmljX3RhYmxlX0FQSSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJnZW5lcmljX3RhYmxlX0FQSSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zIGIvbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zCmluZGV4IDFlOTQ2NjcuLjVkMGZlYjQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX2luZGV4ZXMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfaW5kZXhlcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMKaW5kZXggNTc2NWFlYS4uNzZjYzRhYyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9pdGVyYXRvciIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZV9pdGVyYXRvciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zIGIvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zCmluZGV4IDJjMDZkYjQuLjVmYTNhZjMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX2l0ZXJhdG9yLmgiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfaXRlcmF0b3IuaCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMyBiL21hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMKaW5kZXggODQ0NjNhZi4uYzMxOGVjYiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9tYWludGVuYW5jZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZV9tYWludGVuYW5jZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfcm93LjMgYi9tYW4vbmV0c25tcF90YWJsZV9yb3cuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjU5ZGNmCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL25ldHNubXBfdGFibGVfcm93LjMKQEAgLTAsMCArMSw0MSBAQAorLlRIICJ0YWJsZV9yb3ciIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK3RhYmxlX3JvdyBcLSAKKy5QUAorSGVscHMgeW91IGltcGxlbWVudCBhIHRhYmxlIHNoYXJlZCBhY3Jvc3MgdHdvIG9yIG1vcmUgc3ViYWdlbnRzLCBvciBvdGhlcndpc2Ugc3BsaXQgaW50byBpbmRpdmlkdWFsIHJvdyBzbGljZXMuICAKKworLlNTICJGdW5jdGlvbnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfdGFibGVfcm93X2hhbmRsZXJfZ2V0XGZQICh2b2lkICpyb3cpIgorLmJyCisuUkkgIlxmSXJldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2NvbnRhaW5lciBoZWxwZXIgXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF90YWJsZV9yb3dfcmVnaXN0ZXJcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKnRhYnJlZywgdm9pZCAqcm93LCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKmluZGV4KSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkICogXGZCbmV0c25tcF90YWJsZV9yb3dfZXh0cmFjdFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgorLmJyCisuUkkgIlxmSXJldHVybiB0aGUgcm93IGRhdGEgc3RydWN0dXJlIHN1cHBsaWVkIHRvIHRoZSB0YWJsZV9yb3cgaGVscGVyIFxmUCIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCitIZWxwcyB5b3UgaW1wbGVtZW50IGEgdGFibGUgc2hhcmVkIGFjcm9zcyB0d28gb3IgbW9yZSBzdWJhZ2VudHMsIG9yIG90aGVyd2lzZSBzcGxpdCBpbnRvIGluZGl2aWR1YWwgcm93IHNsaWNlcy4gCisuU0ggIkZ1bmN0aW9uIERvY3VtZW50YXRpb24iCisuUFAgCisuU1MgInZvaWQqIG5ldHNubXBfdGFibGVfcm93X2V4dHJhY3QgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCisuUFAKK3JldHVybiB0aGUgcm93IGRhdGEgc3RydWN0dXJlIHN1cHBsaWVkIHRvIHRoZSB0YWJsZV9yb3cgaGVscGVyIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTU4IG9mIGZpbGUgdGFibGVfcm93LmMuCisuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfdGFibGVfcm93X2hhbmRsZXJfZ2V0ICh2b2lkICogcm93KSIKKy5QUAorcmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDc1IG9mIGZpbGUgdGFibGVfcm93LmMuCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfcm93cy4zIGIvbWFuL25ldHNubXBfdGFibGVfcm93cy4zCmluZGV4IGNmMzdiMmQuLjRhYmYzODggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9yb3dzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInRhYmxlX3Jvd3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfcm93cyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGRhdGEuMyBiL21hbi9uZXRzbm1wX3RkYXRhLjMKaW5kZXggMTZiZDZhMi4uZTE1NDc4YyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGRhdGEuMworKysgYi9tYW4vbmV0c25tcF90ZGF0YS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0ZGF0YSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0ZGF0YSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNjQsNiArNjQsOSBAQAogLmJyCiAuUkkgIlxmSXJlZ2lzdGVycyBhIHRkYXRhLWJhc2VkIE1JQiB0YWJsZSBcZlAiCiAudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3RkYXRhX3VucmVnaXN0ZXJcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisudGkgLTFjCiAuUkkgIlxmQm5ldHNubXBfdGRhdGFcZlAgKiBcZkJuZXRzbm1wX3RkYXRhX2V4dHJhY3RfdGFibGVcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0KSIKIC5icgogLlJJICJcZklleHRyYWN0cyB0aGUgdGRhdGEgdGFibGUgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgXGZQIgpAQCAtMTUxLDMyICsxNTQsMzIgQEAKIC5QUAogQ3JlYXRlcyBhIHRkYXRhIGhhbmRsZXIgYW5kIHJldHVybnMgaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjg0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyODMgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfaW5zZXJ0X3RkYXRhX3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRkYXRhIHJvdyBpbnRvIGEgcmVxdWVzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM5OSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDA1IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfdGRhdGFfYWRkX3JvdyAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdykiCiAuUFAKIEFkZHMgYSByb3cgdG8gdGhlIGdpdmVuIHRhYmxlIChzdG9yZWQgaW4gcHJvcGVyIGxleG9ncmFwaGljYWwgb3JkZXIpLiByZXR1cm5zIFNOTVBFUlJfU1VDQ0VTUyBvbiBzdWNjZXNzZnVsIGFkZGl0aW9uLiBvciBTTk1QRVJSX0dFTkVSUiBvbiBmYWlsdXJlIChFLkcuLCBpbmRleGVzIGFscmVhZHkgZXhpc3RlZCkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODYgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE4NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX2Nsb25lX3JvdyAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBjbG9uZXMgYSAndGRhdGEnIHJvdy4gRE9FUyBOT1QgQ0xPTkUgVEhFIFRBQkxFLVNQRUNJRklDIEVOVFJZIERBVEEuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTIgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDkzIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfdGRhdGFfY29tcGFyZV9pZHggKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93LCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBpbmRleGVzKSIKIC5QUAogY29tcGFyZSBhIHJvdyB3aXRoIHRoZSBnaXZlbiBpbmRleCB2YWx1ZXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1MTggb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDUyNCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RkYXRhX2NvbXBhcmVfb2lkIChcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdywgb2lkICogY29tcGFyZXRvLCBzaXplX3QgY29tcGFyZXRvX2xlbikiCiAuUFAKIGNvbXBhcmUgYSByb3cgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggT0lEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTMxIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1Mzcgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJpbnQgbmV0c25tcF90ZGF0YV9jb3B5X3JvdyAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiBkc3Rfcm93LCBcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHNyY19yb3cpIgogLlBQCiBjb3B5IHRoZSBjb250ZW50cyBvZiBhICd0ZGF0YScgcm93LiBET0VTIE5PVCBDT1BZIFRIRSBUQUJMRS1TUEVDSUZJQyBFTlRSWSBEQVRBLiAKQEAgLTE4NiwxMDIgKzE4OSwxMDIgQEAKIC5QUAogY3JlYXRlcyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gbmV3IHJvdyBkYXRhIHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFcZlAqIG5ldHNubXBfdGRhdGFfY3JlYXRlX3RhYmxlIChjb25zdCBjaGFyICogbmFtZSwgbG9uZyBmbGFncykiCiAuUFAKIGNyZWF0ZXMgYW5kIHJldHVybnMgYSAndGRhdGEnIHRhYmxlIGRhdGEgc3RydWN0dXJlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTQgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU1IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90ZGF0YV9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGRlbGV0ZXMgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBzcGVjaWZpZWQgcm93IHJldHVybnMgdGhlIHRhYmxlLXNwZWNpZmljIGVudHJ5IGRhdGEgKHRoYXQgaXQgZG9lc24ndCBrbm93IGhvdyB0byBkZWxldGUpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU3IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTYgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGRhdGFfZGVsZXRlX3RhYmxlIChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUpIgogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgJ3RkYXRhJyB0YWJsZSBkYXRhIHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY4IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2OSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfY29udGFpbmVyXGZQKiBuZXRzbm1wX3RkYXRhX2V4dHJhY3RfY29udGFpbmVyIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgdGRhdGEgY29udGFpbmVyIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzcwIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNzYgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJ2b2lkKiBuZXRzbm1wX3RkYXRhX2V4dHJhY3RfZW50cnkgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSAodGFibGUtc3BlY2lmaWMpIGVudHJ5IGJlaW5nIGFjY2Vzc2VkIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzg3IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzOTMgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9leHRyYWN0X3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgdGhlIHRkYXRhIHJvdyBiZWluZyBhY2Nlc3NlZCBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3OSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzg1IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YVxmUCogbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgdGRhdGEgdGFibGUgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNjIgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2OCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFibGVfaW5mbykiCiAuUFAKIHJlZ2lzdGVycyBhIHRkYXRhLWJhc2VkIE1JQiB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1MSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzUwIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90ZGF0YV9yZW1vdmVfYW5kX2RlbGV0ZV9yb3cgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiByZW1vdmVzIGFuZCBmcmVlcyBhIHJvdyBvZiB0aGUgZ2l2ZW4gdGFibGUgYW5kIHJldHVybnMgdGhlIHRhYmxlLXNwZWNpZmljIGVudHJ5IGRhdGEgcmV0dXJucyB0aGUgdm9pZCAqIHBvaW50ZXIgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbi4gb3IgTlVMTCBvbiBmYWlsdXJlIChiYWQgYXJndW1lbnRzKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2MCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjU5IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfcmVtb3ZlX3JvdyAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdykiCiAuUFAKIHJlbW92ZXMgYSByb3cgZnJvbSB0aGUgZ2l2ZW4gdGFibGUgYW5kIHJldHVybnMgaXQgKG5vIGZyZWUncyBjYWxsZWQpIHJldHVybnMgdGhlIHJvdyBwb2ludGVyIGl0c2VsZiBvbiBzdWNjZXNzZnVsIHJlbW92aW5nLiBvciBOVUxMIG9uIGZhaWx1cmUgKGJhZCBhcmd1bWVudHMpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQyIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNDEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGRhdGFfcmVwbGFjZV9yb3cgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiBvcmlncm93LCBcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIG5ld3JvdykiCiAuUFAKIHN3YXBzIG91dCBvcmlncm93IHdpdGggbmV3cm93LiBUaGlzIGRvZXMgKm5vdCogZGVsZXRlL2ZyZWUgYW55dGhpbmchIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjI3IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJ2b2lkKiBuZXRzbm1wX3RkYXRhX3Jvd19lbnRyeSAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiByZXR1cm5zIHRoZSAodGFibGUtc3BlY2lmaWMpIGVudHJ5IGRhdGEgZm9yIGEgZ2l2ZW4gcm93IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDE0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MjAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfZmlyc3QgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSkiCiAuUFAKIHJldHVybnMgdGhlIGZpcnN0IHJvdyBpbiB0aGUgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MjQgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQzMCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19nZXQgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBmaW5kcyBhIHJvdyBpbiB0aGUgJ3RkYXRhJyB0YWJsZSBnaXZlbiBhbm90aGVyIHJvdyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQzMSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDM3IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfcm93X2dldF9ieWlkeCAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBpbmRleGVzKSIKIC5QUAogZmluZHMgYSByb3cgaW4gdGhlICd0ZGF0YScgdGFibGUgZ2l2ZW4gdGhlIGluZGV4IHZhbHVlcyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ0NyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDUzIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfcm93X2dldF9ieW9pZCAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBvaWQgKiBzZWFyY2hmb3IsIHNpemVfdCBzZWFyY2hmb3JfbGVuKSIKIC5QUAogZmluZHMgYSByb3cgaW4gdGhlICd0ZGF0YScgdGFibGUgZ2l2ZW4gdGhlIGluZGV4IE9JRCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ2MCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDY2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfcm93X25leHQgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiByZXR1cm5zIHRoZSBuZXh0IHJvdyBpbiB0aGUgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0Mzkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ0NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19uZXh0X2J5aWR4IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIGluZGV4ZXMpIgogLlBQCiBmaW5kcyB0aGUgbGV4aWNhbGx5IG5leHQgcm93IGluIHRoZSAndGRhdGEnIHRhYmxlIGdpdmVuIHRoZSBpbmRleCB2YWx1ZXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NzUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ4MSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19uZXh0X2J5b2lkIChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIG9pZCAqIHNlYXJjaGZvciwgc2l6ZV90IHNlYXJjaGZvcl9sZW4pIgogLlBQCiBmaW5kcyB0aGUgbGV4aWNhbGx5IG5leHQgcm93IGluIHRoZSAndGRhdGEnIHRhYmxlIGdpdmVuIHRoZSBpbmRleCBPSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0ODkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ5NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdG9vbHMuaC4zIGIvbWFuL25ldHNubXBfdG9vbHMuaC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMGVlYzAKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF90b29scy5oLjMKQEAgLTAsMCArMSwyMzkgQEAKKy5USCAidG9vbHMuaCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQordG9vbHMuaCBcLSAKKy5TSCBTWU5PUFNJUworLmJyCisuUFAKK1xmQyNpbmNsdWRlIDxpbnR0eXBlcy5oPlxmUAorLmJyCisKKy5TUyAiRGVmaW5lcyIKKworLmluICsxYworLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYUEFUSFxmUCAgIFBBVEhfTUFYIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQVhCVUZcZlAgICAoMTAyNCAqIDQpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQVhCVUZfTUVESVVNXGZQICAgMTAyNCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGX1NNQUxMXGZQICAgNTEyIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQVhCVUZfTUVTU0FHRVxmUCAgIDE1MDAiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWE9JRFxmUCAgIDY0IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQVhfQ01ETElORV9PSURTXGZQICAgMTI4IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9GSUxFTU9ERV9DTE9TRURcZlAgICAwNjAwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9GSUxFTU9ERV9PUEVOXGZQICAgMDY0NCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkJZVEVTSVpFXGZQKGJpdHNpemUpICAgKChiaXRzaXplICsgNykgPj4gMykiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJST1VORFVQOFxmUCh4KSAgICggKCAoeCs3KSA+PiAzICkgKiA4ICkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX1NUUk9STlVMTFxmUCh4KSAgICggeCA/IHggOiAnKG51bGwpJykiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX0ZSRUVcZlAocykgICBkbyB7IGlmIChzKSB7IGZyZWUoKHZvaWQgKilzKTsgcz1OVUxMOyB9IH0gd2hpbGUoMCkiCisuYnIKKy5SSSAiXGZJRnJlZXMgYSBwb2ludGVyIG9ubHkgaWYgaXQgaXMgIU5VTEwgYW5kIHNldHMgaXRzIHZhbHVlIHRvIE5VTEwuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX1NXSVBFX01FTVxmUChuLCBzKSAgIGRvIHsgaWYgKG4pIGZyZWUoKHZvaWQgKiluKTsgbiA9IHM7IHM9TlVMTDsgfSB3aGlsZSgwKSIKKy5icgorLlJJICJcZklGcmVlcyBwb2ludGVyIG4gb25seSBpZiBpdCBpcyAhTlVMTCwgc2V0cyBuIHRvIHMgYW5kIHNldHMgcyB0byBOVUxMLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQUxMT0NfU1RSVUNUXGZQKHMpICAgKHN0cnVjdCBzICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHMpKSIKKy5icgorLlJJICJcZklNYWxsb2NzIG1lbW9yeSBvZiBzaXplb2Yoc3RydWN0IHMpLCB6ZXJvcyBpdCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BTExPQ19UWVBFREVGXGZQKHRkKSAgICh0ZCAqKSBjYWxsb2MoMSwgc2l6ZW9mKHRkKSkiCisuYnIKKy5SSSAiXGZJTWFsbG9jcyBtZW1vcnkgb2Ygc2l6ZW9mKHQpLCB6ZXJvcyBpdCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX1pFUk9cZlAocywgbCkgICBkbyB7IGlmIChzKSBtZW1zZXQocywgMCwgbCk7IH0gd2hpbGUoMCkiCisuYnIKKy5SSSAiXGZJWmVyb3MgbCBieXRlcyBvZiBtZW1vcnkgc3RhcnRpbmcgYXQgcy4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQk5FVFNOTVBfUkVNT1ZFX0NPTlNUXGZQKHQsIGUpICAgKCh0KSh1aW50cHRyX3QpKGUpKSIKKy5icgorLlJJICJcZklDYXN0IGF3YXkgY29uc3RuZXNzIHdpdGhvdXQgdGhhdCBnY2MgLVdjYXN0LXF1YWwgcHJpbnRzIGEgY29tcGlsZXIgd2FybmluZywgc2ltaWxhciB0byBjb25zdF9jYXN0PD4gaW4gQysrLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCVE9VUFBFUlxmUChjKSAgIChjID49ICdhJyAmJiBjIDw9ICd6JyA/IGMgLSAoJ2EnIC0gJ0EnKSA6IGMpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCVE9MT1dFUlxmUChjKSAgIChjID49ICdBJyAmJiBjIDw9ICdaJyA/IGMgKyAoJ2EnIC0gJ0EnKSA6IGMpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEVYMlZBTFxmUChzKSAgICgoaXNhbHBoYShzKSA/IChUT0xPV0VSKHMpLSdhJysxMCkgOiAoVE9MT1dFUihzKS0nMCcpKSAmIDB4ZikiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJWQUwySEVYXGZQKHMpICAgKCAocykgKyAoKChzKSA+PSAxMCkgPyAoJ2EnLTEwKSA6ICcwJykgKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYXGZQKGEsIGIpICAgKChhKSA+IChiKSA/IChhKSA6IChiKSkiCisuYnIKKy5SSSAiXGZJQ29tcHV0ZXJzIHRoZSBtYXhpbXVtIG9mIGEgYW5kIGIuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01JTlxmUChhLCBiKSAgICgoYSkgPiAoYikgPyAoYikgOiAoYSkpIgorLmJyCisuUkkgIlxmSUNvbXB1dGVycyB0aGUgbWluaW11bSBvZiBhIGFuZCBiLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQUNST19WQUxfVE9fU1RSXGZQKHMpICAgU05NUF9NQUNST19WQUxfVE9fU1RSX1BSSVYocykiCisuYnIKKy5SSSAiXGZJRXhwYW5kcyB0byBzdHJpbmcgd2l0aCB2YWx1ZSBvZiB0aGUgcy4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFDUk9fVkFMX1RPX1NUUl9QUklWXGZQKHMpICAgI3MiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJRVUlURlVOXGZQKGUsIGwpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCRElGRlRJTUVWQUxcZlAobm93LCB0aGVuLCBkaWZmKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlVTTV9MRU5HVEhfT0lEX1RSQU5TRk9STVxmUCAgIDEwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSVNUUkFOU0ZPUk1cZlAodHR5cGUsIHRvaWQpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCRU5HSU5FVElNRV9NQVhcZlAgICAyMTQ3NDgzNjQ3IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCRU5HSU5FQk9PVF9NQVhcZlAgICAyMTQ3NDgzNjQ3IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCc25tcF9jc3RyY2F0XGZQKGIsIGwsIG8sIGEsIHMpICAgc25tcF9zdHJjYXQoYixsLG8sYSwoY29uc3QgdV9jaGFyICopcykiCisuYnIKKy5pbiAtMWMKKy5TUyAiVHlwZWRlZnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidHlwZWRlZiB2b2lkICogXGZCbWFya2VyX3RcZlAiCisuYnIKKy5pbiAtMWMKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgImludCBcZkJzbm1wX3JlYWxsb2NcZlAgKHVfY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZfbGVuKSIKKy5icgorLlJJICJcZklUaGlzIGZ1bmN0aW9uIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCBhdCBieSAqYnVmLCB3aGljaCBpcyBpbml0aWFsbHkgb2Ygc2l6ZSAqYnVmX2xlbi4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQmZyZWVfemVyb1xmUCAodm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkiCisuYnIKKy5SSSAiXGZJemVyb3MgbWVtb3J5IGJlZm9yZSBmcmVlaW5nIGl0LiBcZlAiCisudGkgLTFjCisuUkkgInVfY2hhciAqIFxmQm1hbGxvY19yYW5kb21cZlAgKHNpemVfdCAqc2l6ZSkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyBwb2ludGVyIHRvIGFsbG9jYWVkICYgc2V0IGJ1ZmZlciBvbiBzdWNjZXNzLCBzaXplIGNvbnRhaW5zIG51bWJlciBvZiByYW5kb20gYnl0ZXMgZmlsbGVkLiBcZlAiCisudGkgLTFjCisuUkkgInVfY2hhciAqIFxmQm1hbGxvY196ZXJvXGZQIChzaXplX3Qgc2l6ZSkiCisuYnIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm1lbWR1cFxmUCAodV9jaGFyICoqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBzaXplKSIKKy5icgorLlJJICJcZklEdXBsaWNhdGVzIGEgbWVtb3J5IGJsb2NrLiBcZlAiCisudGkgLTFjCisuUkkgInVfaW50IFxmQmJpbmFyeV90b19oZXhcZlAgKGNvbnN0IHVfY2hhciAqaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKipvdXRwdXQpIgorLmJyCisuUkkgIlxmSWNvbnZlcnRzIGJpbmFyeSB0byBoZXhpZGVjaW1hbCBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX2hleF90b19iaW5hcnlcZlAgKHVfY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZfbGVuLCBzaXplX3QgKm9mZnNldCwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKmhleCwgY29uc3QgY2hhciAqZGVsaW0pIgorLmJyCisuUkkgIlxmSWNvbnZlcnQgYW4gQVNDSUkgaGV4IHN0cmluZyAod2l0aCBzcGVjaWZpZWQgZGVsaW1pdGVycykgdG8gYmluYXJ5IFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfaGV4X3RvX2JpbmFyeVxmUCAodV9jaGFyICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4sIHNpemVfdCAqb2Zmc2V0LCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgY2hhciAqaGV4KSIKKy5icgorLlJJICJcZkljb252ZXJ0IGFuIEFTQ0lJIGhleCBzdHJpbmcgdG8gYmluYXJ5IFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQmhleF90b19iaW5hcnkyXGZQIChjb25zdCB1X2NoYXIgKmlucHV0LCBzaXplX3QgbGVuLCBjaGFyICoqb3V0cHV0KSIKKy5icgorLlJJICJcZkloZXhfdG9fYmluYXJ5MiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJzbm1wX2RlY2ltYWxfdG9fYmluYXJ5XGZQICh1X2NoYXIgKipidWYsIHNpemVfdCAqYnVmX2xlbiwgc2l6ZV90ICpvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgY2hhciAqZGVjaW1hbCkiCisuYnIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc3RyY2F0XGZQICh1X2NoYXIgKipidWYsIHNpemVfdCAqYnVmX2xlbiwgc2l6ZV90ICpvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgdV9jaGFyICpzKSIKKy5icgorLnRpIC0xYworLlJJICJjaGFyICogXGZCbmV0c25tcF9zdHJkdXBfYW5kX251bGxcZlAgKGNvbnN0IHVfY2hhciAqZnJvbSwgc2l6ZV90IGZyb21fbGVuKSIKKy5icgorLlJJICJcZkljb3BpZXMgYSAocG9zc2libGUpIHVudGVybWluYXRlZCBzdHJpbmcgb2YgYSBnaXZlbiBsZW5ndGggaW50byBhIG5ldyBidWZmZXIgYW5kIG51bGwgdGVybWluYXRlcyBpdCBhcyB3ZWxsIChuZXcgYnVmZmVyIE1BWSBiZSBvbmUgYnl0ZSBsb25nZXIgdG8gYWNjb3VudCBmb3IgdGhpcyBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCZHVtcF9jaHVua1xmUCAoY29uc3QgY2hhciAqZGVidWd0b2tlbiwgY29uc3QgY2hhciAqdGl0bGUsIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgc2l6ZSkiCisuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqIFxmQmR1bXBfc25tcEVuZ2luZUlEXGZQIChjb25zdCB1X2NoYXIgKmJ1Ziwgc2l6ZV90ICpidWZsZW4pIgorLmJyCisudGkgLTFjCisuUkkgIm1hcmtlcl90IFxmQmF0aW1lX25ld01hcmtlclxmUCAodm9pZCkiCisuYnIKKy5SSSAiXGZJY3JlYXRlIGEgbmV3IHRpbWUgbWFya2VyLiBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCYXRpbWVfc2V0TWFya2VyXGZQIChtYXJrZXJfdCBwbSkiCisuYnIKKy5SSSAiXGZJc2V0IGEgdGltZSBtYXJrZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAibG9uZyBcZkJhdGltZV9kaWZmXGZQIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKKy5icgorLlJJICJcZklSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2Vycy4gXGZQIgorLnRpIC0xYworLlJJICJ1X2xvbmcgXGZCdWF0aW1lX2RpZmZcZlAgKG1hcmtlcl90IGZpcnN0LCBtYXJrZXJfdCBzZWNvbmQpIgorLmJyCisuUkkgIlxmSVJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIHVfbG9uZyBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2Vycy4gXGZQIgorLnRpIC0xYworLlJJICJ1X2xvbmcgXGZCdWF0aW1lX2hkaWZmXGZQIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKKy5icgorLlJJICJcZklSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgMS8xMDB0aCBzZWNzKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycyAoZnVuY3Rpb25hbGx5IHRoaXMgaXMgd2hhdCBzeXNVcFRpbWUgbmVlZHMpLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJhdGltZV9yZWFkeVxmUCAobWFya2VyX3QgcG0sIGludCBkZWx0YVQpIgorLmJyCisuUkkgIlxmSVRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lIChpbiBtc2VjKSA/IFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnVhdGltZV9yZWFkeVxmUCAobWFya2VyX3QgcG0sIHVuc2lnbmVkIGludCBkZWx0YVQpIgorLmJyCisuUkkgIlxmSVRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lIChpbiBtc2VjKSA/IFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm1hcmtlcl90dGlja3NcZlAgKG1hcmtlcl90IHBtKSIKKy5icgorLlJJICJcZklSZXR1cm4gdGhlIG51bWJlciBvZiB0aW1lVGlja3Mgc2luY2UgdGhlIGdpdmVuIG1hcmtlci4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCdGltZXZhbF90dGlja3NcZlAgKHN0cnVjdCB0aW1ldmFsICp0dikiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTVBPUlQgY2hhciAqIFxmQm5ldHNubXBfZ2V0ZW52XGZQIChjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLlJJICJcZklOb24gV2luZG93czogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgb3IgTlVMTCBpZiB0aGUgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgZG9lcyBub3QgZXhpc3QuIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTVBPUlQgaW50IFxmQm5ldHNubXBfc2V0ZW52XGZQIChjb25zdCBjaGFyICplbnZuYW1lLCBjb25zdCBjaGFyICplbnZ2YWwsIGludCBvdmVyd3JpdGUpIgorLmJyCisuUkkgIlxmSVNldCBhbiBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUC4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9hZGRyc3RyX2h0b25cZlAgKGNoYXIgKnB0ciwgc2l6ZV90IGxlbikiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCisKKy5QUAorRGVmaW5pdGlvbiBpbiBmaWxlIFxmQnRvb2xzLmhcZlAuCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdXRpbC4zIGIvbWFuL25ldHNubXBfdXRpbC4zCmluZGV4IGMwNDZkOTAuLmY2NzA2M2MgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3V0aWwuMworKysgYi9tYW4vbmV0c25tcF91dGlsLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIk1lbW9yeSBVdGlsaXR5IFJvdXRpbmVzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIk1lbW9yeSBVdGlsaXR5IFJvdXRpbmVzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC02Myw2ICs2MywxMCBAQAogLmJyCiAuUkkgIlxmSVplcm9zIGwgYnl0ZXMgb2YgbWVtb3J5IHN0YXJ0aW5nIGF0IHMuIFxmUCIKIC50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJORVRTTk1QX1JFTU9WRV9DT05TVFxmUCh0LCBlKSAgICgodCkodWludHB0cl90KShlKSkiCisuYnIKKy5SSSAiXGZJQ2FzdCBhd2F5IGNvbnN0bmVzcyB3aXRob3V0IHRoYXQgZ2NjIC1XY2FzdC1xdWFsIHByaW50cyBhIGNvbXBpbGVyIHdhcm5pbmcsIHNpbWlsYXIgdG8gY29uc3RfY2FzdDw+IGluIEMrKy4gXGZQIgorLnRpIC0xYwogLlJJICIjZGVmaW5lIFxmQlRPVVBQRVJcZlAoYykgICAoYyA+PSAnYScgJiYgYyA8PSAneicgPyBjIC0gKCdhJyAtICdBJykgOiBjKSIKIC5icgogLnRpIC0xYwpAQCAtMTM3LDcgKzE0MSw3IEBACiAuUkkgInVfY2hhciAqIFxmQm1hbGxvY196ZXJvXGZQIChzaXplX3Qgc2l6ZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm1lbWR1cFxmUCAodV9jaGFyICoqdG8sIGNvbnN0IHVfY2hhciAqZnJvbSwgc2l6ZV90IHNpemUpIgorLlJJICJpbnQgXGZCbWVtZHVwXGZQICh1X2NoYXIgKip0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IHNpemUpIgogLmJyCiAuUkkgIlxmSUR1cGxpY2F0ZXMgYSBtZW1vcnkgYmxvY2suIFxmUCIKIC50aSAtMWMKQEAgLTIwOCwxMCArMjEyLDE0IEBACiAuUkkgImludCBcZkJ0aW1ldmFsX3R0aWNrc1xmUCAoc3RydWN0IHRpbWV2YWwgKnR2KSIKIC5icgogLnRpIC0xYwotLlJJICJjaGFyICogXGZCbmV0c25tcF9nZXRlbnZcZlAgKGNvbnN0IGNoYXIgKm5hbWUpIgorLlJJICJORVRTTk1QX0lNUE9SVCBjaGFyICogXGZCbmV0c25tcF9nZXRlbnZcZlAgKGNvbnN0IGNoYXIgKm5hbWUpIgogLmJyCiAuUkkgIlxmSU5vbiBXaW5kb3dzOiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUCBvciBOVUxMIGlmIHRoZSBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUCBkb2VzIG5vdCBleGlzdC4gXGZQIgogLnRpIC0xYworLlJJICJORVRTTk1QX0lNUE9SVCBpbnQgXGZCbmV0c25tcF9zZXRlbnZcZlAgKGNvbnN0IGNoYXIgKmVudm5hbWUsIGNvbnN0IGNoYXIgKmVudnZhbCwgaW50IG92ZXJ3cml0ZSkiCisuYnIKKy5SSSAiXGZJU2V0IGFuIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiBcZlAiCisudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX2FkZHJzdHJfaHRvblxmUCAoY2hhciAqcHRyLCBzaXplX3QgbGVuKSIKIC5icgogLmluIC0xYwpAQCAtMjIwLDcgKzIyOCw3IEBACiAuU1MgIiNkZWZpbmUgRElGRlRJTUVWQUwobm93LCB0aGVuLCBkaWZmKSJcZkJWYWx1ZTpcZlAKIC5QUAogLm5mCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbm93LnR2X3NlYy0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBub3cudHZfdXNlYyArPSAxMDAwMDAwTDsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGRpZmYudHZfc2VjICA9IG5vdy50dl9zZWMgIC0gdGhlbi50dl9zZWM7ICAgICAgIFwKQEAgLTIzMiw3ICsyNDAsNyBAQAogfQogLmZpCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzEgb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1MiBvZiBmaWxlIHRvb2xzLmguCiAuU1MgIiNkZWZpbmUgSVNUUkFOU0ZPUk0odHR5cGUsIHRvaWQpIlxmQlZhbHVlOlxmUAogLlBQCiAubmYKQEAgLTI0MCw3OSArMjQ4LDkxIEBACiAgICAgICAgICAgICAgICAgdXNtICMjIHRvaWQgIyMgUHJvdG9jb2wsIFVTTV9MRU5HVEhfT0lEX1RSQU5TRk9STSkKIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTUwIG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNzEgb2YgZmlsZSB0b29scy5oLgorLlNTICIjZGVmaW5lIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKHQsIGUpICAgKCh0KSh1aW50cHRyX3QpKGUpKSIKKy5QUAorQ2FzdCBhd2F5IGNvbnN0bmVzcyB3aXRob3V0IHRoYXQgZ2NjIC1XY2FzdC1xdWFsIHByaW50cyBhIGNvbXBpbGVyIHdhcm5pbmcsIHNpbWlsYXIgdG8gY29uc3RfY2FzdDw+IGluIEMrKy4gXGZCUGFyYW1ldGVyczpcZlAKKy5SUyA0CitcZkl0XGZQIEEgcG9pbnRlciB0eXBlLiAKKy5icgorXGZJZVxmUCBBbiBleHByZXNzaW9uIG9mIGEgdHlwZSB0aGF0IGNhbiBiZSBhc3NpZ25lZCB0byB0aGUgdHlwZSAoY29uc3QgdCkuIAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgOTIgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFFVSVRGVU4oZSwgbCkiXGZCVmFsdWU6XGZQCiAuUFAKIC5uZgotaWYgKCAoZSkgIT0gU05NUEVSUl9TVUNDRVNTKSB7ICAgXAoraWYgKCAoZSkgIT0gU05NUEVSUl9TVUNDRVNTKSB7ICAgICBcCiAgICAgICAgICAgICAgICAgcnZhbCA9IFNOTVBFUlJfR0VORVJSOyAgXAogICAgICAgICAgICAgICAgIGdvdG8gbCA7ICAgICAgICAgICAgICAgIFwKICAgICAgICAgfQogLmZpCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTggb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzOSBvZiBmaWxlIHRvb2xzLmguCiAuU1MgIiNkZWZpbmUgU05NUF9GUkVFKHMpICAgZG8geyBpZiAocykgeyBmcmVlKCh2b2lkICopcyk7IHM9TlVMTDsgfSB9IHdoaWxlKDApIgogLlBQCiBGcmVlcyBhIHBvaW50ZXIgb25seSBpZiBpdCBpcyAhTlVMTCBhbmQgc2V0cyBpdHMgdmFsdWUgdG8gTlVMTC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1MyBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNTcgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUFDUk9fVkFMX1RPX1NUUihzKSAgIFNOTVBfTUFDUk9fVkFMX1RPX1NUUl9QUklWKHMpIgogLlBQCi1FeHBhbmRzIHRvIHN0cmluZyB3aXRoIHZhbHVlIG9mIHRoZSBzLiBJZiBzIGlzIG1hY3JvLCB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyB2YWx1ZSBvZiB0aGUgbWFjcm8uIEV4YW1wbGU6IGRlZmluZSBURVNUIDEyMzQgXGZCU05NUF9NQUNST19WQUxfVE9fU1RSKFRFU1QpXGZQIGV4cGFuZHMgdG8gJzEyMzQnIFNOTVBfTUFDUk9fVkFMX1RPX1NUUihURVNUKzEpIGV4cGFuZHMgdG8gJzEyMzQrMScgCitFeHBhbmRzIHRvIHN0cmluZyB3aXRoIHZhbHVlIG9mIHRoZSBzLiBJZiBzIGlzIG1hY3JvLCB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyB2YWx1ZSBvZiB0aGUgbWFjcm8uIEV4YW1wbGU6ICNkZWZpbmUgVEVTVCAxMjM0IFxmQlNOTVBfTUFDUk9fVkFMX1RPX1NUUihURVNUKVxmUCBleHBhbmRzIHRvICcxMjM0JyBTTk1QX01BQ1JPX1ZBTF9UT19TVFIoVEVTVCsxKSBleHBhbmRzIHRvICcxMjM0KzEnIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTkgb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyMCBvZiBmaWxlIHRvb2xzLmguCiAuU1MgIiNkZWZpbmUgU05NUF9NQUxMT0NfU1RSVUNUKHMpICAgKHN0cnVjdCBzICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHMpKSIKIC5QUAogTWFsbG9jcyBtZW1vcnkgb2Ygc2l6ZW9mKHN0cnVjdCBzKSwgemVyb3MgaXQgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY0IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSA2OCBvZiBmaWxlIHRvb2xzLmguCiAuU1MgIiNkZWZpbmUgU05NUF9NQUxMT0NfVFlQRURFRih0ZCkgICAodGQgKikgY2FsbG9jKDEsIHNpemVvZih0ZCkpIgogLlBQCiBNYWxsb2NzIG1lbW9yeSBvZiBzaXplb2YodCksIHplcm9zIGl0IGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2OCBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNzIgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUFYKGEsIGIpICAgKChhKSA+IChiKSA/IChhKSA6IChiKSkiCiAuUFAKIENvbXB1dGVycyB0aGUgbWF4aW11bSBvZiBhIGFuZCBiLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg1IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMDYgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUlOKGEsIGIpICAgKChhKSA+IChiKSA/IChiKSA6IChhKSkiCiAuUFAKIENvbXB1dGVycyB0aGUgbWluaW11bSBvZiBhIGFuZCBiLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg5IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMTAgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfU1dJUEVfTUVNKG4sIHMpICAgZG8geyBpZiAobikgZnJlZSgodm9pZCAqKW4pOyBuID0gczsgcz1OVUxMOyB9IHdoaWxlKDApIgogLlBQCiBGcmVlcyBwb2ludGVyIG4gb25seSBpZiBpdCBpcyAhTlVMTCwgc2V0cyBuIHRvIHMgYW5kIHNldHMgcyB0byBOVUxMLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU3IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSA2MSBvZiBmaWxlIHRvb2xzLmguCiAuU1MgIiNkZWZpbmUgU05NUF9aRVJPKHMsIGwpICAgZG8geyBpZiAocykgbWVtc2V0KHMsIDAsIGwpOyB9IHdoaWxlKDApIgogLlBQCiBaZXJvcyBsIGJ5dGVzIG9mIG1lbW9yeSBzdGFydGluZyBhdCBzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcyIG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSA3NiBvZiBmaWxlIHRvb2xzLmguCiAuU0ggIkZ1bmN0aW9uIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgImxvbmcgYXRpbWVfZGlmZiAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCiAuUFAKIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIG1zZWMpIGJldHdlZW4gdGhlIHR3byBtYXJrZXJzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc5OCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODAzIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAibWFya2VyX3QgYXRpbWVfbmV3TWFya2VyICh2b2lkKSIKIC5QUAogY3JlYXRlIGEgbmV3IHRpbWUgbWFya2VyLiBOT1RFOiBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NzQgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc3OSBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBhdGltZV9yZWFkeSAobWFya2VyX3QgcG0sIGludCBkZWx0YVQpIgogLlBQCiBUZXN0OiBIYXMgKG1hcmtlZCB0aW1lIHBsdXMgZGVsdGEpIGV4Y2VlZGVkIGN1cnJlbnQgdGltZSAoaW4gbXNlYykgPyBSZXR1cm5zIDAgaWYgdGVzdCBmYWlscyBvciBjYW5ub3QgYmUgdGVzdGVkIChubyBtYXJrZXIpLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg1MyBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODU4IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidm9pZCBhdGltZV9zZXRNYXJrZXIgKG1hcmtlcl90IHBtKSIKIC5QUAogc2V0IGEgdGltZSBtYXJrZXIuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzg1IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3OTAgb2YgZmlsZSB0b29scy5jLgogLlNTICJ1X2ludCBiaW5hcnlfdG9faGV4IChjb25zdCB1X2NoYXIgKiBpbnB1dCwgc2l6ZV90IGxlbiwgY2hhciAqKiBvdXRwdXQpIgogLlBQCiBjb252ZXJ0cyBiaW5hcnkgdG8gaGV4aWRlY2ltYWwgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTMzMSw3ICszNTEsNyBAQAogLlBQCiBGSVggSXMgdGhlcmUgYWxyZWFkeSBvbmUgb2YgdGhlc2UgaW4gdGhlIFVDRCBTTk1QIGNvZGViYXNlPyBUaGUgb2xkIG9uZSBzaG91bGQgYmUgdXNlZCwgb3IgdGhpcyBvbmUgc2hvdWxkIGJlIG1vdmVkIHRvIFxmQnNubXBsaWIvc25tcF9hcGkuY1xmUC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOTAgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5OSBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgInZvaWQgZnJlZV96ZXJvICh2b2lkICogYnVmLCBzaXplX3Qgc2l6ZSkiCiAuUFAKIHplcm9zIG1lbW9yeSBiZWZvcmUgZnJlZWluZyBpdC4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTM0Myw3ICszNjMsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE4OCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTk3IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAiaW50IGhleF90b19iaW5hcnkyIChjb25zdCB1X2NoYXIgKiBpbnB1dCwgc2l6ZV90IGxlbiwgY2hhciAqKiBvdXRwdXQpIgogLlBQCiBoZXhfdG9fYmluYXJ5MiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMzY0LDcgKzM4NCw3IEBACiAuUFAKIEZJWCBBbm90aGVyIHZlcnNpb24gb2YgJ2hleC10by1iaW5hcnknIHdoaWNoIHRha2VzIG9kZCBsZW5ndGggaW5wdXQgc3RyaW5ncy4gSXQgYWxzbyBhbGxvY2F0ZXMgdGhlIG1lbW9yeSB0byBob2xkIHRoZSBiaW5hcnkgZGF0YS4gU2hvdWxkIGJlIGludGVncmF0ZWQgd2l0aCB0aGUgb2ZmaWNpYWwgaGV4X3RvX2JpbmFyeSgpIGZ1bmN0aW9uLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMyNyBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzM2IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9jaGFyKiBtYWxsb2NfcmFuZG9tIChzaXplX3QgKiBzaXplKSIKIC5QUAogUmV0dXJucyBwb2ludGVyIHRvIGFsbG9jYWVkICYgc2V0IGJ1ZmZlciBvbiBzdWNjZXNzLCBzaXplIGNvbnRhaW5zIG51bWJlciBvZiByYW5kb20gYnl0ZXMgZmlsbGVkLiBidWYgaXMgTlVMTCBhbmQgKnNpemUgc2V0IHRvIEtNVCBlcnJvciB2YWx1ZSB1cG9uIGZhaWx1cmUuCkBAIC0zODEsMTIgKzQwMSwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwOCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjE3IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAiaW50IG1hcmtlcl90dGlja3MgKG1hcmtlcl90IHBtKSIKIC5QUAogUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZVRpY2tzIHNpbmNlIHRoZSBnaXZlbiBtYXJrZXIuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTAxIG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5MDYgb2YgZmlsZSB0b29scy5jLgogLlNTICJ2b2lkICogbmV0c25tcF9tZW1kdXAgKGNvbnN0IHZvaWQgKiBmcm9tLCBzaXplX3Qgc2l6ZSkiCiAuUFAKIER1cGxpY2F0ZXMgYSBtZW1vcnkgYmxvY2suIENvcGllcyBhIGV4aXN0aW5nIG1lbW9yeSBsb2NhdGlvbiBmcm9tIGEgcG9pbnRlciB0byBhbm90aGVyLCBuZXdseSBtYWxsb2NlZCwgcG9pbnRlci4KQEAgLTQwNywxMiArNDI3LDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM5IG9mIGZpbGUgdG9vbHMuYy4KLS5TUyAiY2hhciogbmV0c25tcF9nZXRlbnYgKGNvbnN0IGNoYXIgKiBuYW1lKSIKK0RlZmluaXRpb24gYXQgbGluZSAyNDggb2YgZmlsZSB0b29scy5jLgorLlNTICJORVRTTk1QX0lNUE9SVCBjaGFyKiBuZXRzbm1wX2dldGVudiAoY29uc3QgY2hhciAqIG5hbWUpIgogLlBQCiBOb24gV2luZG93czogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgb3IgTlVMTCBpZiB0aGUgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgZG9lcyBub3QgZXhpc3QuIFdpbmRvd3M6IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGlmIGl0IGV4aXN0cy4gSWYgaXQgZG9lcyBub3QsIHRoZSBcZkJ2YXJpYWJsZVxmUCBpcyBsb29rZWQgdXAgaW4gdGhlIHJlZ2lzdHJ5IGluIEhLQ1VcXE5ldC1TTk1QIG9yIEhLTE1cXE5ldC1TTk1QICh3aGljaGV2ZXIgaXQgZmluZHMgZmlyc3QpIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBpbiB0aGUgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAuIEl0IHRoZW4gcmV0dXJucyBhIHBvaW50ZXIgdG8gZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTI5IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5MzQgb2YgZmlsZSB0b29scy5jLgogLlNTICJpbnQgbmV0c25tcF9oZXhfdG9fYmluYXJ5ICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvZmZzZXQsIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBjaGFyICogaGV4LCBjb25zdCBjaGFyICogZGVsaW0pIgogLlBQCiBjb252ZXJ0IGFuIEFTQ0lJIGhleCBzdHJpbmcgKHdpdGggc3BlY2lmaWVkIGRlbGltaXRlcnMpIHRvIGJpbmFyeSBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDM5LDEyICs0NTksMTcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0Mjggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQzNyBvZiBmaWxlIHRvb2xzLmMuCisuU1MgIk5FVFNOTVBfSU1QT1JUIGludCBuZXRzbm1wX3NldGVudiAoY29uc3QgY2hhciAqIGVudm5hbWUsIGNvbnN0IGNoYXIgKiBlbnZ2YWwsIGludCBvdmVyd3JpdGUpIgorLlBQCitTZXQgYW4gZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBuZWNlc3Nhcnkgb24gV2luZG93cyBmb3IgdGhlIE1TVkMgYW5kIE1pbkdXIGVudmlyb25tZW50cy4gSWYgdGhlIHByb2Nlc3MgdGhhdCB1c2VzIHRoZSBOZXQtU05NUCBETEwgKGUuZy4gYSBQZXJsIGludGVycHJldGVyKSBhbmQgdGhlIE5ldC1TTk1QIGhhdmUgYmVlbiBidWlsdCB3aXRoIGEgZGlmZmVyZW50IGNvbXBpbGVyIHZlcnNpb24gdGhlbiBlYWNoIHdpbGwgaGF2ZSBhIHNlcGFyYXRlIHNldCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHNldCBhbiBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUCBzdWNoIHRoYXQgaXQgZ2V0cyBub3RpY2VkIGJ5IHRoZSBOZXQtU05NUCBETEwuIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTA2NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImNoYXIqIG5ldHNubXBfc3RyZHVwX2FuZF9udWxsIChjb25zdCB1X2NoYXIgKiBmcm9tLCBzaXplX3QgZnJvbV9sZW4pIgogLlBQCiBjb3BpZXMgYSAocG9zc2libGUpIHVudGVybWluYXRlZCBzdHJpbmcgb2YgYSBnaXZlbiBsZW5ndGggaW50byBhIG5ldyBidWZmZXIgYW5kIG51bGwgdGVybWluYXRlcyBpdCBhcyB3ZWxsIChuZXcgYnVmZmVyIE1BWSBiZSBvbmUgYnl0ZSBsb25nZXIgdG8gYWNjb3VudCBmb3IgdGhpcyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI1OCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjY3IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAiaW50IHNubXBfaGV4X3RvX2JpbmFyeSAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb2Zmc2V0LCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgY2hhciAqIGhleCkiCiAuUFAKIGNvbnZlcnQgYW4gQVNDSUkgaGV4IHN0cmluZyB0byBiaW5hcnkgXGZCTm90ZTpcZlAKQEAgLTQ2Myw3ICs0ODgsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ4OCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDk3IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAiaW50IHNubXBfcmVhbGxvYyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbikiCiAuUFAKIFRoaXMgZnVuY3Rpb24gaW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGF0IGJ5ICpidWYsIHdoaWNoIGlzIGluaXRpYWxseSBvZiBzaXplICpidWZfbGVuLiBDb250ZW50cyBhcmUgcHJlc2VydmVkICoqQVQgVEhFIEJPVFRPTSBFTkQgT0YgVEhFIEJVRkZFUioqLiBJZiBtZW1vcnkgY2FuIGJlIChyZS0pYWxsb2NhdGVkIHRoZW4gaXQgcmV0dXJucyAxLCBlbHNlIGl0IHJldHVybnMgMC4KQEAgLTQ4MiwyMiArNTA3LDIyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI0IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzMgb2YgZmlsZSB0b29scy5jLgogLlNTICJ1X2xvbmcgdWF0aW1lX2RpZmYgKG1hcmtlcl90IGZpcnN0LCBtYXJrZXJfdCBzZWNvbmQpIgogLlBQCiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODE1IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4MjAgb2YgZmlsZSB0b29scy5jLgogLlNTICJ1X2xvbmcgdWF0aW1lX2hkaWZmIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKIC5QUAogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gdV9sb25nIDEvMTAwdGggc2VjcykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMgKGZ1bmN0aW9uYWxseSB0aGlzIGlzIHdoYXQgc3lzVXBUaW1lIG5lZWRzKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MzMgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgzOCBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCB1YXRpbWVfcmVhZHkgKG1hcmtlcl90IHBtLCB1bnNpZ25lZCBpbnQgZGVsdGFUKSIKIC5QUAogVGVzdDogSGFzIChtYXJrZWQgdGltZSBwbHVzIGRlbHRhKSBleGNlZWRlZCBjdXJyZW50IHRpbWUgKGluIG1zZWMpID8gUmV0dXJucyAwIGlmIHRlc3QgZmFpbHMgb3IgY2Fubm90IGJlIHRlc3RlZCAobm8gbWFya2VyKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NzUgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg4MCBvZiBmaWxlIHRvb2xzLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMgYi9tYW4vbmV0c25tcF91dGlsaXRpZXMuMwppbmRleCA5NmJmNTMzLi5kYTEwNjk2IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF91dGlsaXRpZXMuMworKysgYi9tYW4vbmV0c25tcF91dGlsaXRpZXMuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidXRpbGl0eV9oYW5kbGVycyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ1dGlsaXR5X2hhbmRsZXJzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMgYi9tYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMKaW5kZXggMTg5N2M1ZS4uMWE1ODQxYiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zCisrKyBiL21hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidmFyaWFibGVfbGlzdCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ2YXJpYWJsZV9saXN0IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0xMCw3ICsxMCw3IEBACiAuYnIKIC5QUAogLlBQCi1cZkMjaW5jbHVkZSA8c25tcF9hcGkuaD5cZlAKK1xmQyNpbmNsdWRlIDx0eXBlcy5oPlxmUAogLlNTICJEYXRhIEZpZWxkcyIKIAogLmluICsxYwpAQCAtNjcsMTkgKzY3LDE5IEBACiAuUFAKIFxmQm5vdGlmaWNhdGlvbi5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTI5IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMzkgb2YgZmlsZSB0eXBlcy5oLgogLlNIICJGaWVsZCBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJ1X2NoYXIgXGZCdmFyaWFibGVfbGlzdDo6YnVmXGZQWzQwXSIKIC5QUAogOTAgcGVyY2VudGlsZSA8IDQwLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTU1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidm9pZCogXGZCdmFyaWFibGVfbGlzdDo6ZGF0YVxmUCIKIC5QUAogKE9wYXF1ZSkgaG9vayBmb3IgYWRkaXRpb25hbCBkYXRhIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTQ3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNTcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ2b2lkKCogXGZCdmFyaWFibGVfbGlzdDo6ZGF0YUZyZWVIb29rXGZQKSh2b2lkICopIgogLlBQCiBjYWxsYmFjayB0byBmcmVlIGFib3ZlIApAQCAtODcsMjIgKzg3LDIyIEBACiAuUFAKIE9iamVjdCBpZGVudGlmaWVyIG9mIFxmQnZhcmlhYmxlXGZQLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzMyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTQzIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnZhcmlhYmxlX2xpc3Q6Om5hbWVfbGVuZ3RoXGZQIgogLlBQCiBudW1iZXIgb2Ygc3ViaWQncyBpbiBuYW1lIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTM1IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNDUgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJvaWQgXGZCdmFyaWFibGVfbGlzdDo6bmFtZV9sb2NcZlBbTUFYX09JRF9MRU5dIgogLlBQCiBidWZmZXIgdG8gaG9sZCB0aGUgT0lEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTQzIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNTMgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzdHJ1Y3QgXGZCdmFyaWFibGVfbGlzdFxmUCogXGZCdmFyaWFibGVfbGlzdDo6bmV4dF92YXJpYWJsZVxmUFxmQyBbcmVhZF1cZlAiCiAuUFAKIE5VTEwgZm9yIGxhc3QgXGZCdmFyaWFibGVcZlAuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTMxIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNDEgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIgXGZCdmFyaWFibGVfbGlzdDo6dHlwZVxmUCIKIC5QUAogQVNOIHR5cGUgb2YgXGZCdmFyaWFibGVcZlAuIApAQCAtMTExLDcgKzExMSw3IEBACiAuaW4gKzFjCiBcZkJkZWxheWVkX2luc3RhbmNlLmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1Mzcgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0NyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgIlxmQm5ldHNubXBfdmFyZGF0YVxmUCBcZkJ2YXJpYWJsZV9saXN0Ojp2YWxcZlAiCiAuUFAKIHZhbHVlIG9mIFxmQnZhcmlhYmxlXGZQIApAQCAtMTIwLDEyICsxMjAsMTIgQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzOSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnZhcmlhYmxlX2xpc3Q6OnZhbF9sZW5cZlAiCiAuUFAKIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGJlIGNvcGllZCBpbnRvIGJ1ZiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0MSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTUxIG9mIGZpbGUgdHlwZXMuaC4KIAogLlNIICJBdXRob3IiCiAuUFAgCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF93YXRjaGVyLjMgYi9tYW4vbmV0c25tcF93YXRjaGVyLjMKaW5kZXggNTU4ZjRmNi4uZGU1MzE0ZSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfd2F0Y2hlci4zCisrKyBiL21hbi9uZXRzbm1wX3dhdGNoZXIuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAid2F0Y2hlciIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ3YXRjaGVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0xMyw2ICsxMywxNSBAQAogLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9nZXRfd2F0Y2hlcl9oYW5kbGVyXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqIFxmQm5ldHNubXBfaW5pdF93YXRjaGVyX2luZm82XGZQIChcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqd2luZm8sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwgaW50IGZsYWdzLCBzaXplX3QgbWF4X3NpemUsIHNpemVfdCAqc2l6ZV9wKSIKKy5icgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqIFxmQm5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbzZcZlAgKHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwgaW50IGZsYWdzLCBzaXplX3QgbWF4X3NpemUsIHNpemVfdCAqc2l6ZV9wKSIKKy5icgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqIFxmQm5ldHNubXBfaW5pdF93YXRjaGVyX2luZm9cZlAgKFxmQm5ldHNubXBfd2F0Y2hlcl9pbmZvXGZQICp3aW5mbywgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHVfY2hhciB0eXBlLCBpbnQgZmxhZ3MpIgorLmJyCisudGkgLTFjCiAuUkkgIlxmQm5ldHNubXBfd2F0Y2hlcl9pbmZvXGZQICogXGZCbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvXGZQICh2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncykiCiAuYnIKIC50aSAtMWMKQEAgLTQ2LDMwICs1NSwxMDggQEAKIC5SSSAiaW50IFxmQm5ldHNubXBfd2F0Y2hlZF9zcGlubG9ja19oYW5kbGVyXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLmJyCisuaW4gLTFjIAorLmluICsxYworLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQk5FVFNOTVBfV0FUQ0hFUl9ESVJFQ1RcZlAgICBNSUJfSEFORExFUl9DVVNUT00xIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCV0FUQ0hFUl9GSVhFRF9TSVpFXGZQIgorLmJyCisuUkkgIlxmSVRoZSBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBpcyBjb25zdGFudC4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfTUFYX1NJWkVcZlAiCisuYnIKKy5SSSAiXGZJVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgaXMgc3RvcmVkIGluIG1heF9zaXplLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCV0FUQ0hFUl9TSVpFX0lTX1BUUlxmUCIKKy5icgorLlJJICJcZklJZiBzZXQgdGhlbiB0aGUgXGZCdmFyaWFibGVcZlAgZGF0YV9zaXplX3AgcG9pbnRzIHRvIGlzIHN1cHBvc2VkIHRvIGhvbGQgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgYW5kIHdpbGwgYmUgdXBkYXRlZCBvbiB3cml0ZXMuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJXQVRDSEVSX1NJWkVfU1RSTEVOXGZQIgorLmJyCisuUkkgIlxmSUlmIHNldCB0aGVuIGRhdGEgaXMgc3VwcHBvc2VkIHRvIGJlIGEgemVyby10ZXJtaW5hdGVkIGNoYXJhY3RlciBhcnJheSBhbmQgYm90aCBkYXRhX3NpemUgYW5kIGRhdGFfc2l6ZV9wIGFyZSBpZ25vcmVkLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCV0FUQ0hFUl9TSVpFX1VOSVRfT0lEU1xmUCIKKy5icgorLlJJICJcZklJZiBzZXQgdGhlbiBzaXplIGlzIGluIHVuaXRzIG9mIG9iamVjdCBpZGVudGlmaWVycy4gXGZQIgorLnRpIC0xYworLlJJICJ0eXBlZGVmIHN0cnVjdCBcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb19zXGZQIFxmQm5ldHNubXBfd2F0Y2hlcl9pbmZvXGZQIgogLmJyCiAuaW4gLTFjCiAuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgogLlBQIAogV2F0Y2ggYSBzcGVjaWZpZWQgXGZCdmFyaWFibGVcZlAgYW5kIHByb2Nlc3MgaXQgYXMgYW4gaW5zdGFuY2Ugb3Igc2NhbGFyIG9iamVjdC4gCisuU0ggIkRlZmluZSBEb2N1bWVudGF0aW9uIgorLlBQIAorLlNTICIjZGVmaW5lIFdBVENIRVJfRklYRURfU0laRSIKKy5QUAorVGhlIHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGlzIGNvbnN0YW50LiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDI2IG9mIGZpbGUgd2F0Y2hlci5oLgorLlNTICIjZGVmaW5lIFdBVENIRVJfTUFYX1NJWkUiCisuUFAKK1RoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGlzIHN0b3JlZCBpbiBtYXhfc2l6ZS4gSWYgV0FUQ0hFUl9TSVpFX1NUUkxFTiBpcyBzZXQgdGhlbiBpdCBpcyBzdXBwb3NlZCB0aGF0IG1heF9zaXplICsgMSBieXRlcyBjb3VsZCBiZSBzdG9yZWQgaW4gdGhlIGJ1ZmZlci4gCisuUFAKK1xmQkV4YW1wbGVzOiBcZlAKKy5pbiArMWMKK1xmQndhdGNoZWQuY1xmUC4KKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDMyIG9mIGZpbGUgd2F0Y2hlci5oLgorLlNTICIjZGVmaW5lIFdBVENIRVJfU0laRV9JU19QVFIiCisuUFAKK0lmIHNldCB0aGVuIHRoZSBcZkJ2YXJpYWJsZVxmUCBkYXRhX3NpemVfcCBwb2ludHMgdG8gaXMgc3VwcG9zZWQgdG8gaG9sZCB0aGUgY3VycmVudCBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBhbmQgd2lsbCBiZSB1cGRhdGVkIG9uIHdyaXRlcy4gXGZCU2luY2U6XGZQCisuUlMgNAorTmV0LVNOTVAgNS41IAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMzggb2YgZmlsZSB3YXRjaGVyLmguCisuU1MgIiNkZWZpbmUgV0FUQ0hFUl9TSVpFX1NUUkxFTiIKKy5QUAorSWYgc2V0IHRoZW4gZGF0YSBpcyBzdXBwcG9zZWQgdG8gYmUgYSB6ZXJvLXRlcm1pbmF0ZWQgY2hhcmFjdGVyIGFycmF5IGFuZCBib3RoIGRhdGFfc2l6ZSBhbmQgZGF0YV9zaXplX3AgYXJlIGlnbm9yZWQuIEFkZGl0aW9uYWxseSBcXDAgaXMgYSBmb3JiaWRkZW4gY2hhcmFjdGVyIGluIHRoZSBkYXRhIHNldC4KKy5QUAorXGZCU2luY2U6XGZQCisuUlMgNAorTmV0LVNOTVAgNS41IAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNDUgb2YgZmlsZSB3YXRjaGVyLmguCisuU1MgIiNkZWZpbmUgV0FUQ0hFUl9TSVpFX1VOSVRfT0lEUyIKKy5QUAorSWYgc2V0IHRoZW4gc2l6ZSBpcyBpbiB1bml0cyBvZiBvYmplY3QgaWRlbnRpZmllcnMuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGFuIE9JRCBhbmQgdHJhY2tzIHRoZSBPSURfTEVOR1RIIG9mIGl0IGFzIG9wcG9zZWQgdG8gaXQncyBzaXplLgorLlBQCitcZkJTaW5jZTpcZlAKKy5SUyA0CitOZXQtU05NUCA1LjUuMSAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDUyIG9mIGZpbGUgd2F0Y2hlci5oLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9wZHVfYXBpLjMuZGVmIGIvbWFuL3BkdV9hcGkuMy5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4YjRhNwotLS0gL2Rldi9udWxsCisrKyBiL21hbi9wZHVfYXBpLjMuZGVmCkBAIC0wLDAgKzEsMjggQEAKKy5USCBQRFVfQVBJIDMgIjIwIEFwciAyMDA5IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlNIIE5BTUUKK3NubXBfcGR1X2NyZWF0ZSwgc25tcF9jbG9uZV9wZHUsIHNubXBfZml4X3BkdSwKK3NubXBfZnJlZV9wZHUgLSBwZHVfYXBpIGZ1bmN0aW9ucworLlNIIFNZTk9QU0lTCisuQiAjaW5jbHVkZSA8bmV0LXNubXAvcGR1X2FwaS5oPgorLlBQCisuQkkgIm5ldHNubXBfcGR1ICpzbm1wX3BkdV9jcmVhdGUoIGludCIgInR5cGUiICIpOyIKKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9jbG9uZV9wZHUoIG5ldHNubXBfcGR1KiIgInBkdSIgIik7IgorLlBQCisuQkkgIm5ldHNubXBfcGR1ICpzbm1wX2ZpeF9wZHUoIG5ldHNubXBfcGR1KiIgInBkdSIgIiwgaW50ICIgImlkeCIgIik7IgorLlBQCisuQkkgIm5ldHNubXBfcGR1ICpzbm1wX2ZyZWVfcGR1KCBuZXRzbm1wX3BkdSoiICJwZHUiICIpOyIKKy5QUAorLlNIIERFU0NSSVBUSU9OCitUaGVzZSBmdW5jdGlvbnMgZGVhbCB3aXRoIFNOTVAgcmVxdWVzdCBzdHJ1Y3R1cmVzLgorLlBQCisuQiBzbm1wX3BkdV9jcmVhdGUKKy5QUAorLkIgc25tcF9jbG9uZV9wZHUKKy5QUAorLkIgc25tcF9maXhfcGR1CisuUFAKKy5CIHNubXBfZnJlZV9wZHUKKy5TSCAiU0VFIEFMU08iCisuQlIgdmFyYmluZF9hcGkgIigzKSIKKy5CUiBzZXNzaW9uX2FwaSAiKDMpIgpkaWZmIC0tZ2l0IGEvbWFuL3JlYWRfY29uZmlnLjMuZGVmIGIvbWFuL3JlYWRfY29uZmlnLjMuZGVmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjgwZDIxLi4wMDAwMDAwCi0tLSBhL21hbi9yZWFkX2NvbmZpZy4zLmRlZgorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi0uVEggUkVBRF9DT05GSUcgMyAiMjMgRmViIDIwMDMiICIiICJOZXQtU05NUCIKLS5TSCBOQU1FCi1yZWdpc3Rlcl9jb25maWdfaGFuZGxlciwgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIKLXVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIHJlZ2lzdGVyX21pYl9oYW5kbGVycywgcmVhZF9jb25maWdzLAotcmVhZF9wcmVtaWJfY29uZmlncywgY29uZmlnX3BlcnJvciwgY29uZmlnX3B3YXJuIC0gcmVhZF9jb25maWcgZnVuY3Rpb25zCi0uU0ggU1lOT1BTSVMKLS5CICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+Ci0uUFAKLS5CIHN0cnVjdCBjb25maWdfbGluZSAqCi0uYnIKLS5CSSAiICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHRva2VuICwKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCi0uUFAKLS5CIHN0cnVjdCBjb25maWdfbGluZSAqCi0uYnIKLS5CSSAiICByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwgCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB0b2tlbiAsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKLS5QUAotLkJJICJ2b2lkIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgotLlBQCi0uQiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgotLmJyCi0uQkkgIiAgcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gLAotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHBhcnNlciAiKShjb25zdCBjaGFyICosIGNoYXIgKiksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHJlbGVhc2VyICIpKHZvaWQpLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoidXNhZ2VMaW5lICIpOyIKLS5QUAotLkIgc3RydWN0IGNvbmZpZ19saW5lICoKLS5icgotLkJJICIgIHJlZ2lzdGVyX2FwcF9wcmVtaWJfaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICwKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB1c2FnZUxpbmUgIik7IgotLlBQCi0uQkkgInZvaWQgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAiKTsiCi0uUFAKLS5CSSAidm9pZCByZWFkX2NvbmZpZ19wcmludF91c2FnZShjaGFyICoiIGxlYWQgIik7IgotLlBQCi0uQiAidm9pZCByZWFkX2NvbmZpZ3Modm9pZCk7IgotLlBQCi0uQiAidm9pZCByZWFkX3ByZW1pYl9jb25maWdzKHZvaWQpOyIKLS5QUAotLkJJICJ2b2lkIGNvbmZpZ19wd2Fybihjb25zdCBjaGFyICoiIHN0cmluZyAiKTsiCi0uYnIKLS5CSSAidm9pZCBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKiIgc3RyaW5nICIpOyIKLQotLlNIIERFU0NSSVBUSU9OCi1UaGUgZnVuY3Rpb25zIGFyZSBhIGZhaXJseSBleHRlbnNpYmxlIHN5c3RlbSBvZiBwYXJzaW5nIHZhcmlvdXMKLWNvbmZpZ3VyYXRpb24gZmlsZXMgYXQgdGhlIHJ1biB0aW1lIG9mIGFuIGFwcGxpY2F0aW9uLiAgVGhlCi1jb25maWd1cmF0aW9uIGZpbGUgZmxvdyBpcyBicm9rZW4gaW50byB0aGUgZm9sbG93aW5nIHBoYXNlczoKLS5SUyA0Ci0uVFAgNAotMS4KLVJlZ2lzdHJhdGlvbiBvZiBoYW5kbGVycy4KLS5UUAotMi4KLVJlYWRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHByZS1NSUIgcGFyc2luZyByZXF1aXJlbWVudHMuCi0uVFAKLTMuCi1SZWFkaW5nIGFuZCBwYXJzaW5nIG9mIHRoZSB0ZXh0dWFsIE1JQiBmaWxlcy4KLS5UUAotNC4KLVJlYWRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcy4KLS5UUAotNS4KLU9wdGlvbmFsbHkgcmUtcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhdCBhIGZ1dHVyZSBkYXRlLgotLlJFCi0uUFAKLVRoZSBpZGVhIGlzIHRoYXQgdGhlIGNhbGxpbmcgYXBwbGljYXRpb24gaXMgYWJsZSB0byByZWdpc3RlcgotLkkgaGFuZGxlcnMKLWZvciBjZXJ0YWluCi0uSSB0b2tlbnMKLXNwZWNpZmllZCBpbiBjZXJ0YWluIHR5cGVzIG9mCi0uSSBmaWxlcy4KLVRoZSAKLS5CIHJlYWRfY29uZmlncygpCi1mdW5jdGlvbiBjYW4gdGhlbiBiZSBjYWxsZWQgdG8gbG9vayBmb3IgYWxsIHRoZSBmaWxlcyB0aGF0IGl0IGhhcwotcmVnaXN0cmF0aW9ucyBmb3IsIGZpbmQgdGhlIGZpcnN0IHdvcmQgb24gZWFjaCBsaW5lLCBhbmQgcGFzcyB0aGUKLXJlbWFpbmRlciB0byB0aGUgYXBwcm9wcmlhdGVseSByZWdpc3RlcmVkIGhhbmRsZXIuCi0uU0ggVE9LRU4gSEFORExFUlMKLS5QUAotSGFuZGxlciBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1cmU6Ci0uUFAKLS5SUwotLkJJICJ2b2lkIGhhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAiLCBjaGFyICoiIGxpbmUgIik7IgotLlJFCi0uUFAKLVRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBiZWluZyB0aGUKLXRva2VuIHRoYXQgdHJpZ2dlcmVkIHRoZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gKHdoaWNoIHdvdWxkIGJlIG9uZSBvZgotdGhlIHRva2VucyB0aGF0IHRoZSBmdW5jdGlvbiBoYWQgYmVlbiByZWdpc3RlcmVkIGZvciksIGFuZCB0aGUgc2Vjb25kCi1iZWluZyB0aGUgcmVtYWluZGVyIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgbGluZSBiZXlvbmQgdGhlIHdoaXRlCi1zcGFjZSBmb2xsb3dpbmcgdGhlIHRva2VuLgotLlNIIFJFU09VUkNFIEZSRUVJTkcgSEFORExFUlMKLS5QUAotSWYgdGhlIHBhcmFtZXRlcgotLkkgcmVsZWFzZXIKLXBhc3NlZCB0bwotLkIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIKLWlzIG5vbi1OVUxMLCB0aGVuIHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgaXMgY2FsbGVkIGlmIGFuZCB3aGVuIHRoZQotY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmUtcmVhZC4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGZyZWUgYW55Ci1yZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIGFuZCByZXNldCBpdHMgbm90aW9uCi1vZiB0aGUgY29uZmlndXJhdGlvbiB0byBpdHMgZGVmYXVsdC4gIFRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIHdpbGwKLXRoZW4gYmUgY2FsbGVkIGFnYWluLiAgTm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHJlc291cmNlIGZyZWVpbmcKLWhhbmRsZXIuCi0uU0ggUkVHSVNURVJJTkcgQSBIQU5ETEVSCi0uVFAKLS5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLVRoZQotLkIgaGFuZGxlcigpCi1mdW5jdGlvbiBhYm92ZSBjb3VsZCBiZSByZWdpc3RlcmVkIGZvciB0aGUgY29uZmlndXJhdGlvbiBmaWxlCi0uSSBzbm1wLmNvbmYsCi13aXRoIHRoZSB0b2tlbgotLkkgZ2VuZXJpY1Rva2VuCi1hbmQgdGhlIGhlbHAgc3RyaW5nIChkaXNjdXNzZWQgbGF0ZXIpCi0uSSAiIiJBUkcxIFtBUkcyXSIiIgotdXNpbmcgdGhlIGZvbGxvd2luZyBjYWxsIHRvIHRoZSAKLS5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLWZ1bmN0aW9uOgotLlBQCi0uUlMKLS5SUwotcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZ2VuZXJpY1Rva2VuIiwgaGFuZGxlciwgTlVMTCwgIkFSRzEgW0FSRzJdIik7Ci0uUkUKLS5SRQotLklQCi1UaGlzIHdvdWxkIHJlZ2lzdGVyIHRoZQotLkIgaGFuZGxlcigpCi1mdW5jdGlvbiBzbyB0aGF0IGl0IHdpbGwgZ2V0IGNhbGxlZCBldmVyeSB0aW1lIHRoZSBmaXJzdCB3b3JkIG9mIGEKLWxpbmUgaW4gdGhlIAotLkkgc25tcC5jb25mCi1jb25maWd1cmF0aW9uIGZpbGUocykgbWF0Y2hlcyAiZ2VuZXJpY1Rva2VuIiAoc2VlIAotLkIgcmVhZF9jb25maWdzKCkgCi1iZWxvdykuCi0uVFAKLS5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkKLVRoZSAKLS5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkKLWZ1bmN0aW9uIHdvcmtzIGlkZW50aWNhbGx5IHRvIHRoZSAKLS5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLWZ1bmN0aW9uIGJ1dCBpcyBpbnRlbmRlZCBmb3IgY29uZmlnIGZpbGUgdG9rZW5zIHRoYXQgbmVlZCB0byBiZSByZWFkCi1pbiBiZWZvcmUgdGhlIHRleHR1YWwgTUlCcyBhcmUgcmVhZCBpbiwgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHdpbGwgYmUKLXVzZWQgdG8gY29uZmlndXJlIHRoZSBNSUIgcGFyc2VyLiAgSXQgaXMgcmFyZWx5IHRoZSBjYXNlIHRoYXQgYW55dGhpbmcgCi1idXQgdGhlIFNOTVAgbGlicmFyeSBpdHNlbGYgc2hvdWxkIG5lZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24uCi0uVFAKLS5CIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKQotUmVtb3ZlcyB0aGUgcmVnaXN0ZXJlZCBjb25maWd1cmF0aW9uIGhhbmRsZXIgZm9yIHRoZQotLkkgZmlsZVByZWZpeAotYW5kCi0uSVIgdG9rZW4gLgotCi0uVFAKLS5CIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigpCi0uVFAKLS5CIHJlZ2lzdGVyX2FwcF9wcmVtaWJfaGFuZGxlcigpCi0uVFAKLS5CIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKCkKLVRoZXNlIGZ1bmN0aW9ucyBhcmUgYW5hbGFnb3VzIHRvIAotLkJSIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkgIiwgIiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpICIgYW5kICIKLS5CIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKQotYnV0IGRvbid0IHJlcXVpcmUgdGhlIGZpbGUgdHlwZSBhcmd1bWVudCAod2hpY2ggaXMgZmlsbGVkIGluIGJ5IHRoZQotYXBwbGljYXRpb24pLiAgSXQgaXMgaW50ZW5kZWQgdGhhdCBNSUIgbW9kdWxlcyB3cml0dGVuIGZvciB0aGUgYWdlbnQKLXVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gYWxsb3cgdGhlIGFnZW50IHRvIGhhdmUgbW9yZSBjb250cm9sIG92ZXIgd2hpY2gKLWNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgKHR5cGljYWxseSB0aGUKLS5JIHNubXBkLmNvbmYKLWZpbGVzKS4KLS5TSCBIRUxQIFNUUklOR1MKLS5QUAotVGhlCi0uSSB1c2FnZUxpbmUKLXBhcmFtZXRlciBwYXNzZWQgdG8KLS5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLWFuZCBzaW1pbGFyIGNhbGxzLCBpcyB1c2VkIHRvIGRpc3BsYXkgaGVscCBpbmZvcm1hdGlvbiB3aGVuIHRoZQotLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQotZnVuY3Rpb24gaXMgY2FsbGVkLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGFsbCBvZiB0aGUgYXBwbGljYXRpb25zCi13aGVuIHRoZSAKLS5CIC1ICi1mbGFnIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLiAgSXQgcHJpbnRzIGEgc3VtbWFyeSBvZiBhbGwgb2YgdGhlCi1jb25maWd1cmF0aW9uIGZpbGUgbGluZXMsIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlcywgdGhhdCB0aGUKLWNvbmZpZ3VyYXRpb24gc3lzdGVtIHVuZGVyc3RhbmRzLiAgVGhlCi0uSSB1c2FnZUxpbmUKLXBhcmFtZXRlciBzaG91bGQgYmUgYSBsaXN0IG9mIGFyZ3VtZW50cyBleHBlY3RlZCBhZnRlciB0aGUgdG9rZW4sIGFuZAotbm90IGEgbGVuZ3RoeSBkZXNjcmlwdGlvbiAod2hpY2ggc2hvdWxkIGdvIGludG8gYSBtYW51YWwgcGFnZQotaW5zdGVhZCkuICBUaGUKLS5JIGxlYWQKLXByZWZpeCB3aWxsIGJlIHByZXBlbmRlZCB0byBlYWNoIGxpbmUgdGhhdCB0aGUgZnVuY3Rpb24gcHJpbnRzIHRvCi1zdGRlcnIsIHdoZXJlIGl0IGRpc3BsYXlzIGl0cyBvdXRwdXQuCi0uUFAKLVRoZQotLkIgaW5pdF9zbm1wKCkKLWZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRoZQotLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQotZnVuY3Rpb24gaXMgY2FsbGVkLCBzbyB0aGF0IHRoZSBsaWJyYXJ5IGNhbiByZWdpc3RlciBpdHMgY29uZmlndXJhdGlvbiAKLWZpbGUgZGlyZWN0aXZlcyBhcyB3ZWxsIGZvciB0aGUgCi0uQiByZWFkX2NvbmZpZ19wcmludF91c2FnZSgpCi1mdW5jdGlvbiB0byBkaXNwbGF5LgotLlNIIFJFQURJTkcgQ09ORklHVVJBVElPTiBGSUxFUwotLlRQCi0uQiBpbml0X3NubXAoKQotT25jZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiB0b2tlbiBwYXJzZXJzIGhhdmUgYmVlbiByZWdpc3RlcmVkLAotLkIgaW5pdF9zbm1wKCkKLXNob3VsZCBiZSBjYWxsZWQuICBJdCB3aWxsIHBhcnNlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdG9rZW5zCi1yZWdpc3RlcmVkIHdpdGgKLS5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCksCi1yZWFkIGluIHRoZSB0ZXh0dWFsIE1JQiBmaWxlcyB1c2luZwotLkIgaW5pdF9taWIoKSwKLWFuZCBmaW5hbGx5IHBhcnNlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdG9rZW5zIHJlZ2lzdGVyZWQgd2l0aCAKLS5CUiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpIC4KLS5QUAotSWYgdGhlIAotLkIgaW5pdF9zbm1wKCkKLWZ1bmN0aW9uIGlzIHVzZWQsIG5vbmUgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbmVlZCB0byBiZSBjYWxsZWQgYnkgCi10aGUgYXBwbGljYXRpb246Ci0uVFAKLS5CIHJlZ2lzdGVyX21pYl9oYW5kbGVycygpCi1UaGUgU05NUCBsaWJyYXJ5J3Mgcm91dGluZSB0byByZWdpc3RlciBpdHMgY29uZmlndXJhdGlvbiBmaWxlCi1oYW5kbGVycy4KLS5UUAotLkIgcmVhZF9wcmVtaWJfY29uZmlncygpCi1UaGUgcm91dGluZSB0aGF0IHBhcnNlcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdG9rZW5zIHJlZ2lzdGVyZWQKLXRvIGJlIGRlYWx0IHdpdGggYmVmb3JlIHRoZSB0ZXh0dWFsIE1JQnMgYXJlIHJlYWQgaW4uICBTZWUgCi0uQiByZWFkX2NvbmZpZ3MoKQotYmVsb3cuCi0uVFAKLS5CIHJlYWRfY29uZmlncygpCi1SZWFkcyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaXQgY2FuIGZpbmQgaW4gdGhlIAotLkkgU05NUENPTkZQQVRICi1lbnZpcm9ubWVudCB2YXJpYWJsZSAob3IgaXRzIGRlZmF1bHQgdmFsdWUpIGZvciB0b2tlbnMgYW5kCi1hcHByb3ByaWF0ZWx5IGNhbGxzIHRoZSBoYW5kbGVycyByZWdpc3RlcmVkIHRvIGl0LCBvciBwcmludHMgYQotIlVua25vd24gdG9rZW4iIHdhcm5pbmcgbWVzc2FnZS4gIEl0IGxvb2tzIGZvciBhbnkgZmlsZSB0aGF0IGl0IGhhcwotcHJldmlvdXNseSByZWNlaXZlZCBhIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IGZvci4KLS5TSCBDT05GSUdVUkFUSU9OIEZJTEVTIFJFQUQKLS5QUAotVGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgcmVhZCBhcmUgZm91bmQgYnkgdXNpbmcgdGhlIGNvbG9uIHNlcGFyYXRlZAotLkkgU05NUENPTkZQQVRICi1lbnZpcm9ubWVudCB2YXJpYWJsZSAob3IgaXRzIGRlZmF1bHQgdmFsdWUsIHdoaWNoIHdpbGwgYmUKLVNZU0NPTkZESVIvc25tcCwgZm9sbG93ZWQgYnkKLURBVEFESVIvc25tcCwgZm9sbG93ZWQgYnkgTElCRElSL3NubXAsIGZvbGxvd2VkIGJ5ICRIT01FLy5zbm1wKSBhbmQKLXJlYWRpbmcgaW4gdGhlIGZpbGVzIGZvdW5kIHRoYXQgbWF0Y2ggYm90aCB0aGUgcHJlZml4IHJlZ2lzdGVyZWQgYW5kCi10aGUgdHdvIHN1ZmZpeGVzCi0uSSAuY29uZgotYW5kCi0uSSAubG9jYWwuY29uZi4KLVRoZSBpZGVhIGJlaGluZCB0aGUgdHdvIGRpZmZlcmVudCBzdWZmaXhlcyBpcyB0aGF0IHRoZSBmaXJzdCBmaWxlIGNhbgotYmUgc2hhcmVkICh2aWEgcmRpc3Qgb3IgYW4gTkZTIG1vdW50KSBhY3Jvc3MgYSBsYXJnZSBudW1iZXIgb2YKLW1hY2hpbmVzIGFuZCB0aGUgc2Vjb25kIGZpbGUgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGxvY2FsIHNldHRpbmdzCi1mb3Igb25lIHBhcnRpY3VsYXIgbWFjaGluZS4gIFRoZXkgZG8gbm90IG5lZWQgdG8gYmUgcHJlc2VudCwgYW5kIHdpbGwKLW9ubHkgYmUgcmVhZCBpZiBmb3VuZC4KLS5TSCBFUlJPUiBIQU5ETElORyBGVU5DVElPTlMKLS5QUAotVGhlIHR3byBmdW5jdGlvbnMKLS5CIGNvbmZpZ19wd2FybigpCi1hbmQKLS5CIGNvbmZpZ19wZXJyb3IoKQotYm90aCB0YWtlIGFuIGVycm9yIHN0cmluZyBhcyBhbiBhcmd1bWVudCBhbmQgcHJpbnQgaXQgdG8gc3RkZXJyIGFsb25nCi13aXRoIHRoZSBmaWxlIGFuZCBsaW5lIG51bWJlciB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuICBBIGNhbGwgdG8gdGhlCi1zZWNvbmQgZnVuY3Rpb24gd2lsbCBhbHNvIGZvcmNlIAotLkIgcmVhZF9jb25maWdzKCkgCi10byBldmVudHVhbGx5IHJldHVybiB3aXRoIGFuIGVycm9yIGNvZGUgaW5kaWNhdGluZyB0byBpdCdzIGNhbGxpbmcKLWZ1bmN0aW9uIHRoYXQgaXQgc2hvdWxkIGFib3J0IHRoZSBvcGVyYXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uLgotLlNIICJFTlZJUk9OTUVOVCBWQVJJQUJMRVMiCi0uVFAgMTAKLVNOTVBDT05GUEFUSAotQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIGNvbmZpZ3VyYXRpb24KLWZpbGVzIGluLgotRGVmYXVsdDogU1lTQ09ORkRJUi9zbm1wOkRBVEFESVIvc25tcDpMSUJESVIvc25tcDokSE9NRS8uc25tcAotLlNIICJTRUUgQUxTTyIKLS5CUiBtaWJfYXBpICIoMyksICIgc25tcF9hcGkgKDMpCi0uXCIgTG9jYWwgVmFyaWFibGVzOgotLlwiICBtb2RlOiBucm9mZgotLlwiIEVuZDoKZGlmZiAtLWdpdCBhL21hbi9zbm1wX2FwaS4zLmRlZiBiL21hbi9zZXNzaW9uX2FwaS4zLmRlZgpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBtYW4vc25tcF9hcGkuMy5kZWYKcmVuYW1lIHRvIG1hbi9zZXNzaW9uX2FwaS4zLmRlZgppbmRleCBkMWNiOTkxLi45YWMyZDVlIDEwMDY0NAotLS0gYS9tYW4vc25tcF9hcGkuMy5kZWYKKysrIGIvbWFuL3Nlc3Npb25fYXBpLjMuZGVmCkBAIC0xLDMgKzEsNyBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAorLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCisuXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTE5LDkgKzIzLDkgQEAKIC5cIiBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTCiAuXCIgU09GVFdBUkUuCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLlRIIFNOTVBfQVBJIDMgIjE5IE1heSAyMDExIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNFU1NJT05fQVBJIDMgIjE5IE1heSAyMDExIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKLXNubXBfc2Vzc19pbml0LCBzbm1wX29wZW4sIHNubXBfc2VuZCwgc25tcF9hc3luY19zZW5kLCBzbm1wX2ZyZWVfcGR1LCBzbm1wX3NlbGVjdF9pbmZvLCBzbm1wX3JlYWQsIHNubXBfdGltZW91dCwgc25tcF9zeW5jaF9yZXNwb25zZSwgc25tcF9jbG9zZSwgc25tcF9wZXJyb3IsIHNubXBfc2Vzc19wZXJyb3IsIHNubXBfZXJyb3IsIHNubXBfYXBpX2VycnN0cmluZyBcLSBzZW5kIGFuZCByZWNlaXZlIFNOTVAgbWVzc2FnZXMKK3NubXBfc2Vzc19pbml0LCBzbm1wX29wZW4sIHNubXBfc2VuZCwgc25tcF9hc3luY19zZW5kLCBzbm1wX3NlbGVjdF9pbmZvLCBzbm1wX3JlYWQsIHNubXBfdGltZW91dCwgc25tcF9zeW5jaF9yZXNwb25zZSwgc25tcF9jbG9zZSwgc25tcF9wZXJyb3IsIHNubXBfc2Vzc19wZXJyb3IsIHNubXBfZXJyb3IsIHNubXBfYXBpX2VycnN0cmluZyBcLSBzZXNzaW9uX2FwaSBmdW5jdGlvbnMKIC5TSCBTWU5PUFNJUwogI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CiAuUFAKQEAgLTYxLDkgKzY1LDYgQEAKIC5QUAogaW50IHNubXBfY2xvc2UgKCBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzZXNzaW9uICk7CiAuUFAKLXZvaWQgc25tcF9mcmVlX3BkdSAoCi1zdHJ1Y3Qgc25tcF9wZHUgKnBkdSApOwotLlBQCiB2b2lkIHNubXBfZXJyb3IgKAogc3RydWN0IHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiwKIC5SUwpAQCAtOTgsOSArOTksOSBAQAogb2JqZWN0LCB3aGljaCB0aGUgYXBwbGljYXRpb24gbXVzdCB1c2UgdG8gcmVmZXJlbmNlIHRoZQogYWN0aXZlIFNOTVAgc2Vzc2lvbi4KIC5QUAotLkkgU25tcF9zZW5kLCBzbm1wX2FzeW5jX3NlbmQKKy5JIFNubXBfc2VuZAogYW5kCi0uSSBzbm1wX2ZyZWVfcGR1CisuSSBzbm1wX2FzeW5jX3NlbmQKIGVhY2ggdGFrZSBhcyBpbnB1dCBhIHBvaW50ZXIgdG8gYQogLkkgc3RydWN0IHNubXBfcGR1CiBvYmplY3QuCmRpZmYgLS1naXQgYS9tYW4vc25tcC5jb25mLjUuZGVmIGIvbWFuL3NubXAuY29uZi41LmRlZgppbmRleCA0MzJlMDRiLi4xM2MxNWE5IDEwMDY0NAotLS0gYS9tYW4vc25tcC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wLmNvbmYuNS5kZWYKQEAgLTEsNCArMSw0IEBACi0uVEggU05NUC5DT05GIDUgIjIxIEZlYiAyMDA3IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVAuQ09ORiA1ICIwMSBBcHIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wLmNvbmYgLSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB0aGUgTmV0LVNOTVAgYXBwbGljYXRpb25zCiAuU0ggREVTQ1JJUFRJT04KQEAgLTQ1LDYgKzQ1LDEzIEBACiBkZWZpbmVzIHRoZSBkZWZhdWx0IGNvbW11bml0eSB0byB1c2UgZm9yIFNOTVB2MSBhbmQgU05NUHYyYyByZXF1ZXN0cy4KIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi1jXGZSIG9wdGlvbi4KIC5cIi5JUCAiZHVtcFBhY2tldCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKKy5JUCAiYWxpYXMgTkFNRSBERUZJTklUSU9OIgorQ3JlYXRlcyBhbiBhbGlhc2VkIHRpZWQgdG8gTkFNRSBmb3IgYSBnaXZlbiB0cmFuc3BvcnQgZGVmaW5pdGlvbi4gIFRoZQorYWxpYXMgY2FuIHRoZSBiZSByZWZlcnJlZCB0byB1c2luZyBhbiBhbGlhczogcHJlZml4LiAgRWcsIGEgbGluZSBvZgorImFsaWFzIGhlcmUgdWRwOjEyNy4wLjAuMTo2MTYxIiB3b3VsZCBhbGxvdyB5b3UgdG8gdXNlIGEgZGVzdGluYXRpb24KK2hvc3Qgb2YgImFsaWFzOmhlcmUiIGluc3RlYWQgb2YgInVkcDoxMjcuMC4wLjE6NjE2MSIuICBUaGlzIGJlY29tZXMKK21vcmUgdXNlZnVsIHdpdGggY29tcGxleCB0cmFuc3BvcnQgYWRkcmVzc2VzIGludm9sdmluZyBJUHY2IGFkZHJlc3NlcywKK2V0Yy4KIC5JUCAiZHVtcFBhY2tldCB5ZXMiCiBkZWZpbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBhIGhleGFkZWNpbWFsIGR1bXAgb2YgdGhlIHJhdyBTTk1QIHJlcXVlc3RzCiBzZW50IGFuZCByZWNlaXZlZCBieSB0aGUgYXBwbGljYXRpb24uCkBAIC0xOTIsNiArMTk5LDE3IEBACiBiZWluZyB1c2VkIChhdXRoIGtleXM6IE1ENT0xNiBieXRlcywgU0hBMT0yMCBieXRlczsKIHByaXYga2V5czogREVTPTE2IGJ5dGVzICg4CiBieXRlcyBvZiB3aGljaCBpcyB1c2VkIGFzIGFuIElWIGFuZCBub3QgYSBrZXkpLCBhbmQgQUVTPTE2IGJ5dGVzKS4KKy5JUCAic3NodG9zbm1wc29ja2V0IFBBVEgiCitTZXRzIHRoZSBwYXRoIG9mIHRoZSBcZkJzc2h0b3NubXBcZlIgc29ja2V0IGNyZWF0ZWQgYnkgYW4gYXBwbGljYXRpb24KKyhlLmcuIHNubXBkKSBsaXN0ZW5pbmcgZm9yIGluY29taW5nIHNzaCBjb25uZWN0aW9ucyB0aHJvdWdoIHRoZQorXGZCc3NodG9zbm1wXGZSIHVuaXggc29ja2V0LgorLklQICJzc2h0b3NubXBzb2NrZXRwZXJtcyBNT0RFIFtPV05FUiBbR1JPVVBdXSIKK1NldHMgdGhlIG1vZGUsIG93bmVyIGFuZCBncm91cCBvZiB0aGUgXGZCc3NodG9zbm1wXGZSIHNvY2tldCBjcmVhdGVkIGJ5CithbiBhcHBsaWNhdGlvbiAoZS5nLiBcZkJzbm1wZFxmUikgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBzc2ggY29ubmVjdGlvbnMKK3Rocm91Z2ggdGhlIFxmQnNzaHRvc25tcFxmUiB1bml4IHNvY2tldC4gIFRoZSBzb2NrZXQgbmVlZHMgdG8gYmUgcmVhZC93cml0ZQorcHJpdmlsZWdlZCBmb3IgU1NIIHVzZXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUgU05NUAorc2VydmljZSAoVkFDTSBhY2Nlc3Mgc3RpbGwgbmVlZHMgdG8gYmUgZ3JhbnRlZCBhcyB3ZWxsLCBtb3N0IGxpa2VseQordGhyb3VnaCB0aGUgVFNNIHNlY3VyaXR5IG1vZGVsKS4KIC5cIgogLlwiIFhYWCAtIGFyZSB0aGVzZSBsZW5ndGhzIHN0aWxsIGNvcnJlY3QgPwogLlwiCkBAIC0yMTUsNyArMjMzLDcgQEAKIGZvciBoYW5kbGluZyBpbnB1dCB0byBhbmQgb3V0cHV0IGZyb20gZXh0ZXJuYWwgc2hlbGwgY29tbWFuZHMuCiBVc2VkIGJ5IHRoZSBcZklta3N0ZW1wKClcZlIgYW5kIFxmSW1rdGVtcCgpXGZSIGZ1bmN0aW9ucy4KIC5JUAotSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgcGF0dGVybiBpcyBcZkMvdG1wL3NubXBkWFhYWFhYXGZSLgorSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgcGF0dGVybiBpcyBcZkNORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOXGZSLgogLklQICJzZXJ2ZXJSZWN2QnVmIElOVEVHRVIiCiBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgc2l6ZSBvZiB0aGUgYnVmZmVyIHRvIGJlIHVzZWQgd2hlbiByZWNlaXZpbmcKIGluY29taW5nIFNOTVAgcmVxdWVzdHMuCkBAIC0yNTIsMTQgKzI3MCwxNSBAQAogZW52aXJvbm1lbnQgdmFyaWFibGUuCiAuSVAgInNob3dNaWJFcnJvcnMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiB3aGV0aGVyIHRvIGRpc3BsYXkgTUlCIHBhcnNpbmcgZXJyb3JzLgotLklQICJzdHJpY3RDb21tZW50VGVybSAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKKy5JUCAiY29tbWVudFRvRU9MICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogd2hldGhlciBNSUIgcGFyc2luZyBzaG91bGQgYmUgc3RyaWN0IGFib3V0IGNvbW1lbnQgdGVybWluYXRpb24uCiBNYW55IE1JQiB3cml0ZXJzIGFzc3VtZSB0aGF0IEFTTi4xIGNvbW1lbnRzIGV4dGVuZCB0byB0aGUgZW5kIG9mCiB0aGUgdGV4dCBsaW5lLCByYXRoZXIgdGhhbiBiZWluZyB0ZXJtaW5hdGVkIGJ5IHRoZSBuZXh0ICItLSIgdG9rZW4uCiBUaGlzIHRva2VuIGNhbiBiZSB1c2VkIHRvIGFjY2VwdCBzdWNoIChzdHJpY3RseSBpbmNvcnJlY3QpIE1JQnMuCiAuYnIKLU5vdGUgdGhhdCB0aGlzIGRpcmVjdGl2ZSBpcyBwb29ybHkgbmFtZWQsIHNpbmNlIGEgdmFsdWUgb2YgInRydWUiCi13aWxsIHR1cm4gXGZJb2ZmXGZQIHRoZSBzdHJpY3QgaW50ZXJwcmV0YXRpb24gb2YgTUlCIGNvbW1lbnRzLgorTm90ZSB0aGF0IHRoaXMgZGlyZWN0aXZlIHdhcyBwcmV2aW91cyAobWlzLSluYW1lZCBcZklzdHJpY3RDb21tZW50VGVybVxmUiwKK2J1dCB3aXRoIHRoZSByZXZlcnNlIGJlaGF2aW91ciBmcm9tIHRoYXQgaW1wbGllZCBieSB0aGUgbmFtZS4KK1RoaXMgZWFybGllciB0b2tlbiBpcyBzdGlsbCBhY2NlcHRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAuSVAgIm1pYkFsbG93VW5kZXJsaW5lICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogd2hldGhlciB0byBhbGxvdyB1bmRlcmxpbmUgY2hhcmFjdGVycyBpbiBNSUIgb2JqZWN0IG5hbWVzIGFuZAogZW51bWVyYXRpb24gdmFsdWVzLgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfYXBpX2VycnN0cmluZy4zIGIvbWFuL3NubXBfYXBpX2VycnN0cmluZy4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMworKysgYi9tYW4vc25tcF9hcGlfZXJyc3RyaW5nLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX2Nsb3NlLjMgYi9tYW4vc25tcF9jbG9zZS4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX2Nsb3NlLjMKKysrIGIvbWFuL3NubXBfY2xvc2UuMwpAQCAtMSArMSBAQAotLnNvIG1hbjMvc25tcF9hcGkuMworLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfY29uZmlnLjUuZGVmIGIvbWFuL3NubXBfY29uZmlnLjUuZGVmCmluZGV4IGU3YWM0YTYuLjg3MDFkOTMgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX2NvbmZpZy41LmRlZgorKysgYi9tYW4vc25tcF9jb25maWcuNS5kZWYKQEAgLTExLDkgKzExLDEwIEBACiBjb25maWd1cmF0aW9uIGZpbGVzIGluIHRoZSBmb2xsb3dpbmcgNCBkaXJlY3RvcmllcywgaW4gb3JkZXI6CiBTWVNDT05GRElSL3NubXAsCiBEQVRBRElSL3NubXAsIExJQkRJUi9zbm1wLCBhbmQgJEhPTUUvLnNubXAuICBJbiBlYWNoIG9mIHRoZXNlCi1kaXJlY3RvcmllcywgaXQgbG9va3MgZm9yIGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbiBvZiBib3RoCi0uSVIgY29uZiAiIGFuZCAiIGxvY2FsLmNvbmYKLShyZWFkaW5nIHRoZSBzZWNvbmQgb25lcyBsYXN0KS4gIEluIHRoaXMgbWFubmVyLCB0aGVyZSBhcmUKK2RpcmVjdG9yaWVzLCBpdCBsb29rcyBmb3IgZmlsZXMgc25tcC5jb25mLCBzbm1wZC5jb25mIGFuZC9vcgorc25tcHRyYXBkLmNvbmYsIGFzIHdlbGwgYXMgc25tcC5sb2NhbC5jb25mLCBzbm1wZC5sb2NhbC5jb25mCithbmQvb3Igc25tcHRyYXBkLmxvY2FsLmNvbmYuICoubG9jYWwuY29uZiBhcmUgYWx3YXlzCityZWFkIGxhc3QuIEluIHRoaXMgbWFubmVyLCB0aGVyZSBhcmUKIDggZGVmYXVsdCBwbGFjZXMgYSBjb25maWd1cmF0aW9uIGZpbGUgY2FuIGV4aXN0IGZvciBhbnkgZ2l2ZW4KIGNvbmZpZ3VyYXRpb24gZmlsZSB0eXBlLgogLlBQCmRpZmYgLS1naXQgYS9tYW4vc25tcF9lcnJvci4zIGIvbWFuL3NubXBfZXJyb3IuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9lcnJvci4zCisrKyBiL21hbi9zbm1wX2Vycm9yLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX2ZyZWVfcGR1LjMgYi9tYW4vc25tcF9mcmVlX3BkdS4zCmluZGV4IDRjMTZiYWYuLjQ1NmQ2NmQgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX2ZyZWVfcGR1LjMKKysrIGIvbWFuL3NubXBfZnJlZV9wZHUuMwpAQCAtMSArMSBAQAotLnNvIG1hbjMvc25tcF9hcGkuMworLnNvIG1hbjMvcGR1X2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9vcGVuLjMgYi9tYW4vc25tcF9vcGVuLjMKaW5kZXggNGMxNmJhZi4uZmUwYTQ4YiAxMDA2NDQKLS0tIGEvbWFuL3NubXBfb3Blbi4zCisrKyBiL21hbi9zbm1wX29wZW4uMwpAQCAtMSArMSBAQAotLnNvIG1hbjMvc25tcF9hcGkuMworLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfcGVycm9yLjMgYi9tYW4vc25tcF9wZXJyb3IuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9wZXJyb3IuMworKysgYi9tYW4vc25tcF9wZXJyb3IuMwpAQCAtMSArMSBAQAotLnNvIG1hbjMvc25tcF9hcGkuMworLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfcmVhZC4zIGIvbWFuL3NubXBfcmVhZC4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX3JlYWQuMworKysgYi9tYW4vc25tcF9yZWFkLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3NlbGVjdF9pbmZvLjMgYi9tYW4vc25tcF9zZWxlY3RfaW5mby4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX3NlbGVjdF9pbmZvLjMKKysrIGIvbWFuL3NubXBfc2VsZWN0X2luZm8uMwpAQCAtMSArMSBAQAotLnNvIG1hbjMvc25tcF9hcGkuMworLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfc2VuZC4zIGIvbWFuL3NubXBfc2VuZC4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX3NlbmQuMworKysgYi9tYW4vc25tcF9zZW5kLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3Nlc3NfcGVycm9yLjMgYi9tYW4vc25tcF9zZXNzX3BlcnJvci4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX3Nlc3NfcGVycm9yLjMKKysrIGIvbWFuL3NubXBfc2Vzc19wZXJyb3IuMwpAQCAtMSArMSBAQAotLnNvIG1hbjMvc25tcF9hcGkuMworLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfdGltZW91dC4zIGIvbWFuL3NubXBfdGltZW91dC4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX3RpbWVvdXQuMworKysgYi9tYW4vc25tcF90aW1lb3V0LjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wY21kLjEuZGVmIGIvbWFuL3NubXBjbWQuMS5kZWYKaW5kZXggNDg1M2NhZi4uZjY1YjNmZCAxMDA2NDQKLS0tIGEvbWFuL3NubXBjbWQuMS5kZWYKKysrIGIvbWFuL3NubXBjbWQuMS5kZWYKQEAgLTI3LDcgKzI3LDcgQEAKIC5cIiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAuXCIgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUENNRCAxICIwMSBTZXAgMjAwNiIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QQ01EIDEgIjIwIE1hciAyMDA5IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXBjbWQgLSBvcHRpb25zIGFuZCBiZWhhdmlvdXIgY29tbW9uIHRvIG1vc3Qgb2YgdGhlIE5ldC1TTk1QIGNvbW1hbmQtbGluZSB0b29scwogLlNIIFNZTk9QU0lTCkBAIC05NSwxMyArOTUsMTEgQEAKIC5UUAogLkJJIC1lICIgZW5naW5lSUQiCiBTZXQgdGhlIGF1dGhvcml0YXRpdmUgKHNlY3VyaXR5KSBlbmdpbmVJRCB1c2VkIGZvciBTTk1QdjMgUkVRVUVTVAotbWVzc2FnZXMsIGdpdmVuIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nIChvcHRpb25hbGx5IHByZWZpeGVkIGJ5ICIweCIpLgotSXQgaXMgdHlwaWNhbGx5IG5vdCBuZWNlc3NhcnkgdG8gc3BlY2lmeSB0aGlzIGVuZ2luZSBJRCwgYXMgaXQgd2lsbAorbWVzc2FnZXMuICBJdCBpcyB0eXBpY2FsbHkgbm90IG5lY2Vzc2FyeSB0byBzcGVjaWZ5IHRoaXMsIGFzIGl0IHdpbGwKIHVzdWFsbHkgYmUgZGlzY292ZXJlZCBhdXRvbWF0aWNhbGx5LgogLlRQCiAuQkkgLUUgIiBlbmdpbmVJRCIKLVNldCB0aGUgY29udGV4dCBlbmdpbmVJRCB1c2VkIGZvciBTTk1QdjMgUkVRVUVTVCBtZXNzYWdlcyBzY29wZWRQZHUsCi1naXZlbiBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy4KK1NldCB0aGUgY29udGV4dCBlbmdpbmVJRCB1c2VkIGZvciBTTk1QdjMgUkVRVUVTVCBtZXNzYWdlcyBzY29wZWRQZHUuCiBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIHdpbGwgZGVmYXVsdCB0byB0aGUgYXV0aG9yaXRhdGl2ZSBlbmdpbmVJRC4KIC5UUAogLkIgLWgsIC0taGVscApAQCAtMjA0LDYgKzIwMiw3IEBACiAuVFAKIC5CSSAtdCAiIHRpbWVvdXQiCiBTcGVjaWZpZXMgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcyBiZXR3ZWVuIHJldHJpZXMuIFRoZSBkZWZhdWx0IGlzIDEuCitGbG9hdGluZyBwb2ludCBudW1iZXJzIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZnJhY3Rpb25zIG9mIHNlY29uZHMuCiAuVFAKIC5CSSAtdSAiIHNlY05hbWUiCiBTZXQgdGhlIHNlY3VyaXR5TmFtZSB1c2VkIGZvciBhdXRoZW50aWNhdGVkIFNOTVB2MyBtZXNzYWdlcy4KQEAgLTM1Miw2ICszNTEsMTYgQEAKIGRlZmF1bHQgdHJhbnNwb3J0IGlmZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSA8dHJhbnNwb3J0LWFkZHJlc3M+CiBpcyBhICcvJy4KIC5UUCAyNAorLklSICJhbGlhczpteW5hbWUiCitwZXJmb3JtIGEgY29ubmVjdGlvbiB0byB0aGUKKy5JIG15bmFtZQorYWxpYXMgd2hpY2ggbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgc25tcC5jb25mIGZpbGUgdXNpbmcgYSBsaW5lCitsaWtlICIKKy5JICJhbGlhcyBteW5hbWUgdWRwOjEyNy4wLjAuMTo5MTYxIgorIi4gIEFueSB0eXBlIG9mIHRyYW5zcG9ydCBkZWZpbml0aW9uIGNhbiBiZSB1c2VkIGFzIHRoZSBhbGlhcyBleHBhbnNpb24KK3BhcmFtZXRlci4gIEFsaWFzZXMgYXJlIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHVzaW5nIHJlcGVhdGVkIGNvbXBsZXgKK3RyYW5zcG9ydCBzdHJpbmdzLgorLlRQIDI0CiAuSVIgIkFBTDVQVkM6MTAwIgogcGVyZm9ybSB0aGUgcXVlcnkgdXNpbmcgQUFMNSBQRFVzIHNlbnQgb24gdGhlIHBlcm1hbmVudCB2aXJ0dWFsCiBjaXJjdWl0IHdpdGggVlBJPTAgYW5kIFZDST0xMDAgKGRlY2ltYWwpIG9uIHRoZSBmaXJzdCBBVE0gYWRhcHRlciBpbiB0aGUKQEAgLTM3Nyw2ICszODYsMjEgQEAKIGNvbm5lY3QgdG8gcG9ydCAxNjExIG9uIHRoZSBsb2NhbCBob3N0CiAuSVIgIiIgKCA6OjEgCiBpbiBJUHY2IHBhcmxhbmNlKSB1c2luZyBUQ1AvSVB2NiBhbmQgcGVyZm9ybSBxdWVyeSBvdmVyIHRoYXQgY29ubmVjdGlvbi4KKy5UUCAyNAorLklSICJkdGxzdWRwOmhvc3RuYW1lOjkxNjEiCitDb25uZWN0cyB1c2luZyBTTk1QIG92ZXIgRFRMUy9VRFAgYXMgZG9jdW1lbnRlZCBieSB0aGUgSVNNUyB3b3JraW5nIGdyb3VwCisoUkZDcyBub3QgeWV0IHB1Ymxpc2hlZCBhcyBvZiB0aGlzIGRhdGUpLiAgVGhpcyB3aWxsIHJlcXVpcmUgdGhhdCB0aGUKK1RTTSBzZWN1cml0eSBtb2RlbCBpcyBpbiB1c2UgKC0tZGVmU2VjdXJpdHlNb2RlbD10c20pIGFuZCB0aGF0IHRoZQorLklSIGRlZlg1MDlTZXJ2ZXJDZXJ0cywKKy5JUiBkZWZYNTA5Q2xpZW50UHJpdiwKK2FuZAorLklSIGRlZlg1MDlDbGllbnRQdWIKK2NvbmZpZ3VyYXRpb24gdG9rZW5zIGhhdmUgYmVlbiBzZXQuCisuVFAgMjQKKy5JUiAic3NoOmhvc3RuYW1lOjIyIgorQ29ubmVjdHMgdXNpbmcgU05NUCBvdmVyIFNTSCBhcyBkb2N1bWVudGVkIGJ5IHRoZSBJU01TIHdvcmtpbmcgZ3JvdXAKKyhSRkNzIG5vdCB5ZXQgcHVibGlzaGVkIGFzIG9mIHRoaXMgZGF0ZSkuICBUaGlzIHdpbGwgcmVxdWlyZSB0aGF0IHRoZQorVFNNIHNlY3VyaXR5IG1vZGVsIGlzIGluIHVzZSAoLS1kZWZTZWN1cml0eU1vZGVsPXRzbSkuCiAuUFAKIE5vdGUgdGhhdCBub3QgYWxsIHRoZSB0cmFuc3BvcnQgZG9tYWlucyBsaXN0ZWQgYWJvdmUgd2lsbCBhbHdheXMgYmUKIGF2YWlsYWJsZTsgZm9yIGluc3RhbmNlLCBob3N0cyB3aXRoIG5vIElQdjYgc3VwcG9ydCB3aWxsIG5vdCBiZSBhYmxlCkBAIC0zODQsNyArNDA4LDYgQEAKIHRoZSBlcnJvciAiVW5rbm93biBob3N0Ii4gIExpa2V3aXNlLCBzaW5jZSBBQUw1IFBWQyBzdXBwb3J0IGlzIG9ubHkKIGN1cnJlbnRseSBhdmFpbGFibGUgb24gTGludXgsIGl0IHdpbGwgZmFpbCB3aXRoIHRoZSBzYW1lIGVycm9yIG9uCiBvdGhlciBwbGF0Zm9ybXMuCi0KIC5TSCAiTUlCIFBBUlNJTkcgT1BUSU9OUyIKIFRoZSBOZXQtU05NUCBNSUIgcGFyc2VyIG1vc3RseSBhZGhlcmVzIHRvIHRoZSBTdHJ1Y3R1cmUgb2YgTWFuYWdlbWVudAogSW5mb3JtYXRpb24gKFNNSSkuICBBcyB0aGF0IHNwZWNpZmljYXRpb24gaGFzIGNoYW5nZWQgdGhyb3VnaCB0aW1lLCBhbmQKQEAgLTM5Nyw3ICs0MjAsNyBAQAogU3RyaWN0bHkgc3BlYWtpbmcsIGEgc2Vjb25kIGFwcGVhcmFuY2Ugb2YgIi0tIiBzaG91bGQgdGVybWluYXRlIHRoZQogY29tbWVudCwgYnV0IHRoaXMgYnJlYWtzIHNvbWUgTUlCIGZpbGVzLgogVGhlIGRlZmF1bHQgYmVoYXZpb3VyICh0byBpbnRlcnByZXQgY29tbWVudHMgY29ycmVjdGx5KSBjYW4gYWxzbwotYmUgc2V0IHdpdGggdGhlIChtaXNuYW1lZCkgY29uZmlndXJhdGlvbiB0b2tlbiBcZklzdHJpY3RDb21tZW50VGVybVxmUi4KK2JlIHNldCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIFxmSWNvbW1lbnRUb0VPTFxmUi4KIC5UUAogLkIgIi1QZCIKIERpc2FibGVzIHRoZSBsb2FkaW5nIG9mIE1JQiBvYmplY3QgREVTQ1JJUFRJT05zIHdoZW4gcGFyc2luZyBNSUIgZmlsZXMuCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuOC5kZWYgYi9tYW4vc25tcGQuOC5kZWYKaW5kZXggMmEyMDg2Zi4uYjg4NDcwMCAxMDA2NDQKLS0tIGEvbWFuL3NubXBkLjguZGVmCisrKyBiL21hbi9zbm1wZC44LmRlZgpAQCAtMSw0ICsxLDQgQEAKLS5USCBTTk1QRCA4ICIxMCBKYW4gMjAwNyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QRCA4ICIwMSBBcHIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wZCAtIGRhZW1vbiB0byByZXNwb25kIHRvIFNOTVAgcmVxdWVzdCBwYWNrZXRzLgogLlNIIFNZTk9QU0lTCkBAIC0xOTMsNiArMTkzLDEyIEBACiBob3N0bmFtZVs6cG9ydF0KIC5JIG9yCiBJUHY2LWFkZHJlc3NbOnBvcnRdCisuVFAgMjgKKy5JUiAiIiAic3NoIgoraG9zdG5hbWU6cG9ydAorLlRQIDI4CisuSVIgIiIgImR0bHN1ZHAiCitob3N0bmFtZTpwb3J0CiAuUkUKIC5QUAogTm90ZSB0aGF0IDx0cmFuc3BvcnQtc3BlY2lmaWVyPiBzdHJpbmdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIHNvIHRoYXQsCkBAIC0yMjUsNiArMjMxLDE5IEBACiAuVFAgMjQKIC5JUiAidWRwNjoxMDE2MSIKIGxpc3RlbiBvbiBwb3J0IDEwMTYxIG9uIGFsbCBJUHY2IGludGVyZmFjZXMuCisuVFAgMjQKKy5JUiAic3NoOjEyNy4wLjAuMToyMiIKK0FsbG93cyBjb25uZWN0aW9ucyBmcm9tIHRoZSBzbm1wIHN1YnN5c3RlbSBvbiB0aGUgc3NoIHNlcnZlciBvbiBwb3J0CisyMi4gIFRoZSBkZXRhaWxzIG9mIHVzaW5nIFNOTVAgb3ZlciBTU0ggYXJlIGRlZmluZWQgYmVsb3cuCisuVFAgMjQKKy5JUiAiZHRsc3VkcDoxMjcuMC4wLjE6OTE2MSIKK0xpc3RlbiBmb3IgY29ubmVjdGlvbnMgb3ZlciBEVExTIG9uIFVEUCBwb3J0IDkxNjEuICBUaGUgc25tcC5jb25mIGZpbGUKK211c3QgaGF2ZSB0aGUKKy5JUiBkZWZYNTA5U2VydmVyUHViLAorLklSIGRlZlg1MDlTZXJ2ZXJQcml2LAorYW5kCisuSVIgZGVmWDUwOUNsaWVudENlcnRzCitjb25maWd1cmF0aW9uIHRva2VucyBkZWZpbmVkLgogLlBQCiBOb3RlIHRoYXQgbm90IGFsbCB0aGUgdHJhbnNwb3J0IGRvbWFpbnMgbGlzdGVkIGFib3ZlIHdpbGwgYWx3YXlzIGJlCiBhdmFpbGFibGU7IGZvciBpbnN0YW5jZSwgaG9zdHMgd2l0aCBubyBJUHY2IHN1cHBvcnQgd2lsbCBub3QgYmUgYWJsZQpAQCAtMjMyLDYgKzI1MSw3NyBAQAogdGhlIGVycm9yICJFcnJvciBvcGVuaW5nIHNwZWNpZmllZCBlbmRwb2ludCIuICBMaWtld2lzZSwgc2luY2UgQUFMNQogUFZDIHN1cHBvcnQgaXMgb25seSBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIExpbnV4LCBpdCB3aWxsIGZhaWwgd2l0aAogdGhlIHNhbWUgZXJyb3Igb24gb3RoZXIgcGxhdGZvcm1zLgorLlNIIFRyYW5zcG9ydCBTcGVjaWZpYyBOb3RlcworLlJTIDAKKy5UUCA4Citzc2gKK1RoZSBTU0ggdHJhbnNwb3J0LCBvbiB0aGUgc2VydmVyIHNpZGUsIGlzIGFjdHVhbGx5IGp1c3QgYSB1bml4CituYW1lZCBwaXBlIHRoYXQgY2FuIGJlIGNvbm5lY3RlZCB0byB2aWEgYSBzc2ggc3Vic3lzdGVtIGNvbmZpZ3VyZWQgaW4KK3RoZSBtYWluIHNzaCBzZXJ2ZXIuICBUaGUgcGlwZSBsb2NhdGlvbiAoY29uZmlndXJhYmxlIHdpdGggdGhlCitzc2h0b3NubXBzb2NrZXQgdG9rZW4gaW4gc25tcC5jb25mKSBpcworLkkgL3Zhci9uZXQtc25tcC9zc2h0b3NubXAuCitQYWNrZXRzIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gaXQgdmlhIHRoZSBzc2h0b3NubXAgYXBwbGljYXRpb24sIHdoaWNoCithbHNvIHNlbmRzIHRoZSB1c2VyIElEIGFzIHdlbGwgd2hlbiBzdGFydGluZyB0aGUgY29ubmVjdGlvbi4gIFRoZSBUU00KK3NlY3VyaXR5IG1vZGVsIHNob3VsZCBiZSB1c2VkIHdoZW4gcGFja2V0cyBzaG91bGQgcHJvY2VzcyBpdC4KKy5JUAorVGhlCisuSSBzc2h0b3NubXAKK2NvbW1hbmQga25vd3MgaG93IHRvIGNvbm5lY3QgdG8gdGhpcyBwaXBlIGFuZCB0YWxrIHRvCitpdC4gIEl0IHNob3VsZCBiZSBjb25maWd1cmVkIGluIHRoZQorLklSICJPcGVuU1NIIHNzaGQiCitjb25maWd1cmF0aW9uIGZpbGUgKHdoaWNoIGlzIG5vcm1hbGx5CisuSVIgIi9ldGMvc3NoL3NzaGRfY29uZmlnIgordXNpbmcgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGxpbmU6CisuVFAgOAorLklQCitTdWJzeXN0ZW0gc25tcCAvdXNyL2xvY2FsL2Jpbi9zc2h0b3NubXAKKy5JUAorVGhlCisuSSBzc2h0b3NubXAKK2NvbW1hbmQgd2lsbCBuZWVkIHJlYWQvd3JpdGUgYWNjZXNzIHRvIHRoZSAKKy5JIC92YXIvbmV0LXNubXAvc3NodG9zbm1wCitwaXBlLiAgQWx0aG91Z2ggaXQgc2hvdWxkIGJlIGZhaXJseSBzYWZlIHRvIGdyYW50IGFjY2VzcyB0byB0aGUKK2F2ZXJhZ2UgdXNlciBzaW5jZSBpdCBzdGlsbCByZXF1aXJlcyBtb2RpZmljYXRpb25zIHRvIHRoZSBBQ00gc2V0dGluZ3MKK2JlZm9yZSB0aGUgdXNlciBjYW4gcGVyZm9ybSBvcGVyYXRpb25zLCBwYXJhbm9pZCBhZG1pbmlzdHJhdG9ycyBtYXkKK3dhbnQgdG8gbWFrZSB0aGUgL3Zhci9uZXQtc25tcCBkaXJlY3RvcnkgYWNjZXNzaWJsZSBvbmx5IGJ5IHVzZXJzIGluIGEKK3BhcnRpY3VsYXIgZ3JvdXAuICBVc2UgdGhlCisuSSBzc2h0b3NubXBzb2NrZXRwZXJtcworc25tcC5jb25mIGNvbmZpZ3VyZSBvcHRpb24gdG8gc2V0IHRoZSBwZXJtaXNzaW9ucywgb3duZXIgYW5kIGdyb3VwIG9mCit0aGUgY3JlYXRlZCBzb2NrZXQuCisuSVAKK0FjY2VzcyBjb250cm9sIGNhbiBiZSBncmFudGVkIHRvIHRoZSB1c2VyICJmb28iIHVzaW5nIHRoZSBmb2xsb3dpbmcKK3N0eWxlIG9mIHNpbXBsZSBzbm1wZC5jb25mIHNldHRpbmdzOgorLlRQIDgKKy5JUAorcm91c2VyIC1zIHRzbSBmb28gYXV0aHByaXYKKy5JUAorTm90ZSB0aGF0ICJhdXRocHJpdiIgaXMgYWNjZXB0YWJsZSBhc3N1bWluZyBhcyBTU0ggcHJvdGVjdHMgZXZlcnl0aGluZwordGhhdCB3YXkgKGFzc3VtaW5nIHlvdSBoYXZlIGEgbm9uLWluc2FuZSBzZXR1cCkuCitzbm1wZCBoYXMgbm8gbm90aW9uIG9mIGhvdyBTU0ggaGFzIGFjdHVhbGx5IHByb3RlY3RlZCBhIHBhY2tldCBhbmQKK3RodXMgdGhlIHNubXAgYWdlbnQgYXNzdW1lcyBhbGwgcGFja2V0cyBwYXNzZWQgdGhyb3VnaCB0aGUgU1NICit0cmFuc3BvcnQgaGF2ZSBiZWVuIHByb3RlY3RlZCBhdCB0aGUgYXV0aHByaXYgbGV2ZWwuCisuVFAgOAorZHRsc3VkcAorVGhlIERUTFMgcHJvdG9jb2wsIHdoaWNoIGlzIGJhc2VkIG9mZiBvZiBUTFMsIHJlcXVpcmVzIGJvdGggY2xpZW50IGFuZAorc2VydmVyIGNlcnRpZmljYXRlcyB0byBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24gYW5kIGF1dGhlbnRpY2F0ZSBib3RoCitzaWRlcy4gIEluIG9yZGVyIHRvIGRvIHRoaXMsIHRoZSBjbGllbnQgd2lsbCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUKK3NubXAuY29uZiBmaWxlCit3aXRoIHRoZQorLklSIGRlZlg1MDlTZXJ2ZXJDZXJ0cywKKy5JUiBkZWZYNTA5Q2xpZW50UHJpdiwKK2FuZAorLklSIGRlZlg1MDlDbGllbnRQdWIKK2NvbmZpZ3VyYXRpb24gdG9rZW5zLiAgVGhlIHNlcnZlciB3aWxsIG5lZWQgdG8gY29uZmlndXJlIHRoZSBzbm1wLmNvbmYKK2ZpbGUgd2l0aCB0aGUKKy5JUiBkZWZYNTA5U2VydmVyUHViLAorLklSIGRlZlg1MDlTZXJ2ZXJQcml2LAorYW5kCisuSVIgZGVmWDUwOUNsaWVudENlcnRzCitjb25maWd1cmF0aW9uIHRva2VucyBkZWZpbmVkLgorLklQCitBY2Nlc3MgY29udHJvbCBzZXR1cCBpcyBzaW1pbGFyIHRvIHRoZSBzc2ggdHJhbnNwb3J0IGFzIHRoZSBUU00KK3NlY3VyaXR5IG1vZGVsIHNob3VsZCBiZSB1c2VkIHRvIHByb3RlY3QgdGhlIHBhY2tldC4KKy5SRQogLlNIIENPTkZJR1VSQVRJT04gRklMRVMKIC5QUAogLkIgc25tcGQKZGlmZiAtLWdpdCBhL21hbi9zbm1wZC5jb25mLjUuZGVmIGIvbWFuL3NubXBkLmNvbmYuNS5kZWYKaW5kZXggMWU3Y2IyYy4uYzdlNGI2YSAxMDA2NDQKLS0tIGEvbWFuL3NubXBkLmNvbmYuNS5kZWYKKysrIGIvbWFuL3NubXBkLmNvbmYuNS5kZWYKQEAgLTk3LDcgKzk3LDcgQEAKIGluIG9yZGVyIHRvIHJlc3BvbmQgdG8gU05NUHYzIHJlcXVlc3RzLgogVGhpcyBJRCB3aWxsIG5vcm1hbGx5IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSwgdXNpbmcgdHdvIHJlYXNvbmFibHkKIG5vbi1wcmVkaWN0YWJsZSB2YWx1ZXMgLSBhIChwc2V1ZG8tKXJhbmRvbSBudW1iZXIgYW5kIHRoZSBjdXJyZW50Ci11cHRpbWUgaW4gc2Vjb25kcy4gVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2guIEhvd2V2ZXIgdGhlCit0aW1lIGluIHNlY29uZHMuIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoLiBIb3dldmVyIHRoZQogY2FwYWNpdHkgZXhpc3RzIHRvIGRlZmluZSB0aGUgZW5naW5lSUQgaW4gb3RoZXIgd2F5czoKIC5JUCAiZW5naW5lSUQgU1RSSU5HIgogc3BlY2lmaWVzIHRoYXQgdGhlIGVuZ2luZUlEIHNob3VsZCBiZSBidWlsdCBmcm9tIHRoZSBnaXZlbiB0ZXh0IFNUUklORy4KQEAgLTExNCwxMyArMTE0LDIxIEBACiAuXCIKIC5cIiBXaGF0IGlmIHRoaXMgZG9lc24ndCBleGlzdCA/CiAuXCIKLS5TSCBBQ0NFU1MgQ09OVFJPTAotLkIgc25tcGQKLXN1cHBvcnRzIHRoZSBWaWV3LUJhc2VkIEFjY2VzcyBDb250cm9sIE1vZGVsIChWQUNNKSBhcyBkZWZpbmVkIGluIFJGQwotMjU3NSwgdG8gY29udHJvbCB3aG8gY2FuIHJldHJpZXZlIG9yIHVwZGF0ZSBpbmZvcm1hdGlvbi4gIFRvIHRoaXMgZW5kLAotaXQgcmVjb2duaXplcyB2YXJpb3VzIGRpcmVjdGl2ZXMgcmVsYXRpbmcgdG8gYWNjZXNzIGNvbnRyb2wuCi1UaGVzZSBmYWxsIGludG8gZm91ciBiYXNpYyBncm91cHMuCi0uU1MgU05NUHYzIFVzZXJzCisuU0ggU05NUHYzIEFVVEhFTlRJQ0FUSU9OCitTTk1QdjMgd2FzIG9yaWdpbmFsbHkgZGVmaW5lZCB1c2luZyB0aGUgVXNlci1CYXNlZCBTZWN1cml0eSBNb2RlbAorKFVTTSksIHdoaWNoIGNvbnRhaW5zIGEgcHJpdmF0ZSBsaXN0IG9mIHVzZXJzIGFuZCBrZXlzIHNwZWNpZmljIHRvIHRoZQorU05NUHYzIHByb3RvY29sLiAgVGhlIG9wZXJhdGlvbmFsIGNvbW11bml0eSwgaG93ZXZlciwgZGVjbGFyZWQgaXQgYQorcGFpbiB0byBtYW5pcHVsYXRlIHlldCBhbm90aGVyIGRhdGFiYXNlIGFuZCB3b3VsZCBwcmVmZXIgdG8gdXNlCitleGlzdGluZyBpbmZyYXN0cnVjdHVyZS4gIFRvIHRoYXQgZW5kIHRoZSBJRVRGIGNyZWF0ZWQgdGhlIElTTVMKK3dvcmtpbmcgZ3JvdXAgdG8gYmF0dGxlIHRoYXQgcHJvYmxlbSwgYW5kIHRoZSBJU01TIHdvcmtpbmcgZ3JvdXAKK2RlY2lkZWQgdG8gdHVubmVsIFNOTVAgb3ZlciBTU0ggYW5kIERUTFMgdG8gbWFrZSB1c2UgZXhpc3RpbmcgdXNlciBhbmQKK2F1dGhlbnRpY2F0aW9uIGluZnJhc3RydWN0dXJlcy4KKy5TUyBTTk1QdjMgVVNNIFVzZXJzCitUbyB1c2UgdGhlIFVTTSBiYXNlZCBTTk1QdjMtc3BlY2lmaWMgdXNlcnMsIHlvdSdsbCBuZWVkIHRvIGNyZWF0ZQordGhlbS4gIEl0IGlzIHJlY29tbWVuZGVkIHlvdQorLkIgInVzZSB0aGUgbmV0LXNubXAtY29uZmlnIGNvbW1hbmQiCit0byBkbyB0aGlzLCBidXQgeW91IGNhbiBhbHNvIGRvIGl0IGJ5IGRpcmVjdGx5IHNwZWNpZnlpbmcgY3JlYXRlVXNlcgorZGlyZWN0aXZlcyB5b3Vyc2VsZiBpbnN0ZWFkOgogLklQICJjcmVhdGVVc2VyIFstZSBFTkdJTkVJRF0gdXNlcm5hbWUgKE1ENXxTSEEpIGF1dGhwYXNzcGhyYXNlIFtERVN8QUVTXSBbcHJpdnBhc3NwaHJhc2VdIgogLklQCiBNRDUgYW5kIFNIQSBhcmUgdGhlIGF1dGhlbnRpY2F0aW9uIHR5cGVzIHRvIHVzZS4gIERFUyBhbmQgQUVTIGFyZSB0aGUKQEAgLTE3NywxMiArMTg1LDQzIEBACiBzdXBwb3J0ZWQgYWxnb3JpdGhtcykuICBNYXN0ZXIgZW5jcnlwdGlvbiBrZXlzLCB0aG91Z2gsIG5lZWQgdG8gYmUgdGhlCiBsZW5ndGggcmVxdWlyZWQgYnkgdGhlIGF1dGhlbnRpY2F0aW9uIGFsZ29yaXRobSBub3QgdGhlIGxlbmd0aAogcmVxdWlyZWQgYnkgdGhlIGVuY3J5cHRpbmcgYWxnb3JpdGhtIChNRDU6IDE2IGJ5dGVzLCBTSEE6IDIwIGJ5dGVzKS4KKy5TUyBTU0ggU3VwcG9ydAorVG8gdXNlIFNTSCwgeW91J2xsIG5lZWQgdG8gY29uZmlndXJlIHNzaGQgdG8gaW52b2tlIHNzaHRvc25tcCBhcyB3ZWxsCithcyBjb25maWd1cmUgdGhlIGFjY2VzcyBjb250cm9sIHNldHRpbmdzIHRvIGFsbG93IGFjY2VzcyB0aHJvdWdoIHRoZQordHNtIHNlY3VyaXR5IG1vZGVsIHVzaW5nIHRoZSB1c2VyIG5hbWUgcHJvdmlkZWQgdG8gc25tcGQgYnkgdGhlIHNzaAordHJhbnNwb3J0LgorLlNTIERUTFMgU3VwcG9ydAorRm9yIERUTFMsCisuQiBzbm1wZAord2lsbCBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgd2l0aCBpdCdzIG93biBYLjUwOSBjZXJ0aWZpY2F0ZSBhcyB3ZWxsIGFzCit0aGUgY2VydGlmaWNhdGVzIG9mIHRoZSBjbGllbnQgdXNlcnMgdG8gYmUgYWxsb3dlZCB0byBjb25uZWN0IHRvIHRoZQorYWdlbnQuICBUaGUgYWNjZXNzIGNvbnRyb2wgd2lsbCBuZWVkIHRvIGJlIHNldCB1cCBhcyB3ZWxsIHRvIGFsbG93CithY2Nlc3MgdGhyb3VnaCB0aGUKKy5JIHRzbQorc2VjdXJpdHkgbW9kZWwuICBUaGUgQ29tbW9uTmFtZSBvZiB0aGUgU3ViamVjdCBmcm9tIHRoZSBYLjUwOQorY2VydGlmaWNhdGUgd2lsbCBiZSBwYXNzZWQgdG8gc25tcGQgYXMgdGhlIFNOTVB2MyB1c2VybmFtZSB0byB1c2UuCitTZWUgdGhlIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL1VzaW5nX0RUTFMgd2ViIHBhZ2UgZm9yCittb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCBEVExTLgorLklQICJkZWZYNTA5U2VydmVyUHViIEZJTEUiCisuSVAgImRlZlg1MDlTZXJ2ZXJQcml2IEZJTEUiCitUaGVzZSB0d28gZGlyZWN0aXZlcyBzcGVjaWZ5IHRoZSBwdWJsaWMgYW5kIHByaXZhdGUga2V5IGZpbGVzIGZvciB0aGUKK2NlcnRpZmljYXRlIHRoYXQKKy5CIHNubXBkCitzaG91bGQgcHJlc2VudCB0byBpbmNvbWluZyBjb25uZWN0aW9ucy4KKy5JUCAiZGVmWDUwOUNsaWVudENlcnRzIEZJTEUiCitUaGlzIGRpcmVjdGl2ZSBzcGVjaWZpZXMgYSBmaWxlIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBwdWJsaWMga2V5cyAob3IKK0NBcyBvZiBwdWJsaWMga2V5cykgZm9yIGNsaWVudHMgdG8gY29ubmVjdCB0aGUgc2VydmVyIHdpdGguCisuU0ggQUNDRVNTIENPTlRST0wKKy5CIHNubXBkCitzdXBwb3J0cyB0aGUgVmlldy1CYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCAoVkFDTSkgYXMgZGVmaW5lZCBpbiBSRkMKKzI1NzUsIHRvIGNvbnRyb2wgd2hvIGNhbiByZXRyaWV2ZSBvciB1cGRhdGUgaW5mb3JtYXRpb24uICBUbyB0aGlzIGVuZCwKK2l0IHJlY29nbml6ZXMgdmFyaW91cyBkaXJlY3RpdmVzIHJlbGF0aW5nIHRvIGFjY2VzcyBjb250cm9sLgogLlNTIFRyYWRpdGlvbmFsIEFjY2VzcyBDb250cm9sCiBNb3N0IHNpbXBsZSBhY2Nlc3MgY29udHJvbCByZXF1aXJlbWVudHMgY2FuIGJlIHNwZWNpZmllZCB1c2luZyB0aGUKIGRpcmVjdGl2ZXMgXGZJcm91c2VyXGZSL1xmSXJ3dXNlclxmUiAoZm9yIFNOTVB2Mykgb3IKIFxmSXJvY29tbXVuaXR5XGZSL1xmSXJ3Y29tbXVuaXR5XGZSIChmb3IgU05NUHYxIG9yIFNOTVB2MmMpLgotLklQICJyb3VzZXIgVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKLS5JUCAicnd1c2VyIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJvdXNlciBbLXMgU0VDTU9ERUxdIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJ3dXNlciBbLXMgU0VDTU9ERUxdICBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgogc3BlY2lmeSBhbiBTTk1QdjMgdXNlciB0aGF0IHdpbGwgYmUgYWxsb3dlZCByZWFkLW9ubHkgKEdFVCBhbmQgR0VUTkVYVCkKIG9yIHJlYWQtd3JpdGUgKEdFVCwgR0VUTkVYVCBhbmQgU0VUKSBhY2Nlc3MgcmVzcGVjdGl2ZWx5LgogQnkgZGVmYXVsdCwgdGhpcyB3aWxsIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBmdWxsIE9JRCB0cmVlIGZvciBhdXRoZW50aWNhdGVkCkBAIC0xOTQsNiArMjMzLDEzIEBACiBBbiBvcHRpb25hbCBjb250ZXh0IGNhbiBhbHNvIGJlIHNwZWNpZmllZCwgb3IgImNvbnRleHQqIiB0byBkZW5vdGUgYSBjb250ZXh0CiBwcmVmaXguICBJZiBubyBjb250ZXh0IGZpZWxkIGlzIHNwZWNpZmllZCAob3IgdGhlIHRva2VuICIqIiBpcyB1c2VkKSwgdGhlCiBkaXJlY3RpdmUgd2lsbCBtYXRjaCBhbGwgcG9zc2libGUgY29udGV4dHMuCisuSVAKK0lmIFNFQ01PREVMIGlzIHNwZWNpZmllZCB0aGVuIGl0IHdpbGwgYmUgdGhlIHNlY3VyaXR5IG1vZGVsIHJlcXVpcmVkCitmb3IgdGhhdCB1c2VyIChub3RlIHRoYXQgaWRlbnRpY2FsIHVzZXIgbmFtZXMgbWF5IGNvbWUgaW4gb3ZlcgorZGlmZmVyZW50IHNlY3VyaXR5IG1vZGVscyBhbmQgd2lsbCBiZSBhcHByb3ByaWF0ZWx5IHNlcGFyYXRlZCB2aWEgdGhlCithY2Nlc3MgY29udHJvbCBzZXR0aW5ncykuICBUaGUgZGVmYXVsdCBzZWN1cml0eSBtb2RlbCBpcyAidXNtIiBhbmQgdGhlCitvdGhlciBjb21tb24gc2VjdXJpdHkgbW9kZWxzIGFyZSBsaWtlbHkgInRzbSIgd2hlbiB1c2luZyBTU0ggb3IgRFRMUworc3VwcG9ydCBhbmQgImtzbSIgaWYgdGhlIEtlcmJlcm9zIHN1cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4uCiAuSVAgInJvY29tbXVuaXR5IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgogLklQICJyd2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKIHNwZWNpZnkgYW4gU05NUHYxIG9yIFNOTVB2MmMgY29tbXVuaXR5IHRoYXQgd2lsbCBiZSBhbGxvd2VkIHJlYWQtb25seQpAQCAtMjQ4LDcgKzI5NCw3IEBACiBkZWZhdWx0IGNvbnRleHQgKCIiKSB3aWxsIGJlIHVzZWQuCiAuSVAgImNvbTJzZWN1bml4IFstQ24gQ09OVEVYVF0gU0VDTkFNRSBTT0NLUEFUSCBDT01NVU5JVFkiCiBpcyB0aGUgVW5peCBkb21haW4gc29ja2V0cyB2ZXJzaW9uIG9mIFxmSWNvbTJzZWNcZlIuCi0uSVAgImdyb3VwIEdST1VQIHt2MXx2MmN8dXNtfSBTRUNOQU1FIgorLklQICJncm91cCBHUk9VUCB7djF8djJjfHVzbXx0c218a3NtfSBTRUNOQU1FIgogbWFwcyBhIHNlY3VyaXR5IG5hbWUgKGluIHRoZSBzcGVjaWZpZWQgc2VjdXJpdHkgbW9kZWwpIGludG8KIGEgbmFtZWQgZ3JvdXAuICBTZXZlcmFsIFxmSWdyb3VwXGZSIGRpcmVjdGl2ZXMgY2FuIHNwZWNpZnkgdGhlCiBzYW1lIGdyb3VwIG5hbWUsIGFsbG93aW5nIGEgc2luZ2xlIGFjY2VzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHNldmVyYWwgCkBAIC0yOTMsNyArMzM5LDcgQEAKIC5JUAogTm90ZSB0aGF0IGEgbWFzayBsb25nZXIgdGhhbiA4IGJpdHMgbXVzdCB1c2UgJzonIHRvIHNlcGFyYXRlIHRoZSBpbmRpdmlkdWFsCiBvY3RldHMuCi0uSVAgImFjY2VzcyBHUk9VUCBDT05URVhUIHthbnl8djF8djJjfHVzbX0gTEVWRUwgUFJFRlggUkVBRCBXUklURSBOT1RJRlkiCisuSVAgImFjY2VzcyBHUk9VUCBDT05URVhUIHthbnl8djF8djJjfHVzbXx0c218a3NtfSBMRVZFTCBQUkVGWCBSRUFEIFdSSVRFIE5PVElGWSIKIG1hcHMgZnJvbSBhIGdyb3VwIG9mIHVzZXJzL2NvbW11bml0aWVzICh3aXRoIGEgcGFydGljdWxhciBzZWN1cml0eSBtb2RlbAogYW5kIG1pbmltdW0gc2VjdXJpdHkgbGV2ZWwsIGFuZCBpbiBhIHNwZWNpZmljIGNvbnRleHQpIHRvIG9uZSBvZiB0aHJlZSB2aWV3cywKIGRlcGVuZGluZyBvbiB0aGUgcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCkBAIC0zODAsNiArNDI2LDE4IEBACiBpbnRlcmZhY2VzIHdoZXJlIHRoZSBhZ2VudCBmYWlscyB0byBkZXRlcm1pbmUgdGhpcyBpbmZvcm1hdGlvbiBjb3JyZWN0bHkuCiBUWVBFIGlzIGEgdHlwZSB2YWx1ZSBhcyBnaXZlbiBpbiB0aGUgSUFOQWlmVHlwZS1NSUIsCiBhbmQgY2FuIGJlIHNwZWNpZmllZCBudW1lcmljYWxseSBvciBieSBuYW1lIChhc3N1bWluZyB0aGlzIE1JQiBpcyBsb2FkZWQpLgorLklQICJpbnRlcmZhY2VfZmFkZW91dCBUSU1FT1VUIgorc3BlY2lmaWVzLCBmb3IgaG93IGxvbmcgdGhlIGFnZW50IGtlZXBzIGVudHJpZXMgaW4gXGZDaWZUYWJsZVxmUiBhZnRlcgorYXBwcm9wcmlhdGUgaW50ZXJmYWNlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHN5c3RlbSAodHlwaWNhbGx5IHZhcmlvdXMgcHBwLAordGFwIG9yIHR1biBpbnRlcmZhY2VzKS4gVGltZW91dCB2YWx1ZSBpcyBpbiBzZWNvbmRzLiBEZWZhdWx0IHZhbHVlIGlzIDMwMAorKD01IG1pbnV0ZXMpLgorLklQICJpbnRlcmZhY2VfcmVwbGFjZV9vbGQgeWVzIgorY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgZW50cmllcyBpbiBcZkNpZlRhYmxlXGZSIHdoZW4gYW4KK2ludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXBwZWFycyBvbiB0aGUgc3lzdGVtLiBFLmcuIHdoZW4gcHBwMCBpbnRlcmZhY2UKK2lzIHJlbW92ZWQsIGl0IGlzIHN0aWxsIGxpc3RlZCBpbiB0aGUgdGFibGUgZm9yIFxmSWludGVyZmFjZV9mYWRlb3V0XGZSCitzZWNvbmRzLiBUaGlzIG9wdGlvbiBlbnN1cmVzLCB0aGF0IHRoZSBvbGQgcHBwMCBpbnRlcmZhY2UgaXMgcmVtb3ZlZCBldmVuCitiZWZvcmUgdGhlIFxmSWludGVyZmFjZV9mYWRlb3V0XGZSIHRpbWVvdXIgd2hlbiBuZXcgcHBwMCAod2l0aCBkaWZmZXJlbnQKK1xmQ2lmSW5kZXhcZlIpIHNob3dzIHVwLgogLlNTIEhvc3QgUmVzb3VyY2VzIEdyb3VwCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQogXGZJaG9zdFxmUiBtb2R1bGUgKHdoaWNoIGlzIG5vdyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIApAQCAtNjY4LDYgKzcyNiwxMiBAQAogb2JqZWN0IChcZkNzbm1wRW5hYmxlQXV0aGVuVHJhcHMuMFxmUikgaXMgcmVhZC13cml0ZSwgYnV0IHNwZWNpZnlpbmcKIHRoaXMgZGlyZWN0aXZlIG1ha2VzIHRoaXMgb2JqZWN0IHJlYWQtb25seSwgYW5kIGF0dGVtcHRzIHRvIHNldCB0aGUKIHZhbHVlIHZpYSBTRVQgcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4gYSBcZklub3RXcml0YWJsZVxmUiBlcnJvciByZXNwb25zZS4KKy5SRQorLklQICJ2MXRyYXBhZGRyZXNzIEhPU1QiCitkZWZpbmVzIHRoZSBhZ2VudCBhZGRyZXNzLCB3aGljaCBpcyBpbnNlcnRlZCBpbnRvIFNOTVB2MSBUUkFQcy4gQXJiaXRyYXJ5IGxvY2FsIAorSVB2NCBhZGRyZXNzIGlzIGNob3NlbiBpZiB0aGlzIG9wdGlvbiBpcyBvbW1pdGVkLiBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgbWFpbmx5IAord2hlbiB0aGUgYWdlbnQgaXMgdmlzaWJsZSBmcm9tIG91dHNpZGUgd29ybGQgYnkgc3BlY2lmaWMgYWRkcmVzcyBvbmx5IChlLmcuIAorYmVjYXVzZSBvZiBuZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gb3IgZmlyZXdhbGwpLgogLlNTICJEaXNNYW4gRXZlbnQgTUlCIgogVGhlIHByZXZpb3VzIGRpcmVjdGl2ZXMgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIHdoZXJlIHRyYXBzIHNob3VsZAogYmUgc2VudCwgYnV0IGFyZSBub3QgY29uY2VybmVkIHdpdGggXGZJd2hlblxmUiB0byBzZW5kIHN1Y2ggdHJhcHMKZGlmZiAtLWdpdCBhL21hbi9zbm1wbmV0c3RhdC4xLmRlZiBiL21hbi9zbm1wbmV0c3RhdC4xLmRlZgppbmRleCA4ZTE0NTBhLi45MmNmZWU0IDEwMDY0NAotLS0gYS9tYW4vc25tcG5ldHN0YXQuMS5kZWYKKysrIGIvbWFuL3NubXBuZXRzdGF0LjEuZGVmCkBAIC05MSw2ICs5MSwxMiBAQAogdHJhZmZpYyBvbiB0aGUgY29uZmlndXJlZCBuZXR3b3JrIGludGVyZmFjZXMuCiBUaGUgZm91cnRoIGZvcm0gZGlzcGxheXMgc3RhdGlzdGljcyBhYm91dCB0aGUgbmFtZWQgcHJvdG9jb2wuCiAuUFAKKy5CIHNubXBuZXRzdGF0Cit3aWxsIGlzc3VlIEdFVEJVTEsgcmVxdWVzdHMgdG8gcXVlcnkgZm9yIGluZm9ybWF0aW9uCitpZiBhdCBsZWFzdCBwcm90b2NvbCB2ZXJzaW9uCisuSSB2MgoraXMgdXNlZC4KKy5QUAogQUdFTlQgaWRlbnRpZmllcyBhIHRhcmdldCBTTk1QIGFnZW50LCB3aGljaCBpcwogaW5zdHJ1bWVudGVkIHRvIG1vbml0b3IgdGhlIGdpdmVuIG9iamVjdHMuCiBBdCBpdHMgc2ltcGxlc3QsIHRoZSBBR0VOVCBzcGVjaWZpY2F0aW9uIHdpbGwKQEAgLTE2Myw2ICsxNjksMTEgQEAKIGlzIGFsc28gcHJlc2VudCwgc2hvdyBwZXItcHJvdG9jb2wgcm91dGluZyBzdGF0aXN0aWNzIGluc3RlYWQgb2YgCiB0aGUgcm91dGluZyB0YWJsZXMuCiAuUFAKKy5CSSBcLUNSICIgcmVwZWF0ZXJzIgorRm9yIEdFVEJVTEsgcmVxdWVzdHMsCisuSSByZXBlYXRlcnMKK3NwZWNpZmllcyB0aGUgbWF4LXJlcGVhdGVycyB2YWx1ZSB0byB1c2UuCisuUFAKIFdoZW4gIHNubXBuZXRzdGF0IGlzIGludm9rZWQgd2l0aCBhbiBpbnRlcnZhbCBhcmd1bWVudCwgaXQKIGRpc3BsYXlzIGEgcnVubmluZyBjb3VudCBvZiBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8gIG5ldHdvcmsKIGludGVyZmFjZXMuCmRpZmYgLS1naXQgYS9tYW4vc25tcHRyYXBkLjguZGVmIGIvbWFuL3NubXB0cmFwZC44LmRlZgppbmRleCAyOWQ1NjVhLi5iNjI0N2JmIDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYXBkLjguZGVmCisrKyBiL21hbi9zbm1wdHJhcGQuOC5kZWYKQEAgLTUxLDcgKzUxLDggQEAKIC5CSSAiLWMiICIgRklMRSIKIFJlYWQgCiAuSSBGSUxFCi1hcyBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KK2FzIGEgY29uZmlndXJhdGlvbiBmaWxlCisob3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGVzKS4KIC5UUAogLkIgLUMKIERvIG5vdCByZWFkIGFueSBjb25maWd1cmF0aW9uIGZpbGVzIGV4Y2VwdCB0aGUgb25lIG9wdGlvbmFsbHkgc3BlY2lmaWVkIGJ5IHRoZSAKQEAgLTY4LDExICs2OSw2IEBACiAuSVIgQUxMCiBmb3IgZXh0cmVtZWx5IHZlcmJvc2Ugb3V0cHV0LgogLlRQCi0uQiAtZQotUHJpbnQgZXZlbnQgbnVtYmVycyAocmlzaW5nL2ZhbGxpbmcgYWxhcm0gZXRjLikgZnJvbSB0aGUgKG9ic29sZXRlKSBNMk0tTUlCLgotLmJyCi1UaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGR1ZSBjb3Vyc2UuCi0uVFAKIC5CIC1mCiBEbyBub3QgZm9yaygpIGZyb20gdGhlIGNhbGxpbmcgc2hlbGwuCiAuVFAKZGlmZiAtLWdpdCBhL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZiBiL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZgppbmRleCAzMmUzYWY1Li5kY2MwMTdkIDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYKKysrIGIvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmCkBAIC0xLDQgKzEsNCBAQAotLlRIIFNOTVBUUkFQRC5DT05GIDUgIjI1IFNlcCAyMDA2IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUUkFQRC5DT05GIDUgIjE5IEZlYiAyMDA5IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB0cmFwZC5jb25mIC0gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgTmV0LVNOTVAgbm90aWZpY2F0aW9uIHJlY2VpdmVyCiAuU0ggREVTQ1JJUFRJT04KQEAgLTE1NSwxMyArMTU1LDE4IEBACiBzaG91bGQgYmUgZGlzcGxheWVkLgogU2VlIHRoZSBzZWN0aW9uIE9VVFBVVCBPUFRJT05TIGluIHRoZQogXGZJc25tcGNtZCgxKVxmUiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KLS5JUCAicHJpbnRFdmVudE51bWJlcnMgeWVzIgotZW5hYmxlcyBzcGVjaWFsaXNlZCBsb2dnaW5nIG9mIGV2ZW50LXJlbGF0ZWQgbm90aWZpY2F0aW9ucyBmcm9tCi10aGUgKGxvbmcgb2Jzb2xldGUpIE0yTS1NSUIuCi0uXCIKLS5cIiBYWFggLSBDSEVDSyBFWEFDVExZIFdISUNIIFRSQVBTCi0uXCIgWFhYIC0gVEhJUyBGRUVMUyBPQlNPTEVURSBUTyBNRSEKLS5cIgorLlNIIE15U1FMIExvZ2dpbmcKK1RoZXJlIGFyZSB0d28gY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCB3b3JrIHRvZ2V0aGVyIHRvIGNvbnRyb2wKK3doZW4gcXVldWVkIHRyYXBzIGFyZSBsb2dnZWQgdG8gdGhlIE15U1FMIGRhdGFiYXNlLiBBIG5vbi16ZXJvCit2YWx1ZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc3FsU2F2ZUludGVydmFsIHRvIGVuYWJsZSBNeVNRTCBsb2dnaW5nLgorLlJFCisuSVAgInNxbE1heFF1ZXVlIG1heCIKK3NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhcHMgdG8gcXVldWUgYmVmb3JlIGEgZm9yY2VkIGZsdXNoCit0byB0aGUgTXlTUUwgZGF0YWJhc2UuCisuUkUKKy5JUCAic3FsU2F2ZUludGVydmFsIHNlY29uZHMiCitzcGVjaWZpZWQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gcGVyaW9kaWMgcXVldWUgZmx1c2hlcy4KK0EgdmFsdWUgb2YgMCBmb3Igd2lsbCBkaXNhYmxlIE15U1FMIGxvZ2dpbmcuCiAuU0ggTk9USUZJQ0FUSU9OIFBST0NFU1NJTkcKIEFzIHdlbGwgYXMgbG9nZ2luZyBpbmNvbWluZyBub3RpZmljYXRpb25zLCB0aGV5IGNhbiBhbHNvCiBiZSBmb3J3YXJkZWQgb24gdG8gYW5vdGhlciBub3RpZmljYXRpb24gcmVjZWl2ZXIsIG9yIHBhc3NlZApkaWZmIC0tZ2l0IGEvbWFuL3NubXB3YWxrLjEuZGVmIGIvbWFuL3NubXB3YWxrLjEuZGVmCmluZGV4IDBjNTVkNzIuLjZlMTUyMDEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wd2Fsay4xLmRlZgorKysgYi9tYW4vc25tcHdhbGsuMS5kZWYKQEAgLTIzLDcgKzIzLDcgQEAKIC5cIiBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTCiAuXCIgU09GVFdBUkUuCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLlRIIFNOTVBXQUxLIDEgIjIzIEF1ZyAyMDA0IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBXQUxLIDEgIjI4IE1heSAyMDA3IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB3YWxrIC0gcmV0cmlldmUgYSBzdWJ0cmVlIG9mIG1hbmFnZW1lbnQgdmFsdWVzIHVzaW5nIFNOTVAgR0VUTkVYVCByZXF1ZXN0cwogLlNIIFNZTk9QU0lTCkBAIC02Nyw2ICs2NywxMSBAQAogLkIgLUNjCiB0byB0dXJuIG9mZiB0aGlzIGNoZWNrLgogLlRQCisuQiAtQ0Uge09JRH0KK0VuZCB0aGUgd2FsayBhdCB0aGUgc3BlY2lmaWVkIE9JRCwgcmF0aGVyIHRoYW4gYSBzaW1wbGUgc3VidHJlZS4KK1RoaXMgY2FuIGJlIHVzZWQgdG8gd2FsayBhIHBhcnRpYWwgc3VidHJlZSwgc2VsZWN0ZWQgY29sdW1ucyBvZgorYSB0YWJsZSwgb3IgZXZlbiB0d28gb3IgbW9yZSB0YWJsZXMgd2l0aGluIGEgc2luZ2xlIGNvbW1hbmQuCisuVFAKIC5CIC1DaQogSW5jbHVkZSB0aGUgZ2l2ZW4gT0lEIGluIHRoZSBzZWFyY2ggcmFuZ2UuICBOb3JtYWxseQogLkIgc25tcHdhbGsKQEAgLTEwMCwxMiArMTA1LDEyIEBACiB0YWtlcyB0aGUgY29tbW9uIG9wdGlvbnMgZGVzY3JpYmVkIGluIHRoZSAKIC5JIHNubXBjbWQoMSkKIG1hbnVhbCBwYWdlLgorLlNIIEVYQU1QTEVTCiAuYnIKIE5vdGUgdGhhdAogLkIgc25tcGJ1bGtnZXQKIFJFUVVJUkVTICBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZSBhZ2VudCB0byBxdWVyeQogYW5kIGF0IG1vc3Qgb25lIE9JRCBhcmd1bWVudCwgYXMgZGVzY3JpYmVkIHRoZXJlLgotLlNIIEVYQU1QTEUKIFRoZSBjb21tYW5kOgogLlBQCiBzbm1wd2FsayAtT3MgLWMgcHVibGljIC12IDEgemV1cyBzeXN0ZW0KQEAgLTEyNSw1ICsxMzAsMTMgQEAKIHN5c0xvY2F0aW9uLjAgPSBTVFJJTkc6ICIiCiAuYnIKIHN5c1NlcnZpY2VzLjAgPSBJTlRFR0VSOiA3MgorLmJyCisocGx1cyB0aGUgY29udGVudHMgb2YgdGhlIHN5c09SVGFibGUpLgorCitUaGUgY29tbWFuZDoKKy5QUAorc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIC1DRSBzeXNPUlRhYmxlIHpldXMgc3lzdGVtCisuUFAKK3dpbGwgcmV0cmlldmUgdGhlIHNjYWxhciB2YWx1ZXMsIGJ1dCBvbWl0IHRoZSBzeXNPUlRhYmxlLgogLlNIICJTRUUgQUxTTyIKIHNubXBjbWQoMSksIHNubXBidWxrd2FsaygxKSwgdmFyaWFibGVzKDUpLgpkaWZmIC0tZ2l0IGEvbWFuL3ZhcmJpbmRfYXBpLjMuZGVmIGIvbWFuL3ZhcmJpbmRfYXBpLjMuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNjFjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vdmFyYmluZF9hcGkuMy5kZWYKQEAgLTAsMCArMSwxOTYgQEAKKy5USCBWQVJCSU5EX0FQSSAzICIyMCBBcHIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5TSCBOQU1FCitzbm1wX3BkdV9hZGRfdmFyLCBzbm1wX3Zhcmxpc3RfYWRkX3Zhciwgc25tcF9hZGRfbnVsbF92YXIsCitzbm1wX2Nsb25lX3ZhcmJpbmQsIHNubXBfZnJlZV92YXJiaW5kLCBzbm1wX2ZyZWVfdmFyLAorcHJpbnRfdmFyaWFibGUsIGZwcmludF92YXJpYWJsZSwgc25wcmludF92YXJpYWJsZSwKK3ByaW50X3ZhbHVlLCBmcHJpbnRfdmFsdWUsIHNucHJpbnRfdmFsdWUgLSB2YXJiaW5kX2FwaSBmdW5jdGlvbnMKKy5TSCBTWU5PUFNJUworLkIgI2luY2x1ZGUgPG5ldC1zbm1wL3ZhcmJpbmRfYXBpLmg+CisuU1MgQ3JlYXRpb24KKy5QUAorLkIgIm5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF9wZHVfYWRkX3ZhcmlhYmxlKCIKKy5icgorLkJJICIgICAgICAgIG5ldHNubXBfcGR1ICoiIHBkdSAiLCIKKy5icgorLkJJICIgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgIHVfY2hhciAiIHR5cGUgIiwgY29uc3Qgdm9pZCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBsZW4gIik7IgorLmJyCisuQiAibmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCIKKy5icgorLkJJICIgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJsaXN0ICIsIgorLmJyCisuQkkgIiAgICAgICAgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIgorLmJyCisuQkkgIiAgICAgICAgdV9jaGFyICIgdHlwZSAiLCBjb25zdCB2b2lkICoiIHZhbHVlICIsIHNpemVfdCAiIGxlbiAiKTsiCisuYnIKKy5CICJuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfYWRkX251bGxfdmFyKCIKKy5icgorLkJJICIgICAgICAgIG5ldHNubXBfcGR1ICoiIHBkdSAiLCIKKy5icgorLkJJICIgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiKTsiCisuUFAKKy5CICJuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfY2xvbmVfdmFyYmluZCgiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFybGlzdCAiKTsiCisuU1MgU2V0dGluZyBWYWx1ZXMKKy5QUAorLkJJICJpbnQgIHNubXBfc2V0X3Zhcl9vYmppZCggbmV0c25tcF92YXJpYWJsZV9saXN0KiAiIHZhcmlhYmxlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiAiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIpOyIKKy5icgorLkJJICJpbnQgIHNubXBfc2V0X3Zhcl92YWx1ZSggbmV0c25tcF92YXJpYWJsZV9saXN0KiAiIHZhcmlhYmxlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogIiB2YWx1ZSAiLCBzaXplX3QgIiB2YWxsZW4gIik7IgorLmJyCisuQkkgImludCAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QqICIgdmFyaWFibGUgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAiIHR5cGUgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiAiIHZhbHVlICIsIHNpemVfdCAiIHZhbGxlbiAiKTsiCisuYnIKKy5CSSAiaW50ICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggbmV0c25tcF92YXJpYWJsZV9saXN0KiAiIHZhcmlhYmxlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgIiB0eXBlICIsIGxvbmcgIiB2YWx1ZSAiKTsiCisuYnIKKy5TUyBPdXRwdXQKKy5QUAorLkJJICJ2b2lkICBwcmludF92YXJpYWJsZShjb25zdCBvaWQgKiIgIm9iamlkIiAiLCBzaXplX3QgIiAib2JqaWRsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5CSSAidm9pZCBmcHJpbnRfdmFyaWFibGUoRklMRSAqIiBmcCAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICIpOyIKKy5icgorLkJJICJpbnQgc25wcmludF92YXJpYWJsZShjaGFyICoiICJidWYiICIsIHNpemVfdCAiICJsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLlBQCisuQkkgInZvaWQgIHByaW50X3ZhbHVlKGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuQkkgInZvaWQgZnByaW50X3ZhbHVlKEZJTEUgKiIgZnAgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5CSSAiaW50IHNucHJpbnRfdmFsdWUoY2hhciAqIiBidWYgIiwgc2l6ZV90ICIgImxlbiIgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5icgorLlNTIERlbGV0aW9uCisuUFAKKy5CSSAidm9pZCBzbm1wX2ZyZWVfdmFyKCAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICIpOyIKKy5icgorLkJJICJ2b2lkIHNubXBfZnJlZV92YXJiaW5kKCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGVzICIpOyIKKy5icgorLlBQCisuU0ggREVTQ1JJUFRJT04KK1RoZSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHZhcmlhYmxlIGJpbmRpbmdzIGZhbGwgaW50byBmb3VyIGdyb3VwcyAtIAorZGVhbGluZyB3aXRoIHRoZSBjcmVhdGlvbiwgc2V0dGluZyBvZiB2YWx1ZXMsIG91dHB1dCBhbmQgZGVsZXRpb24gb2YgdmFyYmluZHMuCisuU1MgQ3JlYXRpb24KKy5CIHNubXBfcGR1X2FkZF92YXJpYWJsZQord2lsbCBjcmVhdGUgYSBuZXcgdmFyYmluZCBzdHJ1Y3R1cmUsIGluaXRpYWxpc2VkIHdpdGggdGhlIG5hbWUgKAorLklSIG9iamlkICIsICIgb2JqaWRsZW4KKyksIHN5bnRheCAoCisuSSB0eXBlCispIGFuZCB2YWx1ZSAoCisuSSB2YWx1ZSAiLCAiIGxlbgorKSBwcm92aWRlZC4KK1RoaXMgdmFyYmluZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHZhcmJpbmQgbGlzdCBpbgordGhlIGdpdmVuIFBEVS4KKy5QUAorLkIgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZQoraXMgc2ltaWxhciwgYnV0IGFwcGVuZHMgdGhlIG5ldyB2YXJiaW5kIHRvIHRoZSBlbmQgb2YgdGhlCit2YXJiaW5kIGxpc3QgcHJvdmlkZWQuCitXaGVuIGFkZGluZyB0aGUgZmlyc3QgdmFyYmluZCB0byBhbiBlbXB0eSBsaXN0LCBzaW1wbHkKK3Bhc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIGhlYWQgb2YgdGhlIGxpc3Q6CisuSVAKKyJbSW5zZXJ0IGV4YW1wbGUgY29kZSBoZXJlXSIKKy5QUAorSW4gYm90aCBjYXNlcywgdGhlIHJvdXRpbmUgd2lsbCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBuZXcKK3ZhcmJpbmQgc3RydWN0dXJlIChvciBOVUxMIGlmIHRoZSB2YXJiaW5kIGNyZWF0aW9uIGZhaWxzKS4KKy5QUAorLkIgc25tcF9hZGRfbnVsbF92YXIKK2lzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gYWRkIGFuIGVtcHR5IHZhcmJpbmQgdG8gdGhlIFBEVS4KK3dpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IHRoZSBOVUxMIHZhbHVlIGV4cGxpY2l0bHkuCitUaGlzIGlzIHRoZSBub3JtYWwgbWVjaGFuaXNtIGZvciBjb25zdHJ1Y3RpbmcgYSBHRVQgKG9yIHNpbWlsYXIpCitpbmZvcm1hdGlvbiByZXRyaWV2YWwgcmVxdWVzdC4KKy5icgorQWdhaW4sIHRoaXMgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ldyB2YXJiaW5kLCBvciBOVUxMLgorLlBQCisuQiBzbm1wX2Nsb25lX3ZhcmJpbmQKK2NyZWF0ZXMgYSBjb3B5IG9mIGVhY2ggdmFyYmluZCBpbiB0aGUgc3BlY2lmaWVkIGxpc3QsCityZXR1cm5pbmcgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG9mIHRoZSBuZXcgbGlzdAorKG9yIE5VTEwgaWYgdGhlIGNsb25pbmcgZmFpbHMpLgorLmJyCisuU1MgU2V0dGluZyBvZiB2YWx1ZXMKKy5CIHNubXBfc2V0X3Zhcl9vYmppZAorc2V0cyB0aGUgbmFtZSBvZiB0aGUgdmFyYmluZCBzdHJ1Y3R1cmUgdG8gdGhlIHNwZWNpZmllZCBPSUQuCisuYnIKKy5CIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZQorc2V0cyB0aGUgc3ludGF4IHR5cGUgYW5kIHZhbHVlIG9mIHRoZSB2YXJiaW5kIHN0cnVjdHVyZS4KKy5icgorLkIgc25tcF9zZXRfdmFyX3ZhbHVlCitzZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdmFyYmluZCBzdHJ1Y3R1cmUsIGxlYXZpbmcgdGhlIHN5bnRheCB0eXBlIHVuY2hhbmdlZC4KKy5icgorLkIgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIKK2lzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gc2V0IHRoZSBzeW50YXggdHlwZSBhbmQgdmFsdWUgZm9yCithIDMyLWJpdCBpbnRlZ2VyLWJhc2VkIHZhcmJpbmQuCisuUFAKK0FsbCBmb3VyIG9mIHRoZXNlIHJldHVybiAwIGlmIHRoZSBhc3NpZ25tZW50IGlzIHN1Y2Nlc3NmdWwsCitvciAxIGlmIGl0IGlzIG5vdC4KKy5TUyBPdXRwdXQKKy5CIHByaW50X3ZhcmlhYmxlCit3aWxsIHRha2UgYW4gb2JqZWN0IGlkZW50aWZpZXIgKGFzIHJldHVybmVkIGJ5CisuQlIgcmVhZF9vYmppZCAiLCAiIHNubXBfcGFyc2Vfb2lkICIgb3IgIiBnZXRfbW9kdWxlX25vZGUgKQorYW5kIGFuIGluc3RhbmNlIG9mIHN1Y2ggYSB2YXJpYWJsZSwgYW5kIHByaW50cyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0Cit0aGUgdGV4dHVhbCBmb3JtIG9mIHRoZSBvYmplY3QgaWRlbnRpZmllciB0b2dldGhlciB3aXRoIHRoZSB2YWx1ZQorb2YgdGhlIHZhcmlhYmxlLgorLlBQCisuQiBmcHJpbnRfdmFyaWFibGUKK2RvZXMgdGhlIHNhbWUsIGJ1dCBwcmludHMgdG8gdGhlIEZJTEUgcG9pbnRlciBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwKK3BhcmFtZXRlci4KKy5QUAorLkIgc25wcmludF92YXJpYWJsZQorcHJpbnRzIHRoZSBzYW1lIGluZm9ybWF0aW9uIGludG8gdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CisuSSBidWYKK3doaWNoIGlzIG9mIGxlbmd0aAorLklSIGxlbiAuCitJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBvciAtMSBpZiB0aGUKK2J1ZmZlciB3YXMgbm90IGxhcmdlIGVub3VnaC4gIEluIHRoZSBsYXR0ZXIgY2FzZSwKKy5JIGJ1Zgord2lsbCB0eXBpY2FsbHkgY29udGFpbmVkIGEgdHJ1bmNhdGVkIHZlcnNpb24gb2YgdGhlIGluZm9ybWF0aW9uIChidXQKK3RoaXMgYmVoYXZpb3VyIGlzIG5vdCBndWFyYW50ZWVkKS4gIFRoaXMgZnVuY3Rpb24gcmVwbGFjZXMgdGhlCitvYnNvbGV0ZSBmdW5jdGlvbgorLkJSIHNwcmludF92YXJpYWJsZSAuCisuUFAKKy5CUiBwcmludF92YWx1ZSAsCisuQlIgZnByaW50X3ZhbHVlICwKK2FuZAorLkIgc25wcmludF92YWx1ZQorZG8gdGhlIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQKKy5CIHByaW50X3ZhcmlhYmxlCityb3V0aW5lcywgYnV0IG9ubHkgZGlzcGxheWluZyB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLCB3aXRob3V0IHRoZQorY29ycmVzcG9uZGluZyBvYmplY3QgaWRlbnRpZmllci4KKy5icgorLlNTIERlbGV0aW9uCisuQiBzbm1wX2ZyZWVfdmFyCityZWxlYXNlcyBhbGwgbWVtb3J5IHVzZWQgYnkgdGhlIGdpdmVuIHZhcmJpbmQgc3RydWN0dXJlLgorLmJyCisuQiBzbm1wX2ZyZWVfdmFyYmluZAorcmVsZWFzZXMgYWxsIG1lbW9yeSB1c2VkIGJ5IGVhY2ggdmFyYmluZCBzdHJ1Y3R1cmUgaW4gdGhlIHZhcmJpbmQgbGlzdCBwcm92aWRlZC4KKy5icgorLlNIICJTRUUgQUxTTyIKKy5CUiBwZHVfYXBpICIoMykiCisuQlIgbWliX2FwaSAiKDMpIgpkaWZmIC0tZ2l0IGEvbWlicy9ESVNNQU4tRVZFTlQtTUlCLnR4dCBiL21pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQKaW5kZXggYmRlMWNkYi4uZjAwYzdjYyAxMDA2NDQKLS0tIGEvbWlicy9ESVNNQU4tRVZFTlQtTUlCLnR4dAorKysgYi9taWJzL0RJU01BTi1FVkVOVC1NSUIudHh0CkBAIC04LDcgKzgsNiBAQAogICAgIFRFWFRVQUwtQ09OVkVOVElPTiwgUm93U3RhdHVzLAogICAgIFRydXRoVmFsdWUgICAgICAgICAgICAgICAgRlJPTSBTTk1QdjItVEMKIAotCiAgICAgTU9EVUxFLUNPTVBMSUFOQ0UsIE9CSkVDVC1HUk9VUCwKICAgICBOT1RJRklDQVRJT04tR1JPVVAgICAgICAgICAgICAgRlJPTSBTTk1QdjItQ09ORgogICAgIHN5c1VwVGltZSAgICAgICAgICAgICAgICAgRlJPTSBTTk1QdjItTUlCCkBAIC01OCw3ICs1Nyw2IEBACiAgICAgICAgIHBhcnRpY3VsYXIgZXJyb3IgY29kZSBoZXJlIGRvZXMgbm90IGltcGx5IHRoYXQgYWxsCiAgICAgICAgIGltcGxlbWVudGF0aW9ucyBhcmUgY2FwYWJsZSBvZiBzZW5zaW5nIHRoYXQgZXJyb3IgYW5kCiAKLQogICAgICAgICByZXR1cm5pbmcgdGhhdCBjb2RlLgogCiAgICAgICAgIFRoZSBzZWNvbmQgZ3JvdXAsIG51bWJlcmVkIGdyZWF0ZXIgdGhhbiAwLCBhcmUgY29waWVkCkBAIC03OCwxNiArNzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbm90IGFzIGV4cGVjdGVkCiAgICAgICAgIHNhbXBsZU92ZXJydW4gICAgICAgICAgIGFub3RoZXIgc2FtcGxlIGF0dGVtcHQgb2NjdXJyZWQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwcmV2aW91cyBvbmUgY29tcGxldGVkIgotCiAgICAgU1lOVEFYICAgICAgSU5URUdFUiB7IGxvY2FsUmVzb3VyY2VMYWNrKC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkRGVzdGluYXRpb24oLTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblVucmVhY2hhYmxlKC0zKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9SZXNwb25zZSgtNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZFR5cGUoLTUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVPdmVycnVuKC02KSwKLQogICAgICAgICAgICAgICAgICAgICAgICAgICBub0Vycm9yKDApLAotCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb0JpZygxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9TdWNoTmFtZSgyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkVmFsdWUoMyksCkBAIC0xMDgsNyArMTAzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jb25zaXN0ZW50TmFtZSgxOCkgfQogLS0KIAotCiAtLSBSZXNvdXJjZSBDb250cm9sIFNlY3Rpb24KIC0tCiAKQEAgLTE1Nyw4ICsxNTEsNiBAQAogICAgICAgICBDaGFuZ2luZyB0aGlzIHZhbHVlIHdpbGwgbm90IGVsaW1pbmF0ZSBvciBpbmhpYml0IGV4aXN0aW5nCiAgICAgICAgIHNhbXBsZSBzdGF0ZSBidXQgY291bGQgcHJldmVudCBhbGxvY2F0aW9uIG9mIGFkZGl0aW9uYWwgc3RhdGUKICAgICAgICAgaW5mb3JtYXRpb24uIgotCi0KICAgICA6Oj0geyBtdGVSZXNvdXJjZSAyIH0KIAogbXRlUmVzb3VyY2VTYW1wbGVJbnN0YW5jZXMgT0JKRUNULVRZUEUKQEAgLTIwOCw3ICsyMDAsNiBAQAogICAgICAgICBjb25kaXRpb24gaGFzIGZhaWxlZC4gIFRoaXMgY291bnRzIGluZGl2aWR1YWxseSBmb3IgZWFjaAogICAgICAgICBhdHRlbXB0IGluIGEgZ3JvdXAgb2YgdGFyZ2V0cyBvciBlYWNoIGF0dGVtcHQgZm9yIGEKIAotCiAgICAgICAgIHdpbGRjYXJkZWQgb2JqZWN0LiIKICAgICA6Oj0geyBtdGVUcmlnZ2VyIDEgfQogCkBAIC0yNTcsOCArMjQ4LDYgQEAKICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCiAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICBERVNDUklQVElPTgotCi0KICAgICAgICAgIlRoZSBvd25lciBvZiB0aGlzIGVudHJ5LiBUaGUgZXhhY3Qgc2VtYW50aWNzIG9mIHRoaXMKICAgICAgICAgc3RyaW5nIGFyZSBzdWJqZWN0IHRvIHRoZSBzZWN1cml0eSBwb2xpY3kgZGVmaW5lZCBieSB0aGUKICAgICAgICAgc2VjdXJpdHkgYWRtaW5pc3RyYXRvci4iCkBAIC0zMDgsNyArMjk3LDYgQEAKIAogICAgICAgICBGb3IgJ3RocmVzaG9sZCcgdGhlIHRlc3Qgd29ya3MgYXMgZGVzY3JpYmVkIGJlbG93IGZvcgogCi0KICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXAsIG10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmcsIGFuZAogICAgICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZy4KIApAQCAtMzU4LDcgKzM0Niw2IEBACiAgICAgICAgIGluc3RhbmNlIHBvcnRpb24sIGluIHdoaWNoIGNhc2UgdGhlIHZhbHVlIGlzIG9idGFpbmVkCiAgICAgICAgIGFzIGlmIHdpdGggYSBHZXROZXh0IGZ1bmN0aW9uLCBjaGVja2luZyBtdWx0aXBsZSB2YWx1ZXMKIAotCiAgICAgICAgIGlmIHRoZXkgZXhpc3QuICBJZiBzdWNoIHdpbGRjYXJkaW5nIGlzIGFwcGxpZWQsCiAgICAgICAgIG10ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQgbXVzdCBiZSAndHJ1ZScgYW5kIGlmIG5vdCBpdCBtdXN0CiAgICAgICAgIGJlICdmYWxzZScuCkBAIC00MDgsNyArMzk1LDYgQEAKIAogICAgICAgICBPdGhlcndpc2UgYWNjZXNzIHJpZ2h0cyBhcmUgY2hlY2tlZCBhY2NvcmRpbmcgdG8gdGhlIHNlY3VyaXR5CiAKLQogICAgICAgICBwYXJhbWV0ZXJzIHJlc3VsdGluZyBmcm9tIHRoZSB0YWcuIgogICAgIERFRlZBTCB7ICcnSCB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlckVudHJ5IDggfQpAQCAtNDU3LDggKzQ0Myw2IEBACiAgICAgVU5JVFMgICAgICAgInNlY29uZHMiCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIHRyaWdnZXIgc2FtcGxlcy4gIFRvCiAgICAgICAgIGVuY291cmFnZSBjb25zaXN0ZW5jeSBpbiBzYW1wbGluZywgdGhlIGludGVydmFsIGlzIG1lYXN1cmVkCkBAIC01MDcsOCArNDkxLDYgQEAKICAgICAgICAgQSBsaXN0IG9mIG9iamVjdHMgbWF5IGFsc28gYmUgYWRkZWQgYmFzZWQgb24gdGhlIGV2ZW50IG9yIG9uCiAgICAgICAgIHRoZSB2YWx1ZSBvZiBtdGVUcmlnZ2VyVGVzdC4KIAotCi0KICAgICAgICAgQSBsZW5ndGggb2YgMCBpbmRpY2F0ZXMgbm8gYWRkaXRpb25hbCBvYmplY3RzLiIKICAgICBERUZWQUwgeyAnJ0ggfQogICAgIDo6PSB7IG10ZVRyaWdnZXJFbnRyeSAxMyB9CkBAIC01NTcsOCArNTM5LDYgQEAKICAgICBJTkRFWCAgICAgICB7IG10ZU93bmVyLCBJTVBMSUVEIG10ZVRyaWdnZXJOYW1lIH0KICAgICA6Oj0geyBtdGVUcmlnZ2VyRGVsdGFUYWJsZSAxIH0KIAotCi0KIE10ZVRyaWdnZXJEZWx0YUVudHJ5IDo6PSBTRVFVRU5DRSB7CiAgICAgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEICAgICAgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSLAogICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkICAgICAgICBUcnV0aFZhbHVlLApAQCAtNjA4LDcgKzU4OCw2IEBACiAgICAgICAgIGJlIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW5zdGFuY2Ugb2YKICAgICAgICAgbXRlVHJpZ2dlclZhbHVlSURXaWxkY2FyZCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCiAKLQogICAgICAgICBtdGVUcmlnZ2VyU2FtcGxlVHlwZSBpcyAnZGVsdGFWYWx1ZScuIgogICAgIERFRlZBTCB7IGZhbHNlIH0KICAgICA6Oj0geyBtdGVUcmlnZ2VyRGVsdGFFbnRyeSAyIH0KQEAgLTY1OCw3ICs2MzcsNiBAQAogICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudCAgICAgICAgICAgICBTbm1wQWRtaW5TdHJpbmcKIH0KIAotCiBtdGVUcmlnZ2VyRXhpc3RlbmNlVGVzdCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIEJJVFMgeyBwcmVzZW50KDApLCBhYnNlbnQoMSksIGNoYW5nZWQoMikgfQogICAgIE1BWC1BQ0NFU1MgIHJlYWQtd3JpdGUKQEAgLTcwNyw4ICs2ODUsNiBAQAogCiBtdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFNubXBBZG1pblN0cmluZyAoU0laRSAoMC4uMzIpKQotCi0KICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC03NTgsNyArNzM0LDYgQEAKICAgICAgICAgdHJpZ2dlcnMuIgogICAgIDo6PSB7IG10ZVRyaWdnZXIgNSB9CiAKLQogbXRlVHJpZ2dlckJvb2xlYW5FbnRyeSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIE10ZVRyaWdnZXJCb29sZWFuRW50cnkKICAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQpAQCAtODA3LDggKzc4Miw2IEBACiAgICAgREVGVkFMIHsgMCB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlckJvb2xlYW5FbnRyeSAyIH0KIAotCi0KIG10ZVRyaWdnZXJCb29sZWFuU3RhcnR1cCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFRydXRoVmFsdWUKICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCkBAIC04NTcsOCArODMwLDYgQEAKICAgICAgICAgIlRvIGdvIHdpdGggbXRlVHJpZ2dlckJvb2xlYW5FdmVudCwgdGhlIG10ZU93bmVyIG9mIGFuIGV2ZW50CiAgICAgICAgIGVudHJ5IGZyb20gbXRlRXZlbnRUYWJsZS4iCiAgICAgREVGVkFMIHsgJydIIH0KLQotCiAgICAgOjo9IHsgbXRlVHJpZ2dlckJvb2xlYW5FbnRyeSA2IH0KIAogbXRlVHJpZ2dlckJvb2xlYW5FdmVudCBPQkpFQ1QtVFlQRQpAQCAtOTA3LDggKzg3OCw2IEBACiAgICAgbXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50T3duZXIgICAgICAgICBTbm1wQWRtaW5TdHJpbmcsCiAgICAgbXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50ICAgICAgICAgICAgICBTbm1wQWRtaW5TdHJpbmcsCiAgICAgbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudE93bmVyICAgICAgICBTbm1wQWRtaW5TdHJpbmcsCi0KLQogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnQgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50T3duZXIgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50ICAgICAgICAgU25tcEFkbWluU3RyaW5nLApAQCAtOTU3LDggKzkyNiw2IEBACiAgICAgICAgIHRyaWdnZXJlZCB1bnRpbCB0aGUgc2FtcGxlZCB2YWx1ZSBmYWxscyBiZWxvdyB0aGlzIHRocmVzaG9sZAogICAgICAgICBhbmQgcmVhY2hlcyBtdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZy4iCiAgICAgREVGVkFMIHsgMCB9Ci0KLQogICAgIDo6PSB7IG10ZVRyaWdnZXJUaHJlc2hvbGRFbnRyeSAyIH0KIAogbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmcgT0JKRUNULVRZUEUKQEAgLTEwMDcsOCArOTc0LDYgQEAKICAgICAgICAgdHJpZ2dlcmVkIHVudGlsIHRoZSBkZWx0YSB2YWx1ZSBmYWxscyBiZWxvdyB0aGlzIHRocmVzaG9sZCBhbmQKICAgICAgICAgcmVhY2hlcyBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nLiIKICAgICBERUZWQUwgeyAwIH0KLQotCiAgICAgOjo9IHsgbXRlVHJpZ2dlclRocmVzaG9sZEVudHJ5IDQgfQogCiBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nIE9CSkVDVC1UWVBFCkBAIC0xMDU4LDcgKzEwMjMsNiBAQAogCiAgICAgICAgIEEgbGlzdCBvZiBvYmplY3RzIG1heSBhbHNvIGJlIGFkZGVkIGJhc2VkIG9uIHRoZSBvdmVyYWxsCiAKLQogICAgICAgICB0cmlnZ2VyLCB0aGUgZXZlbnQgb3Igb3RoZXIgc2V0dGluZ3MgaW4gbXRlVHJpZ2dlclRlc3QuCiAKICAgICAgICAgQSBsZW5ndGggb2YgMCBpbmRpY2F0ZXMgbm8gYWRkaXRpb25hbCBvYmplY3RzLiIKQEAgLTExMDcsOCArMTA3MSw2IEBACiAgICAgREVGVkFMIHsgJydIIH0KICAgICA6Oj0geyBtdGVUcmlnZ2VyVGhyZXNob2xkRW50cnkgMTEgfQogCi0KLQogbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnRPd25lciBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFNubXBBZG1pblN0cmluZyAoU0laRSAoMC4uMzIpKQogICAgIE1BWC1BQ0NFU1MgIHJlYWQtd3JpdGUKQEAgLTExNTcsOCArMTExOSw2IEBACiAtLSBPYmplY3RzIFRhYmxlCiAtLQogCi0KLQogbXRlT2JqZWN0c1RhYmxlIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgU0VRVUVOQ0UgT0YgTXRlT2JqZWN0c0VudHJ5CiAgICAgTUFYLUFDQ0VTUyAgbm90LWFjY2Vzc2libGUKQEAgLTEyMDgsNyArMTE2OCw2IEBACiAgICAgICAgICJBbiBhcmJpdHJhcnkgaW50ZWdlciBmb3IgdGhlIHB1cnBvc2Ugb2YgaWRlbnRpZnlpbmcKICAgICAgICAgaW5kaXZpZHVhbCBvYmplY3RzIHdpdGhpbiBhIG10ZU9iamVjdHNOYW1lIGdyb3VwLgogCi0KICAgICAgICAgT2JqZWN0cyB3aXRoaW4gYSBncm91cCBhcmUgcGxhY2VkIGluIHRoZSBub3RpZmljYXRpb24gaW4gdGhlCiAgICAgICAgIG51bWVyaWNhbCBvcmRlciBvZiB0aGlzIGluZGV4LgogCkBAIC0xMjU4LDcgKzEyMTcsNiBAQAogICAgIERFRlZBTCB7IGZhbHNlIH0KICAgICA6Oj0geyBtdGVPYmplY3RzRW50cnkgNCB9CiAKLQogbXRlT2JqZWN0c0VudHJ5U3RhdHVzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgUm93U3RhdHVzCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1jcmVhdGUKQEAgLTEzMDgsNyArMTI2Niw2IEBACiAgICAgSU5ERVggICAgICAgeyBtdGVPd25lciwgSU1QTElFRCBtdGVFdmVudE5hbWUgfQogICAgIDo6PSB7IG10ZUV2ZW50VGFibGUgMSB9CiAKLQogTXRlRXZlbnRFbnRyeSA6Oj0gU0VRVUVOQ0UgewogICAgIG10ZUV2ZW50TmFtZSAgICAgICAgICAgICAgICAgICAgICAgIFNubXBBZG1pblN0cmluZywKICAgICBtdGVFdmVudENvbW1lbnQgICAgICAgICAgICAgICAgICAgICBTbm1wQWRtaW5TdHJpbmcsCkBAIC0xMzU4LDcgKzEzMTUsNiBAQAogICAgICAgICAiQSBjb250cm9sIHRvIGFsbG93IGFuIGV2ZW50IHRvIGJlIGNvbmZpZ3VyZWQgYnV0IG5vdCB1c2VkLgogICAgICAgICBXaGVuIHRoZSB2YWx1ZSBpcyAnZmFsc2UnIHRoZSBldmVudCBkb2VzIG5vdCBleGVjdXRlIGV2ZW4gaWYKIAotCiAgICAgICAgIHRyaWdnZXJlZC4iCiAgICAgREVGVkFMIHsgZmFsc2UgfQogICAgIDo6PSB7IG10ZUV2ZW50RW50cnkgNCB9CkBAIC0xNDA3LDggKzEzNjMsNiBAQAogICAgIFNZTlRBWCAgICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSBvYmplY3QgaWRlbnRpZmllciBmcm9tIHRoZSBOT1RJRklDQVRJT04tVFlQRSBmb3IgdGhlCiAgICAgICAgIG5vdGlmaWNhdGlvbiB0byB1c2UgaWYgbWV0RXZlbnRBY3Rpb25zIGhhcyAnbm90aWZpY2F0aW9uJyBzZXQuIgpAQCAtMTQ1Nyw4ICsxNDExLDYgQEAKIG10ZUV2ZW50U2V0RW50cnkgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBNdGVFdmVudFNldEVudHJ5CiAgICAgTUFYLUFDQ0VTUyAgbm90LWFjY2Vzc2libGUKLQotCiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJJbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBldmVudCdzIHNldCBvcHRpb24uICBFbnRyaWVzCkBAIC0xNTA4LDcgKzE0NjAsNiBAQAogICAgIERFRlZBTCB7IHplcm9Eb3RaZXJvIH0KICAgICA6Oj0geyBtdGVFdmVudFNldEVudHJ5IDEgfQogCi0KIG10ZUV2ZW50U2V0T2JqZWN0V2lsZGNhcmQgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBUcnV0aFZhbHVlCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQpAQCAtMTU1Nyw4ICsxNTA4LDYgQEAKIG10ZUV2ZW50U2V0Q29udGV4dE5hbWUgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBTbm1wQWRtaW5TdHJpbmcKICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCi0KLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAiVGhlIG1hbmFnZW1lbnQgY29udGV4dCBpbiB3aGljaCB0byBzZXQgbXRlRXZlbnRPYmplY3RJRC4KQEAgLTE2MDcsOCArMTU1Niw2IEBACiAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgdHJpZ2dlciBjYXVzaW5nIHRoZSBub3RpZmljYXRpb24uIgogICAgIDo6PSB7IGRpc21hbkV2ZW50TUlCTm90aWZpY2F0aW9uT2JqZWN0cyAxIH0KIAotCi0KIG10ZUhvdFRhcmdldE5hbWUgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBTbm1wQWRtaW5TdHJpbmcKICAgICBNQVgtQUNDRVNTICBhY2Nlc3NpYmxlLWZvci1ub3RpZnkKQEAgLTE2NTcsOCArMTYwNCw2IEBACiAgICAgU1lOVEFYICAgICAgRmFpbHVyZVJlYXNvbgogICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlIG9mIGFuIGF0dGVtcHQgdG8gY2hlY2sgZm9yIGEKICAgICAgICAgdHJpZ2dlciBjb25kaXRpb24gb3Igc2V0IGFuIG9iamVjdCBpbiByZXNwb25zZSB0byBhbiBldmVudC4iCkBAIC0xNzA3LDggKzE2NTIsNiBAQAogCiBtdGVUcmlnZ2VyRmFpbHVyZSBOT1RJRklDQVRJT04tVFlQRQogICAgIE9CSkVDVFMgeyBtdGVIb3RUcmlnZ2VyLAotCi0KICAgICAgICAgICAgICAgbXRlSG90VGFyZ2V0TmFtZSwKICAgICAgICAgICAgICAgbXRlSG90Q29udGV4dE5hbWUsCiAgICAgICAgICAgICAgIG10ZUhvdE9JRCwKQEAgLTE3NTcsOCArMTcwMCw2IEBACiBkaXNtYW5FdmVudE1JQkNvbXBsaWFuY2UgTU9EVUxFLUNPTVBMSUFOQ0UKICAgICAgICAgU1RBVFVTIGN1cnJlbnQKICAgICAgICAgREVTQ1JJUFRJT04KLQotCiAgICAgICAgICAgICAgICAgIlRoZSBjb21wbGlhbmNlIHN0YXRlbWVudCBmb3IgZW50aXRpZXMgd2hpY2ggaW1wbGVtZW50CiAgICAgICAgICAgICAgICAgdGhlIEV2ZW50IE1JQi4iCiAgICAgICAgIE1PRFVMRSAgLS0gdGhpcyBtb2R1bGUKQEAgLTE3OTcsNyArMTczOCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiV3JpdGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZCwgdGh1cyBhbGxvd2luZwogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3RlbSBub3QgdG8gaW1wbGVtZW50IHdpbGRjYXJkaW5nLiIKIAotCiAgICAgICAgICAgICAgICAgT0JKRUNUIG10ZU9iamVjdHNJRFdpbGRjYXJkCiAgICAgICAgICAgICAgICAgTUlOLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgICAgICAgICAgICAgREVTQ1JJUFRJT04KQEAgLTE4MDcsMTEgKzE3NDcsOCBAQAogICAgICAgICAgICAgICAgIE9CSkVDVCBtdGVFdmVudFNldENvbnRleHROYW1lV2lsZGNhcmQKICAgICAgICAgICAgICAgICBNSU4tQUNDRVNTICByZWFkLW9ubHkKICAgICAgICAgICAgICAgICBERVNDUklQVElPTgotCi0KICAgICAgICAgICAgICAgICAgICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLCB0aHVzIGFsbG93aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3lzdGVtIG5vdCB0byBpbXBsZW1lbnQgd2lsZGNhcmRpbmcuIgotCiAgICAgICAgIDo6PSB7IGRpc21hbkV2ZW50TUlCQ29tcGxpYW5jZXMgMSB9CiAKIC0tIFVuaXRzIG9mIENvbmZvcm1hbmNlCkBAIC0xODMyLDcgKzE3NjksNiBAQAogZGlzbWFuRXZlbnRUcmlnZ2VyR3JvdXAgT0JKRUNULUdST1VQCiAgICAgICAgIE9CSkVDVFMgewogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJGYWlsdXJlcywKLQogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJDb21tZW50LAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUZXN0LAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJTYW1wbGVUeXBlLApAQCAtMTg0Niw3ICsxNzgyLDYgQEAKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyT2JqZWN0cywKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRW5hYmxlZCwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRW50cnlTdGF0dXMsCi0KICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SUQsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEV2lsZGNhcmQsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEVHlwZSwKQEAgLTE4NTYsOSArMTc5MSw2IEBACiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHMsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50T3duZXIsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50LAotCi0KLQogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuQ29tcGFyaXNvbiwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhblZhbHVlLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuU3RhcnR1cCwKQEAgLTE4NjYsNyArMTc5OCw2IEBACiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuRXZlbnRPd25lciwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhbkV2ZW50LAotCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXAsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHNPd25lciwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0cywKQEAgLTE5MDIsMTcgKzE4MzMsMTMgQEAKIGRpc21hbkV2ZW50RXZlbnRHcm91cCBPQkpFQ1QtR1JPVVAKICAgICAgICAgT0JKRUNUUyB7CiAgICAgICAgICAgICAgICAgbXRlRXZlbnRGYWlsdXJlcywKLQogICAgICAgICAgICAgICAgIG10ZUV2ZW50Q29tbWVudCwKICAgICAgICAgICAgICAgICBtdGVFdmVudEFjdGlvbnMsCiAgICAgICAgICAgICAgICAgbXRlRXZlbnRFbmFibGVkLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50RW50cnlTdGF0dXMsCi0KLQogICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uT2JqZWN0c093bmVyLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uT2JqZWN0cywKLQogICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0T2JqZWN0LAogICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0T2JqZWN0V2lsZGNhcmQsCiAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRWYWx1ZSwKZGlmZiAtLWdpdCBhL21pYnMvRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dCBiL21pYnMvRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dAppbmRleCA0OTllZTg2Li5mNzNlNWJmIDEwMDY0NAotLS0gYS9taWJzL0RJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQKKysrIGIvbWlicy9ESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0CkBAIC0yOSw3ICsyOSw2IEBACiAgICAgICAgICAgICAgICAgICAgIFB1Ymxpc2hlZCBhcyBSRkMgMjk4MiIKICAgICA6Oj0geyBtaWItMiA5MCB9CiAKLQogZGlzbWFuRXhwcmVzc2lvbk1JQk9iamVjdHMgT0JKRUNUIElERU5USUZJRVIgOjo9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZGlzbWFuRXhwcmVzc2lvbk1JQiAxIH0KIApAQCAtNDEsNyArNDAsNiBAQAogLS0gUmVzb3VyY2UgQ29udHJvbAogLS0KIAotCiBleHBSZXNvdXJjZURlbHRhTWluaW11bSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIEludGVnZXIzMiAoLTEgfCAxLi42MDApCiAgICAgVU5JVFMgICAgICAgInNlY29uZHMiCkBAIC05MCw3ICs4OCw2IEBACiAgICAgIFVubGVzcyBleHBsaWNpdGx5IHJlc291cmNlIGxpbWl0ZWQsIGEgc3lzdGVtJ3MgdmFsdWUgZm9yCiAgICAgIHRoaXMgb2JqZWN0IHNob3VsZCBiZSAwLgogCi0KICAgICAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIG5vdCBlbGltaW5hdGUgb3IgaW5oaWJpdCBleGlzdGluZyBkZWx0YQogICAgICB3aWxkY2FyZCBpbnN0YW5jZSBvYmplY3RzIGJ1dCB3aWxsIHByZXZlbnQgdGhlIGNyZWF0aW9uIG9mIG1vcmUKICAgICAgc3VjaCBvYmplY3RzLgpAQCAtMTM5LDcgKzEzNiw2IEBACiAtLQogCiBleHBFeHByZXNzaW9uVGFibGUgT0JKRUNULVRZUEUKLQogICAgIFNZTlRBWCAgICAgIFNFUVVFTkNFIE9GIEV4cEV4cHJlc3Npb25FbnRyeQogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICAgY3VycmVudApAQCAtMzM1LDcgKzMzMSw2IEBACiAKICAgICAgICAgICBJZiBlaXRoZXIgc2lkZSBpcyBJcEFkZHJlc3MsIHVzZSB0aGF0LgogCi0KICAgICAgICAgICBJZiBlaXRoZXIgc2lkZSBpcyBUaW1lVGlja3MsIHVzZSB0aGF0LgogCiAgICAgICAgICAgSWYgZWl0aGVyIHNpZGUgaXMgQ291bnRlcjMyLCB1c2UgdGhhdC4KQEAgLTM4NCw3ICszNzksNiBAQAogICAgICAgICAgIHN1bQogICAgICAgICAgIGV4aXN0cwogCi0KICAgICAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbmRpY2F0ZSB0aGVpciBwYXJhbWV0ZXJzIGJ5CiAgICAgIG5hbWluZyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIgaW4gdGhlIHBhcmFtZXRlcidzIHBvc2l0aW9uCiAgICAgIGluIHRoZSBwYXJhbWV0ZXIgbGlzdC4gIFRoZSBwYXJhbWV0ZXIgbXVzdCBiZSBvZiB0aGUgdHlwZSBpbmRpY2F0ZWQKQEAgLTQzMyw3ICs0MjcsNiBAQAogICAgICBleGlzdHMoYW55VHlwZU9iamVjdCkgLSB2ZXJpZmllcyB0aGUgb2JqZWN0IGluc3RhbmNlIGV4aXN0cy4gQQogICAgICByZXR1cm4gdmFsdWUgb2YgMCBpbmRpY2F0ZXMgTm9TdWNoSW5zdGFuY2UgKGkuZS4gYm9vbGVhbgogICAgICBmYWxzZSkuIgotCiAgICAgOjo9IHsgZXhwRXhwcmVzc2lvbkVudHJ5IDMgfQogCiBleHBFeHByZXNzaW9uVmFsdWVUeXBlIE9CSkVDVC1UWVBFCkBAIC01MzEsNyArNTI0LDYgQEAKICAgICA6Oj0geyBleHBFeHByZXNzaW9uRW50cnkgNyB9CiAKIGV4cEV4cHJlc3Npb25FcnJvcnMgT0JKRUNULVRZUEUKLQogICAgIFNZTlRBWCAgICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKQEAgLTU4MCw3ICs1NzIsNiBAQAogICAgICBlcnJvciBmb3IgdGhhdCBleHByZXNzaW9uIGFzIHJlZmxlY3RlZCBieSB0aGUgZXJyb3IgY29kZXMKICAgICAgZGVmaW5lZCBmb3IgZXhwRXJyb3JDb2RlLiIKICAgICBJTkRFWCAgICAgICB7IGV4cEV4cHJlc3Npb25Pd25lciwgZXhwRXhwcmVzc2lvbk5hbWUgfQotCiAgICAgOjo9IHsgZXhwRXJyb3JUYWJsZSAxIH0KIAogRXhwRXJyb3JFbnRyeSA6Oj0gU0VRVUVOQ0UgewpAQCAtNjc4LDcgKzY2OSw2IEBACiBleHBFcnJvckluc3RhbmNlIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgT0JKRUNUIElERU5USUZJRVIKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIGV4cFZhbHVlSW5zdGFuY2UgYmVpbmcgZXZhbHVhdGVkIHdoZW4gdGhlIGVycm9yCkBAIC03MjcsNyArNzE3LDYgQEAKICAgICBleHBPYmplY3RJbmRleCAgICAgICAgICAgICAgICAgICAgIFVuc2lnbmVkMzIsCiAgICAgZXhwT2JqZWN0SUQgICAgICAgICAgICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBleHBPYmplY3RJRFdpbGRjYXJkICAgICAgICAgICAgICAgIFRydXRoVmFsdWUsCi0KICAgICBleHBPYmplY3RTYW1wbGVUeXBlICAgICAgICAgICAgICAgIElOVEVHRVIsCiAgICAgZXhwT2JqZWN0RGVsdGFEaXNjb250aW51aXR5SUQgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBleHBPYmplY3REaXNjb250aW51aXR5SURXaWxkY2FyZCAgIFRydXRoVmFsdWUsCkBAIC03NzYsNyArNzY1LDYgQEAKICAgICAgICAgIkEgdHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGV4cE9iamVjSUQgb2YgdGhpcyByb3cgaXMgYSB3aWxkY2FyZAogICAgICAgICBvYmplY3QuIEZhbHNlIGluZGljYXRlcyB0aGF0IGV4cE9iamVjdElEIGlzIGZ1bGx5IGluc3RhbmNlZC4KICAgICAgICAgSWYgYWxsIGV4cE9iamVjdFdpbGRjYXJkIHZhbHVlcyBmb3IgYSBnaXZlbiBleHByZXNzaW9uIGFyZSBGQUxTRSwKLQogICAgICAgICBleHBFeHByZXNzaW9uUHJlZml4IHdpbGwgcmVmbGVjdCBhIHNjYWxhciBvYmplY3QgKGkuZS4gd2lsbAogICAgICAgICBiZSAwLjApLgogCkBAIC04MjUsNyArODEzLDYgQEAKICAgICAgRGF0ZUFuZFRpbWUgb2JqZWN0IHRoYXQgaW5kaWNhdGVzIGEgZGlzY29udGludWl0eSBpbiB0aGUgdmFsdWUKICAgICAgYXQgZXhwT2JqZWN0SUQuCiAKLQogICAgICBUaGlzIG9iamVjdCBpcyBpbnN0YW50aWF0ZWQgb25seSBpZiBleHBPYmplY3RTYW1wbGVUeXBlIGlzCiAgICAgICdkZWx0YVZhbHVlJyBvciAnY2hhbmdlZFZhbHVlJy4KIApAQCAtODc0LDcgKzg2MSw2IEBACiAgICAgREVGVkFMICAgICAgeyB0aW1lVGlja3MgfQogICAgICA6Oj0geyBleHBPYmplY3RFbnRyeSA3IH0KIAotCiBleHBPYmplY3RDb25kaXRpb25hbCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1jcmVhdGUKQEAgLTkxMCw3ICs4OTYsNiBAQAogICAgICBNQVgtQUNDRVNTICByZWFkLWNyZWF0ZQogICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgIERFU0NSSVBUSU9OCi0KICAgICAgIkEgdHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGV4cE9iamVjdENvbmRpdGlvbmFsIG9mIHRoaXMgcm93IGlzCiAgICAgIGEgd2lsZGNhcmQgb2JqZWN0LiBGYWxzZSBpbmRpY2F0ZXMgdGhhdCBleHBPYmplY3RDb25kaXRpb25hbCBpcwogICAgICBmdWxseSBpbnN0YW5jZWQuCkBAIC05MjMsNyArOTA4LDYgQEAKIGV4cE9iamVjdEVudHJ5U3RhdHVzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgUm93U3RhdHVzCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1jcmVhdGUKLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIGNvbnRyb2wgdGhhdCBhbGxvd3MgY3JlYXRpb24vZGVsZXRpb24gb2YgZW50cmllcy4KQEAgLTEwMjEsNyArMTAwNSw2IEBACiBleHBWYWx1ZUNvdW50ZXIzMlZhbCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQotCiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICJUaGUgdmFsdWUgd2hlbiBleHBFeHByZXNzaW9uVmFsdWVUeXBlIGlzICdjb3VudGVyMzInLiIKQEAgLTEwNjAsNyArMTA0Myw3IEBACiAgICAgOjo9IHsgZXhwVmFsdWVFbnRyeSA2IH0KIAogZXhwVmFsdWVPY3RldFN0cmluZ1ZhbCBPQkpFQ1QtVFlQRQotICAgIFNZTlRBWCAgICAgIE9DVEVUIFNUUklORyAtLSAoU0laRSAoMC4uNjU1MzYpKQorICAgIFNZTlRBWCAgICAgIE9DVEVUIFNUUklORyAoU0laRSAoMC4uNjU1MzYpKQogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMTA3MCw3ICsxMDUzLDYgQEAKIGV4cFZhbHVlT2lkVmFsIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgT0JKRUNUIElERU5USUZJRVIKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIHZhbHVlIHdoZW4gZXhwRXhwcmVzc2lvblZhbHVlVHlwZSBpcyAnb2JqZWN0SWQnLiIKQEAgLTExMzYsNyArMTExOCw2IEBACiAgICAgIFdSSVRFLVNZTlRBWCAgIElOVEVHRVIgeyBmYWxzZSgyKSB9CiAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgIkltcGxlbWVudGF0aW9uIG5lZWQgbm90IGFsbG93IGRlbHRhcyB3aWxkY2FyZHMuIgotCiAgICAgIDo6PSB7IGRpc21hbkV4cHJlc3Npb25NSUJDb21wbGlhbmNlcyAxIH0KIAogLS0gVW5pdHMgb2YgQ29uZm9ybWFuY2UKQEAgLTExNjMsMTIgKzExNDQsMTAgQEAKICAgICAgICAgICBleHBFeHByZXNzaW9uUHJlZml4LAogICAgICAgICAgIGV4cEV4cHJlc3Npb25FcnJvcnMsCiAgICAgICAgICAgZXhwRXhwcmVzc2lvbkVudHJ5U3RhdHVzLAotCiAgICAgICAgICAgZXhwRXJyb3JUaW1lLAogICAgICAgICAgIGV4cEVycm9ySW5kZXgsCiAgICAgICAgICAgZXhwRXJyb3JDb2RlLAogICAgICAgICAgIGV4cEVycm9ySW5zdGFuY2UsCi0KICAgICAgICAgICBleHBPYmplY3RJRCwKICAgICAgICAgICBleHBPYmplY3RJRFdpbGRjYXJkLAogICAgICAgICAgIGV4cE9iamVjdFNhbXBsZVR5cGUsCkBAIC0xMjAxLDUgKzExODAsMyBAQAogICAgICA6Oj0geyBkaXNtYW5FeHByZXNzaW9uTUlCR3JvdXBzIDMgfQogCiBFTkQKLQotCmRpZmYgLS1naXQgYS9taWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0IGIvbWlicy9JQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCLnR4dAppbmRleCAxNjgwYWNlLi4zZDg4YTBmIDEwMDY0NAotLS0gYS9taWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0CisrKyBiL21pYnMvSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQi50eHQKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBVU0EKIAogICAgICAgICAgIFRlbDogICAgKzEgIDMxMC04MjMtOTM1OAotICAgICAgICAgIEUtTWFpbDogaWFuYUBpYW5hLm9yZyIKKyAgICAgICAgICBFLU1haWw6IGlhbmEmaWFuYS5vcmciCiAgICAgICBERVNDUklQVElPTgogICAgICAgICAgICJUaGUgTUlCIG1vZHVsZSBkZWZpbmVzIHRoZSBBZGRyZXNzRmFtaWx5TnVtYmVycwogICAgICAgICAgIHRleHR1YWwgY29udmVudGlvbi4iCkBAIC04NiwxMCArODYsMTEgQEAKICAgICAgICAgICBmaWJyZUNoYW5uZWxXV1BOKDIyKSwgIC0tIEZpYnJlIENoYW5uZWwgV29ybGQtV2lkZSBQb3J0IE5hbWUgCiAgICAgICAgICAgZmlicmVDaGFubmVsV1dOTigyMyksICAtLSBGaWJyZSBDaGFubmVsIFdvcmxkLVdpZGUgTm9kZSBOYW1lCiAgICAgICAgICAgZ3dpZCgyNCksICAgIC0tIEdhdGV3YXkgSWRlbnRpZmllciAKKyAgICAgICAgICBhZmkoMjUpLCAgLS0gQUZJIGZvciBMMlZQTiBpbmZvcm1hdGlvbgogICAgICAgICAgIHJlc2VydmVkKDY1NTM1KQogCiAgICAgICAgICAgUmVxdWVzdHMgZm9yIG5ldyB2YWx1ZXMgc2hvdWxkIGJlIG1hZGUgdG8gSUFOQSB2aWEKLSAgICAgICAgICBlbWFpbCAoaWFuYUBpYW5hLm9yZykuIgorICAgICAgICAgIGVtYWlsIChpYW5hJmlhbmEub3JnKS4iCiAgICAgICBTWU5UQVggIElOVEVHRVIgewogICAgICAgICAgICAgICAgICAgb3RoZXIoMCksCiAgICAgICAgICAgICAgICAgICBpcFY0KDEpLApAQCAtMTE2LDYgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgICBmaWJyZUNoYW5uZWxXV1BOKDIyKSwKICAgICAgICAgICAgICAgICAgIGZpYnJlQ2hhbm5lbFdXTk4oMjMpLAogICAgICAgICAgICAgICAgICAgZ3dpZCgyNCksCisgICAgICAgICAgICAgICAgICBhZmkoMjUpLAogICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQoNjU1MzUpCiAgICAgICAgICAgICAgIH0KICAgICAgIEVORApkaWZmIC0tZ2l0IGEvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQgYi9taWJzL0lBTkEtTEFOR1VBR0UtTUlCLnR4dAppbmRleCBiMGFkM2VkLi43NzNjMTAxIDEwMDY0NAotLS0gYS9taWJzL0lBTkEtTEFOR1VBR0UtTUlCLnR4dAorKysgYi9taWJzL0lBTkEtTEFOR1VBR0UtTUlCLnR4dApAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICAgICAgICAgICBNYXJpbmEgZGVsIFJleSwgQ0EgOTAyOTIKIAogICAgICAgICAgVGVsOiAgICArMSAzMTAgODIzIDkzNTggeDIwCi0gICAgICAgICBFLU1haWw6IGlhbmFAaWFuYS5vcmciCisgICAgICAgICBFLU1haWw6IGlhbmEmaWFuYS5vcmciCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSBNSUIgbW9kdWxlIHJlZ2lzdGVycyBvYmplY3QgaWRlbnRpZmllciB2YWx1ZXMgZm9yCiAgICAgICAgICB3ZWxsLWtub3duIHByb2dyYW1taW5nIGFuZCBzY3JpcHRpbmcgbGFuZ3VhZ2VzLiBFdmVyeQpkaWZmIC0tZ2l0IGEvbWlicy9JQU5BLVJUUFJPVE8tTUlCLnR4dCBiL21pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQKaW5kZXggNTdlNzNhMi4uNmYwNDE0MyAxMDA2NDQKLS0tIGEvbWlicy9JQU5BLVJUUFJPVE8tTUlCLnR4dAorKysgYi9taWJzL0lBTkEtUlRQUk9UTy1NSUIudHh0CkBAIC0xLDQgKzEsMyBAQAotCiBJQU5BLVJUUFJPVE8tTUlCIERFRklOSVRJT05TIDo6PSBCRUdJTgogCiBJTVBPUlRTCkBAIC0xNSw3ICsxNCw3IEBACiAgICAgICAgICAgICAgIE1hcmluYSBkZWwgUmV5LCBDQSA5MDI5Mi02NjAxCiAKICAgICAgICAgICAgICAgUGhvbmU6ICsxIDMxMCA4MjMgOTM1OAotICAgICAgICAgICAgICBFTWFpbDogaWFuYUBpYW5hLm9yZyIKKyAgICAgICAgICAgICAgRU1haWw6IGlhbmEmaWFuYS5vcmciCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJUaGlzIE1JQiBtb2R1bGUgZGVmaW5lcyB0aGUgSUFOQWlwUm91dGVQcm90b2NvbCBhbmQKICAgICAgICAgICAgIElBTkFpcE1Sb3V0ZVByb3RvY29sIHRleHR1YWwgY29udmVudGlvbnMgZm9yIHVzZSBpbiBNSUJzCkBAIC0zMiwxMiArMzEsMTAgQEAKICAgICBSRVZJU0lPTiAgICAgIjIwMDAwOTI2MDAwMFoiICAtLSBTZXB0ZW1iZXIgMjYsIDIwMDAgCiAgICAgREVTQ1JJUFRJT04gICJPcmlnaW5hbCB2ZXJzaW9uLCBwdWJsaXNoZWQgaW4gY29vcmRpbmF0aW9uCiAgICAgICAgICAgICAgICAgIHdpdGggUkZDIDI5MzIuIgotCiAgICAgOjo9IHsgbWliLTIgODQgfQogCiBJQU5BaXBSb3V0ZVByb3RvY29sIDo6PSBURVhUVUFMLUNPTlZFTlRJT04KICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKLQogICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJBIG1lY2hhbmlzbSBmb3IgbGVhcm5pbmcgcm91dGVzLiAgSW5jbHVzaW9uIG9mIHZhbHVlcyBmb3IKICAgICAgICAgICAgIHJvdXRpbmcgcHJvdG9jb2xzIGlzIG5vdCBpbnRlbmRlZCB0byBpbXBseSB0aGF0IHRob3NlCkBAIC04OCw1ICs4NSwzIEBACiAgICAgICAgICAgICAgICB9CiAKIEVORAotCi0KZGlmZiAtLWdpdCBhL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0IGIvbWlicy9JQU5BaWZUeXBlLU1JQi50eHQKaW5kZXggNTQyZTI0Ny4uOTU5NDY1MCAxMDA2NDQKLS0tIGEvbWlicy9JQU5BaWZUeXBlLU1JQi50eHQKKysrIGIvbWlicy9JQU5BaWZUeXBlLU1JQi50eHQKQEAgLTUsNyArNSw3IEBACiAgICAgICAgVEVYVFVBTC1DT05WRU5USU9OICAgICAgICAgIEZST00gU05NUHYyLVRDOwogCiAgICBpYW5haWZUeXBlIE1PRFVMRS1JREVOVElUWQotICAgICAgIExBU1QtVVBEQVRFRCAiMjAwNTEwMTAwMDAwWiIgIC0tIE9jdG9iZXIgMTAsIDIwMDUKKyAgICAgICBMQVNULVVQREFURUQgIjIwMDkwNTA2MDAwMFoiICAtLSBNYXkgMDYsIDIwMDkKICAgICAgICBPUkdBTklaQVRJT04gIklBTkEiCiAgICAgICAgQ09OVEFDVC1JTkZPICIgICAgICAgIEludGVybmV0IEFzc2lnbmVkIE51bWJlcnMgQXV0aG9yaXR5CiAKQEAgLTE0LDEyICsxNCw3NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJpbmEgZGVsIFJleSwgQ0EgOTAyOTIKIAogICAgICAgICAgICAgICAgICAgICAgVGVsOiAgICArMSAzMTAgODIzIDkzNTgKLSAgICAgICAgICAgICAgICAgICAgIEUtTWFpbDogaWFuYUBpYW5hLm9yZyIKLQorICAgICAgICAgICAgICAgICAgICAgRS1NYWlsOiBpYW5hJmlhbmEub3JnIgogICAgICAgIERFU0NSSVBUSU9OICAiVGhpcyBNSUIgbW9kdWxlIGRlZmluZXMgdGhlIElBTkFpZlR5cGUgVGV4dHVhbAogICAgICAgICAgICAgICAgICAgICAgQ29udmVudGlvbiwgYW5kIHRodXMgdGhlIGVudW1lcmF0ZWQgdmFsdWVzIG9mCiAgICAgICAgICAgICAgICAgICAgICB0aGUgaWZUeXBlIG9iamVjdCBkZWZpbmVkIGluIE1JQi1JSSdzIGlmVGFibGUuIgogCisgICAgICAgUkVWSVNJT04gICAgICIyMDA5MDUwNjAwMDBaIiAgLS0gTWF5IDA2LCAyMDA5CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjUxLiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwOTAyMDYwMDAwWiIgIC0tIEZlYnJ1YXJ5IDA2LCAyMDA5CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkF0dW5uZWxUeXBlIDE1LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwODEwMDkwMDAwWiIgIC0tIE9jdG9iZXIgMDksIDIwMDgKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZSAyNTAuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA4MDgxMjAwMDBaIiAgLS0gQXVndXN0IDEyLCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjQ5LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwODA3MjIwMDAwWiIgIC0tIEp1bHkgMjIsIDIwMDgKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMgMjQ3IGFuZCAyNDguIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA4MDYyNDAwMDBaIiAgLS0gSnVuZSAyNCwgMjAwOAorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI0Ni4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDgwNTI5MDAwMFoiICAtLSBNYXkgMjksIDIwMDgKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZSAyNDUuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA3MDkxMzAwMDBaIiAgLS0gU2VwdGVtYmVyIDEzLCAyMDA3CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzIDI0MyBhbmQgMjQ0LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNzA1MjkwMDAwWiIgIC0tIE1heSAyOSwgMjAwNworICAgICAgIERFU0NSSVBUSU9OICAiQ2hhbmdlZCB0aGUgZGVzY3JpcHRpb24gZm9yIElBTkFpZlR5cGUgMjI4LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNzAzMDgwMDAwWiIgIC0tIE1hcmNoIDA4LCAyMDA3CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjQyLiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNzAxMjMwMDAwWiIgIC0tIEphbnVhcnkgMjMsIDIwMDcKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMgMjM5LCAyNDAsIGFuZCAyNDEuIiAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjEwMTcwMDAwWiIgIC0tIE9jdG9iZXIgMTcsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIkRlcHJlY2F0ZWQvT2Jzb2xldGVkIElBTkFpZlR5cGUgMjMwLiAgUmVnaXN0cmF0aW9uIG9mIAorICAgICAgICAgICAgICAgICAgICAgSUFOQWlmVHlwZSAyMzguIiAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA5MjUwMDAwWiIgIC0tIFNlcHRlbWJlciAyNSwgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiQ2hhbmdlZCB0aGUgZGVzY3JpcHRpb24gZm9yIElBTkEgaWZUeXBlIAorICAgICAgICAgICAgICAgICAgICAgMTg0IGFuZCBhZGRlZCBuZXcgSUFOQSBpZlR5cGUgMjM3LiIgIAorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA2MDgxNzAwMDBaIiAgLS0gQXVndXN0IDE3LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJDaGFuZ2VkIHRoZSBkZXNjcmlwdGlvbnMgZm9yIElBTkFpZlR5cGVzCisgICAgICAgICAgICAgICAgICAgICAyMCBhbmQgMjEuIiAgIAorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA2MDgxMTAwMDBaIiAgLS0gQXVndXN0IDExLCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJDaGFuZ2VkIHRoZSBkZXNjcmlwdGlvbnMgZm9yIElBTkFpZlR5cGVzCisgICAgICAgICAgICAgICAgICAgICA3LCAxMSwgNjIsIDY5LCBhbmQgMTE3LiIgICAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA3MjUwMDAwWiIgIC0tIEp1bHkgMjUsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjM2LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA2MTQwMDAwWiIgIC0tIEp1bmUgMTQsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjM1LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjAzMzEwMDAwWiIgIC0tIE1hcmNoIDMxLCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzNC4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwMzMwMDAwMFoiICAtLSBNYXJjaCAzMCwgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BIGlmVHlwZSAyMzMuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA1MTIyMjAwMDBaIiAgLS0gRGVjZW1iZXIgMjIsIDIwMDUKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGVzIDIzMSBhbmQgMjMyLiIKKwogICAgICAgIFJFVklTSU9OICAgICAiMjAwNTEwMTAwMDAwWiIgIC0tIE9jdG9iZXIgMTAsIDIwMDUKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjMwLiIKIApAQCAtMzEsMTEgKzk0LDEwIEBACiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDUwMzAzMDAwMFoiICAtLSBNYXJjaCAzLCAyMDA1CiAgICAgICAgREVTQ1JJUFRJT04gICJBZGRlZCB0aGUgSUFOQXR1bm5lbFR5cGUgVEMgYW5kIGRlcHJlY2F0ZWQKLQkgICAgICAgICAgICAgICAgIElBTkFpZlR5cGUgc2l4VG9Gb3VyICgyMTUpIHBlciAKLQkgICAgICAgICAgICAgICAgIFJGQzQwODcuIgorCSAgICAgICAgICAgICAgICAgSUFOQWlmVHlwZSBzaXhUb0ZvdXIgKDIxNSkgcGVyIFJGQzQwODcuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDA0MTEyMjAwMDBaIiAgLS0gTm92ZW1iZXIgMjIsIDIwMDQKLSAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjI3LiIKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjI3IHBlciBSRkM0NjMxLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwNDA2MTcwMDAwWiIgIC0tIEp1bmUgMTcsIDIwMDQKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjI2LiIKQEAgLTUwLDkyICsxMTIsOTIgQEAKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMzA4MjUwMDAwWiIgIC0tIEF1ZyAyNSwgMjAwMwogICAgICAgIERFU0NSSVBUSU9OICAiRGVwcmVjYXRlZCBJQU5BaWZUeXBlcyA3IGFuZCAxMS4gT2Jzb2xldGVkCi0gICAgICAgICAgICAgICAgICAgIElBTkFpZlR5cGVzIDYyLCA2OSwgYW5kIDExNy4gIGV0aGVybmV0Q3NtYWNkICg2KQotICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZXNlIHZhbHVlcyIKKyAgICAgICAgICAgICAgICAgICAgIElBTkFpZlR5cGVzIDYyLCA2OSwgYW5kIDExNy4gIGV0aGVybmV0Q3NtYWNkICg2KQorICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGVzZSB2YWx1ZXMiCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwODE4MDAwMFoiICAtLSBBdWcgMTgsIDIwMDMKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMjQuIgorICAgICAgICAgICAgICAgICAgICAgMjI0LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMzA4MDcwMDAwWiIgIC0tIEF1ZyA3LCAyMDAzCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDIyMiBhbmQgMjIzLiIKKyAgICAgICAgICAgICAgICAgICAgIDIyMiBhbmQgMjIzLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMzAzMTgwMDAwWiIgIC0tIE1hciAxOCwgMjAwMwogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDIyMS4iCisgICAgICAgICAgICAgICAgICAgICAyMjEuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAzMDExMzAwMDBaIiAgLS0gSmFuIDEzLCAyMDAzCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjIwLiIKKyAgICAgICAgICAgICAgICAgICAgIDIyMC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDIxMDE3MDAwMFoiICAtLSBPY3QgMTcsIDIwMDIKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMTkuIgorICAgICAgICAgICAgICAgICAgICAgMjE5LiIKIAotCSAgIFJFVklTSU9OICAgICAiMjAwMjA3MTYwMDAwWiIgIC0tIEp1bCAxNiwgMjAwMgorICAgICAgIFJFVklTSU9OICAgICAiMjAwMjA3MTYwMDAwWiIgIC0tIEp1bCAxNiwgMjAwMgogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMTcgYW5kIDIxOC4iCisgICAgICAgICAgICAgICAgICAgICAyMTcgYW5kIDIxOC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDIwNzEwMDAwMFoiICAtLSBKdWwgMTAsIDIwMDIKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjE1IGFuZCAyMTYuIgorICAgICAgICAgICAgICAgICAgICAgMjE1IGFuZCAyMTYuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMDYxOTAwMDBaIiAgLS0gSnVuIDE5LCAyMDAyCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjE0LiIKKyAgICAgICAgICAgICAgICAgICAgIDIxNC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDIwMTA0MDAwMFoiICAtLSBKYW4gNCwgMjAwMgogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMTEsIDIxMiBhbmQgMjEzLiIKKyAgICAgICAgICAgICAgICAgICAgIDIxMSwgMjEyIGFuZCAyMTMuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMTIyMDAwMDBaIiAgLS0gRGVjIDIwLCAyMDAxCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDIwOSBhbmQgMjEwLiIKKyAgICAgICAgICAgICAgICAgICAgIDIwOSBhbmQgMjEwLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTExMTUwMDAwWiIgIC0tIE5vdiAxNSwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMDcgYW5kIDIwOC4iCisgICAgICAgICAgICAgICAgICAgICAyMDcgYW5kIDIwOC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDExMTA2MDAwMFoiICAtLSBOb3YgNiwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDIwNi4iCisgICAgICAgICAgICAgICAgICAgICAyMDYuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMTEwMjAwMDBaIiAgLS0gTm92IDIsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMDUuIgorICAgICAgICAgICAgICAgICAgICAgMjA1LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTEwMTYwMDAwWiIgIC0tIE9jdCAxNiwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgYW5kIDIwNC4iCisgICAgICAgICAgICAgICAgICAgICAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgYW5kIDIwNC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDEwOTE5MDAwMFoiICAtLSBTZXB0IDE5LCAyMDAxCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMTk4LiIKKyAgICAgICAgICAgICAgICAgICAgIDE5OC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDEwNTExMDAwMFoiICAtLSBNYXkgMTEsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAxOTcuIgorICAgICAgICAgICAgICAgICAgICAgMTk3LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTAxMTIwMDAwWiIgIC0tIEphbiAxMiwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAxOTUgYW5kIDE5Ni4iCisgICAgICAgICAgICAgICAgICAgICAxOTUgYW5kIDE5Ni4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDAxMjE5MDAwMFoiICAtLSBEZWMgMTksIDIwMDAKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMTkzIGFuZCAxOTQuIgorICAgICAgICAgICAgICAgICAgICAgMTkzIGFuZCAxOTQuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAwMTIwNzAwMDBaIiAgLS0gRGVjIDA3LCAyMDAwCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDE5MSBhbmQgMTkyLiIKKyAgICAgICAgICAgICAgICAgICAgIDE5MSBhbmQgMTkyLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMDEyMDQwMDAwWiIgIC0tIERlYyAwNCwgMjAwMAogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDE5MC4iCisgICAgICAgICAgICAgICAgICAgICAxOTAuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAwMTAxNzAwMDBaIiAgLS0gT2N0IDE3LCAyMDAwCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDE4OCBhbmQgMTg5LiIgIAorICAgICAgICAgICAgICAgICAgICAgMTg4IGFuZCAxODkuIiAgCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDAxMDAyMDAwMFoiICAtLSBPY3QgMDIsIDIwMDAKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZSAxODcuIiAKQEAgLTE5MSw3ICsyNTMsNyBAQAogICAgICAgICAgICAgICAgSUFOQS4pCiAKICAgICAgICAgICAgICAgIFJlcXVlc3RzIGZvciBuZXcgdmFsdWVzIHNob3VsZCBiZSBtYWRlIHRvIElBTkEgdmlhCi0gICAgICAgICAgICAgICBlbWFpbCAoaWFuYUBpYW5hLm9yZykuCisgICAgICAgICAgICAgICBlbWFpbCAoaWFuYSZpYW5hLm9yZykuCiAKICAgICAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYXNzaWdubWVudCBvZiBpZlR5cGUKICAgICAgICAgICAgICAgIHZhbHVlcyBhbmQgb2YgT0lEcyB0byBwYXJ0aWN1bGFyIG1lZGlhLXNwZWNpZmljIE1JQnMKQEAgLTIxMSwxMSArMjczLDEzIEBACiAgICAgICAgICAgICAgICAgICAgcmZjODc3eDI1KDUpLAogICAgICAgICAgICAgICAgICAgIGV0aGVybmV0Q3NtYWNkKDYpLCAtLSBmb3IgYWxsIGV0aGVybmV0LWxpa2UgaW50ZXJmYWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gcmVnYXJkbGVzcyBvZiBzcGVlZCwgYXMgcGVyIFJGQzM2MzUKLSAgICAgICAgICAgICAgICAgICBpc284ODAyM0NzbWFjZCg3KSwgLS0gRGVwcmVjYXRlZCB2aWEgUkZDLWRyYWZ0LWlldGYtaHVibWliLWV0aGVyaWYtbWliLXYzICBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIGlzbzg4MDIzQ3NtYWNkKDcpLCAtLSBEZXByZWNhdGVkIHZpYSBSRkMzNjM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCiAgICAgICAgICAgICAgICAgICAgaXNvODgwMjRUb2tlbkJ1cyg4KSwKICAgICAgICAgICAgICAgICAgICBpc284ODAyNVRva2VuUmluZyg5KSwKICAgICAgICAgICAgICAgICAgICBpc284ODAyNk1hbigxMCksCi0gICAgICAgICAgICAgICAgICAgc3RhckxhbigxMSksIC0tIERlcHJlY2F0ZWQgdmlhIFJGQy1kcmFmdC1pZXRmLWh1Ym1pYi1ldGhlcmlmLW1pYi12MyAgZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICBzdGFyTGFuKDExKSwgLS0gRGVwcmVjYXRlZCB2aWEgUkZDMzYzNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIHByb3Rlb24xME1iaXQoMTIpLAogICAgICAgICAgICAgICAgICAgIHByb3Rlb244ME1iaXQoMTMpLAogICAgICAgICAgICAgICAgICAgIGh5cGVyY2hhbm5lbCgxNCksCkBAIC0yMjQsOCArMjg4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgc2RsYygxNyksCiAgICAgICAgICAgICAgICAgICAgZHMxKDE4KSwgICAgICAgICAgICAtLSBEUzEtTUlCCiAgICAgICAgICAgICAgICAgICAgZTEoMTkpLCAgICAgICAgICAgICAtLSBPYnNvbGV0ZSBzZWUgRFMxLU1JQgotICAgICAgICAgICAgICAgICAgIGJhc2ljSVNETigyMCksCi0gICAgICAgICAgICAgICAgICAgcHJpbWFyeUlTRE4oMjEpLAorICAgICAgICAgICAgICAgICAgIGJhc2ljSVNETigyMCksICAgICAgICAgICAgICAtLSBubyBsb25nZXIgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBzZWUgYWxzbyBSRkMyMTI3CisgICAgICAgICAgICAgICAgICAgcHJpbWFyeUlTRE4oMjEpLCAgICAgICAgICAgIC0tIG5vIGxvbmdlciB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHNlZSBhbHNvIFJGQzIxMjcKICAgICAgICAgICAgICAgICAgICBwcm9wUG9pbnRUb1BvaW50U2VyaWFsKDIyKSwgLS0gcHJvcHJpZXRhcnkgc2VyaWFsCiAgICAgICAgICAgICAgICAgICAgcHBwKDIzKSwKICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZUxvb3BiYWNrKDI0KSwKQEAgLTI2OCwxNyArMzM0LDE5IEBACiAgICAgICAgICAgICAgICAgICAgYWZsYW5lODAyMyg1OSksICAgICAtLSBBVE0gRW11bGF0ZWQgTEFOIGZvciA4MDIuMwogICAgICAgICAgICAgICAgICAgIGFmbGFuZTgwMjUoNjApLCAgICAgLS0gQVRNIEVtdWxhdGVkIExBTiBmb3IgODAyLjUKICAgICAgICAgICAgICAgICAgICBjY3RFbXVsKDYxKSwgICAgICAgIC0tIEFUTSBFbXVsYXRlZCBjaXJjdWl0ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgIGZhc3RFdGhlcig2MiksICAgICAgLS0gT2Jzb2xldGVkIHZpYSBSRkMtZHJhZnQtaWV0Zi1odWJtaWItZXRoZXJpZi1taWItdjMgIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgZmFzdEV0aGVyKDYyKSwgICAgICAtLSBPYnNvbGV0ZWQgdmlhIFJGQzM2MzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCiAgICAgICAgICAgICAgICAgICAgaXNkbig2MyksICAgICAgICAgICAtLSBJU0ROIGFuZCBYLjI1ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB2MTEoNjQpLCAgICAgICAgICAgIC0tIENDSVRUIFYuMTEvWC4yMSAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB2MzYoNjUpLCAgICAgICAgICAgIC0tIENDSVRUIFYuMzYgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBnNzAzYXQ2NGsoNjYpLCAgICAgIC0tIENDSVRUIEc3MDMgYXQgNjRLYnBzCiAgICAgICAgICAgICAgICAgICAgZzcwM2F0Mm1iKDY3KSwgICAgICAtLSBPYnNvbGV0ZSBzZWUgRFMxLU1JQgogICAgICAgICAgICAgICAgICAgIHFsbGMoNjgpLCAgICAgICAgICAgLS0gU05BIFFMTEMgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgIGZhc3RFdGhlckZYKDY5KSwgICAgLS0gT2Jzb2xldGVkIHZpYSBSRkMtZHJhZnQtaWV0Zi1odWJtaWItZXRoZXJpZi1taWItdjMgIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgZmFzdEV0aGVyRlgoNjkpLCAgICAtLSBPYnNvbGV0ZWQgdmlhIFJGQzM2MzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCg3MCksICAgICAgICAtLSBjaGFubmVsICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWVlZTgwMjExKDcxKSwgICAgICAtLSByYWRpbyBzcHJlYWQgc3BlY3RydW0gICAgICAgCi0JICAgICAgICAgICBpYm0zNzBwYXJDaGFuKDcyKSwgIC0tIElCTSBTeXN0ZW0gMzYwLzM3MCBPRU1JIENoYW5uZWwKKyAgICAgICAgICAgICAgICAgICBpYm0zNzBwYXJDaGFuKDcyKSwgIC0tIElCTSBTeXN0ZW0gMzYwLzM3MCBPRU1JIENoYW5uZWwKICAgICAgICAgICAgICAgICAgICBlc2Nvbig3MyksICAgICAgICAgIC0tIElCTSBFbnRlcnByaXNlIFN5c3RlbXMgQ29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgIGRsc3coNzQpLCAgICAgICAgICAgLS0gRGF0YSBMaW5rIFN3aXRjaGluZwogICAgICAgICAgICAgICAgICAgIGlzZG5zKDc1KSwgICAgICAgICAgLS0gSVNETiBTL1QgaW50ZXJmYWNlCkBAIC0zMTMsNjEgKzM4MSw2MiBAQAogICAgICAgICAgICAgICAgICAgIHZvaWNlT3ZlcklwKDEwNCksICAgLS0gdm9pY2Ugb3ZlciBJUCBlbmNhcHN1bGF0aW9uCiAgICAgICAgICAgICAgICAgICAgYXRtRHhpKDEwNSksICAgICAgICAtLSBBVE0gRFhJCiAgICAgICAgICAgICAgICAgICAgYXRtRnVuaSgxMDYpLCAgICAgICAtLSBBVE0gRlVOSQotCQkgICBhdG1JbWEgKDEwNyksICAgICAgIC0tIEFUTSBJTUEJCSAgIAorICAgICAgICAgICAgICAgICAgIGF0bUltYSAoMTA3KSwgICAgICAgLS0gQVRNIElNQQkJICAgCiAgICAgICAgICAgICAgICAgICAgcHBwTXVsdGlsaW5rQnVuZGxlKDEwOCksIC0tIFBQUCBNdWx0aWxpbmsgQnVuZGxlCiAgICAgICAgICAgICAgICAgICAgaXBPdmVyQ2RsYyAoMTA5KSwgICAtLSBJQk0gaXBPdmVyQ2RsYwotCQkgICBpcE92ZXJDbGF3ICgxMTApLCAgIC0tIElCTSBDb21tb24gTGluayBBY2Nlc3MgdG8gV29ya3N0bgorICAgICAgICAgICAgICAgICAgIGlwT3ZlckNsYXcgKDExMCksICAgLS0gSUJNIENvbW1vbiBMaW5rIEFjY2VzcyB0byBXb3Jrc3RuCiAgICAgICAgICAgICAgICAgICAgc3RhY2tUb1N0YWNrICgxMTEpLCAtLSBJQk0gc3RhY2tUb1N0YWNrCiAgICAgICAgICAgICAgICAgICAgdmlydHVhbElwQWRkcmVzcyAoMTEyKSwgLS0gSUJNIFZJUEEKLQkJICAgbXBjICgxMTMpLCAgICAgICAgICAtLSBJQk0gbXVsdGktcHJvdG9jb2wgY2hhbm5lbCBzdXBwb3J0Ci0JCSAgIGlwT3ZlckF0bSAoMTE0KSwgICAgLS0gSUJNIGlwT3ZlckF0bQotCQkgICBpc284ODAyNUZpYmVyICgxMTUpLCAtLSBJU08gODAyLjVqIEZpYmVyIFRva2VuIFJpbmcKLQkJICAgdGRsYyAoMTE2KSwJICAgICAgIC0tIElCTSB0d2luYXhpYWwgZGF0YSBsaW5rIGNvbnRyb2wKLQkJICAgZ2lnYWJpdEV0aGVybmV0ICgxMTcpLCAtLSBPYnNvbGV0ZWQgdmlhIFJGQy1kcmFmdC1pZXRmLWh1Ym1pYi1ldGhlcmlmLW1pYi12MyAgZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKLQkJICAgaGRsYyAoMTE4KSwgICAgICAgICAtLSBIRExDCi0JCSAgIGxhcGYgKDExOSksCSAgICAgICAtLSBMQVAgRgotCQkgICB2MzcgKDEyMCksCSAgICAgICAtLSBWLjM3Ci0JCSAgIHgyNW1scCAoMTIxKSwgICAgICAgLS0gTXVsdGktTGluayBQcm90b2NvbAotCQkgICB4MjVodW50R3JvdXAgKDEyMiksIC0tIFgyNSBIdW50IEdyb3VwCi0JCSAgIHRyYXNucEhkbGMgKDEyMyksICAgLS0gVHJhbnNwIEhETEMKLQkJICAgaW50ZXJsZWF2ZSAoMTI0KSwgICAtLSBJbnRlcmxlYXZlIGNoYW5uZWwKLQkJICAgZmFzdCAoMTI1KSwgICAgICAgICAtLSBGYXN0IGNoYW5uZWwKLQkJICAgaXAgKDEyNiksCSAgICAgICAtLSBJUCAoZm9yIEFQUE4gSFBSIGluIElQIG5ldHdvcmtzKQotCQkgICBkb2NzQ2FibGVNYWNsYXllciAoMTI3KSwgIC0tIENBVFYgTWFjIExheWVyCi0JCSAgIGRvY3NDYWJsZURvd25zdHJlYW0gKDEyOCksIC0tIENBVFYgRG93bnN0cmVhbSBpbnRlcmZhY2UKLQkJICAgZG9jc0NhYmxlVXBzdHJlYW0gKDEyOSksICAtLSBDQVRWIFVwc3RyZWFtIGludGVyZmFjZQotCQkgICBhMTJNcHBTd2l0Y2ggKDEzMCksIC0tIEF2YWxvbiBQYXJhbGxlbCBQcm9jZXNzb3IKLQkJICAgdHVubmVsICgxMzEpLCAgICAgICAtLSBFbmNhcHN1bGF0aW9uIGludGVyZmFjZQotCQkgICBjb2ZmZWUgKDEzMiksICAgICAgIC0tIGNvZmZlZSBwb3QKLQkJICAgY2VzICgxMzMpLCAgICAgICAgICAtLSBDaXJjdWl0IEVtdWxhdGlvbiBTZXJ2aWNlCi0JCSAgIGF0bVN1YkludGVyZmFjZSAoMTM0KSwgLS0gQVRNIFN1YiBJbnRlcmZhY2UKLQkJICAgbDJ2bGFuICgxMzUpLCAgICAgICAtLSBMYXllciAyIFZpcnR1YWwgTEFOIHVzaW5nIDgwMi4xUQotCQkgICBsM2lwdmxhbiAoMTM2KSwgICAgIC0tIExheWVyIDMgVmlydHVhbCBMQU4gdXNpbmcgSVAKLQkJICAgbDNpcHh2bGFuICgxMzcpLCAgICAtLSBMYXllciAzIFZpcnR1YWwgTEFOIHVzaW5nIElQWAotCQkgICBkaWdpdGFsUG93ZXJsaW5lICgxMzgpLCAtLSBJUCBvdmVyIFBvd2VyIExpbmVzCQotCQkgICBtZWRpYU1haWxPdmVySXAgKDEzOSksIC0tIE11bHRpbWVkaWEgTWFpbCBvdmVyIElQCi0JCSAgIGR0bSAoMTQwKSwgICAgICAgIC0tIER5bmFtaWMgc3luY3Jvbm91cyBUcmFuc2ZlciBNb2RlCi0JCSAgIGRjbiAoMTQxKSwgICAgLS0gRGF0YSBDb21tdW5pY2F0aW9ucyBOZXR3b3JrCi0JCSAgIGlwRm9yd2FyZCAoMTQyKSwgICAgLS0gSVAgRm9yd2FyZGluZyBJbnRlcmZhY2UKLQkJICAgbXNkc2wgKDE0MyksICAgICAgIC0tIE11bHRpLXJhdGUgU3ltbWV0cmljIERTTAotCQkgICBpZWVlMTM5NCAoMTQ0KSwgLS0gSUVFRTEzOTQgSGlnaCBQZXJmb3JtYW5jZSBTZXJpYWwgQnVzCi0JCSAgIGlmLWdzbiAoMTQ1KSwgICAgICAgLS0gICBISVBQSS02NDAwIAotCQkgICBkdmJSY2NNYWNMYXllciAoMTQ2KSwgLS0gRFZCLVJDQyBNQUMgTGF5ZXIKLQkJICAgZHZiUmNjRG93bnN0cmVhbSAoMTQ3KSwgIC0tIERWQi1SQ0MgRG93bnN0cmVhbSBDaGFubmVsCi0JCSAgIGR2YlJjY1Vwc3RyZWFtICgxNDgpLCAgLS0gRFZCLVJDQyBVcHN0cmVhbSBDaGFubmVsCi0JCSAgIGF0bVZpcnR1YWwgKDE0OSksICAgLS0gQVRNIFZpcnR1YWwgSW50ZXJmYWNlCi0JCSAgIG1wbHNUdW5uZWwgKDE1MCksICAgLS0gTVBMUyBUdW5uZWwgVmlydHVhbCBJbnRlcmZhY2UKLQkJICAgc3JwICgxNTEpLAktLSBTcGF0aWFsIFJldXNlIFByb3RvY29sCQotCQkgICB2b2ljZU92ZXJBdG0gKDE1MiksICAtLSBWb2ljZSBPdmVyIEFUTQotCQkgICB2b2ljZU92ZXJGcmFtZVJlbGF5ICgxNTMpLCAgIC0tIFZvaWNlIE92ZXIgRnJhbWUgUmVsYXkgCi0JCSAgIGlkc2wgKDE1NCksCQktLSBEaWdpdGFsIFN1YnNjcmliZXIgTG9vcCBvdmVyIElTRE4KLQkJICAgY29tcG9zaXRlTGluayAoMTU1KSwgIC0tIEF2aWNpIENvbXBvc2l0ZSBMaW5rIEludGVyZmFjZQotCQkgICBzczdTaWdMaW5rICgxNTYpLCAgICAgLS0gU1M3IFNpZ25hbGluZyBMaW5rIAotCQkgICBwcm9wV2lyZWxlc3NQMlAgKDE1NyksICAtLSAgUHJvcC4gUDJQIHdpcmVsZXNzIGludGVyZmFjZQotCQkgICBmckZvcndhcmQgKDE1OCksICAgIC0tIEZyYW1lIEZvcndhcmQgSW50ZXJmYWNlCi0JCSAgIHJmYzE0ODMgKDE1OSksCS0tIE11bHRpcHJvdG9jb2wgb3ZlciBBVE0gQUFMNQotCQkgICB1c2IgKDE2MCksCQktLSBVU0IgSW50ZXJmYWNlCi0JCSAgIGllZWU4MDIzYWRMYWcgKDE2MSksICAtLSBJRUVFIDgwMi4zYWQgTGluayBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICBtcGMgKDExMyksICAgICAgICAgIC0tIElCTSBtdWx0aS1wcm90b2NvbCBjaGFubmVsIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICBpcE92ZXJBdG0gKDExNCksICAgIC0tIElCTSBpcE92ZXJBdG0KKyAgICAgICAgICAgICAgICAgICBpc284ODAyNUZpYmVyICgxMTUpLCAtLSBJU08gODAyLjVqIEZpYmVyIFRva2VuIFJpbmcKKyAgICAgICAgICAgICAgICAgICB0ZGxjICgxMTYpLAkgICAgICAgLS0gSUJNIHR3aW5heGlhbCBkYXRhIGxpbmsgY29udHJvbAorICAgICAgICAgICAgICAgICAgIGdpZ2FiaXRFdGhlcm5ldCAoMTE3KSwgLS0gT2Jzb2xldGVkIHZpYSBSRkMzNjM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIGhkbGMgKDExOCksICAgICAgICAgLS0gSERMQworICAgICAgICAgICAgICAgICAgIGxhcGYgKDExOSksCSAgICAgICAtLSBMQVAgRgorICAgICAgICAgICAgICAgICAgIHYzNyAoMTIwKSwJICAgICAgIC0tIFYuMzcKKyAgICAgICAgICAgICAgICAgICB4MjVtbHAgKDEyMSksICAgICAgIC0tIE11bHRpLUxpbmsgUHJvdG9jb2wKKyAgICAgICAgICAgICAgICAgICB4MjVodW50R3JvdXAgKDEyMiksIC0tIFgyNSBIdW50IEdyb3VwCisgICAgICAgICAgICAgICAgICAgdHJhbnNwSGRsYyAoMTIzKSwgICAtLSBUcmFuc3AgSERMQworICAgICAgICAgICAgICAgICAgIGludGVybGVhdmUgKDEyNCksICAgLS0gSW50ZXJsZWF2ZSBjaGFubmVsCisgICAgICAgICAgICAgICAgICAgZmFzdCAoMTI1KSwgICAgICAgICAtLSBGYXN0IGNoYW5uZWwKKyAgICAgICAgICAgICAgICAgICBpcCAoMTI2KSwJICAgICAgIC0tIElQIChmb3IgQVBQTiBIUFIgaW4gSVAgbmV0d29ya3MpCisgICAgICAgICAgICAgICAgICAgZG9jc0NhYmxlTWFjbGF5ZXIgKDEyNyksICAtLSBDQVRWIE1hYyBMYXllcgorICAgICAgICAgICAgICAgICAgIGRvY3NDYWJsZURvd25zdHJlYW0gKDEyOCksIC0tIENBVFYgRG93bnN0cmVhbSBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBkb2NzQ2FibGVVcHN0cmVhbSAoMTI5KSwgIC0tIENBVFYgVXBzdHJlYW0gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgYTEyTXBwU3dpdGNoICgxMzApLCAtLSBBdmFsb24gUGFyYWxsZWwgUHJvY2Vzc29yCisgICAgICAgICAgICAgICAgICAgdHVubmVsICgxMzEpLCAgICAgICAtLSBFbmNhcHN1bGF0aW9uIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIGNvZmZlZSAoMTMyKSwgICAgICAgLS0gY29mZmVlIHBvdAorICAgICAgICAgICAgICAgICAgIGNlcyAoMTMzKSwgICAgICAgICAgLS0gQ2lyY3VpdCBFbXVsYXRpb24gU2VydmljZQorICAgICAgICAgICAgICAgICAgIGF0bVN1YkludGVyZmFjZSAoMTM0KSwgLS0gQVRNIFN1YiBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBsMnZsYW4gKDEzNSksICAgICAgIC0tIExheWVyIDIgVmlydHVhbCBMQU4gdXNpbmcgODAyLjFRCisgICAgICAgICAgICAgICAgICAgbDNpcHZsYW4gKDEzNiksICAgICAtLSBMYXllciAzIFZpcnR1YWwgTEFOIHVzaW5nIElQCisgICAgICAgICAgICAgICAgICAgbDNpcHh2bGFuICgxMzcpLCAgICAtLSBMYXllciAzIFZpcnR1YWwgTEFOIHVzaW5nIElQWAorICAgICAgICAgICAgICAgICAgIGRpZ2l0YWxQb3dlcmxpbmUgKDEzOCksIC0tIElQIG92ZXIgUG93ZXIgTGluZXMJCisgICAgICAgICAgICAgICAgICAgbWVkaWFNYWlsT3ZlcklwICgxMzkpLCAtLSBNdWx0aW1lZGlhIE1haWwgb3ZlciBJUAorICAgICAgICAgICAgICAgICAgIGR0bSAoMTQwKSwgICAgICAgIC0tIER5bmFtaWMgc3luY3Jvbm91cyBUcmFuc2ZlciBNb2RlCisgICAgICAgICAgICAgICAgICAgZGNuICgxNDEpLCAgICAtLSBEYXRhIENvbW11bmljYXRpb25zIE5ldHdvcmsKKyAgICAgICAgICAgICAgICAgICBpcEZvcndhcmQgKDE0MiksICAgIC0tIElQIEZvcndhcmRpbmcgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgbXNkc2wgKDE0MyksICAgICAgIC0tIE11bHRpLXJhdGUgU3ltbWV0cmljIERTTAorICAgICAgICAgICAgICAgICAgIGllZWUxMzk0ICgxNDQpLCAtLSBJRUVFMTM5NCBIaWdoIFBlcmZvcm1hbmNlIFNlcmlhbCBCdXMKKyAgICAgICAgICAgICAgICAgICBpZi1nc24gKDE0NSksICAgICAgIC0tICAgSElQUEktNjQwMCAKKyAgICAgICAgICAgICAgICAgICBkdmJSY2NNYWNMYXllciAoMTQ2KSwgLS0gRFZCLVJDQyBNQUMgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICBkdmJSY2NEb3duc3RyZWFtICgxNDcpLCAgLS0gRFZCLVJDQyBEb3duc3RyZWFtIENoYW5uZWwKKyAgICAgICAgICAgICAgICAgICBkdmJSY2NVcHN0cmVhbSAoMTQ4KSwgIC0tIERWQi1SQ0MgVXBzdHJlYW0gQ2hhbm5lbAorICAgICAgICAgICAgICAgICAgIGF0bVZpcnR1YWwgKDE0OSksICAgLS0gQVRNIFZpcnR1YWwgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgbXBsc1R1bm5lbCAoMTUwKSwgICAtLSBNUExTIFR1bm5lbCBWaXJ0dWFsIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIHNycCAoMTUxKSwJLS0gU3BhdGlhbCBSZXVzZSBQcm90b2NvbAkKKyAgICAgICAgICAgICAgICAgICB2b2ljZU92ZXJBdG0gKDE1MiksICAtLSBWb2ljZSBPdmVyIEFUTQorICAgICAgICAgICAgICAgICAgIHZvaWNlT3ZlckZyYW1lUmVsYXkgKDE1MyksICAgLS0gVm9pY2UgT3ZlciBGcmFtZSBSZWxheSAKKyAgICAgICAgICAgICAgICAgICBpZHNsICgxNTQpLAkJLS0gRGlnaXRhbCBTdWJzY3JpYmVyIExvb3Agb3ZlciBJU0ROCisgICAgICAgICAgICAgICAgICAgY29tcG9zaXRlTGluayAoMTU1KSwgIC0tIEF2aWNpIENvbXBvc2l0ZSBMaW5rIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIHNzN1NpZ0xpbmsgKDE1NiksICAgICAtLSBTUzcgU2lnbmFsaW5nIExpbmsgCisgICAgICAgICAgICAgICAgICAgcHJvcFdpcmVsZXNzUDJQICgxNTcpLCAgLS0gIFByb3AuIFAyUCB3aXJlbGVzcyBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBmckZvcndhcmQgKDE1OCksICAgIC0tIEZyYW1lIEZvcndhcmQgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgcmZjMTQ4MyAoMTU5KSwJLS0gTXVsdGlwcm90b2NvbCBvdmVyIEFUTSBBQUw1CisgICAgICAgICAgICAgICAgICAgdXNiICgxNjApLAkJLS0gVVNCIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIGllZWU4MDIzYWRMYWcgKDE2MSksICAtLSBJRUVFIDgwMi4zYWQgTGluayBBZ2dyZWdhdGUKICAgICAgICAgICAgICAgICAgICBiZ3Bwb2xpY3lhY2NvdW50aW5nICgxNjIpLCAtLSBCR1AgUG9saWN5IEFjY291bnRpbmcKICAgICAgICAgICAgICAgICAgICBmcmYxNk1mckJ1bmRsZSAoMTYzKSwgLS0gRlJGIC4xNiBNdWx0aWxpbmsgRnJhbWUgUmVsYXkgCiAgICAgICAgICAgICAgICAgICAgaDMyM0dhdGVrZWVwZXIgKDE2NCksIC0tIEgzMjMgR2F0ZWtlZXBlcgpAQCAtMzkxLDYgKzQ2MCw5IEBACiAgICAgICAgICAgICAgICAgICAgcHJvcERvY3NXaXJlbGVzc1Vwc3RyZWFtICgxODIpLCAtLSBDaXNjbyBwcm9wcmlldGFyeSBVcHN0cmVhbQogICAgICAgICAgICAgICAgICAgIGhpcGVybGFuMiAoMTgzKSwgLS0gSElQRVJMQU4gVHlwZSAyIFJhZGlvIEludGVyZmFjZQogICAgICAgICAgICAgICAgICAgIHByb3BCV0FwMk1wICgxODQpLCAtLSBQcm9wQnJvYWRiYW5kV2lyZWxlc3NBY2Nlc3NwdDJtdWx0aXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHVzZSBvZiB0aGlzIGlmdHlwZSBmb3IgSUVFRSA4MDIuMTYgV01BTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBpbnRlcmZhY2VzIGFzIHBlciBJRUVFIFN0ZCA4MDIuMTZmIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGRlcHJlY2F0ZWQgYW5kIGlmVHlwZSAyMzcgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAgICBzb25ldE92ZXJoZWFkQ2hhbm5lbCAoMTg1KSwgLS0gU09ORVQgT3ZlcmhlYWQgQ2hhbm5lbAogICAgICAgICAgICAgICAgICAgIGRpZ2l0YWxXcmFwcGVyT3ZlcmhlYWRDaGFubmVsICgxODYpLCAtLSBEaWdpdGFsIFdyYXBwZXIKICAgICAgICAgICAgICAgICAgICBhYWwyICgxODcpLCAtLSBBVE0gYWRhcHRhdGlvbiBsYXllciAyCkBAIC00MzQsMTAgKzUwNiwzNCBAQAogICAgICAgICAgICAgICAgICAgIHJwciAoMjI1KSwgLS0gUmVzaWxpZW50IFBhY2tldCBSaW5nIEludGVyZmFjZSBUeXBlCiAgICAgICAgICAgICAgICAgICAgcWFtICgyMjYpLCAtLSBSRiBRYW0gSW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgICAgbG1wICgyMjcpLCAtLSBMaW5rIE1hbmFnZW1lbnQgUHJvdG9jb2wKLSAgICAgICAgICAgICAgICAgICBjYmxWZWN0YVN0YXIgKDIyOCksIC0tIENhbWJyaWRnZSBCcm9hZGJhbmQgTGltaXRlZCBWZWN0YVN0YXIKKyAgICAgICAgICAgICAgICAgICBjYmxWZWN0YVN0YXIgKDIyOCksIC0tIENhbWJyaWRnZSBCcm9hZGJhbmQgTmV0d29ya3MgTGltaXRlZCBWZWN0YVN0YXIKICAgICAgICAgICAgICAgICAgICBkb2NzQ2FibGVNQ210c0Rvd25zdHJlYW0gKDIyOSksIC0tIENBVFYgTW9kdWxhciBDTVRTIERvd25zdHJlYW0gSW50ZXJmYWNlCi0gICAgICAgICAgICAgICAgICAgYWRzbDIgKDIzMCkgLS0gQXN5bW1ldHJpYyBEaWdpdGFsIFN1YnNjcmliZXIgTG9vcCBWZXJzaW9uIDIKLSAgICAJCQkgICB9CisgICAgICAgICAgICAgICAgICAgYWRzbDIgKDIzMCksIC0tIEFzeW1tZXRyaWMgRGlnaXRhbCBTdWJzY3JpYmVyIExvb3AgVmVyc2lvbiAyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSAoREVQUkVDQVRFRC9PQlNPTEVURUQgLSBwbGVhc2UgdXNlIGFkc2wycGx1cyAyMzggaW5zdGVhZCkKKyAgICAgICAgICAgICAgICAgICBtYWNTZWNDb250cm9sbGVkSUYgKDIzMSksIC0tIE1BQ1NlY0NvbnRyb2xsZWQgCisgICAgICAgICAgICAgICAgICAgbWFjU2VjVW5jb250cm9sbGVkSUYgKDIzMiksIC0tIE1BQ1NlY1VuY29udHJvbGxlZAorICAgICAgICAgICAgICAgICAgIGF2aWNpT3B0aWNhbEV0aGVyICgyMzMpLCAtLSBBdmljaSBPcHRpY2FsIEV0aGVybmV0IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgIGF0bWJvbmQgKDIzNCksIC0tIGF0bWJvbmQKKyAgICAgICAgICAgICAgICAgICB2b2ljZUZHRE9TICgyMzUpLCAtLSB2b2ljZSBGR0QgT3BlcmF0b3IgU2VydmljZXMKKyAgICAgICAgICAgICAgICAgICBtb2NhVmVyc2lvbjEgKDIzNiksIC0tIE11bHRpTWVkaWEgb3ZlciBDb2F4IEFsbGlhbmNlIChNb0NBKSBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gYXMgZG9jdW1lbnRlZCBpbiBpbmZvcm1hdGlvbiBwcm92aWRlZCBwcml2YXRlbHkgdG8gSUFOQQorICAgICAgICAgICAgICAgICAgIGllZWU4MDIxNldNQU4gKDIzNyksIC0tIElFRUUgODAyLjE2IFdNQU4gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgYWRzbDJwbHVzICgyMzgpLCAtLSBBc3ltbWV0cmljIERpZ2l0YWwgU3Vic2NyaWJlciBMb29wIFZlcnNpb24gMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIFZlcnNpb24gMiBQbHVzIGFuZCBhbGwgdmFyaWFudHMKKyAgICAgICAgICAgICAgICAgICBkdmJSY3NNYWNMYXllciAoMjM5KSwgLS0gRFZCLVJDUyBNQUMgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICBkdmJUZG0gKDI0MCksIC0tIERWQiBTYXRlbGxpdGUgVERNCisgICAgICAgICAgICAgICAgICAgZHZiUmNzVGRtYSAoMjQxKSwgLS0gRFZCLVJDUyBURE1BCisgICAgICAgICAgICAgICAgICAgeDg2TGFwcyAoMjQyKSwgLS0gTEFQUyBiYXNlZCBvbiBJVFUtVCBYLjg2L1kuMTMyMworICAgICAgICAgICAgICAgICAgIHd3YW5QUCAoMjQzKSwgLS0gM0dQUCBXV0FOCisgICAgICAgICAgICAgICAgICAgd3dhblBQMiAoMjQ0KSwgLS0gM0dQUDIgV1dBTgorICAgICAgICAgICAgICAgICAgIHZvaWNlRUJTICgyNDUpLCAtLSB2b2ljZSBQLXBob25lIEVCUyBwaHlzaWNhbCBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBpZlB3VHlwZSAoMjQ2KSwgLS0gUHNldWRvd2lyZSBpbnRlcmZhY2UgdHlwZQorICAgICAgICAgICAgICAgICAgIGlsYW4gKDI0NyksIC0tIEludGVybmFsIExBTiBvbiBhIGJyaWRnZSBwZXIgSUVFRSA4MDIuMWFwCisgICAgICAgICAgICAgICAgICAgcGlwICgyNDgpLCAtLSBQcm92aWRlciBJbnN0YW5jZSBQb3J0IG9uIGEgYnJpZGdlIHBlciBJRUVFIDgwMi4xYWggUEJCCisgICAgICAgICAgICAgICAgICAgYWx1RUxQICgyNDkpLCAtLSBBbGNhdGVsLUx1Y2VudCBFdGhlcm5ldCBMaW5rIFByb3RlY3Rpb24KKyAgICAgICAgICAgICAgICAgICBncG9uICgyNTApLCAtLSBHaWdhYml0LWNhcGFibGUgcGFzc2l2ZSBvcHRpY2FsIG5ldHdvcmtzIChHLVBPTikgYXMgcGVyIElUVS1UIEcuOTQ4CisgICAgICAgICAgICAgICAgICAgdmRzbDIgKDI1MSkgLS0gVmVyeSBoaWdoIHNwZWVkIGRpZ2l0YWwgc3Vic2NyaWJlciBsaW5lIFZlcnNpb24gMiAoYXMgcGVyIElUVS1UIFJlY29tbWVuZGF0aW9uIEcuOTkzLjIpCisgICAgICAgICAgICAgICAgICAgfQogCiBJQU5BdHVubmVsVHlwZSA6Oj0gVEVYVFVBTC1DT05WRU5USU9OCiAgICAgU1RBVFVTICAgICBjdXJyZW50CkBAIC00ODEsNyArNTc3LDggQEAKICAgICAgICAgICAgICAgICAgICBzaXhUb0ZvdXIoMTEpLCAgIC0tIDZ0bzQgZW5jYXBzdWxhdGlvbgogICAgICAgICAgICAgICAgICAgIHNpeE92ZXJGb3VyKDEyKSwgLS0gNm92ZXI0IGVuY2Fwc3VsYXRpb24KICAgICAgICAgICAgICAgICAgICBpc2F0YXAoMTMpLCAgICAgIC0tIElTQVRBUCBlbmNhcHN1bGF0aW9uCi0gICAgICAgICAgICAgICAgICAgdGVyZWRvKDE0KSAgICAgICAtLSBUZXJlZG8gZW5jYXBzdWxhdGlvbgorICAgICAgICAgICAgICAgICAgIHRlcmVkbygxNCksICAgICAgLS0gVGVyZWRvIGVuY2Fwc3VsYXRpb24KKyAgICAgICAgICAgICAgICAgICBpcEh0dHBzKDE1KSAgICAgIC0tIElQSFRUUFMKICAgICAgICAgICAgICAgIH0KIAogICAgRU5ECmRpZmYgLS1naXQgYS9taWJzL0lQLUZPUldBUkQtTUlCLnR4dCBiL21pYnMvSVAtRk9SV0FSRC1NSUIudHh0CmluZGV4IDMwOTBmZjcuLjM0N2I1ZTAgMTAwNjQ0Ci0tLSBhL21pYnMvSVAtRk9SV0FSRC1NSUIudHh0CisrKyBiL21pYnMvSVAtRk9SV0FSRC1NSUIudHh0CkBAIC02LDggKzYsNiBAQAogICAgIENvdW50ZXIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBTTk1QdjItU01JCiAgICAgUm93U3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIFNOTVB2Mi1UQwogCi0KLQogICAgIE1PRFVMRS1DT01QTElBTkNFLCBPQkpFQ1QtR1JPVVAgICAgRlJPTSBTTk1QdjItQ09ORgogICAgIEludGVyZmFjZUluZGV4T3JaZXJvICAgICAgICAgICAgICAgRlJPTSBJRi1NSUIKICAgICBpcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gSVAtTUlCCkBAIC01Niw5ICs1NCw2IEBACiAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVAgRm9yd2FyZGluZyBNSUIgaW4gYQogICAgICAgICAgICAgcmVhZC1vbmx5IG1vZGUuCiAKLQotCi0KICAgICAgICAgICAgIFRoZSBpbmV0Q2lkclJvdXRlVGFibGUgcmVwbGFjZXMgdGhlIElQdjQtc3BlY2lmaWMKICAgICAgICAgICAgIGlwQ2lkclJvdXRlVGFibGUsIGl0cyByZWxhdGVkIG9iamVjdHMsIGFuZCByZWxhdGVkCiAgICAgICAgICAgICBjb25mb3JtYW5jZSBzdGF0ZW1lbnRzLgpAQCAtMTA3LDkgKzEwMiw2IEBACiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGlzIGVudGl0eSdzIElQIFJvdXRpbmcgdGFibGUuIgogICAgIFJFRkVSRU5DRQogICAgICAgICAgICAiUkZDIDEyMTMgU2VjdGlvbiA2LjYsIFRoZSBJUCBHcm91cCIKQEAgLTE1OCw5ICsxNTAsNiBAQAogICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljMSAgICAgIEludGVnZXIzMiwKICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzIgICAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGluZXRDaWRyUm91dGVNZXRyaWMzICAgICAgSW50ZWdlcjMyLAotCi0KLQogICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljNCAgICAgIEludGVnZXIzMiwKICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzUgICAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGluZXRDaWRyUm91dGVTdGF0dXMgICAgICAgUm93U3RhdHVzCkBAIC0xOTgsNyArMTg3LDYgQEAKICAgICAgICAgICAgIGVxdWFsIHRvIHguICBJZiBub3QsIHRoZW4gdGhlIGluZGV4IHBhaXIgaXMgbm90CiAgICAgICAgICAgICBjb25zaXN0ZW50IGFuZCBhbiBpbmNvbnNpc3RlbnROYW1lIGVycm9yIG11c3QgYmUKICAgICAgICAgICAgIHJldHVybmVkIG9uIFNFVCBvciBDUkVBVEUgcmVxdWVzdHMuIgotCiAgICAgOjo9IHsgaW5ldENpZHJSb3V0ZUVudHJ5IDIgfQogCiBpbmV0Q2lkclJvdXRlUGZ4TGVuIE9CSkVDVC1UWVBFCkBAIC0yMTAsOCArMTk4LDYgQEAKICAgICAgICAgICAgIG1hc2sgdG8gYmUgbG9naWNhbC1BTkRlZCB3aXRoIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzCiAgICAgICAgICAgICBiZWZvcmUgYmVpbmcgY29tcGFyZWQgdG8gdGhlIHZhbHVlIGluIHRoZQogCi0KLQogICAgICAgICAgICAgaW5ldENpZHJSb3V0ZURlc3QgZmllbGQuCiAKICAgICAgICAgICAgIFRoZSB2YWx1ZXMgZm9yIHRoZSBpbmRleCBvYmplY3RzIGluZXRDaWRyUm91dGVEZXN0IGFuZApAQCAtMjIzLDcgKzIwOSw2IEBACiAgICAgICAgICAgICBlcXVhbCB0byB4LiAgSWYgbm90LCB0aGVuIHRoZSBpbmRleCBwYWlyIGlzIG5vdAogICAgICAgICAgICAgY29uc2lzdGVudCBhbmQgYW4gaW5jb25zaXN0ZW50TmFtZSBlcnJvciBtdXN0IGJlCiAgICAgICAgICAgICByZXR1cm5lZCBvbiBTRVQgb3IgQ1JFQVRFIHJlcXVlc3RzLiIKLQogICAgIDo6PSB7IGluZXRDaWRyUm91dGVFbnRyeSAzIH0KIAogaW5ldENpZHJSb3V0ZVBvbGljeSBPQkpFQ1QtVFlQRQpAQCAtMjYxLDggKzI0Niw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIk9uIHJlbW90ZSByb3V0ZXMsIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXh0IHN5c3RlbSBlbgogCi0KLQogICAgICAgICAgICAgcm91dGUuICBGb3Igbm9uLXJlbW90ZSByb3V0ZXMsIGEgemVybyBsZW5ndGggc3RyaW5nLgogCiAgICAgICAgICAgICBUaGUgdHlwZSBvZiB0aGlzIGFkZHJlc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YKQEAgLTMxMiw5ICsyOTUsNiBAQAogICAgICAgICAgICAgZGlzY2FyZHMgdGhlIG1lc3NhZ2Ugc2lsZW50bHkuIgogICAgIDo6PSB7IGluZXRDaWRyUm91dGVFbnRyeSA4IH0KIAotCi0KLQogaW5ldENpZHJSb3V0ZVByb3RvIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJQU5BaXBSb3V0ZVByb3RvY29sCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTM2Miw5ICszNDIsNiBAQAogICAgICAgICAgICAgdmFsdWUuICBJZiB0aGlzIG1ldHJpYyBpcyBub3QgdXNlZCwgaXRzIHZhbHVlIHNob3VsZCBiZQogICAgICAgICAgICAgc2V0IHRvIC0xLiIKICAgICBERUZWQUwgeyAtMSB9Ci0KLQotCiAgICAgOjo9IHsgaW5ldENpZHJSb3V0ZUVudHJ5IDEyIH0KIAogaW5ldENpZHJSb3V0ZU1ldHJpYzIgT0JKRUNULVRZUEUKQEAgLTQxNCw4ICszOTEsNiBAQAogICAgICAgICAgICAiQW4gYWx0ZXJuYXRlIHJvdXRpbmcgbWV0cmljIGZvciB0aGlzIHJvdXRlLiAgVGhlCiAgICAgICAgICAgICBzZW1hbnRpY3Mgb2YgdGhpcyBtZXRyaWMgYXJlIGRldGVybWluZWQgYnkgdGhlIHJvdXRpbmctCiAKLQotCiAgICAgICAgICAgICBwcm90b2NvbCBzcGVjaWZpZWQgaW4gdGhlIHJvdXRlJ3MgaW5ldENpZHJSb3V0ZVByb3RvCiAgICAgICAgICAgICB2YWx1ZS4gIElmIHRoaXMgbWV0cmljIGlzIG5vdCB1c2VkLCBpdHMgdmFsdWUgc2hvdWxkIGJlCiAgICAgICAgICAgICBzZXQgdG8gLTEuIgpAQCAtNDY1LDggKzQ0MCw2IEBACiAgICAgICAgICAgICAtLSAgICAgVGhpcyBNSUIgcmVxdWlyZXMgc3VwcG9ydCBmb3IgZ2xvYmFsIGFuZAogICAgICAgICAgICAgLS0gICAgIG5vbi1nbG9iYWwgaXB2NCBhbmQgaXB2NiBhZGRyZXNzZXMuCiAKLQotCiAgICAgICAgICAgICAtLQogICAgICAgICAgICAgLS0gT0JKRUNUICAgICAgaW5ldENpZHJSb3V0ZURlc3QKICAgICAgICAgICAgIC0tIFNZTlRBWCAgICAgIEluZXRBZGRyZXNzIChTSVpFICg0IHwgOCB8IDE2IHwgMjApKQpAQCAtNDk3LDcgKzQ3MCw2IEBACiAgICBXUklURS1TWU5UQVggIFJvd1N0YXR1cyB7IGFjdGl2ZSgxKSwgbm90SW5TZXJ2aWNlICgyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQW5kR28oNCksIGRlc3Ryb3koNikgfQogICAgREVTQ1JJUFRJT04gICJTdXBwb3J0IGZvciBjcmVhdGVBbmRXYWl0IGlzIG5vdCByZXF1aXJlZC4iCi0KICAgIDo6PSB7IGlwRm9yd2FyZENvbXBsaWFuY2VzIDMgfQogCiBpcEZvcndhcmRSZWFkT25seUNvbXBsaWFuY2UgTU9EVUxFLUNPTVBMSUFOQ0UKQEAgLTUxNSw5ICs0ODcsNiBAQAogICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQuIgogCiAgICBPQkpFQ1QgICAgICBpbmV0Q2lkclJvdXRlVHlwZQotCi0KLQogICAgTUlOLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICBERVNDUklQVElPTgogICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQuIgpAQCAtNTU3LDcgKzUyNiw2IEBACiAgICBNSU4tQUNDRVNTICByZWFkLW9ubHkKICAgIERFU0NSSVBUSU9OCiAgICAgICAiV3JpdGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZC4iCi0KICAgIDo6PSB7IGlwRm9yd2FyZENvbXBsaWFuY2VzIDQgfQogCiAtLSB1bml0cyBvZiBjb25mb3JtYW5jZQpAQCAtNTY2LDkgKzUzNCw2IEBACiAgICAgT0JKRUNUUyB7IGluZXRDaWRyUm91dGVEaXNjYXJkcywKICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZUlmSW5kZXgsIGluZXRDaWRyUm91dGVUeXBlLAogICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlUHJvdG8sIGluZXRDaWRyUm91dGVBZ2UsCi0KLQotCiAgICAgICAgICAgICAgIGluZXRDaWRyUm91dGVOZXh0SG9wQVMsIGluZXRDaWRyUm91dGVNZXRyaWMxLAogICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljMiwgaW5ldENpZHJSb3V0ZU1ldHJpYzMsCiAgICAgICAgICAgICAgIGluZXRDaWRyUm91dGVNZXRyaWM0LCBpbmV0Q2lkclJvdXRlTWV0cmljNSwKQEAgLTYxOCw4ICs1ODMsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBIHBhcnRpY3VsYXIgcm91dGUgdG8gYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uLCB1bmRlciBhCiAKLQotCiAgICAgICAgICAgICBwYXJ0aWN1bGFyIHBvbGljeS4iCiAgICAgSU5ERVggewogICAgICAgICBpcENpZHJSb3V0ZURlc3QsCkBAIC02NjgsOSArNjMxLDYgQEAKIGlwQ2lkclJvdXRlTWFzayBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSXBBZGRyZXNzCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKLQotCi0KICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiSW5kaWNhdGUgdGhlIG1hc2sgdG8gYmUgbG9naWNhbC1BTkRlZCB3aXRoIHRoZQpAQCAtNzIwLDggKzY4MCw2IEBACiAgICAgICAgICAgICAgICAxIDAgMCAwICA9PT4gIDE2ICAgICAgMSAwIDAgMSAgPT0+ICAxOAogICAgICAgICAgICAgICAgMSAwIDEgMCAgPT0+ICAyMCAgICAgIDEgMCAxIDEgID09PiAgMjIKIAotCi0KICAgICAgICAgICAgICAgIDEgMSAwIDAgID09PiAgMjQgICAgICAxIDEgMCAxICA9PT4gIDI2CiAgICAgICAgICAgICAgICAxIDEgMSAwICA9PT4gIDI4ICAgICAgMSAxIDEgMSAgPT0+ICAzMCIKICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDMgfQpAQCAtNzcxLDkgKzcyOSw2IEBACiAgICAgICAgICAgICByb3V0ZXMuIgogICAgIDo6PSB7IGlwQ2lkclJvdXRlRW50cnkgNiB9CiAKLQotCi0KIGlwQ2lkclJvdXRlUHJvdG8gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIElOVEVHRVIgewogICAgICAgICAgICAgICAgIG90aGVyICAgICAoMSksICAtLSBub3Qgc3BlY2lmaWVkCkBAIC04MjEsOSArNzc2LDYgQEAKIGlwQ2lkclJvdXRlSW5mbyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgT0JKRUNUIElERU5USUZJRVIKICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCi0KLQotCiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkEgcmVmZXJlbmNlIHRvIE1JQiBkZWZpbml0aW9ucyBzcGVjaWZpYyB0byB0aGUKQEAgLTg3Myw4ICs4MjUsNiBAQAogICAgICAgICAgICAgcHJvdG9jb2wgc3BlY2lmaWVkIGluIHRoZSByb3V0ZSdzIGlwQ2lkclJvdXRlUHJvdG8KICAgICAgICAgICAgIHZhbHVlLiAgSWYgdGhpcyBtZXRyaWMgaXMgbm90IHVzZWQsIGl0cyB2YWx1ZSBzaG91bGQgYmUKIAotCi0KICAgICAgICAgICAgIHNldCB0byAtMS4iCiAgICAgREVGVkFMIHsgLTEgfQogICAgIDo6PSB7IGlwQ2lkclJvdXRlRW50cnkgMTIgfQpAQCAtOTIzLDkgKzg3Myw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgcm93IHN0YXR1cyB2YXJpYWJsZSwgdXNlZCBhY2NvcmRpbmcgdG8gcm93CiAgICAgICAgICAgICBpbnN0YWxsYXRpb24gYW5kIHJlbW92YWwgY29udmVudGlvbnMuIgogICAgIDo6PSB7IGlwQ2lkclJvdXRlRW50cnkgMTYgfQpAQCAtOTQ0LDcgKzg5MSw2IEBACiAKICAgIE1PRFVMRSAgLS0gdGhpcyBtb2R1bGUKICAgIE1BTkRBVE9SWS1HUk9VUFMgeyBpcEZvcndhcmRDaWRyUm91dGVHcm91cCB9Ci0KICAgIDo6PSB7IGlwRm9yd2FyZENvbXBsaWFuY2VzIDEgfQogCiAtLSB1bml0cyBvZiBjb25mb3JtYW5jZQpAQCAtOTc0LDkgKzkyMCw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIG9ic29sZXRlCiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBudW1iZXIgb2YgY3VycmVudCBpcEZvcndhcmRUYWJsZSBlbnRyaWVzIHRoYXQgYXJlCiAgICAgICAgICAgICBub3QgaW52YWxpZC4iCiAgICAgOjo9IHsgaXBGb3J3YXJkIDEgfQpAQCAtMTAyNSw5ICs5NjgsNiBAQAogICAgICAgICBpcEZvcndhcmRJbmZvICAgICAgIE9CSkVDVCBJREVOVElGSUVSLAogICAgICAgICBpcEZvcndhcmROZXh0SG9wQVMgIEludGVnZXIzMiwKICAgICAgICAgaXBGb3J3YXJkTWV0cmljMSAgICBJbnRlZ2VyMzIsCi0KLQotCiAgICAgICAgIGlwRm9yd2FyZE1ldHJpYzIgICAgSW50ZWdlcjMyLAogICAgICAgICBpcEZvcndhcmRNZXRyaWMzICAgIEludGVnZXIzMiwKICAgICAgICAgaXBGb3J3YXJkTWV0cmljNCAgICBJbnRlZ2VyMzIsCkBAIC0xMDc3LDggKzEwMTcsNiBAQAogLS0gYW5kIHRoZSBSb3V0ZXIgUmVxdWlyZW1lbnRzIGRvY3VtZW50cyBkaXNhZ3JlZSBvbiB0aGUgd2lkdGgKIC0tIG9mIHRoZSBUT1MgZmllbGQuICBUaGlzIG1hcHBpbmcgZGVzY3JpYmVzIHRoZSBSb3V0ZXIKIAotCi0KIC0tIFJlcXVpcmVtZW50cyBtYXBwaW5nLCBhbmQgbGVhdmVzIHJvb20gdG8gd2lkZW4gdGhlIFRPUyBmaWVsZAogLS0gd2l0aG91dCBpbXBhY3QgdG8gZmllbGRlZCBzeXN0ZW1zLgogCkBAIC0xMTA1LDggKzEwNDMsNiBAQAogICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfAogICAgICAgICAgICAgKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwogCi0KLQogICAgICAgICAgICAgICAgICAgICAgICAgIElQIFRPUyAgICAgICAgICAgICAgICBJUCBUT1MKICAgICAgICAgICAgICAgIEZpZWxkICAgICBQb2xpY3kgICAgICBGaWVsZCAgICAgUG9saWN5CiAgICAgICAgICAgICAgICBDb250ZW50cyAgICBDb2RlICAgICAgQ29udGVudHMgICAgQ29kZQpAQCAtMTEyNyw5ICsxMDYzLDYgQEAKICAgICA6Oj0geyBpcEZvcndhcmRFbnRyeSAzIH0KIAogaXBGb3J3YXJkTmV4dEhvcCBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgSXBBZGRyZXNzCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIG9ic29sZXRlCkBAIC0xMTc5LDkgKzExMTIsNiBAQAogICAgIERFRlZBTCB7IGludmFsaWQgfQogICAgIDo6PSB7IGlwRm9yd2FyZEVudHJ5IDYgfQogCi0KLQotCiBpcEZvcndhcmRQcm90byBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSU5URUdFUiB7CiAgICAgICAgICAgICAgICAgb3RoZXIgICAgICgxKSwgIC0tIG5vdCBzcGVjaWZpZWQKQEAgLTEyMjksOSArMTE1OSw2IEBACiAgICAgU1lOVEFYICAgICBPQkpFQ1QgSURFTlRJRklFUgogICAgIE1BWC1BQ0NFU1MgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgIG9ic29sZXRlCi0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkEgcmVmZXJlbmNlIHRvIE1JQiBkZWZpbml0aW9ucyBzcGVjaWZpYyB0byB0aGUKICAgICAgICAgICAgIHBhcnRpY3VsYXIgcm91dGluZyBwcm90b2NvbCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvcgpAQCAtMTI4MSw5ICsxMjA4LDYgQEAKICAgICBERUZWQUwgeyAtMSB9CiAgICAgOjo9IHsgaXBGb3J3YXJkRW50cnkgMTIgfQogCi0KLQotCiBpcEZvcndhcmRNZXRyaWMzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJbnRlZ2VyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCkBAIC0xMzMyLDEyICsxMjU2LDggQEAKICAgICAgICAgICAgIlRoZSBjb21wbGlhbmNlIHN0YXRlbWVudCBmb3IgU05NUCBlbnRpdGllcyB0aGF0CiAgICAgICAgICAgICBpbXBsZW1lbnQgdGhlIGlwRm9yd2FyZCBNSUIuIgogCi0KLQotCiAgICBNT0RVTEUgIC0tIHRoaXMgbW9kdWxlCiAgICBNQU5EQVRPUlktR1JPVVBTIHsgaXBGb3J3YXJkTXVsdGlQYXRoR3JvdXAgfQotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyAyIH0KIAogaXBGb3J3YXJkTXVsdGlQYXRoR3JvdXAgT0JKRUNULUdST1VQCmRpZmYgLS1naXQgYS9taWJzL0lQLU1JQi50eHQgYi9taWJzL0lQLU1JQi50eHQKaW5kZXggMGE5MzUwMS4uZmUyZGI1ZiAxMDA2NDQKLS0tIGEvbWlicy9JUC1NSUIudHh0CisrKyBiL21pYnMvSVAtTUlCLnR4dApAQCAtMjEsOCArMjEsNiBAQAogICAgIENPTlRBQ1QtSU5GTwogICAgICAgICAgICAiRWRpdG9yOgogCi0KLQogICAgICAgICAgICAgU2hhd24gQS4gUm91dGhpZXIKICAgICAgICAgICAgIEludGVyd29ya2luZyBMYWJzCiAgICAgICAgICAgICAxMDggV2hpc3BlcmluZyBQaW5lcyBEci4gU3VpdGUgMjM1CkBAIC03Miw4ICs3MCw2IEBACiAKICAgICAgICAgICAgIGxpbmtsYXllcig1KSBpbmRpY2F0ZXMgYW4gYWRkcmVzcyBjcmVhdGVkIGJ5IElQdjYgc3RhdGVsZXNzCiAKLQotCiAgICAgICAgICAgICBhdXRvLWNvbmZpZ3VyYXRpb24uCiAKICAgICAgICAgICAgIHJhbmRvbSg2KSBpbmRpY2F0ZXMgYW4gYWRkcmVzcyBjaG9zZW4gYnkgdGhlIHN5c3RlbSBhdApAQCAtMTIzLDggKzExOSw2IEBACiAgICAgICAgICAgICBUaGUgZHVwbGljYXRlKDcpIHN0YXRlIGluZGljYXRlcyB0aGUgYWRkcmVzcyBoYXMgYmVlbgogICAgICAgICAgICAgZGV0ZXJtaW5lZCB0byBiZSBub24tdW5pcXVlIG9uIHRoZSBsaW5rIGFuZCBzbyBtdXN0IG5vdCBiZQogCi0KLQogICAgICAgICAgICAgdXNlZC4KIAogICAgICAgICAgICAgVGhlIG9wdGltaXN0aWMoOCkgc3RhdGUgaW5kaWNhdGVzIHRoZSBhZGRyZXNzIGlzIGF2YWlsYWJsZQpAQCAtMTczLDkgKzE2Nyw2IEBACiAgICAgICAgIG1hbnVhbCgyKSwKICAgICAgICAgd2VsbGtub3duKDMpLAogICAgICAgICBkaGNwKDQpLAotCi0KLQogICAgICAgICByb3V0ZXJhZHYoNSkKICAgICB9CiAKQEAgLTIyNSw4ICsyMTYsNiBAQAogICAgICAgICAgICAgdGhlIElQdjQgaGVhZGVyIG9mIGRhdGFncmFtcyBvcmlnaW5hdGVkIGF0IHRoaXMgZW50aXR5LAogICAgICAgICAgICAgd2hlbmV2ZXIgYSBUVEwgdmFsdWUgaXMgbm90IHN1cHBsaWVkIGJ5IHRoZSB0cmFuc3BvcnQgbGF5ZXIKIAotCi0KICAgICAgICAgICAgIHByb3RvY29sLgogCiAgICAgICAgICAgICBXaGVuIHRoaXMgb2JqZWN0IGlzIHdyaXR0ZW4sIHRoZSBlbnRpdHkgc2hvdWxkIHNhdmUgdGhlCkBAIC0yNzUsOSArMjY0LDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtd3JpdGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIGRlZmF1bHQgdmFsdWUgaW5zZXJ0ZWQgaW50byB0aGUgSG9wIExpbWl0IGZpZWxkIG9mIHRoZQogICAgICAgICAgICAgSVB2NiBoZWFkZXIgb2YgZGF0YWdyYW1zIG9yaWdpbmF0ZWQgYXQgdGhpcyBlbnRpdHkgd2hlbmV2ZXIKICAgICAgICAgICAgIGEgSG9wIExpbWl0IHZhbHVlIGlzIG5vdCBzdXBwbGllZCBieSB0aGUgdHJhbnNwb3J0IGxheWVyCkBAIC0zMjYsOSArMzEyLDYgQEAKICAgICAgICAgICAgIkFuIGVudHJ5IGNvbnRhaW5pbmcgSVB2NC1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYwogICAgICAgICAgICAgaW50ZXJmYWNlLiIKICAgICBJTkRFWCB7IGlwdjRJbnRlcmZhY2VJZkluZGV4IH0KLQotCi0KICAgICA6Oj0geyBpcHY0SW50ZXJmYWNlVGFibGUgMSB9CiAKIElwdjRJbnRlcmZhY2VFbnRyeSA6Oj0gU0VRVUVOQ0UgewpAQCAtMzc3LDkgKzM2MCw2IEBACiBpcHY0SW50ZXJmYWNlUmV0cmFuc21pdFRpbWUgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIFVuc2lnbmVkMzIKICAgICBVTklUUyAgICAgICJtaWxsaXNlY29uZHMiCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtNDI4LDkgKzQwOCw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkFuIGVudHJ5IGNvbnRhaW5pbmcgSVB2Ni1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbgogICAgICAgICAgICAgaW50ZXJmYWNlLiIKLQotCi0KICAgICBJTkRFWCB7IGlwdjZJbnRlcmZhY2VJZkluZGV4IH0KICAgICA6Oj0geyBpcHY2SW50ZXJmYWNlVGFibGUgMSB9CiAKQEAgLTQ3OSw5ICs0NTYsNiBAQAogICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgbGluayB0eXBlIHRvIHdoaWNoIHRoaXMKICAgICAgICAgICAgIGludGVyZmFjZSBpcyBhdHRhY2hlZC4KIAotCi0KLQogICAgICAgICAgICAgQSB6ZXJvIGxlbmd0aCBpZGVudGlmaWVyIG1heSBiZSB1c2VkIHdoZXJlIGFwcHJvcHJpYXRlLiAgT25lCiAgICAgICAgICAgICBwb3NzaWJsZSBleGFtcGxlIGlzIGEgbG9vcGJhY2sgaW50ZXJmYWNlLiIKICAgICA6Oj0geyBpcHY2SW50ZXJmYWNlRW50cnkgMyB9CkBAIC01MzAsOSArNTA0LDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgdGltZSBiZXR3ZWVuIHJldHJhbnNtaXNzaW9ucyBvZiBOZWlnaGJvciBTb2xpY2l0YXRpb24KICAgICAgICAgICAgIG1lc3NhZ2VzIHRvIGEgbmVpZ2hib3Igd2hlbiByZXNvbHZpbmcgdGhlIGFkZHJlc3Mgb3Igd2hlbgogICAgICAgICAgICAgcHJvYmluZyB0aGUgcmVhY2hhYmlsaXR5IG9mIGEgbmVpZ2hib3IuIgpAQCAtNTgyLDggKzU1Myw2IEBACiAtLQogLS0gTm90ZSB3ZWxsOiBCb3RoIG9mIHRoZXNlIHRhYmxlcyBjb250YWluIHNvbWUgaXRlbXMgdGhhdCBhcmUKIAotCi0KIC0tIHJlcHJlc2VudGVkIGJ5IHR3byBvYmplY3RzLCByZXByZXNlbnRpbmcgdGhlIHZhbHVlIGluIGVpdGhlciAzMgogLS0gb3IgNjQgYml0cy4gIEZvciB0aG9zZSBvYmplY3RzLCB0aGUgMzItYml0IHZhbHVlIE1VU1QgYmUgdGhlIGxvdwogLS0gb3JkZXIgMzIgYml0cyBvZiB0aGUgNjQtYml0IHZhbHVlLiAgQWxzbyBub3RlIHRoYXQgdGhlIDMyLWJpdApAQCAtNjMyLDkgKzYwMSw2IEBACiAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWFzbUZhaWxzICAgICAgICAgIENvdW50ZXIzMiwKICAgICAgICAgaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHMgICAgICAgICAgQ291bnRlcjMyLAogICAgICAgICBpcFN5c3RlbVN0YXRzSW5EZWxpdmVycyAgICAgICAgICBDb3VudGVyMzIsCi0KLQotCiAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnMgICAgICAgIENvdW50ZXI2NCwKICAgICAgICAgaXBTeXN0ZW1TdGF0c091dFJlcXVlc3RzICAgICAgICAgQ291bnRlcjMyLAogICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRSZXF1ZXN0cyAgICAgICBDb3VudGVyNjQsCkBAIC02ODMsOSArNjQ5LDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByZWNlaXZlZCwgaW5jbHVkaW5nCiAgICAgICAgICAgICB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4KIApAQCAtNzM1LDggKzY5OCw2IEBACiAgICAgICAgICAgICBpbmNsdWRpbmcgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlCiAgICAgICAgICAgICBzYW1lIG9jdGV0cyBhcyBpcFN5c3RlbVN0YXRzSW5PY3RldHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlcgogCi0KLQogICAgICAgICAgICAgdmFsdWVzLgogCiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKQEAgLTc4Niw4ICs3NDcsNiBAQAogICAgICAgICAgICAgaW5jbHVkZXMgaW52YWxpZCBhZGRyZXNzZXMgKGUuZy4sIDo6MCkuICBGb3IgZW50aXRpZXMKICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBJUCByb3V0ZXJzIGFuZCB0aGVyZWZvcmUgZG8gbm90IGZvcndhcmQKIAotCi0KICAgICAgICAgICAgIGRhdGFncmFtcywgdGhpcyBjb3VudGVyIGluY2x1ZGVzIGRhdGFncmFtcyBkaXNjYXJkZWQKICAgICAgICAgICAgIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2FzIG5vdCBhIGxvY2FsIGFkZHJlc3MuCiAKQEAgLTgzNiw5ICs3OTUsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBudW1iZXIgb2YgaW5wdXQgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGVudGl0eSB3YXMgbm90CiAgICAgICAgICAgICB0aGVpciBmaW5hbCBJUCBkZXN0aW5hdGlvbiBhbmQgZm9yIHdoaWNoIHRoaXMgZW50aXR5CiAgICAgICAgICAgICBhdHRlbXB0ZWQgdG8gZmluZCBhIHJvdXRlIHRvIGZvcndhcmQgdGhlbSB0byB0aGF0IGZpbmFsCkBAIC04ODgsOCArODQ0LDYgQEAKIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CiAKLQotCiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKQEAgLTkzOCw5ICs4OTIsNiBAQAogCiBpcFN5c3RlbVN0YXRzSW5EaXNjYXJkcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtOTg5LDkgKzk0MCw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKLQotCi0KICAgICA6Oj0geyBpcFN5c3RlbVN0YXRzRW50cnkgMTkgfQogCiBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHMgT0JKRUNULVRZUEUKQEAgLTEwNDEsOCArOTg5LDYgQEAKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDIyIH0KIAotCi0KIGlwU3lzdGVtU3RhdHNPdXRGb3J3RGF0YWdyYW1zIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQpAQCAtMTA5Miw4ICsxMDM4LDYgQEAKICAgICAgICAgICAgIGRlc3RpbmF0aW9uLCBidXQgd2VyZSBkaXNjYXJkZWQgKGUuZy4sIGZvciBsYWNrIG9mCiAgICAgICAgICAgICBidWZmZXIgc3BhY2UpLiAgTm90ZSB0aGF0IHRoaXMgY291bnRlciB3b3VsZCBpbmNsdWRlCiAKLQotCiAgICAgICAgICAgICBkYXRhZ3JhbXMgY291bnRlZCBpbiBpcFN5c3RlbVN0YXRzT3V0Rm9yd0RhdGFncmFtcyBpZiBhbnkKICAgICAgICAgICAgIHN1Y2ggZGF0YWdyYW1zIG1ldCB0aGlzIChkaXNjcmV0aW9uYXJ5KSBkaXNjYXJkIGNyaXRlcmlvbi4KIApAQCAtMTE0Miw5ICsxMDg2LDYgQEAKIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5Ci0KLQotCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgaGF2ZSBiZWVuIGRpc2NhcmRlZCBiZWNhdXNlCkBAIC0xMTk0LDggKzExMzUsNiBAQAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogCi0KLQogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcFN5c3RlbVN0YXRzRW50cnkgMzAgfQpAQCAtMTI0NSw4ICsxMTg0LDYgQEAKICAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCiAgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCiAKLQotCiAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwU3lzdGVtU3RhdHNFbnRyeSAzMyB9CiAKQEAgLTEyOTUsOSArMTIzMiw2IEBACiAKIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXI2NAotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTEzNDcsOCArMTI4MSw2IEBACiAgICAgICAgICAgICJUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyB0cmFuc21pdHRlZCBpbiBJUCBtdWx0aWNhc3QKICAgICAgICAgICAgIGRhdGFncmFtcy4gIE9jdGV0cyBmcm9tIGRhdGFncmFtcyBjb3VudGVkIGluCiAKLQotCiAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgogCiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKQEAgLTEzOTgsOCArMTMzMCw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogCi0KLQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcFN5c3RlbVN0YXRzRW50cnkgNDMgfQogCkBAIC0xNDQ4LDkgKzEzNzgsNiBAQAogaXBTeXN0ZW1TdGF0c1JlZnJlc2hSYXRlIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBVbnNpZ25lZDMyCiAgICAgVU5JVFMgICAgICAibWlsbGktc2Vjb25kcyIKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC0xNDk5LDkgKzE0MjYsNiBAQAogSXBJZlN0YXRzRW50cnkgOjo9IFNFUVVFTkNFIHsKICAgICAgICAgaXBJZlN0YXRzSVBWZXJzaW9uICAgICAgICAgICBJbmV0VmVyc2lvbiwKICAgICAgICAgaXBJZlN0YXRzSWZJbmRleCAgICAgICAgICAgICBJbnRlcmZhY2VJbmRleCwKLQotCi0KICAgICAgICAgaXBJZlN0YXRzSW5SZWNlaXZlcyAgICAgICAgICBDb3VudGVyMzIsCiAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlcyAgICAgICAgQ291bnRlcjY0LAogICAgICAgICBpcElmU3RhdHNJbk9jdGV0cyAgICAgICAgICAgIENvdW50ZXIzMiwKQEAgLTE1NTAsOSArMTQ3NCw2IEBACiAKIGlwSWZTdGF0c0lQVmVyc2lvbiBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW5ldFZlcnNpb24KLQotCi0KICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTE2MDEsOSArMTUyMiw2IEBACiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgNCB9CiAKIGlwSWZTdGF0c0luT2N0ZXRzIE9CSkVDVC1UWVBFCi0KLQotCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtMTY1Miw5ICsxNTcwLDYgQEAKIAogaXBJZlN0YXRzSW5Ob1JvdXRlcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMTcwNCw4ICsxNjE5LDYgQEAKICAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCiAgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCiAKLQotCiAgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgMTAgfQogCkBAIC0xNzU1LDggKzE2NjgsNiBAQAogICAgICAgICAgICAgYXR0ZW1wdGVkIHRvIGZpbmQgYSByb3V0ZSB0byBmb3J3YXJkIHRoZW0gdG8gdGhhdCBmaW5hbAogICAgICAgICAgICAgZGVzdGluYXRpb24uICBUaGlzIG9iamVjdCBjb3VudHMgdGhlIHNhbWUgcGFja2V0cyBhcwogCi0KLQogICAgICAgICAgICAgaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zLCBidXQgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgogCiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKQEAgLTE4MDUsOSArMTcxNiw2IEBACiBpcElmU3RhdHNSZWFzbUZhaWxzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIGZhaWx1cmVzIGRldGVjdGVkIGJ5IHRoZSBJUCByZS1hc3NlbWJseQpAQCAtMTg1Nyw4ICsxNzY1LDYgQEAKICAgICAgICAgICAgIGludGVyZmFjZSB0byB3aGljaCB0aGVzZSBkYXRhZ3JhbXMgd2VyZSBhZGRyZXNzZWQgaXMKICAgICAgICAgICAgIGluY3JlbWVudGVkLiAgVGhpcyBpbnRlcmZhY2UgbWlnaHQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZQogCi0KLQogICAgICAgICAgICAgaW5wdXQgaW50ZXJmYWNlIGZvciBzb21lIG9mIHRoZSBkYXRhZ3JhbXMuCiAKICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdApAQCAtMTkwOCw4ICsxODE0LDYgQEAKICAgICAgICAgICAgIHByb3RvY29scyAoaW5jbHVkaW5nIElDTVApIHN1cHBsaWVkIHRvIElQIGluIHJlcXVlc3RzIGZvcgogICAgICAgICAgICAgdHJhbnNtaXNzaW9uLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIHBhY2tldHMgYXMKIAotCi0KICAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgogCiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKQEAgLTE5NTksOCArMTg2Myw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogCi0KLQogICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDI0IH0KIApAQCAtMjAxMCw4ICsxOTEyLDYgQEAKIAogICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCiAKLQotCiAgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CiAgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgogCkBAIC0yMDYwLDkgKzE5NjAsNiBAQAogICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDI5IH0KIAotCi0KLQogaXBJZlN0YXRzT3V0VHJhbnNtaXRzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQpAQCAtMjExMSw5ICsyMDA4LDYgQEAKICAgICA6Oj0geyBpcElmU3RhdHNFbnRyeSAzMiB9CiAKIGlwSWZTdGF0c0hDT3V0T2N0ZXRzIE9CSkVDVC1UWVBFCi0KLQotCiAgICAgU1lOVEFYICAgICBDb3VudGVyNjQKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtMjE2Myw4ICsyMDU3LDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVjZWl2ZWQgaW4gSVAgbXVsdGljYXN0CiAKLQotCiAgICAgICAgICAgICBkYXRhZ3JhbXMuICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMgY291bnRlZCBpbgogICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdFBrdHMgTVVTVCBiZSBjb3VudGVkIGhlcmUuCiAKQEAgLTIyMTQsOCArMjEwNiw2IEBACiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKICAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCiAKLQotCiAgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCiAgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgMzkgfQpAQCAtMjI2NCw5ICsyMTU0LDYgQEAKICAgICA6Oj0geyBpcElmU3RhdHNFbnRyeSA0MiB9CiAKIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgT0JKRUNULVRZUEUKLQotCi0KICAgICBTWU5UQVggICAgIENvdW50ZXI2NAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CkBAIC0yMzE2LDggKzIyMDMsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgdmFsdWUgb2Ygc3lzVXBUaW1lIG9uIHRoZSBtb3N0IHJlY2VudCBvY2Nhc2lvbiBhdCB3aGljaAogCi0KLQogICAgICAgICAgICAgYW55IG9uZSBvciBtb3JlIG9mIHRoaXMgZW50cnkncyBjb3VudGVycyBzdWZmZXJlZCBhCiAgICAgICAgICAgICBkaXNjb250aW51aXR5LgogCkBAIC0yMzY3LDggKzIyNTIsNiBAQAogICAgICAgICAgICAgdGFibGUgaW5kZXBlbmRlbnQgb2YgaG93IHRoZSBlbnRpdHkgbGVhcm5lZCB0aGUgcHJlZml4LgogICAgICAgICAgICAgKFRoaXMgdGFibGUgaXNuJ3QgbGltaXRlZCB0byBwcmVmaXhlcyBsZWFybmVkIGZyb20gcm91dGVyCiAKLQotCiAgICAgICAgICAgICBhZHZlcnRpc2VtZW50cy4pIgogICAgIDo6PSB7IGlwIDMyIH0KIApAQCAtMjQxNyw5ICsyMzAwLDYgQEAKICAgICBTWU5UQVggICAgIEluZXRBZGRyZXNzCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudAotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgYWRkcmVzcyBwcmVmaXguICBUaGUgYWRkcmVzcyB0eXBlIG9mIHRoaXMgb2JqZWN0IGlzCiAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gaXBBZGRyZXNzUHJlZml4VHlwZS4gIFRoZSBsZW5ndGggb2YgdGhpcyBvYmplY3QKQEAgLTI0NjgsOSArMjM0OCw2IEBACiAKIGlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBUcnV0aFZhbHVlCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMjUxOSw5ICsyMzk2LDYgQEAKICAgICAgICAgICAgIFRoZSBhZGRyZXNzIGdlbmVyYXRlZCBmcm9tIGFuIGludmFsaWRhdGVkIHByZWZpeCBzaG91bGQgbm90CiAgICAgICAgICAgICBhcHBlYXIgYXMgdGhlIGRlc3RpbmF0aW9uIG9yIHNvdXJjZSBhZGRyZXNzIG9mIGEgcGFja2V0LgogCi0KLQotCiAgICAgICAgICAgICBUaGUgZGVmYXVsdCBmb3IgSVB2NCBwcmVmaXhlcyBpcyA0LDI5NCw5NjcsMjk1IChpbmZpbml0eSkuIgogICAgIFJFRkVSRU5DRSAiRm9yIElQdjYgUkZDIDI0NjEsIGVzcGVjaWFsbHkgc2VjdGlvbnMgMiBhbmQgNC42LjIgYW5kCiAgICAgICAgICAgICAgICBSRkMgMjQ2MiIKQEAgLTI1NzEsOCArMjQ0NSw2IEBACiAgICAgICAgICAgICBpbnRlbnRpb24gaW4gYWxsb3dpbmcgYSB1c2VyIHRvIHdyaXRlIHRvIHRoaXMgdGFibGUgaXMgdG8KICAgICAgICAgICAgIGFsbG93IHRoZW0gdG8gYWRkIG9yIHJlbW92ZSBhbnkgZW50cnkgdGhhdCBpc24ndAogCi0KLQogICAgICAgICAgICAgcGVybWFuZW50LiAgVGhlIHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gbW9kaWZ5IG9iamVjdHMKICAgICAgICAgICAgIGFuZCBlbnRyaWVzIHdoZW4gdGhhdCB3b3VsZCBub3QgY2F1c2UgaW5jb25zaXN0ZW5jaWVzCiAgICAgICAgICAgICB3aXRoaW4gdGhlIHRhYmxlLiAgQWxsb3dpbmcgd3JpdGUgYWNjZXNzIHRvIG9iamVjdHMsIHN1Y2gKQEAgLTI2MjIsOCArMjQ5NCw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBJUCBhZGRyZXNzIHRvIHdoaWNoIHRoaXMgZW50cnkncyBhZGRyZXNzaW5nIGluZm9ybWF0aW9uCiAKLQotCiAgICAgICAgICAgICBwZXJ0YWlucy4gIFRoZSBhZGRyZXNzIHR5cGUgb2YgdGhpcyBvYmplY3QgaXMgc3BlY2lmaWVkIGluCiAgICAgICAgICAgICBpcEFkZHJlc3NBZGRyVHlwZS4KIApAQCAtMjY3Miw5ICsyNTQyLDYgQEAKICAgICBTWU5UQVggICAgIElwQWRkcmVzc09yaWdpblRDCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIG9yaWdpbiBvZiB0aGUgYWRkcmVzcy4iCiAgICAgOjo9IHsgaXBBZGRyZXNzRW50cnkgNiB9CkBAIC0yNzI0LDggKzI1OTEsNiBAQAogICAgICAgICAgICAgVGhlIFJvd1N0YXR1cyBUQyByZXF1aXJlcyB0aGF0IHRoaXMgREVTQ1JJUFRJT04gY2xhdXNlCiAgICAgICAgICAgICBzdGF0ZXMgdW5kZXIgd2hpY2ggY2lyY3Vtc3RhbmNlcyBvdGhlciBvYmplY3RzIGluIHRoaXMgcm93CiAKLQotCiAgICAgICAgICAgICBjYW4gYmUgbW9kaWZpZWQuICBUaGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgaGFzIG5vIGVmZmVjdCBvbgogICAgICAgICAgICAgd2hldGhlciBvdGhlciBvYmplY3RzIGluIHRoaXMgY29uY2VwdHVhbCByb3cgY2FuIGJlCiAgICAgICAgICAgICBtb2RpZmllZC4KQEAgLTI3NzQsOSArMjYzOSw2IEBACiAgICAgU1lOVEFYICAgICBJcE5ldFRvUGh5c2ljYWxFbnRyeQogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiRWFjaCBlbnRyeSBjb250YWlucyBvbmUgSVAgYWRkcmVzcyB0byBgcGh5c2ljYWwnIGFkZHJlc3MKICAgICAgICAgICAgIGVxdWl2YWxlbmNlLiIKQEAgLTI4MjYsOCArMjY4OCw2IEBACiAKICAgICAgICAgICAgIEltcGxlbWVudG9ycyBuZWVkIHRvIGJlIGF3YXJlIHRoYXQgaWYgdGhlIHNpemUgb2YKIAotCi0KICAgICAgICAgICAgIGlwTmV0VG9QaHlzaWNhbE5ldEFkZHJlc3MgZXhjZWVkcyAxMTUgb2N0ZXRzLCB0aGVuIE9JRFMgb2YKICAgICAgICAgICAgIGluc3RhbmNlcyBvZiBjb2x1bW5zIGluIHRoaXMgcm93IHdpbGwgaGF2ZSBtb3JlIHRoYW4gMTI4CiAgICAgICAgICAgICBzdWItaWRlbnRpZmllcnMgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCB1c2luZyBTTk1QdjEsCkBAIC0yODc3LDggKzI3MzcsNiBAQAogICAgICAgICAgICAgbWFwcGluZyBpZGVudGlmaWVkIHdpdGggc2FpZCBlbnRyeS4gIEl0IGlzIGFuCiAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBtYXR0ZXIgYXMgdG8gd2hldGhlciB0aGUgYWdlbnQKIAotCi0KICAgICAgICAgICAgIHJlbW92ZXMgYW4gaW52YWxpZGF0ZWQgZW50cnkgZnJvbSB0aGUgdGFibGUuICBBY2NvcmRpbmdseSwKICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbnMgbXVzdCBiZSBwcmVwYXJlZCB0byByZWNlaXZlIHRhYnVsYXIKICAgICAgICAgICAgIGluZm9ybWF0aW9uIGZyb20gYWdlbnRzIHRoYXQgY29ycmVzcG9uZHMgdG8gZW50cmllcyBub3QKQEAgLTI5MjcsOSArMjc4NSw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIE5laWdoYm9yIFVucmVhY2hhYmlsaXR5IERldGVjdGlvbiBzdGF0ZSBmb3IgdGhlCiAgICAgICAgICAgICBpbnRlcmZhY2Ugd2hlbiB0aGUgYWRkcmVzcyBtYXBwaW5nIGluIHRoaXMgZW50cnkgaXMgdXNlZC4KICAgICAgICAgICAgIElmIE5laWdoYm9yIFVucmVhY2hhYmlsaXR5IERldGVjdGlvbiBpcyBub3QgaW4gdXNlIChlLmcuIGZvcgpAQCAtMjk3OCw5ICsyODMzLDYgQEAKIAogaXB2NlNjb3BlWm9uZUluZGV4RW50cnkgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIElwdjZTY29wZVpvbmVJbmRleEVudHJ5Ci0KLQotCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC0zMDI5LDkgKzI4ODEsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSB6b25lIGluZGV4IGZvciBzY29wZSAzIG9uIHRoaXMgaW50ZXJmYWNlLiIKICAgICA6Oj0geyBpcHY2U2NvcGVab25lSW5kZXhFbnRyeSAzIH0KIApAQCAtMzA4MCw5ICsyOTI5LDYgQEAKICAgICBTWU5UQVggICAgIEluZXRab25lSW5kZXgKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgOSBvbiB0aGlzIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkgOSB9CkBAIC0zMTMyLDggKzI5NzgsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgdGFibGUgdXNlZCB0byBkZXNjcmliZSB0aGUgZGVmYXVsdCByb3V0ZXJzIGtub3duIHRvIHRoaXMKIAotCi0KICAgICAgICAgICAgIGVudGl0eS4iCiAgICAgOjo9IHsgaXAgMzcgfQogCkBAIC0zMTgyLDkgKzMwMjYsNiBAQAogCiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4IE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJbnRlcmZhY2VJbmRleAotCi0KLQogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMzIzNCw4ICszMDc1LDYgQEAKICAgICBSRUZFUkVOQ0UgIlJGQyA0MjkxLCBzZWN0aW9uIDIuMSIKICAgICA6Oj0geyBpcERlZmF1bHRSb3V0ZXJFbnRyeSA1IH0KIAotCi0KIC0tCiAtLSBDb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBjb25zdHJ1Y3Rpbmcgcm91dGVyIGFkdmVydGlzZW1lbnRzCiAtLQpAQCAtMzI4NCw5ICszMTIzLDYgQEAKICAgICAgICAgICAgIG9iamVjdCBpcyB3cml0dGVuLCB0aGUgZW50aXR5IFNIT1VMRCBzYXZlIHRoZSBjaGFuZ2UgdG8KICAgICAgICAgICAgIG5vbi12b2xhdGlsZSBzdG9yYWdlLiIKICAgICBJTkRFWCB7IGlwdjZSb3V0ZXJBZHZlcnRJZkluZGV4IH0KLQotCi0KICAgICA6Oj0geyBpcHY2Um91dGVyQWR2ZXJ0VGFibGUgMSB9CiAKIElwdjZSb3V0ZXJBZHZlcnRFbnRyeSA6Oj0gU0VRVUVOQ0UgewpAQCAtMzMzNiw4ICszMTcyLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIG1heGltdW0gdGltZSBhbGxvd2VkIGJldHdlZW4gc2VuZGluZyB1bnNvbGljaXRlZCByb3V0ZXIKIAotCi0KICAgICAgICAgICAgIGFkdmVydGlzZW1lbnRzIGZyb20gdGhpcyBpbnRlcmZhY2UuIgogICAgIFJFRkVSRU5DRSAiUkZDIDI0NjEgU2VjdGlvbiA2LjIuMSIKICAgICBERUZWQUwgeyA2MDAgfQpAQCAtMzM4Niw5ICszMjIwLDYgQEAKICAgICBTWU5UQVggICAgIFVuc2lnbmVkMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICBjdXJyZW50Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSB2YWx1ZSB0byBiZSBwbGFjZWQgaW4gTVRVIG9wdGlvbnMgc2VudCBieSB0aGUgcm91dGVyIG9uCiAgICAgICAgICAgICB0aGlzIGludGVyZmFjZS4KQEAgLTM0MzgsOCArMzI2OSw2IEBACiAgICAgICAgICAgICJUaGUgZGVmYXVsdCB2YWx1ZSB0byBiZSBwbGFjZWQgaW4gdGhlIGN1cnJlbnQgaG9wIGxpbWl0CiAgICAgICAgICAgICBmaWVsZCBpbiByb3V0ZXIgYWR2ZXJ0aXNlbWVudHMgc2VudCBmcm9tIHRoaXMgaW50ZXJmYWNlLgogCi0KLQogICAgICAgICAgICAgVGhlIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gdGhlIGN1cnJlbnQgZGlhbWV0ZXIgb2YgdGhlCiAgICAgICAgICAgICBJbnRlcm5ldC4KIApAQCAtMzQ4OSw4ICszMzE4LDYgQEAKIAogLS0KIAotCi0KIC0tIElDTVAgc2VjdGlvbgogLS0KIApAQCAtMzUzOSw5ICszMzY2LDYgQEAKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIElQIHZlcnNpb24gb2YgdGhlIHN0YXRpc3RpY3MuIgotCi0KLQogICAgIDo6PSB7IGljbXBTdGF0c0VudHJ5IDEgfQogCiBpY21wU3RhdHNJbk1zZ3MgT0JKRUNULVRZUEUKQEAgLTM1OTEsOCArMzQxNSw2IEBACiAtLQogLS0gcGVyLXZlcnNpb24sIHBlci1tZXNzYWdlIHR5cGUgSUNNUCBjb3VudGVycwogCi0KLQogLS0KIAogaWNtcE1zZ1N0YXRzVGFibGUgT0JKRUNULVRZUEUKQEAgLTM2NDEsOSArMzQ2Myw2IEBACiBpY21wTXNnU3RhdHNUeXBlIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJbnRlZ2VyMzIgKDAuLjI1NSkKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCi0KLQotCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBJQ01QIHR5cGUgZmllbGQgb2YgdGhlIG1lc3NhZ2UgdHlwZSBiZWluZyBjb3VudGVkIGJ5CkBAIC0zNjkyLDkgKzM1MTEsNiBAQAogICAgICAgICAgICAgZXhwcmVzc2VkIGluIE9CSkVDVCBjbGF1c2UgZm9ybSBpbiB0aGlzIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICBjbGF1c2U6CiAKLQotCi0KICAgICAgICAgICAgIC0tIE9CSkVDVCAgICAgICAgaXBTeXN0ZW1TdGF0c0lQVmVyc2lvbgogICAgICAgICAgICAgLS0gU1lOVEFYICAgICAgICBJbmV0VmVyc2lvbiB7aXB2NCgxKSwgaXB2NigyKX0KICAgICAgICAgICAgIC0tIERFU0NSSVBUSU9OCkBAIC0zNzQ0LDggKzM1NjAsNiBAQAogICAgICAgICAgICAgLS0gREVTQ1JJUFRJT04KICAgICAgICAgICAgIC0tICAgICBUaGlzIE1JQiByZXF1aXJlcyBzdXBwb3J0IGZvciBvbmx5IGdsb2JhbCBhbmQKIAotCi0KICAgICAgICAgICAgIC0tICAgICBub24tZ2xvYmFsIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzIGFuZCBzbyB0aGUgc2l6ZQogICAgICAgICAgICAgLS0gICAgIGNhbiBiZSA0LCA4LCAxNiwgb3IgMjAgYnl0ZXMuCiAgICAgICAgICAgICAtLQpAQCAtMzc5NSw4ICszNjA5LDYgQEAKICAgICAgICAgICAgIlRoaXMgZ3JvdXAgaXMgbWFuZGF0b3J5IGZvciBzeXN0ZW1zIHRoYXQgaGF2ZSBhbiBhZ2dyZWdhdGUKICAgICAgICAgICAgIGJhbmR3aWR0aCBvZiBncmVhdGVyIHRoYW4gNjUwTUIuICBJbmNsdWRpbmcgdGhpcyBncm91cAogCi0KLQogICAgICAgICAgICAgZG9lcyBub3QgYWxsb3cgYW4gZW50aXR5IHRvIG5lZ2xlY3QgdGhlIDMyIGJpdCB2ZXJzaW9ucyBvZgogICAgICAgICAgICAgdGhlc2Ugb2JqZWN0cy4iCiAKQEAgLTM4NDYsOCArMzY1OCw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoaXMgZ3JvdXAgaXMgbWFuZGF0b3J5IGZvciBhbGwgc3lzdGVtcyBzdXBwb3J0aW5nIElQdjQgYW5kCiAKLQotCiAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIGlwSWZTdGF0c0hDUGFja2V0R3JvdXAuICBJbmNsdWRpbmcgdGhpcyBncm91cAogICAgICAgICAgICAgZG9lcyBub3QgYWxsb3cgYW4gZW50aXR5IHRvIG5lZ2xlY3QgdGhlIDMyIGJpdCB2ZXJzaW9ucyBvZgogICAgICAgICAgICAgdGhlc2Ugb2JqZWN0cy4iCkBAIC0zODk2LDkgKzM3MDYsNiBAQAogCiAgICAgT0JKRUNUICAgICBpcHY2SW50ZXJmYWNlRW5hYmxlU3RhdHVzCiAgICAgTUlOLUFDQ0VTUyByZWFkLW9ubHkKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiQW4gYWdlbnQgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgd3JpdGUgYWNjZXNzIHRvIHRoaXMKICAgICAgICAgICAgIG9iamVjdC4iCkBAIC0zOTQ4LDggKzM3NTUsNiBAQAogICAgICAgICAgICAiQW4gYWdlbnQgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgd3JpdGUgb3IgY3JlYXRlIGFjY2VzcwogICAgICAgICAgICAgdG8gdGhpcyBvYmplY3QuCiAKLQotCiAgICAgICAgICAgICBJZiBhbiBhZ2VudCBhbGxvd3MgdGhpcyBvYmplY3QgdG8gYmUgd3JpdHRlbiBvciBjcmVhdGVkLCBpdAogICAgICAgICAgICAgaXMgbm90IHJlcXVpcmVkIHRvIGFsbG93IHRoaXMgb2JqZWN0IHRvIGJlIHNldCB0byByZWFkT25seSwKICAgICAgICAgICAgIHBlcm1hbmVudCwgb3Igbm9uVm9sYXRpbGUuIgpAQCAtMzk5OCw5ICszODAzLDYgQEAKICAgICAgICAgICAgIkFuIGFnZW50IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIHdyaXRlIGFjY2VzcyB0byB0aGlzCiAgICAgICAgICAgICBvYmplY3QuIgogCi0KLQotCiAgICAgT0JKRUNUICAgICBpcHY2Um91dGVyQWR2ZXJ0T3RoZXJDb25maWdGbGFnCiAgICAgTUlOLUFDQ0VTUyByZWFkLW9ubHkKICAgICBERVNDUklQVElPTgpAQCAtNDA0MiwxNiArMzg0NCwxMiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBbiBhZ2VudCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSB3cml0ZSBvciBjcmVhdGUgYWNjZXNzCiAgICAgICAgICAgICB0byB0aGlzIG9iamVjdC4iCi0KICAgICA6Oj0geyBpcE1JQkNvbXBsaWFuY2VzIDIgfQogCiAtLSB1bml0cyBvZiBjb25mb3JtYW5jZQogCiBpcHY0R2VuZXJhbEdyb3VwIE9CSkVDVC1HUk9VUAogICAgIE9CSkVDVFMgICB7IGlwRm9yd2FyZGluZywgaXBEZWZhdWx0VFRMLCBpcFJlYXNtVGltZW91dCB9Ci0KLQotCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBncm91cCBvZiBJUHY0LXNwZWNpZmljIG9iamVjdHMgZm9yIGJhc2ljIG1hbmFnZW1lbnQgb2YKQEAgLTQxMDEsOCArMzg5OSw2IEBACiAgICAgICAgICAgICB2YWx1ZS4iCiAgICAgOjo9IHsgaXBNSUJHcm91cHMgNyB9CiAKLQotCiBpcFN5c3RlbVN0YXRzR3JvdXAgT0JKRUNULUdST1VQCiAgICAgT0JKRUNUUyAgIHsgaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXMsCiAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzLApAQCAtNDE1MSw5ICszOTQ3LDYgQEAKICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzLAogICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzCiB9Ci0KLQotCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIklQIHN5c3RlbSB3aWRlIHN0YXRpc3RpY3MgZm9yIHN5c3RlbXMgdGhhdCBtYXkgb3ZlcmZsb3cgdGhlCkBAIC00MjAyLDkgKzM5OTUsNiBAQAogICAgICAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLCBpcElmU3RhdHNSZWZyZXNoUmF0ZSB9CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIklQIHBlci1pbnRlcmZhY2Ugc3RhdGlzdGljcy4iCiAgICAgOjo9IHsgaXBNSUJHcm91cHMgMTMgfQogCkBAIC00MjUzLDkgKzQwNDMsNiBAQAogICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAogICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeEFkdlZhbGlkTGlmZXRpbWUgfQogICAgIFNUQVRVUyAgICAgY3VycmVudAotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgZ3JvdXAgb2Ygb2JqZWN0cyBmb3IgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGFkZHJlc3MKICAgICAgICAgICAgIHByZWZpeGVzIHVzZWQgYnkgdGhpcyBub2RlLiIKQEAgLTQzMDQsOSArNDA5MSw2IEBACiAKIGlwRGVmYXVsdFJvdXRlckdyb3VwIE9CSkVDVC1HUk9VUAogICAgIE9CSkVDVFMgICB7IGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lLCBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlIH0KLQotCi0KICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIGdyb3VwIG9mIG9iamVjdHMgZm9yIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBkZWZhdWx0CkBAIC00MzU2LDggKzQxNDAsNiBAQAogCiAgICAgICAgICAgICBUaGlzIG9iamVjdCBoYXMgYmVlbiBkZXByZWNhdGVkLCBhcyBhIG5ldyBJUCB2ZXJzaW9uLW5ldXRyYWwKIAotCi0KICAgICAgICAgICAgIHRhYmxlIGhhcyBiZWVuIGFkZGVkLiAgSXQgaXMgbG9vc2VseSByZXBsYWNlZCBieQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luUmVjaWV2ZXMuIgogICAgIDo6PSB7IGlwIDMgfQpAQCAtNDQwNyw4ICs0MTg5LDYgQEAKICAgICAgICAgICAgIGZpbmFsIGRlc3RpbmF0aW9uLiAgSW4gZW50aXRpZXMgd2hpY2ggZG8gbm90IGFjdCBhcyBJUHY0CiAgICAgICAgICAgICByb3V0ZXJzLCB0aGlzIGNvdW50ZXIgd2lsbCBpbmNsdWRlIG9ubHkgdGhvc2UgcGFja2V0cyB3aGljaAogCi0KLQogICAgICAgICAgICAgd2VyZSBTb3VyY2UtUm91dGVkIHZpYSB0aGlzIGVudGl0eSwgYW5kIHRoZSBTb3VyY2UtUm91dGUKICAgICAgICAgICAgIG9wdGlvbiBwcm9jZXNzaW5nIHdhcyBzdWNjZXNzZnVsLgogCkBAIC00NDU4LDggKzQyMzgsNiBAQAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBhIG5ldyBJUCB2ZXJzaW9uIG5ldXRyYWwKICAgICAgICAgICAgIHRhYmxlIGhhcyBiZWVuIGFkZGVkLiAgSXQgaXMgbG9vc2VseSByZXBsYWNlZCBieQogCi0KLQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luZGVsaXZlcnMuIgogICAgIDo6PSB7IGlwIDkgfQogCkBAIC00NTA5LDggKzQyODcsNiBAQAogCiAgICAgICAgICAgICBUaGlzIG9iamVjdCBoYXMgYmVlbiBkZXByZWNhdGVkLCBhcyBhIG5ldyBJUCB2ZXJzaW9uLW5ldXRyYWwKIAotCi0KICAgICAgICAgICAgIHRhYmxlIGhhcyBiZWVuIGFkZGVkLiAgSXQgaXMgbG9vc2VseSByZXBsYWNlZCBieQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzLiIKICAgICA6Oj0geyBpcCAxMiB9CkBAIC00NTU5LDkgKzQzMzUsNiBAQAogCiBpcEZyYWdPS3MgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KQEAgLTQ2MTEsOCArNDM4NCw2IEBACiAgICAgICAgICAgICBmb3IgZGlzY2FyZGluZyBzdWNoIGFuIGVudHJ5IGNvdWxkIGJlIHRvIGZyZWUtdXAgYnVmZmVyCiAgICAgICAgICAgICBzcGFjZSBmb3Igb3RoZXIgcm91dGluZyBlbnRyaWVzLgogCi0KLQogICAgICAgICAgICAgVGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgaW4gcHJlLUlQdjYgdmVyc2lvbnMgb2YgdGhlIElQIE1JQi4KICAgICAgICAgICAgIEl0IHdhcyBpbXBsaWNpdGx5IElQdjQgb25seSwgYnV0IHRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9ucwogICAgICAgICAgICAgZGlkIG5vdCBpbmRpY2F0ZSB0aGlzIHByb3RvY29sIHJlc3RyaWN0aW9uLiAgSW4gb3JkZXIgdG8KQEAgLTQ2NjEsOSArNDQzMiw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIElQdjQgYWRkcmVzcyB0byB3aGljaCB0aGlzIGVudHJ5J3MgYWRkcmVzc2luZwogICAgICAgICAgICAgaW5mb3JtYXRpb24gcGVydGFpbnMuIgogICAgIDo6PSB7IGlwQWRkckVudHJ5IDEgfQpAQCAtNDcxMyw4ICs0NDgxLDYgQEAKICAgICAgICAgICAgIG9uIHRoaXMgaW50ZXJmYWNlLiIKICAgICA6Oj0geyBpcEFkZHJFbnRyeSA1IH0KIAotCi0KIC0tIHRoZSBkZXByZWNhdGVkIElQdjQgQWRkcmVzcyBUcmFuc2xhdGlvbiB0YWJsZQogCiAtLSBUaGUgQWRkcmVzcyBUcmFuc2xhdGlvbiB0YWJsZXMgY29udGFpbiB0aGUgSXBBZGRyZXNzIHRvCkBAIC00NzY0LDggKzQ1MzAsNiBAQAogICAgICAgICAgICAgZWZmZWN0aXZlLiAgVGhlIGludGVyZmFjZSBpZGVudGlmaWVkIGJ5IGEgcGFydGljdWxhciB2YWx1ZQogICAgICAgICAgICAgb2YgdGhpcyBpbmRleCBpcyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgaWRlbnRpZmllZCBieSB0aGUKIAotCi0KICAgICAgICAgICAgIHNhbWUgdmFsdWUgb2YgdGhlIElGLU1JQidzIGlmSW5kZXguCiAKICAgICAgICAgICAgIFRoaXMgb2JqZWN0IHByZWRhdGVzIHRoZSBydWxlIGxpbWl0aW5nIGluZGV4IG9iamVjdHMgdG8gYQpAQCAtNDgxNSw4ICs0NTc5LDYgQEAKIAogICAgICAgICAgICAgU2V0dGluZyB0aGlzIG9iamVjdCB0byB0aGUgdmFsdWUgaW52YWxpZCgyKSBoYXMgdGhlIGVmZmVjdAogCi0KLQogICAgICAgICAgICAgb2YgaW52YWxpZGF0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIHRoZQogICAgICAgICAgICAgaXBOZXRUb01lZGlhVGFibGUuICBUaGF0IGlzLCBpdCBlZmZlY3RpdmVseSBkaXMtYXNzb2NpYXRlcwogICAgICAgICAgICAgdGhlIGludGVyZmFjZSBpZGVudGlmaWVkIHdpdGggc2FpZCBlbnRyeSBmcm9tIHRoZSBtYXBwaW5nCkBAIC00ODY1LDkgKzQ2MjcsNiBAQAogICAgICAgICAgICAgaWNtcFN0YXRzSW5FcnJvcnMuIgogICAgIDo6PSB7IGljbXAgMiB9CiAKLQotCi0KIGljbXBJbkRlc3RVbnJlYWNocyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTQ5MTcsOCArNDY3Niw2IEBACiAgICAgICAgICAgICB0aGUgaWNtcE1zZ1N0YXRzVGFibGUuIgogICAgIDo6PSB7IGljbXAgNiB9CiAKLQotCiBpY21wSW5SZWRpcmVjdHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC00OTY3LDkgKzQ3MjQsNiBAQAogICAgICAgICAgICAgdGhlIGljbXBNc2dTdGF0c1RhYmxlLiIKICAgICA6Oj0geyBpY21wIDEwIH0KIAotCi0KLQogaWNtcEluVGltZXN0YW1wUmVwcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTUwMTgsOSArNDc3Miw2IEBACiAgICAgICAgICAgICBUaGlzIG9iamVjdCBoYXMgYmVlbiBkZXByZWNhdGVkLCBhcyBhIG5ldyBJUCB2ZXJzaW9uLW5ldXRyYWwKICAgICAgICAgICAgIHRhYmxlIGhhcyBiZWVuIGFkZGVkLiAgSXQgaXMgbG9vc2VseSByZXBsYWNlZCBieQogICAgICAgICAgICAgaWNtcFN0YXRzT3V0TXNncy4iCi0KLQotCiAgICAgOjo9IHsgaWNtcCAxNCB9CiAKIGljbXBPdXRFcnJvcnMgT0JKRUNULVRZUEUKQEAgLTUwNjksOSArNDgyMCw2IEBACiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIElDTVAgUGFyYW1ldGVyIFByb2JsZW0gbWVzc2FnZXMgc2VudC4KIApAQCAtNTEyMCw5ICs0ODY4LDYgQEAKIAogaWNtcE91dEVjaG9SZXBzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCkBAIC01MTcxLDkgKzQ5MTYsNiBAQAogCiBpY21wT3V0QWRkck1hc2tSZXBzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCkBAIC01MjIyLDkgKzQ5NjQsNiBAQAogICAgICAgICAgICAiVGhlIGlwIGdyb3VwIG9mIG9iamVjdHMgcHJvdmlkaW5nIGZvciBiYXNpYyBtYW5hZ2VtZW50IG9mIElQCiAgICAgICAgICAgICBlbnRpdGllcywgZXhjbHVzaXZlIG9mIHRoZSBtYW5hZ2VtZW50IG9mIElQIHJvdXRlcy4KIAotCi0KLQogICAgICAgICAgICAgQXMgcGFydCBvZiB0aGUgdmVyc2lvbiBpbmRlcGVuZGVuY2UsIHRoaXMgZ3JvdXAgaGFzIGJlZW4KICAgICAgICAgICAgIGRlcHJlY2F0ZWQuICAiCiAgICAgOjo9IHsgaXBNSUJHcm91cHMgMSB9CmRpZmYgLS1naXQgYS9taWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0IGIvbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dAppbmRleCBmMzBmNGNhLi42ZmIzNjU5IDEwMDY0NAotLS0gYS9taWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0CisrKyBiL21pYnMvSVBWNi1GTE9XLUxBQkVMLU1JQi50eHQKQEAgLTE1LDEwICsxNSw2IEBACiAgICAgICAgICAgICAgICAgICAgMzQ2MSBHTCBMaW5zY2hvdGVuCiAgICAgICAgICAgICAgICAgICAgTmV0aGVybGFuZHMKIAotCi0KLQotCiAgICAgICAgICAgICAgICAgICAgUGhvbmU6ICszMSAzNDgtNDA3LTc3NQogICAgICAgICAgICAgICAgICAgIEVNYWlsOiBid2lqbmVuQGx1Y2VudC5jb20KIApAQCAtMzUsNyArMzEsNiBAQAogCiAgICAgUkVWSVNJT04gICAgICAiMjAwMzA4MjgwMDAwWiIgIC0tIDI4IEF1Z3VzdCAyMDAzCiAgICAgREVTQ1JJUFRJT04gICAiSW5pdGlhbCB2ZXJzaW9uLCBwdWJsaXNoZWQgYXMgUkZDIDM1OTUuIgotCiAgICAgOjo9IHsgbWliLTIgMTAzIH0KIAogSVB2NkZsb3dMYWJlbCAgICAgIDo6PSBURVhUVUFMLUNPTlZFTlRJT04KZGlmZiAtLWdpdCBhL21pYnMvTWFrZWZpbGUubWliIGIvbWlicy9NYWtlZmlsZS5taWIKaW5kZXggMTM2MTk5Yy4uZTU4NzFmMSAxMDA2NDQKLS0tIGEvbWlicy9NYWtlZmlsZS5taWIKKysrIGIvbWlicy9NYWtlZmlsZS5taWIKQEAgLTE0LDE4ICsxNCwyNCBAQAogCVNOTVAtRlJBTUVXT1JLLU1JQi50eHQgU05NUC1NUEQtTUlCLnR4dCBTTk1QLVVTRVItQkFTRUQtU00tTUlCLnR4dCBcCiAJU05NUC1WSUVXLUJBU0VELUFDTS1NSUIudHh0IFNOTVAtQ09NTVVOSVRZLU1JQi50eHQgXAogCVNOTVAtVEFSR0VULU1JQi50eHQgU05NUC1OT1RJRklDQVRJT04tTUlCLnR4dCBTTk1QLVBST1hZLU1JQi50eHQgXAorCVNOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dCBTTk1QLVVTTS1BRVMtTUlCLnR4dCBcCiAJQUdFTlRYLU1JQi50eHQgU01VWC1NSUIudHh0IFwKLQlESVNNQU4tU0NSSVBULU1JQi50eHQgIERJU01BTi1TQ0hFRFVMRS1NSUIudHh0IFwKKwlESVNNQU4tU0NSSVBULU1JQi50eHQgRElTTUFOLVNDSEVEVUxFLU1JQi50eHQgXAorCURJU01BTi1QSU5HLU1JQi50eHQgRElTTUFOLVRSQUNFUk9VVEUtTUlCLnR4dCBcCisJRElTTUFOLU5TTE9PS1VQLU1JQi50eHQgRElTTUFOLUVWRU5ULU1JQi50eHQgXAorCURJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQgTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0IFwKIAlJQU5BLUxBTkdVQUdFLU1JQi50eHQgSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQi50eHQgXAogCUlGLU1JQi50eHQgSUYtSU5WRVJURUQtU1RBQ0stTUlCLnR4dCBcCiAJSVAtTUlCLnR4dCBJUC1GT1JXQVJELU1JQi50eHQgVENQLU1JQi50eHQgVURQLU1JQi50eHQgXAotCUlBTkFpZlR5cGUtTUlCLnR4dCBFdGhlckxpa2UtTUlCLnR4dCBcCisJSUFOQWlmVHlwZS1NSUIudHh0IElBTkEtUlRQUk9UTy1NSUIudHh0IEV0aGVyTGlrZS1NSUIudHh0IFwKIAlJUFY2LVRDLnR4dCBJUFY2LU1JQi50eHQgSVBWNi1JQ01QLU1JQi50eHQgXAotCUlQVjYtVENQLU1JQi50eHQgSVBWNi1VRFAtTUlCLnR4dCBcCisJSVBWNi1UQ1AtTUlCLnR4dCBJUFY2LVVEUC1NSUIudHh0IElQVjYtRkxPVy1MQUJFTC1NSUIudHh0IFwKIAlIT1NULVJFU09VUkNFUy1NSUIudHh0IEhPU1QtUkVTT1VSQ0VTLVRZUEVTLnR4dCBcCiAJTkVUV09SSy1TRVJWSUNFUy1NSUIudHh0IE1UQS1NSUIudHh0IFwKIAlSTU9OLU1JQi50eHQgXAotCVJGQzExNTUtU01JLnR4dCBSRkMxMjEzLU1JQi50eHQgXAorCVRVTk5FTC1NSUIudHh0IFwKKwlUUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0IFwKKwlSRkMxMTU1LVNNSS50eHQgUkZDMTIxMy1NSUIudHh0XAogCVNDVFAtTUlCLnR4dAogCiBNSUJERVBTID0gTWFrZWZpbGUubWliIG1pYmZldGNoIHNtaXN0cmlwCkBAIC02NSw2ICs3MSwxMiBAQAogU05NUC1DT01NVU5JVFktTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjU3NgogCitTTk1QLVVTTS1BRVMtTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMzgyNgorCitTTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI3ODYKKwogU05NUHYyLVNNSS50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI1NzggU05NUHYyLVNNSQogCkBAIC05Miw2ICsxMDQsMTggQEAKIERJU01BTi1TQ1JJUFQtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMzE2NQogCitESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyOTgyCisKK0RJU01BTi1FVkVOVC1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyOTgxCisKK0RJU01BTi1OU0xPT0tVUC1NSUIudHh0IERJU01BTi1UUkFDRVJPVVRFLU1JQi50eHQgRElTTUFOLVBJTkctTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDU2MAorCitOT1RJRklDQVRJT04tTE9HLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDMwMTQKKwogSUYtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjg2MwogCkBAIC0xMTAsNiArMTM0LDkgQEAKIElBTkFpZlR5cGUtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggLXggJChJQU5BSE9TVCkgJChJQU5BRElSKSBpYW5haWZ0eXBlLW1pYgogCitJQU5BLVJUUFJPVE8tTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggLXggJChJQU5BSE9TVCkgJChJQU5BRElSKSBpYW5haXByb3V0ZXByb3RvY29sLW1pYgorCiBJQU5BLUxBTkdVQUdFLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWxhbmd1YWdlLW1pYgogCkBAIC0xMTcsMTYgKzE0NCwyMiBAQAogCS4vbWliZmV0Y2ggLXggJChJQU5BSE9TVCkgJChJQU5BRElSKSBpYW5hYWRkcmVzc2ZhbWlseW51bWJlcnMtbWliCiAKIElQLU1JQi50eHQ6CSQoTUlCREVQUykKLQkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDIwMTEKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDQyOTMKIAogSVAtRk9SV0FSRC1NSUIudHh0OgkkKE1JQkRFUFMpCi0JLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyMDk2CisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSA0MjkyCiAKIFRDUC1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSA0MDIyCiAKIFVEUC1NSUIudHh0OgkkKE1JQkRFUFMpCi0JLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyMDEzCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSA0MTEzCisKK1RVTk5FTC1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSA0MDg3CisKK1RSQU5TUE9SVC1BRERSRVNTLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDM0MTkKIAogSVBWNi1UQy50eHQgSVBWNi1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNDY1CkBAIC0xNDAsNiArMTczLDkgQEAKIElQVjYtVURQLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI0NTQKIAorSVBWNi1GTE9XLUxBQkVMLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDM1OTUKKwogSE9TVC1SRVNPVVJDRVMtTUlCLnR4dCBIT1NULVJFU09VUkNFUy1UWVBFUy50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI3OTAKIApAQCAtMTU4LDcgKzE5NCw3IEBACiBSRkMxMjEzLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDEyMTMKIAotU0NUUC50eHQ6CSQoTUlCREVQUykKK1NDVFAtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMzg3MwogCiBpYW5hbWliczoJaWFuYWxpc3QKZGlmZiAtLWdpdCBhL21pYnMvTkVULVNOTVAtVEMudHh0IGIvbWlicy9ORVQtU05NUC1UQy50eHQKaW5kZXggZjNmZjVkZi4uYjNkNzZhOSAxMDA2NDQKLS0tIGEvbWlicy9ORVQtU05NUC1UQy50eHQKKysrIGIvbWlicy9ORVQtU05NUC1UQy50eHQKQEAgLTEyMCw1ICsxMjAsOCBAQAogbmV0U25tcFVEUElQdjZEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNCB9IC0tIG9ic29sZXRlCiBuZXRTbm1wVENQSVB2NkRvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA1IH0gLS0gb2Jzb2xldGUKIG5ldFNubXBDYWxsYmFja0RvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA2IH0KK25ldFNubXBBbGlhc0RvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA3IH0KK25ldFNubXBEVExTVURQRG9tYWluCU9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5ldFNubXBEb21haW5zIDggfQorbmV0U25tcERUTFNTQ1RQRG9tYWluCU9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5ldFNubXBEb21haW5zIDkgfQogCiBFTkQKZGlmZiAtLWdpdCBhL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0IGIvbWlicy9OT1RJRklDQVRJT04tTE9HLU1JQi50eHQKaW5kZXggYzYwYjdkMi4uYzdkYTkzNCAxMDA2NDQKLS0tIGEvbWlicy9OT1RJRklDQVRJT04tTE9HLU1JQi50eHQKKysrIGIvbWlicy9OT1RJRklDQVRJT04tTE9HLU1JQi50eHQKQEAgLTIzLDcgKzIzLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIE1JQiBtb2R1bGUgZm9yIGxvZ2dpbmcgU05NUCBOb3RpZmljYXRpb25zLCB0aGF0IGlzLCBUcmFwcwogCi0KICAgICAgYW5kIEluZm9ybXMuIgogLS0gUmV2aXNpb24gSGlzdG9yeQogCkBAIC0zMiw3ICszMSw2IEBACiAgICAgICAgICAgICAgICBQdWJsaXNoZWQgYXMgUkZDIDMwMTQiCiAgICAgOjo9IHsgbWliLTIgOTIgfQogCi0KIG5vdGlmaWNhdGlvbkxvZ01JQk9iamVjdHMgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbm90aWZpY2F0aW9uTG9nTUlCIDEgfQogCiBubG1Db25maWcgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbm90aWZpY2F0aW9uTG9nTUlCT2JqZWN0cyAxIH0KQEAgLTcyLDggKzcwLDYgQEAKIAogbmxtQ29uZmlnR2xvYmFsQWdlT3V0IE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgVW5zaWduZWQzMgotCi0KICAgICBVTklUUyAgICAgICAibWludXRlcyIKICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCiAgICAgU1RBVFVTICAgICAgY3VycmVudApAQCAtOTMsNyArODksNiBAQAogICAgIERFRlZBTCB7IDE0NDAgfSAgLS0gMjQgaG91cnMKICAgICA6Oj0geyBubG1Db25maWcgMiB9CiAKLQogLS0KIC0tIEJhc2ljIExvZyBDb25maWd1cmF0aW9uIFRhYmxlCiAtLQpAQCAtMTIyLDggKzExNyw2IEBACiAgICAgbmxtQ29uZmlnTG9nRmlsdGVyTmFtZSAgICBTbm1wQWRtaW5TdHJpbmcsCiAgICAgbmxtQ29uZmlnTG9nRW50cnlMaW1pdCAgICBVbnNpZ25lZDMyLAogICAgIG5sbUNvbmZpZ0xvZ0FkbWluU3RhdHVzICAgSU5URUdFUiwKLQotCiAgICAgbmxtQ29uZmlnTG9nT3BlclN0YXR1cyAgICBJTlRFR0VSLAogICAgIG5sbUNvbmZpZ0xvZ1N0b3JhZ2VUeXBlICAgU3RvcmFnZVR5cGUsCiAgICAgbmxtQ29uZmlnTG9nRW50cnlTdGF0dXMgICBSb3dTdGF0dXMKQEAgLTE3Miw4ICsxNjUsNiBAQAogICAgICBOb3RpZmljYXRpb25zIGluIHRoZSBsb2csIHRoZSBvbGRlc3QgTm90aWZpY2F0aW9ucyBhcmUgZGlzY2FyZGVkCiAgICAgIHRvIGJyaW5nIHRoZSBsb2cgZG93biB0byB0aGUgbmV3IGxpbWl0LgogCi0KLQogICAgICBBIHZhbHVlIG9mIDAgaW5kaWNhdGVzIG5vIGxpbWl0LgogCiAgICAgIFBsZWFzZSBiZSBhd2FyZSB0aGF0IGNvbnRlbnRpb24gYmV0d2VlbiBtdWx0aXBsZSBtYW5hZ2VycwpAQCAtMjIyLDggKzIxMyw2IEBACiAgICAgOjo9IHsgbmxtQ29uZmlnTG9nRW50cnkgNiB9CiAKIG5sbUNvbmZpZ0xvZ0VudHJ5U3RhdHVzIE9CSkVDVC1UWVBFCi0KLQogICAgIFNZTlRBWCAgICAgUm93U3RhdHVzCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtMjcyLDggKzI2MSw2IEBACiBubG1TdGF0c0xvZ1RhYmxlIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgU0VRVUVOQ0UgT0YgTmxtU3RhdHNMb2dFbnRyeQogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCi0KLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAiQSB0YWJsZSBvZiBOb3RpZmljYXRpb24gbG9nIHN0YXRpc3RpY3MgZW50cmllcy4iCkBAIC0zMTUsMTMgKzMwMiwxMyBAQAogICAgICBubG1Db25maWdHbG9iYWxBZ2VPdXQuIgogICAgIDo6PSB7IG5sbVN0YXRzTG9nRW50cnkgMiB9CiAKLQogLS0KIC0tIExvZyBTZWN0aW9uCiAtLQogCiAtLQogLS0gTG9nIFRhYmxlCisKIC0tCiAKIG5sbUxvZ1RhYmxlIE9CSkVDVC1UWVBFCkBAIC0zNzAsOCArMzU3LDYgQEAKICAgICBJTkRFWCAgICAgICB7IG5sbUxvZ05hbWUsIG5sbUxvZ0luZGV4IH0KICAgICA6Oj0geyBubG1Mb2dUYWJsZSAxIH0KIAotCi0KIE5sbUxvZ0VudHJ5IDo6PSBTRVFVRU5DRSB7CiAgICAgbmxtTG9nSW5kZXggICAgICAgICAgICAgICAgVW5zaWduZWQzMiwKICAgICBubG1Mb2dUaW1lICAgICAgICAgICAgICAgICBUaW1lU3RhbXAsCkBAIC00MjEsNyArNDA2LDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBTTk1QIGVuZ2luZSBhdCB3aGljaCB0aGUgTm90aWZpY2F0aW9uCiAKLQogICAgICBvcmlnaW5hdGVkLgogCiAgICAgIElmIHRoZSBsb2cgY2FuIGNvbnRhaW4gTm90aWZpY2F0aW9ucyBmcm9tIG9ubHkgb25lIGVuZ2luZQpAQCAtNDcwLDggKzQ1NCw2IEBACiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQogICAgICAiSWYgdGhlIE5vdGlmaWNhdGlvbiB3YXMgcmVjZWl2ZWQgaW4gYSBwcm90b2NvbCB3aGljaCBoYXMgYQogICAgICAgY29udGV4dEVuZ2luZUlEIGVsZW1lbnQgbGlrZSBTTk1QdjMsIHRoaXMgb2JqZWN0IGhhcyB0aGF0IHZhbHVlLgogICAgICAgT3RoZXJ3aXNlIGl0cyB2YWx1ZSBpcyBhIHplcm8tbGVuZ3RoIHN0cmluZy4iCkBAIC01MjEsNyArNTAzLDYgQEAKIAogTmxtTG9nVmFyaWFibGVFbnRyeSA6Oj0gU0VRVUVOQ0UgewogCi0KICAgICBubG1Mb2dWYXJpYWJsZUluZGV4ICAgICAgICAgICAgICBVbnNpZ25lZDMyLAogICAgIG5sbUxvZ1ZhcmlhYmxlSUQgICAgICAgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSLAogICAgIG5sbUxvZ1ZhcmlhYmxlVmFsdWVUeXBlICAgICAgICAgIElOVEVHRVIsCkBAIC01NzAsOCArNTUxLDYgQEAKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCiAgICAgICJUaGUgdmFsdWUgd2hlbiBubG1Mb2dWYXJpYWJsZVR5cGUgaXMgJ2NvdW50ZXIzMicuIgogICAgIDo6PSB7IG5sbUxvZ1ZhcmlhYmxlRW50cnkgNCB9CiAKQEAgLTYyMSw3ICs2MDAsNiBAQAogICAgICBJUHY2IGFkZHJlc3NlcyBhcmUgcmVwcmVzZW50ZWQgdXNpbmcgVEFkZHJlc3Mgb3IKICAgICAgSW5ldEFkZHJlc3MsIGFuZCBzbyB0aGUgdW5kZXJseWluZyBkYXRhdHlwZSBpcwogCi0KICAgICAgT0NURVQgU1RSSU5HLCBhbmQgdGhlaXIgdmFsdWUgd291bGQgYmUgc3RvcmVkIGluCiAgICAgIHRoZSBubG1Mb2dWYXJpYWJsZU9jdGV0U3RyaW5nVmFsIGNvbHVtbi4iCiAgICAgOjo9IHsgbmxtTG9nVmFyaWFibGVFbnRyeSA5IH0KQEAgLTY1MCw3ICs2MjgsNiBAQAogICAgICAiVGhlIHZhbHVlIHdoZW4gbmxtTG9nVmFyaWFibGVUeXBlIGlzICdvcGFxdWUnLiIKICAgICA6Oj0geyBubG1Mb2dWYXJpYWJsZUVudHJ5IDEyIH0KIAotCiAtLQogLS0gQ29uZm9ybWFuY2UKIC0tCkBAIC02NzEsNyArNjQ4LDYgQEAKICAgICAgICAgICB0aGUgTm90aWZpY2F0aW9uIExvZyBNSUIuIgogICAgICBNT0RVTEUgICAgLS0gdGhpcyBtb2R1bGUKIAotCiAgICAgICAgICAgTUFOREFUT1JZLUdST1VQUyB7CiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25Mb2dDb25maWdHcm91cCwKICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkxvZ1N0YXRzR3JvdXAsCkBAIC03MDQsNyArNjgwLDYgQEAKICAgICAgICAgICAiVGhpcyBncm91cCBpcyBtYW5kYXRvcnkgb24gc3lzdGVtcyB0aGF0IGtlZXAgd2FsbCBjbG9jawogICAgICAgICAgIGRhdGUgYW5kIHRpbWUgYW5kIHNob3VsZCBub3QgYmUgaW1wbGVtZW50ZWQgb24gc3lzdGVtcyB0aGF0CiAgICAgICAgICAgZG8gbm90IGhhdmUgYSB3YWxsIGNsb2NrIGRhdGUuIgotCiAgICAgIDo6PSB7IG5vdGlmaWNhdGlvbkxvZ01JQkNvbXBsaWFuY2VzIDEgfQogCiAtLSBVbml0cyBvZiBDb25mb3JtYW5jZQpAQCAtNzIwLDggKzY5NSw2IEBACiAgICAgICAgICAgbmxtQ29uZmlnTG9nU3RvcmFnZVR5cGUsCiAgICAgICAgICAgbmxtQ29uZmlnTG9nRW50cnlTdGF0dXMKICAgICAgfQotCi0KICAgICAgU1RBVFVTIGN1cnJlbnQKICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAiTm90aWZpY2F0aW9uIGxvZyBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQuIgpAQCAtNzcwLDggKzc0Myw2IEBACiAgICAgICAgICAgbmxtTG9nRGF0ZUFuZFRpbWUKICAgICAgfQogICAgICBTVEFUVVMgY3VycmVudAotCi0KICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAiQ29uZGl0aW9uYWxseSBtYW5kYXRvcnkgbm90aWZpY2F0aW9uIGxvZyBkYXRhLgogICAgICAgICAgIFRoaXMgZ3JvdXAgaXMgbWFuZGF0b3J5IG9uIHN5c3RlbXMgdGhhdCBrZWVwIHdhbGwKZGlmZiAtLWdpdCBhL21pYnMvU05NUC1VU00tQUVTLU1JQi50eHQgYi9taWJzL1NOTVAtVVNNLUFFUy1NSUIudHh0CmluZGV4IGU5ZTlmYjguLjRjMTczMDIgMTAwNjQ0Ci0tLSBhL21pYnMvU05NUC1VU00tQUVTLU1JQi50eHQKKysrIGIvbWlicy9TTk1QLVVTTS1BRVMtTUlCLnR4dApAQCAtMzksOSArMzksOSBAQAogICAgICAgICAgICAgc2VlIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuCiAgICAgICAgICAgICBTdXBwbGVtZW50YXJ5IGluZm9ybWF0aW9uIG1heSBiZSBhdmFpbGFibGUgb24KICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWV0Zi5vcmcvY29weXJpZ2h0cy9pYW5hbWliLmh0bWwuIgorCiAgICAgUkVWSVNJT04gICAgICIyMDA0MDYxNDAwMDBaIgogICAgIERFU0NSSVBUSU9OICAiSW5pdGlhbCB2ZXJzaW9uLCBwdWJsaXNoZWQgYXMgUkZDMzgyNiIKLQogICAgIDo6PSB7IHNubXBNb2R1bGVzIDIwIH0KIAogdXNtQWVzQ2ZiMTI4UHJvdG9jb2wgT0JKRUNULUlERU5USVRZCmRpZmYgLS1naXQgYS9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dCBiL21pYnMvU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0CmluZGV4IGVlMjA3NmEuLjczNzc0MjUgMTAwNjQ0Ci0tLSBhL21pYnMvU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0CisrKyBiL21pYnMvU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0CkBAIC0yMyw3ICsyMyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZHdvb2QgQ2l0eSwgQ0EgOTQwNjMKICAgICAgICAgICAgICAgICAgIEVtYWlsOiAgc3Rqb2huc0Bjb3JwLmhvbWUubmV0CiAgICAgICAgICAgICAgICAgICBQaG9uZTogICsxLTY1MC01NTYtNTM2OCIKLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBkZWZpbml0aW9ucyBmb3IgcHJvdmlkaW5nIGZvcndhcmQKICAgICBzZWNyZWN5IGZvciBrZXkgY2hhbmdlcyBmb3IgdGhlIHVzbVVzZXJUYWJsZSwgYW5kIGZvciBwcm92aWRpbmcgYQpAQCAtMzMsOCArMzIsNiBAQAogICAgIFJFVklTSU9OICAgICAiMjAwMDAzMDYwMDAwWiIKICAgICBERVNDUklQVElPTgogICAgICAgICJJbml0aWFsIHZlcnNpb24gcHVibGlzaGVkIGFzIFJGQyAyNzg2LiIKLQotCiAgICAgOjo9IHsgZXhwZXJpbWVudGFsIDEwMSB9ICAtLSBJQU5BIERIS0VZLUNIQU5HRSAxMDEKIAogLS0gQWRtaW5pc3RyYXRpdmUgYXNzaWdubWVudHMKQEAgLTExMSw3ICsxMDgsNiBAQAogICAgICAgICAgICBiYXNlICAgIElOVEVHRVIsICAgLS0gZwogICAgICAgICAgICBwcml2YXRlVmFsdWVMZW5ndGggIElOVEVHRVIgT1BUSU9OQUwgfQogCi0KICAgICBJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gdXNlIGVpdGhlciB0aGUgdmFsdWVzIGZyb20KICAgICBPYWtsZXkgR3JvdXAgMSAgb3IgdGhlIHZhbHVlcyBvZiBmcm9tIE9ha2xleSBHcm91cCAyIGFzIHNwZWNpZmllZAogICAgIGluIFJGQy0yNDA5LCBUaGUgSW50ZXJuZXQgS2V5IEV4Y2hhbmdlLCBTZWN0aW9uIDYuMSwgNi4yIGFzIHRoZQpAQCAtMjM3LDYgKzIzMyw3IEBACiAgICAgYW4gaW1wbGVtZW50b3Igd2lsbCBzcGVjaWZ5IG9uZSBvciBtb3JlIHN0YW5kYXJkIHNlY3VyaXR5IG5hbWVzCiAgICAgYW5kIHdpbGwgcHJvdmlkZSBlbnRyaWVzIGluIHRoZSBWQUNNIHRhYmxlcyBncmFudGluZyB2YXJpb3VzCiAgICAgbGV2ZWxzIG9mIGFjY2VzcyB0byB0aG9zZSBuYW1lcy4gIFRoZSBhY3R1YWwgY29udGVudCBvZiB0aGUgVkFDTQorCiAgICAgdGFibGUgaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIE1JQi4KIAogICAgIE5vdGU6IFRoaXMgdGFibGUgaXMgZXhwZWN0ZWQgdG8gYmUgcmVhZGFibGUgd2l0aG91dCBhdXRoZW50aWNhdGlvbgpAQCAtMjQ5LDcgKzI0Niw2IEBACiAgICAgTUFYLUFDQ0VTUyAgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQogICAgICAgICAiQW4gZW50cnkgaW4gdGhlIHVzbURIS2lja3N0YXJ0VGFibGUuICBUaGUgYWdlbnQgU0hPVUxEIGVpdGhlcgogICAgIGRlbGV0ZSB0aGlzIGVudHJ5IG9yIG1hcmsgaXQgYXMgaW5hY3RpdmUgdXBvbiBhIHN1Y2Nlc3NmdWwgU0VUIG9mCiAgICAgYW55IG9mIHRoZSBLZXlDaGFuZ2UtdHlwZWQgb2JqZWN0cyBpbiB0aGUgdXNtVXNlckVudHJ5IG9yIHVwb24gYQpAQCAtMjYwLDcgKzI1Niw2IEBACiAgICAgb25lIG9yIG1vcmUgb2YgdGhlIGtleXMgZm9yIGEgcm93IGluIHVzbVVzZXJUYWJsZSB3aXRoIGEKICAgICBwYXJ0aWN1bGFyIHNlY3VyaXR5IG5hbWUsIHRoZSByb3cgaW4gdGhpcyB0YWJsZSB3aXRoIHRoYXQgc2FtZQogICAgIHNlY3VyaXR5IG5hbWUgaXMgbm8gbG9uZ2VyIHVzZWZ1bCBvciBtZWFuaW5nZnVsLiIKLQogICAgIElOREVYICAgeyB1c21ESEtpY2tzdGFydEluZGV4IH0KICAgICA6Oj0ge3VzbURIS2lja3N0YXJ0VGFibGUgMSB9CiAKQEAgLTI4NSw2ICsyODAsNyBAQAogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAiVGhlIGFnZW50J3MgRGlmZmllLUhlbGxtYW4gcHVibGljIHZhbHVlIGZvciB0aGlzIHJvdy4gIEF0CisKICAgICBpbml0aWFsaXphdGlvbiwgdGhlIGFnZW50IGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgYW5kIGRlcml2ZXMKICAgICBpdHMgcHVibGljIHZhbHVlIGZyb20gdGhhdCBudW1iZXIuICBUaGlzIHB1YmxpYyB2YWx1ZSBpcyBwdWJsaXNoZWQKICAgICBoZXJlLiAgVGhpcyBwdWJsaWMgdmFsdWUgJ3knIGVxdWFscyBnXnIgTU9EIHAgd2hlcmUgZyBpcyB0aGUgZnJvbQpAQCAtMzAzLDcgKzI5OSw2IEBACiAgICAgICAgIHdoZXJlIFBWMSwuLi4sUFZrIGFyZSB0aGUgb2N0ZXRzIG9mIFBWIGZyb20gZmlyc3QgdG8gbGFzdCwgYW5kCiAgICAgICAgIHdoZXJlIFBWMSAhPSAwLgogCi0KICAgICBUaGUgZm9sbG93aW5nIERIIHBhcmFtZXRlcnMgKE9ha2xleSBncm91cCAjMiwgUkZDIDI0MDksIHNlYyA2LjEsCiAgICAgNi4yKSBhcmUgdXNlZCBmb3IgdGhpcyBvYmplY3Q6CiAKQEAgLTMyOCwxMCArMzIzLDEwIEBACiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KICAgICAgICAgIlRoZSBtYW5hZ2VyJ3MgRGlmZmllLUhlbGxtYW4gcHVibGljIHZhbHVlIGZvciB0aGlzIHJvdy4gIE5vdGUKICAgICB0aGF0IHRoaXMgdmFsdWUgaXMgbm90IHNldCB2aWEgdGhlIFNOTVAgYWdlbnQsIGJ1dCBtYXkgYmUgc2V0IHZpYQogICAgIHNvbWUgb3V0IG9mIGJhbmQgbWV0aG9kLCBzdWNoIGFzIHRoZSBkZXZpY2UncyBjb25maWd1cmF0aW9uIGZpbGUuCisKICAgICBUaGUgbWFuYWdlciBjYWxjdWxhdGVzIHRoaXMgdmFsdWUgaW4gdGhlIHNhbWUgbWFubmVyIGFuZCB1c2luZyB0aGUKICAgICBzYW1lIHBhcmFtZXRlciBzZXQgYXMgdGhlIGFnZW50IGRvZXMuICBFLmcuIGl0IHNlbGVjdHMgYSByYW5kb20KICAgICBudW1iZXIgJ3InLCBjYWxjdWxhdGVzIHkgPSBnXnIgbW9kIHAgYW5kIHByb3ZpZGVzICd5JyBhcyB0aGUKQEAgLTQyOCw2ICs0MjMsNyBAQAogICAgICAgICBpbXBsZW1lbnRzIHRoZSB1c21Vc2VyVGFibGUgYW5kIHdoaWNoIHdpc2hlcyB0aGUgYWJpbGl0eSB0bwogICAgICAgICBwb3B1bGF0ZSB0aGUgVVNNIHRhYmxlIGJhc2VkIG9uIG91dC1vZi1iYW5kIHByb3ZpZGVkIERICiAgICAgICAgIGlnbml0aW9uIHZhbHVlcy4KKwogICAgICAgICAgICAgIEFueSBhZ2VudCBpbXBsZW1lbnRpbmcgdGhpcyBncm91cCBpcyBleHBlY3RlZCB0byBwcm92aWRlCiAgICAgICAgIHByZWluc3RhbGxlZCBlbnRyaWVzIGluIHRoZSB2YWNtIHRhYmxlcyBhcyBmb2xsb3dzOgogCkBAIC00NzYsNiArNDcyLDcgQEAKICAgICAgICAgdmFjbVZpZXdUcmVlRmFtaWx5Vmlld05hbWUgICAgICAnZGhLaWNrUmVzdHJpY3RlZCcKICAgICAgICAgdmFjbVZpZXdUcmVlRmFtaWx5U3VidHJlZSAgICAgICAxLjMuNi4xLjIuMS4xICAoc3lzdGVtKQogICAgICAgICB2YWNtVmlld1RyZWVGYW1pbHlNYXNrICAgICAgICAgICcnCisKICAgICAgICAgdmFjbVZpZXdUcmVlRmFtaWx5VHlwZSAgICAgICAgICAxCiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVN0b3JhZ2VUeXBlICAgcGVybWFuZW50CiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVN0YXR1cyAgICAgICAgYWN0aXZlCkBAIC00OTMsNyArNDkwLDYgQEAKICAgICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJJdCBpcyBjb21wbGlhbnQgdG8gaW1wbGVtZW50IHRoaXMgb2JqZWN0IGFzIHJlYWQtb25seSBmb3IKICAgICAgICAgYW55IGRldmljZS4iCi0KICAgICA6Oj0geyB1c21ESEtleU1JQkNvbXBsaWFuY2VzIDEgfQogCiAtLSBVbml0cyBvZiBDb21wbGlhbmNlCkBAIC01MzMsNSArNTI5LDQgQEAKICAgICBub24tY29uZmlkZW50aWFsIGFjY2Vzcy4iCiAgICAgOjo9IHsgdXNtREhLZXlNSUJHcm91cHMgMyB9CiAKLQogRU5ECmRpZmYgLS1naXQgYS9taWJzL1RSQU5TUE9SVC1BRERSRVNTLU1JQi50eHQgYi9taWJzL1RSQU5TUE9SVC1BRERSRVNTLU1JQi50eHQKaW5kZXggN2Q0NTBmYi4uMjI3ODg2ZSAxMDA2NDQKLS0tIGEvbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0CisrKyBiL21pYnMvVFJBTlNQT1JULUFERFJFU1MtTUlCLnR4dApAQCAtMTMsNiArMTMsNyBAQAogICAgICAgICAgVFUgQnJhdW5zY2h3ZWlnCiAgICAgICAgICBCdWVsdGVud2VnIDc0Lzc1CiAgICAgICAgICAzODEwNiBCcmF1bnNjaHdlaWcsIEdlcm1hbnkKKwogICAgICAgICAgUGhvbmU6ICs0OSA1MzEgMzkxLTMyODkKICAgICAgICAgIEVNYWlsOiBzY2hvZW53QGlici5jcy50dS1icy5kZQogCkBAIC0zMiw3ICszMyw2IEBACiAgICAgICAgICJJbml0aWFsIHZlcnNpb24sIHB1Ymxpc2hlZCBhcyBSRkMgMzQxOS4iCiAgICAgOjo9IHsgbWliLTIgMTAwIH0KIAotCiB0cmFuc3BvcnREb21haW5zIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IHRyYW5zcG9ydEFkZHJlc3NNSUIgMSB9CiAKIHRyYW5zcG9ydERvbWFpblVkcElwdjQgT0JKRUNULUlERU5USVRZCkBAIC0yMDUsNiArMjA1LDcgQEAKICAgICAgICAgIHRjcElwdjQoNSkgICAgIHRyYW5zcG9ydERvbWFpblRjcElwdjQKICAgICAgICAgIHRjcElwdjYoNikgICAgIHRyYW5zcG9ydERvbWFpblRjcElwdjYKICAgICAgICAgIHRjcElwdjR6KDcpICAgIHRyYW5zcG9ydERvbWFpblRjcElwdjR6CisKICAgICAgICAgIHRjcElwdjZ6KDgpICAgIHRyYW5zcG9ydERvbWFpblRjcElwdjZ6CiAgICAgICAgICBzY3RwSXB2NCg5KSAgICB0cmFuc3BvcnREb21haW5TY3RwSXB2NAogICAgICAgICAgc2N0cElwdjYoMTApICAgdHJhbnNwb3J0RG9tYWluU2N0cElwdjYKQEAgLTI1Myw2ICsyNTQsNyBAQAogICAgICAgICAgQSBUcmFuc3BvcnRBZGRyZXNzIHZhbHVlIGlzIGFsd2F5cyBpbnRlcnByZXRlZCB3aXRoaW4gdGhlCiAgICAgICAgICBjb250ZXh0IG9mIGEgVHJhbnNwb3J0QWRkcmVzc1R5cGUgb3IgVHJhbnNwb3J0RG9tYWluIHZhbHVlLgogICAgICAgICAgRXZlcnkgdXNhZ2Ugb2YgdGhlIFRyYW5zcG9ydEFkZHJlc3MgdGV4dHVhbCBjb252ZW50aW9uIE1VU1QKKwogICAgICAgICAgc3BlY2lmeSB0aGUgVHJhbnNwb3J0QWRkcmVzc1R5cGUgb3IgVHJhbnNwb3J0RG9tYWluIG9iamVjdAogICAgICAgICAgd2hpY2ggcHJvdmlkZXMgdGhlIGNvbnRleHQuIEZ1cnRoZXJtb3JlLCBNSUIgYXV0aG9ycyBTSE9VTEQKICAgICAgICAgIGRlZmluZSBhIHNlcGFyYXRlIFRyYW5zcG9ydEFkZHJlc3NUeXBlIG9yIFRyYW5zcG9ydERvbWFpbgpAQCAtMzQ5LDYgKzM1MSw3IEBACiAKICAgICAgICAgIFRoaXMgdGV4dHVhbCBjb252ZW50aW9uIFNIT1VMRCBOT1QgYmUgdXNlZCBkaXJlY3RseSBpbiBvYmplY3QKICAgICAgICAgIGRlZmluaXRpb25zIHNpbmNlIGl0IHJlc3RyaWN0cyBhZGRyZXNzZXMgdG8gYSBzcGVjaWZpYyBmb3JtYXQuCisKICAgICAgICAgIEhvd2V2ZXIsIGlmIGl0IGlzIHVzZWQsIGl0IE1BWSBiZSB1c2VkIGVpdGhlciBvbiBpdHMgb3duIG9yCiAgICAgICAgICBpbiBjb25qdW5jdGlvbiB3aXRoIFRyYW5zcG9ydEFkZHJlc3NUeXBlIG9yIFRyYW5zcG9ydERvbWFpbgogICAgICAgICAgYXMgYSBwYWlyLiIKQEAgLTM5Nyw2ICs0MDAsNyBAQAogICAgICAgICAgdGltZSBvZiB0aGUgbWFuYWdlbWVudCBvcGVyYXRpb24pLgogCiAgICAgICAgICBUaGUgREVTQ1JJUFRJT04gY2xhdXNlIG9mIFRyYW5zcG9ydEFkZHJlc3Mgb2JqZWN0cyB0aGF0IG1heQorCiAgICAgICAgICBoYXZlIFRyYW5zcG9ydEFkZHJlc3NEbnMgdmFsdWVzIG11c3QgZnVsbHkgZGVzY3JpYmUgaG93IChhbmQKICAgICAgICAgIHdoZW4pIHN1Y2ggbmFtZXMgYXJlIHRvIGJlIHJlc29sdmVkIHRvIElQIGFkZHJlc3NlcyBhbmQgdmljZQogICAgICAgICAgdmVyc2EuCmRpZmYgLS1naXQgYS9taWJzL1RVTk5FTC1NSUIudHh0IGIvbWlicy9UVU5ORUwtTUlCLnR4dAppbmRleCA2MTVmYWE2Li41Zjk1OTZiIDEwMDY0NAotLS0gYS9taWJzL1RVTk5FTC1NSUIudHh0CisrKyBiL21pYnMvVFVOTkVMLU1JQi50eHQKQEAgLTM3LDggKzM3LDYgQEAKICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhpcyBNSUIgbW9kdWxlIGlzIHBhcnQgb2YgUkZDIDQwODc7ICBzZWUKICAgICAgICAgICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIgogCi0KLQogICAgIFJFVklTSU9OICAgICAiMjAwNTA1MTYwMDAwWiIgLS0gTWF5IDE2LCAyMDA1CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJJUHY0LXNwZWNpZmljIG9iamVjdHMgd2VyZSBkZXByZWNhdGVkLCBpbmNsdWRpbmcKQEAgLTg3LDkgKzg1LDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAgIlRoZSAoY29uY2VwdHVhbCkgdGFibGUgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbgogICAgICAgICAgICAgY29uZmlndXJlZCB0dW5uZWxzLiIKLQotCi0KICAgICA6Oj0geyB0dW5uZWwgMSB9CiAKIHR1bm5lbElmRW50cnkgT0JKRUNULVRZUEUKQEAgLTEzOSw4ICsxMzQsNiBAQAogICAgICAgICAgICAgKGkuZS4sIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHVzZWQgaW4gdGhlIG91dGVyIElQCiAgICAgICAgICAgICBoZWFkZXIpLCBvciAwLjAuMC4wIGlmIHVua25vd24sIG9yIGFuIElQdjYgYWRkcmVzcywgb3IKIAotCi0KICAgICAgICAgICAgIHRoZSB0dW5uZWwgaXMgbm90IGEgcG9pbnQtdG8tcG9pbnQgbGluayAoZS5nLiwgaWYgaXQKICAgICAgICAgICAgIGlzIGEgNnRvNCB0dW5uZWwpLgogCkBAIC0xOTAsOCArMTgzLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAgIlRoZSBtZXRob2QgdXNlZCB0byBzZXQgdGhlIGhpZ2ggNiBiaXRzICh0aGUKIAotCi0KICAgICAgICAgICAgIGRpZmZlcmVudGlhdGVkIHNlcnZpY2VzIGNvZGVwb2ludCkgb2YgdGhlIElQdjQgVE9TIG9yCiAgICAgICAgICAgICBJUHY2IFRyYWZmaWMgQ2xhc3MgaW4gdGhlIG91dGVyIElQIGhlYWRlci4gIEEgdmFsdWUgb2YKICAgICAgICAgICAgIC0xIGluZGljYXRlcyB0aGF0IHRoZSBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUKQEAgLTI0MSw4ICsyMzIsNiBAQAogICAgICAgICAgICAgKGkuZS4sIHRoZSBzb3VyY2UgYWRkcmVzcyB1c2VkIGluIHRoZSBvdXRlciBJUAogICAgICAgICAgICAgaGVhZGVyKS4gIElmIHRoZSBhZGRyZXNzIGlzIHVua25vd24sIHRoZSB2YWx1ZSBpcwogCi0KLQogICAgICAgICAgICAgMC4wLjAuMCBmb3IgSVB2NCBvciA6OiBmb3IgSVB2Ni4gIFRoZSB0eXBlIG9mIHRoaXMKICAgICAgICAgICAgIG9iamVjdCBpcyBnaXZlbiBieSB0dW5uZWxJZkFkZHJlc3NUeXBlLiIKICAgICA6Oj0geyB0dW5uZWxJZkVudHJ5IDkgfQpAQCAtMjkxLDkgKzI4MCw2IEBACiAgICAgICAgICAgICBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHR1bm5lbEluZXRDb25maWdUYWJsZS4iCiAgICAgOjo9IHsgdHVubmVsIDIgfQogCi0KLQotCiB0dW5uZWxDb25maWdFbnRyeSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgVHVubmVsQ29uZmlnRW50cnkKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCkBAIC0zNDMsOCArMzI5LDYgQEAKICAgICAgICAgICAgIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdHVubmVsSW5ldENvbmZpZ1JlbW90ZUFkZHJlc3MuIgogICAgIDo6PSB7IHR1bm5lbENvbmZpZ0VudHJ5IDIgfQogCi0KLQogdHVubmVsQ29uZmlnRW5jYXBzTWV0aG9kIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJQU5BdHVubmVsVHlwZQogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKQEAgLTM5Myw5ICszNzcsNiBAQAogCiB0dW5uZWxDb25maWdTdGF0dXMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIFJvd1N0YXR1cwotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgpAQCAtNDQ0LDkgKzQyNSw2IEBACiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICAiVGhlIChjb25jZXB0dWFsKSB0YWJsZSBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uCiAgICAgICAgICAgICBjb25maWd1cmVkIHR1bm5lbHMuICBUaGlzIHRhYmxlIGNhbiBiZSB1c2VkIHRvIG1hcCBhCiAgICAgICAgICAgICBzZXQgb2YgdHVubmVsIGVuZHBvaW50cyB0byB0aGUgYXNzb2NpYXRlZCBpZkluZGV4CkBAIC00OTUsOSArNDczLDYgQEAKIH0KIAogdHVubmVsSW5ldENvbmZpZ0FkZHJlc3NUeXBlIE9CSkVDVC1UWVBFCi0KLQotCiAgICAgU1lOVEFYICAgICBJbmV0QWRkcmVzc1R5cGUKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICBjdXJyZW50CkBAIC01NDcsOCArNTIyLDYgQEAKICAgICAgICAgICAgIGFsbG93IG11bHRpcGxlIHBhcmFsbGVsIHR1bm5lbHMsIHRoZSBtYW5hZ2VyIGlzCiAgICAgICAgICAgICByZXNwb25zaWJsZSBmb3IgY2hvb3NpbmcgYW55IElEIHdoaWNoIGRvZXMgbm90CiAKLQotCiAgICAgICAgICAgICBjb25mbGljdCB3aXRoIGFuIGV4aXN0aW5nIHJvdywgc3VjaCBhcyBjaG9vc2luZyBhCiAgICAgICAgICAgICByYW5kb20gbnVtYmVyLiIKICAgICA6Oj0geyB0dW5uZWxJbmV0Q29uZmlnRW50cnkgNSB9CkBAIC01OTgsOCArNTcxLDYgQEAKICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBtYW5uZXIsIGFuZCBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICByb3dzIHdpbGwgYmUgaW5zdGFudGlhdGVkIGluIHRoZSBpZlRhYmxlIGFuZCB0aGUKIAotCi0KICAgICAgICAgICAgIHR1bm5lbElmVGFibGUuICBUaGUgc3RhdHVzIG9mIHRoaXMgcm93IHdpbGwgYmVjb21lCiAgICAgICAgICAgICBhY3RpdmUgYXMgc29vbiBhcyB0aGUgYWdlbnQgYXNzaWducyB0aGUgaW50ZXJmYWNlCiAgICAgICAgICAgICBpbmRleCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBpbnRlcmZhY2UgaXMKQEAgLTY0OCw5ICs2MTksNiBAQAogCiAgICAgICAgIE9CSkVDVCAgICAgIHR1bm5lbElmVE9TCiAgICAgICAgIE1JTi1BQ0NFU1MgIHJlYWQtb25seQotCi0KLQogICAgICAgICBERVNDUklQVElPTgogICAgICAgICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQuIgogCkBAIC03MDAsOCArNjY4LDYgQEAKICAgICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKIAotCi0KICAgICAgICAgT0JKRUNUICAgICAgdHVubmVsSWZBZGRyZXNzVHlwZQogICAgICAgICBTWU5UQVggICAgICBJbmV0QWRkcmVzc1R5cGUgeyBpcHY0KDEpLCBpcHY2KDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY0eigzKSwgaXB2NnooNCkgfQpAQCAtNzUxLDggKzcxNyw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJBIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyB0byBzdXBwb3J0IGJhc2ljIG1hbmFnZW1lbnQKIAotCi0KICAgICAgICAgICAgIG9mIElQdjQgVHVubmVscy4gIFNpbmNlIHRoaXMgZ3JvdXAgY2Fubm90IHN1cHBvcnQKICAgICAgICAgICAgIElQdjYsIGl0IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YKICAgICAgICAgICAgIHR1bm5lbE1JQkluZXRHcm91cC4iCmRpZmYgLS1naXQgYS9taWJzL1VDRC1TTk1QLU1JQi50eHQgYi9taWJzL1VDRC1TTk1QLU1JQi50eHQKaW5kZXggMWM2NThlMC4uMDY5NzEyNCAxMDA2NDQKLS0tIGEvbWlicy9VQ0QtU05NUC1NSUIudHh0CisrKyBiL21pYnMvVUNELVNOTVAtTUlCLnR4dApAQCAtMzAsMTQgKzMwLDE0IEBACiAKIElNUE9SVFMKICAgICBPQkpFQ1QtVFlQRSwgTk9USUZJQ0FUSU9OLVRZUEUsIE1PRFVMRS1JREVOVElUWSwKLSAgICBJbnRlZ2VyMzIsIE9wYXF1ZSwgZW50ZXJwcmlzZXMsIENvdW50ZXIzMgorICAgIEludGVnZXIzMiwgT3BhcXVlLCBlbnRlcnByaXNlcywgQ291bnRlcjMyLCBVbnNpZ25lZDMyCiAgICAgICAgIEZST00gU05NUHYyLVNNSQogCiAgICAgVEVYVFVBTC1DT05WRU5USU9OLCBEaXNwbGF5U3RyaW5nLCBUcnV0aFZhbHVlCiAJRlJPTSBTTk1QdjItVEM7CiAKIHVjZGF2aXMgTU9EVUxFLUlERU5USVRZCi0gICAgTEFTVC1VUERBVEVEICIyMDA2MTEyMjAwMDBaIgorICAgIExBU1QtVVBEQVRFRCAiMjAwOTAxMTkwMDAwWiIKICAgICBPUkdBTklaQVRJT04gIlVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwgRGF2aXMiCiAgICAgQ09OVEFDVC1JTkZPICAgIAogCSJUaGlzIG1pYiBpcyBubyBsb25nZXIgYmVpbmcgbWFpbnRhaW5lZCBieSB0aGUgVW5pdmVyc2l0eSBvZgpAQCAtNTUsNiArNTUsMTAgQEAKICAgICBERVNDUklQVElPTgogCSJUaGlzIGZpbGUgZGVmaW5lcyB0aGUgcHJpdmF0ZSBVQ0QgU05NUCBNSUIgZXh0ZW5zaW9ucy4iCiAKKyAgICBSRVZJU0lPTgkgIjIwMDkwMTE5MDAwMFoiCisgICAgREVTQ1JJUFRJT04KKwkiTmV3IDY0LWJpdCBvYmplY3RzIGZvciBtb25pdG9yaW5nIGxhcmdlIGRpc2sgdXNhZ2UiCisKICAgICBSRVZJU0lPTgkgIjIwMDYxMTIyMDAwMFoiCiAgICAgREVTQ1JJUFRJT04KIAkiQ2xhcmlmeSBiZWhhdmlvdXIgb2Ygb2JqZWN0cyBpbiB0aGUgbWVtb3J5ICYgc3lzdGVtU3RhdHMgZ3JvdXBzCkBAIC02NzIsNyArNjc2LDEzIEBACiAgICAgZHNrUGVyY2VudAkJSW50ZWdlcjMyLAogICAgIGRza1BlcmNlbnROb2RlCUludGVnZXIzMiwKICAgICBkc2tFcnJvckZsYWcJVUNERXJyb3JGbGFnLAotICAgIGRza0Vycm9yTXNnCQlEaXNwbGF5U3RyaW5nCisgICAgZHNrRXJyb3JNc2cJCURpc3BsYXlTdHJpbmcsCisgICAgZHNrVG90YWxMb3cJCVVuc2lnbmVkMzIsCisgICAgZHNrVG90YWxIaWdoCVVuc2lnbmVkMzIsCisgICAgZHNrQXZhaWxMb3cJCVVuc2lnbmVkMzIsCisgICAgZHNrQXZhaWxIaWdoCVVuc2lnbmVkMzIsCisgICAgZHNrVXNlZExvdwkJVW5zaWduZWQzMiwKKyAgICBkc2tVc2VkSGlnaAkJVW5zaWduZWQzMgogfQogCiBkc2tJbmRleCBPQkpFQ1QtVFlQRQpAQCAtNzY1LDYgKzc3NSw2MCBAQAogCSJQZXJjZW50YWdlIG9mIGlub2RlcyB1c2VkIG9uIGRpc2siCiAgICAgOjo9IHsgZHNrRW50cnkgMTAgfSAKIAorZHNrVG90YWxMb3cgT0JKRUNULVRZUEUKKyAgICBTWU5UQVgJVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MJcmVhZC1vbmx5CisgICAgU1RBVFVTCWN1cnJlbnQKKyAgICBERVNDUklQVElPTiAgCisJIlRvdGFsIHNpemUgb2YgdGhlIGRpc2svcGFydGlvbiAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza1RvdGFsSGlnaCBjb21wb3NlcyA2NC1iaXQgbnVtYmVyLiIKKyAgICA6Oj0geyBkc2tFbnRyeSAxMSB9CisKK2Rza1RvdGFsSGlnaCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWAlVbnNpZ25lZDMyCisgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OICAKKwkiVG90YWwgc2l6ZSBvZiB0aGUgZGlzay9wYXJ0aW9uIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrVG90YWxMb3cgY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTIgfQorCitkc2tBdmFpbExvdyBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWAlVbnNpZ25lZDMyCisgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OICAKKwkiQXZhaWxhYmxlIHNwYWNlIG9uIHRoZSBkaXNrIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrQXZhaWxIaWdoIGNvbXBvc2VzIDY0LWJpdCBudW1iZXIuIgorICAgIDo6PSB7IGRza0VudHJ5IDEzIH0KKworZHNrQXZhaWxIaWdoIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYCVVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTCXJlYWQtb25seQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04gIAorCSJBdmFpbGFibGUgc3BhY2Ugb24gdGhlIGRpc2sgKGtCeXRlcykuCisJVG9nZXRoZXIgd2l0aCBkc2tBdmFpbExvdyBjb21wb3NlcyA2NC1iaXQgbnVtYmVyLiIKKyAgICA6Oj0geyBkc2tFbnRyeSAxNCB9CisKK2Rza1VzZWRMb3cgT0JKRUNULVRZUEUKKyAgICBTWU5UQVgJVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MJcmVhZC1vbmx5CisgICAgU1RBVFVTCWN1cnJlbnQKKyAgICBERVNDUklQVElPTiAgCisJIlVzZWQgc3BhY2Ugb24gdGhlIGRpc2sgKGtCeXRlcykuCisJVG9nZXRoZXIgd2l0aCBkc2tVc2VkSGlnaCBjb21wb3NlcyA2NC1iaXQgbnVtYmVyLiIKKyAgICA6Oj0geyBkc2tFbnRyeSAxNSB9CisKK2Rza1VzZWRIaWdoIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYCVVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTCXJlYWQtb25seQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04gIAorCSJVc2VkIHNwYWNlIG9uIHRoZSBkaXNrIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrVXNlZExvdyBjb21wb3NlcyA2NC1iaXQgbnVtYmVyLiIKKyAgICA6Oj0geyBkc2tFbnRyeSAxNiB9CisKIGRza0Vycm9yRmxhZyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWAlVQ0RFcnJvckZsYWcKICAgICBNQVgtQUNDRVNTCXJlYWQtb25seQpkaWZmIC0tZ2l0IGEvbWlicy9pYW5hbGlzdCBiL21pYnMvaWFuYWxpc3QKaW5kZXggYzNmMDU3NS4uZjIzNDVmMSAxMDA2NDQKLS0tIGEvbWlicy9pYW5hbGlzdAorKysgYi9taWJzL2lhbmFsaXN0CkBAIC0xLDQgKzEsNCBAQAotIyB1cGRhdGVkIDIwMDUtMDEtMDYKKyMgdXBkYXRlZCAyMDA3LTA1LTAzCiBpYW5haWZ0eXBlLW1pYgkJCUlBTkFpZlR5cGUtTUlCCiBpYW5hbGFuZ3VhZ2UtbWliCQlJQU5BLUxBTkdVQUdFLU1JQgogaWFuYWFkZHJlc3NmYW1pbHludW1iZXJzLW1pYglJQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCCkBAIC05LDMgKzksNSBAQAogaWFuYXByaW50ZXItbWliCQkJSUFOQS1QUklOVEVSLU1JQgogaWFuYWZpbmlzaGVyLW1pYgkJSUFOQS1GSU5JU0hFUi1NSUIKIGlhbmFpdHVhbGFybXRjLW1pYgkJSUFOQS1JVFUtQUxBUk0tVEMtTUlCCitpYW5hbWF1LW1pYgkJCUlBTkEtTUFVLU1JQgoraWFuYWdtcGxzdGMtbWliCQkJSUFOQS1HTVBMUy1UQy1NSUIKZGlmZiAtLWdpdCBhL21pYnMvcmZjbGlzdCBiL21pYnMvcmZjbGlzdAppbmRleCA0ZDAzNDM0Li5hNDY1OWMyIDEwMDY0NAotLS0gYS9taWJzL3JmY2xpc3QKKysrIGIvbWlicy9yZmNsaXN0CkBAIC0xLDQgKzEsNCBAQAotIyB1cGRhdGVkIDIwMDUtMDMtMTQKKyMgdXBkYXRlZCAyMDA5LTA3LTI3CiAxMTU1CVJGQzExNTUtU01JCiAxMjEzCVJGQzEyMTMtTUlCCiAxMjI3CVNNVVgtTUlCCkBAIC0xOSw3ICsxOSw2IEBACiAxNjExCUROUy1TRVJWRVItTUlCCiAxNjEyCUROUy1SRVNPTFZFUi1NSUIKIDE2MjgJVVBTLU1JQgotMTY1NwlCR1A0LU1JQgogMTY1OAlDSEFSQUNURVItTUlCCiAxNjU5CVJTLTIzMi1NSUIKIDE2NjAJUEFSQUxMRUwtTUlCCkBAIC0zNiw3ICszNSw2IEBACiAxODUwCU9TUEYtTUlCOk9TUEYtVFJBUC1NSUIKIDIwMDYJTUlQLU1JQgogMjAyMAlET1QxMi1JRi1NSUIKLTIwMjEJUk1PTjItTUlCCiAyMDI0CURMU1ctTUlCCiAyMDUxCUFQUEMtTUlCCiAyMTA4CVNOTVAtUkVQRUFURVItTUlCCkBAIC03NywxNSArNzUsOSBAQAogMjU5NAlXV1ctTUlCCiAyNjA1CURJUkVDVE9SWS1TRVJWRVItTUlCCiAyNjEzCVNNT04tTUlCCi0yNjE4CVJBRElVUy1BVVRILUNMSUVOVC1NSUIKLTI2MTkJUkFESVVTLUFVVEgtU0VSVkVSLU1JQgotMjYyMAlSQURJVVMtQUNDLUNMSUVOVC1NSUIKLTI2MjEJUkFESVVTLUFDQy1TRVJWRVItTUlCCiAyNjYyCUFEU0wtVEMtTUlCOkFEU0wtTElORS1NSUIKIDI2NjYJRVRIRVItQ0hJUFNFVC1NSUIKLTI2NjkJRE9DUy1DQUJMRS1ERVZJQ0UtTUlCCiAyNjcwCURPQ1MtSUYtTUlCCi0yNjc0CVAtQlJJREdFLU1JQjpRLUJSSURHRS1NSUIKIDI2NzcJTkhSUC1NSUIKIDI3MDcJSm9iLU1vbml0b3JpbmctTUlCCiAyNzIwCUZMT1ctTUVURVItTUlCCkBAIC0xMDIsNyArOTQsNiBAQAogMjg2MwlJRi1NSUIKIDI4NjQJSUYtSU5WRVJURUQtU1RBQ0stTUlCCiAyOTIyCVBUT1BPLU1JQgotMjkyNQlESVNNQU4tUElORy1NSUI6RElTTUFOLVRSQUNFUk9VVEUtTUlCOkRJU01BTi1OU0xPT0tVUC1NSUIKIDI5MzIJSVBNUk9VVEUtU1RELU1JQgogMjkzMwlJR01QLVNURC1NSUIKIDI5MzQJUElNLU1JQgpAQCAtMTQ3LDcgKzEzOCw2IEBACiAzNjA2CUFUTTItTUlCCiAzNjIxCVBPV0VSLUVUSEVSTkVULU1JQgogMzYzNQlFdGhlckxpa2UtTUlCCi0zNjM2CU1BVS1NSUIKIDM2MzcJRVRIRVItV0lTCiAzNzA1CUhDLVBlcmZIaXN0LVRDLU1JQgogMzcyOAlWRFNMLUxJTkUtTUlCCkBAIC0xODQsNSArMTc0LDcyIEBACiA0MjIwCVRFLUxJTkstU1RELU1JQgogNDI2NQlWUE4tVEMtU1RELU1JQgogNDI2OAlFTlRJVFktU1RBVEUtVEMtTUlCOkVOVElUWS1TVEFURS1NSUIKKzQyNzMJQkdQNC1NSUIKIDQyOTIJSVAtRk9SV0FSRC1NSUIKIDQyOTMJSVAtTUlCCis0Mjk1CU1PQklMRUlQVjYtTUlCCis0MzE4CVJTVFAtTUlCCis0MzE5CUhEU0wyLVNIRFNMLUxJTkUtTUlCCis0MzIzCURPQ1MtSUVURi1RT1MtTUlCCis0MzYzCVAtQlJJREdFLU1JQjpRLUJSSURHRS1NSUIKKzQzNjgJTVBMUy1MQy1BVE0tU1RELU1JQjpNUExTLUxDLUZSLVNURC1NSUIKKzQzNjkJSUZDUC1NR01ULU1JQgorNDM4MglNUExTLUwzVlBOLVNURC1NSUIKKzQ0MDQJRkNJUC1NR01ULU1JQgorNDQzOAlUMTEtRkMtTkFNRS1TRVJWRVItTUlCCis0NDM5CVQxMS1UQy1NSUI6VDExLUZDLUZBQlJJQy1BRERSLU1HUi1NSUIKKzQ0NDQJSVNJUy1NSUIKKzQ0NTUJU0NTSS1NSUIKKzQ0OTgJQUdHUkVHQVRFLU1JQjpUSU1FLUFHR1JFR0FURS1NSUIKKzQ1MDIJUk1PTjItTUlCCis0NTQ0CUlTQ1NJLU1JQgorNDU0NQlJUFMtQVVUSC1NSUIKKzQ1NjAJRElTTUFOLVBJTkctTUlCOkRJU01BTi1UUkFDRVJPVVRFLU1JQjpESVNNQU4tTlNMT09LVVAtTUlCCis0NjI0CU1TRFAtTUlCCis0NjI1CVQxMS1GQy1ST1VURS1NSUIKKzQ2MjYJVDExLUZDLUZTUEYtTUlCCis0NjMxCUxNUC1NSUIKKzQ2MzkJRE9DUy1DQUJMRS1ERVZJQ0UtTUlCCis0NjY4CVJBRElVUy1BVVRILUNMSUVOVC1NSUIKKzQ2NjkJUkFESVVTLUFVVEgtU0VSVkVSLU1JQgorNDY3MAlSQURJVVMtQUNDLUNMSUVOVC1NSUIKKzQ2NzEJUkFESVVTLUFDQy1TRVJWRVItTUlCCis0NjcyCVJBRElVUy1EWU5BVVRILUNMSUVOVC1NSUIKKzQ2NzMJUkFESVVTLURZTkFVVEgtU0VSVkVSLU1JQgorNDY4MglQS1RDLUlFVEYtTVRBLU1JQgorNDcwNglBRFNMMi1MSU5FLVRDLU1JQjpBRFNMMi1MSU5FLU1JQgorNDcxMQlSQVFNT04tTUlCCis0NzQ3CVQxMS1GQy1WSVJUVUFMLUZBQlJJQy1NSUIKKzQ3ODAJU0lQLVRDLU1JQjpTSVAtQ09NTU9OLU1JQjpTSVAtVUEtTUlCOlNJUC1TRVJWRVItTUlCCis0Nzg5CVNOTVAtSUVFRTgwMi1UTS1NSUIKKzQ4MDEJR01QTFMtVEMtU1RELU1JQgorNDgwMglHTVBMUy1URS1TVEQtTUlCCis0ODAzCUdNUExTLUxTUi1TVEQtTUlCOkdNUExTLUxBQkVMLVNURC1NSUIKKzQ4MzYJTUFVLU1JQgorNDgzNwlET1QzLUVQT04tTUlCCis0ODc4CURPVDMtT0FNLU1JQgorNDg5OAlUQ1AtRVNUQVRTLU1JQgorNDkzNQlUMTEtRkMtRkFCUklDLUNPTkZJRy1TRVJWRVItTUlCCis0OTM2CVQxMS1GQy1GQUJSSUMtTE9DSy1NSUI6VDExLUZDLVpPTkUtU0VSVkVSLU1JQgorNDkzOQlJU05TLU1JQgorNDk4MwlUMTEtRkMtUlNDTi1NSUIKKzUwMTcJVVJJLVRDLU1JQgorNTA2MAlQSU0tU1RELU1JQgorNTA2NglJRi1DQVAtU1RBQ0stTUlCOkVGTS1DVS1NSUIKKzUwOTcJVURQTElURS1NSUIKKzUwOTgJUEtUQy1JRVRGLVNJRy1NSUIKKzUxMzEJTEFOR1RBRy1UQy1NSUIKKzUxMzIJSVBNQ0FTVC1NSUIKKzUxOTAJTUlEQ09NLU1JQgorNTI0MAlQSU0tQlNSLU1JQgorNTMyNAlUMTEtRkMtU1AtVEMtTUlCOlQxMS1GQy1TUC1BVVRIRU5USUNBVElPTi1NSUI6VDExLUZDLVNQLVpPTklORy1NSUI6VDExLUZDLVNQLVBPTElDWS1NSUI6VDExLUZDLVNQLVNBLU1JQgorNTQyNwlTWVNMT0ctVEMtTUlCCis1NDI4CVBLVEMtSUVURi1FVkVOVC1NSUIKKzU0ODgJTkVNTy1NSUIKKzU1MTkJTUdNRC1TVEQtTUlCCis1NTI1CVJTRVJQT09MLU1JQgorNTU0MglQVy1UQy1TVEQtTUlCCis1NjAxCVBXLVNURC1NSUI6SUFOQS1QV0UzLU1JQgorNTYwMglQVy1NUExTLVNURC1NSUIKKzU2MDMJUFctRU5FVC1TVEQtTUlCCis1NjA1CVBXLUFUTS1NSUIKZGlmZiAtLWdpdCBhL21pYnMvc21pc3RyaXAgYi9taWJzL3NtaXN0cmlwCmluZGV4IGY1ODk5NWMuLmI1ZmM4ZjIgMTAwNzU1Ci0tLSBhL21pYnMvc21pc3RyaXAKKysrIGIvbWlicy9zbWlzdHJpcApAQCAtNjYsNyArNjYsNyBAQAogICAgIH0KIAogICAgICMgc3RhcnQgb2YgbW9kdWxlCi0gICAgL15bIFx0XSpbQS1aYS16MC05LV0qICpERUZJTklUSU9OUyAqOjo9ICpCRUdJTi8geworICAgIC9eWyBcdF0qW0EtWmEtejAtOS1dKiAqREVGSU5JVElPTlMoICtJTVBMSUNJVCArVEFHUyk/ICo6Oj0gKkJFR0lOLyB7CiAJbW9kdWxlID0gJDEKIAljb2xsZWN0ID0gMQogCW1hY3JvID0gMApkaWZmIC0tZ2l0IGEvbmV0LXNubXAtY29uZmlnLmluIGIvbmV0LXNubXAtY29uZmlnLmluCmluZGV4IDMzMGY2NjAuLjY1MjgzMmQgMTAwNjQ0Ci0tLSBhL25ldC1zbm1wLWNvbmZpZy5pbgorKysgYi9uZXQtc25tcC1jb25maWcuaW4KQEAgLTI3LDEwICsyNywyNSBAQAogICAgICAgZmkKIH0KIAorIyB1c2FnZTogaW5kZXggbiBhcmd1bWVudHMKKyMgZWZmZWN0OiByZXR1cm5zIHRoZSAobisxKXRoIGFyZ3VtZW50CitpbmRleCgpCit7CisgICAgZXZhbCBlY2hvIFwkYGV4cHIgJDEgKyAxYAorfQorCisjIHVzYWdlOiBjb3VudCBhcmd1bWVudHMKKyMgZWZmZWN0OiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCitjb3VudCgpCit7CisgICAgZWNobyAkIworfQorCiBwcmVmaXg9QHByZWZpeEAKIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACiBsaWJkaXI9QGxpYmRpckAKK2RhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKIE5TQ19MREZMQUdTPSJATERGTEFHU0AiCiAKIE5TQ19MSUJTPSJATElCU0AiCkBAIC0xNzAsNyArMTg1LDcgQEAKICAgICAgIGVjaG8gJE5TQ19MREZMQUdTICROU0NfTElCRElSICROU0NfU05NUExJQlMgJE5TQ19MSUJTCiAgICAgICA7OwogICAgIC0tbmV0c25tcC1saWJzKQotICAgICAgZWNobyAkTlNDX0xJQkRJUiAtbG5ldHNubXAKKyAgICAgIGVjaG8gJE5TQ19MSUJESVIgJE5TQ19CQVNFX1NOTVBfTElCUwogICAgICAgOzsKICAgICAtLWV4dGVybmFsLWxpYnMpCiAgICAgICBlY2hvICROU0NfTERGTEFHUyAkTlNDX0xORVRTTk1QTElCUyAkTlNDX0xJQlMKQEAgLTIwNywxMjYgKzIyMiwxMCBAQAogICAgICAgOzsKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgLS1jcmVhdGUtc25tcHYzLXVzZXIpCi0gICAgICBpZiBAUFNDTURAIHwgZWdyZXAgJyBzbm1wZCAqJCcgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KLSAgICAgICAgIGVjaG8gIkFwcGFyZW50bHkgYXQgbGVhc3Qgb25lIHNubXBkIGRlbW9uIGlzIGFscmVhZHkgcnVubmluZy4iCi0gICAgICAgICBlY2hvICJZb3UgbXVzdCBzdG9wIHRoZW0gaW4gb3JkZXIgdG8gdXNlIHRoaXMgY29tbWFuZC4iCi0gICAgICAgICBleGl0IDEKLSAgICAgIGZpCi0KLSAgICAgIEFhbGdvcml0aG09Ik1ENSIKLSAgICAgIFhhbGdvcml0aG09IkRFUyIKLSAgICAgIHRva2VuPXJ3dXNlcgorICAgICAgZG9uZT0xCiAgICAgICBzaGlmdAotICAgICAgc2hpZnRlZD0xCi0gICAgICB3aGlsZSB0ZXN0ICJ4JGRvbmUiID0gIngiIC1hICJ4JDEiICE9ICJ4IiA7IGRvCi0JY2FzZSAkMSBpbgotCSAgICAtQXwtYSkKLQkJc2hpZnQKLQkJaWYgdGVzdCAieCQxIiA9ICJ4IiA7IHRoZW4KLQkJICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gYXV0aGVudGljYXRpb24gYWxnb3JpdGhtIG9yIHBhc3MgcGhyYXNlIgotCQkgICAgZXhpdCAxCi0JCWZpCi0JICAgICAgICBjYXNlICQxIGluCi0gICAgICAgICAgICAgICAgTUQ1fFNIQSkKLQkJICAgIEFhbGdvcml0aG09JDEKLQkJICAgIHNoaWZ0Ci0JCSAgICA7OwotICAgICAgICAgICAgICAgIG1kNXxzaGEpCi0JCSAgICBBYWxnb3JpdGhtPWBlY2hvICQxIHwgdHIgYS16IEEtWmAKLQkJICAgIHNoaWZ0Ci0JCSAgICA7OwotICAgICAgICAgICAgICAgICopCi0JCSAgICBhcGFzc3BocmFzZT0kMQotCQkgICAgc2hpZnQKLQkJICAgIDs7Ci0JCWVzYWMKLQkJOzsKLQkgICAgLVh8LXgpCi0JCXNoaWZ0Ci0JCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCi0JCSAgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IGFuIGVuY3J5cHRpb24gYWxnb3JpdGhtIG9yIHBhc3MgcGhyYXNlIgotCQkgICAgZXhpdCAxCi0JCWZpCi0JICAgICAgICBjYXNlICQxIGluCi0gICAgICAgICAgICAgICAgREVTfEFFU3xBRVMxMjgpCi0JCSAgICBYYWxnb3JpdGhtPSQxCi0JCSAgICBzaGlmdAotCQkgICAgOzsKLSAgICAgICAgICAgICAgICBkZXN8YWVzfGFlczEyOCkKLQkJICAgIFhhbGdvcml0aG09YGVjaG8gJDEgfCB0ciBhLXogQS1aYAotCQkgICAgc2hpZnQKLQkJICAgIDs7Ci0gICAgICAgICAgICAgICAgKikKLQkJICAgIHhwYXNzcGhyYXNlPSQxCi0JCSAgICBzaGlmdAotCQkgICAgOzsKLQkJZXNhYwotCQk7OwotCSAgICAtcm8pCi0JICAgICAgICB0b2tlbj0icm91c2VyIgotCQlzaGlmdAotCQk7OwotIAkgICAgLSopCi0JCWVjaG8gInVua25vd24gc3Vib3B0aW9uIHRvIC0tY3JlYXRlLXNubXB2My11c2VyOiAkMSIKLQkJZXhpdCAxCi0JCTs7Ci0JICAgICopCi0JICAgICAgICBkb25lPTEKLQkJOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICAKLSAgICAgIGlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCi0gICAgICAgICAgcHJvbXB0PXllcwotCSAgZWNobyAiRW50ZXIgYSBTTk1QdjMgdXNlciBuYW1lIHRvIGNyZWF0ZTogIgotCSAgcmVhZCB1c2VyCi0gICAgICBlbHNlCi0gICAgICAgICAgdXNlcj0kMQotICAgICAgICAgIHNoaWZ0Ci0gICAgICBmaQotICAgICAgaWYgdGVzdCAieCR1c2VyIiA9ICJ4IiA7IHRoZW4KLSAgICAgICAgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IGEgdXNlciBuYW1lIgotCSAgZXhpdCAxCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0ICJ4JGFwYXNzcGhyYXNlIiA9ICJ4IiA7IHRoZW4KLSAgICAgICAgICBwcm9tcHQ9eWVzCi0JICBlY2hvICJFbnRlciBhdXRoZW50aWNhdGlvbiBwYXNzLXBocmFzZTogIgotCSAgcmVhZCBhcGFzc3BocmFzZQotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIngkYXBhc3NwaHJhc2UiID0gIngiIDsgdGhlbgotICAgICAgICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2UiCi0JICBleGl0IDEKLSAgICAgIGZpCi0KLSAgICAgIGlmIHRlc3QgIngkcHJvbXB0IiA9ICJ4eWVzIiAtYSAieCR4cGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCi0JICBlY2hvICJFbnRlciBlbmNyeXB0aW9uIHBhc3MtcGhyYXNlOiAiCi0JICBlY2hvICIgIFtwcmVzcyByZXR1cm4gdG8gcmV1c2UgdGhlIGF1dGhlbnRpY2F0aW9uIHBhc3MtcGhyYXNlXSIKLQkgIHJlYWQgeHBhc3NwaHJhc2UKLSAgICAgIGZpCi0KLSAgICAgIG91dGRpcj0iQFBFUlNJU1RFTlRfRElSRUNUT1JZQCIKLSAgICAgIG91dGZpbGU9IiRvdXRkaXIvc25tcGQuY29uZiIKLSAgICAgIGxpbmU9ImNyZWF0ZVVzZXIgJHVzZXIgJEFhbGdvcml0aG0gXCIkYXBhc3NwaHJhc2VcIiAkWGFsZ29yaXRobSAkeHBhc3NwaHJhc2UiCi0gICAgICBlY2hvICJhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvICRvdXRmaWxlOiIKLSAgICAgIGVjaG8gIiAgIiAkbGluZQotICAgICAgIyBpbiBjYXNlIGl0IGhhc24ndCBldmVyIGJlZW4gc3RhcnRlZCB5ZXQsIHN0YXJ0IGl0LgotICAgICAgaWYgdGVzdCAhIC1kICRvdXRkaXIgOyB0aGVuCi0gICAgICAgICAgbWtkaXIgJG91dGRpcgotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgISAtZCAkb3V0ZmlsZSA7IHRoZW4KLSAgICAgICAgICB0b3VjaCAkb3V0ZmlsZQotICAgICAgZmkKLSAgICAgIGVjaG8gJGxpbmUgPj4gJG91dGZpbGUKLQotICAgICAgb3V0ZmlsZT0iQGRhdGFkaXJAL3NubXAvc25tcGQuY29uZiIKLSAgICAgIGxpbmU9IiR0b2tlbiAkdXNlciIKLSAgICAgIGVjaG8gImFkZGluZyB0aGUgZm9sbG93aW5nIGxpbmUgdG8gJG91dGZpbGU6IgotICAgICAgZWNobyAiICAiICRsaW5lCi0gICAgICBpZiB0ZXN0ICEgLWQgJG91dGZpbGUgOyB0aGVuCi0gICAgICAgICAgdG91Y2ggJG91dGZpbGUKLSAgICAgIGZpCi0gICAgICBlY2hvICRsaW5lID4+ICRvdXRmaWxlCisgICAgICBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciAkKgorICAgICAgZXhpdCAkPwogICAgICAgOzsKIAogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM3OCw3ICsyNzcsNyBAQAogCWVjaG8gIkFjay4gIENhbid0IGNyZWF0ZSAkdG1wZmlsZTogYWxyZWFkeSBleGlzdHMiCiAJZXhpdCAxCiAgICAgICBmaQotICAgICAgZWNobyAiZ2VuZXJhdGluZyB0aGUgdG1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKKyAgICAgIGVjaG8gImdlbmVyYXRpbmcgdGhlIHRlbXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgogICAgICAgcm0gLWYgJHRtcGZpbGUKICAgICAgIGNhdCA+ICR0bXBmaWxlIDw8RU9GCiAvKiBnZW5lcmF0ZWQgZnJvbSBuZXQtc25tcC1jb25maWcgKi8KQEAgLTQyNSw2ICszMjQsNyBAQAogCiAgICAgICBjYXQgPj4gJHRtcGZpbGUgPDxFT0YKIGNvbnN0IGNoYXIgKmFwcF9uYW1lID0gIiRvdXRuYW1lIjsKK3N0YXRpYyBpbnQgcmVjb25maWcgPSAwOwogCiBleHRlcm4gaW50IG5ldHNubXBfcnVubmluZzsKIApAQCAtNDM5LDYgKzMzOSwxNSBAQAogICAgIG5ldHNubXBfcnVubmluZyA9IDA7CiB9CiAKKyNpZmRlZiBTSUdIVVAKK1JFVFNJR1RZUEUKK2h1cF9oYW5kbGVyKGludCBzaWcpCit7CisgICAgcmVjb25maWcgPSAxOworICAgIHNpZ25hbChTSUdIVVAsIGh1cF9oYW5kbGVyKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZAogdXNhZ2UoY29uc3QgY2hhciAqcHJvZykKIHsKQEAgLTYxNSwxMCArNTI0LDkgQEAKICAgICAgIGlmIGdyZXAgImluaXRfJG5hbWUiICRpIDsgdGhlbgogICAgICAgICBlY2hvICIgIGluaXRfJHtuYW1lfSgpOyIgPj4gJHRtcGZpbGUKICAgICAgIGZpCi0gICAgICBzaGlmdAogICAgIGRvbmUKIAotICAgICMgZmluaXNoIGZpbGUKKyAgICAjIGhhbmRsZSB0aGUgbWFpbiBsb29wCiAgICAgY2F0ID4+ICR0bXBmaWxlIDw8RU9GCiAKICAgLyogJG91dG5hbWUgd2lsbCBiZSB1c2VkIHRvIHJlYWQgJG91dG5hbWUuY29uZiBmaWxlcy4gKi8KQEAgLTYzOCwxOCArNTQ2LDQ3IEBACiAjaWZkZWYgU0lHSU5UCiAgIHNpZ25hbChTSUdJTlQsIHN0b3Bfc2VydmVyKTsKICNlbmRpZgorI2lmZGVmIFNJR0hVUAorICBzaWduYWwoU0lHSFVQLCBodXBfaGFuZGxlcik7CisjZW5kaWYKIAogICAvKiBtYWluIGxvb3AgaGVyZS4uLiAqLwogICB3aGlsZShuZXRzbm1wX3J1bm5pbmcpIHsKKyAgICBpZiAocmVjb25maWcpIHsKKyAgICAgIGZyZWVfY29uZmlnKCk7CisgICAgICByZWFkX2NvbmZpZ3MoKTsKKyAgICAgIHJlY29uZmlnID0gMDsKKyAgICB9CiAgICAgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MoMSk7CiAgIH0KIAogICAvKiBhdCBzaHV0ZG93biB0aW1lICovCiAgIHNubXBfc2h1dGRvd24oYXBwX25hbWUpOworCisgIC8qIGRlaW5pdGlhbGl6ZSB5b3VyIG1pYiBjb2RlIGhlcmUgKi8KK0VPRgorCisgICAgIyBhZGQgc2h1dGRvd24gcm91dGluZXMKKworICAgIGk9YGNvdW50ICRjZmlsZXNgCisgICAgd2hpbGUgWyAkaSAtZ3QgMCBdIDsgZG8KKyAgICAgIGZ1bGxuYW1lPWBpbmRleCAkaSAkY2ZpbGVzYAorICAgICAgbmFtZT1gYmFzZW5hbWUgJGZ1bGxuYW1lIHwgc2VkICdzL1wuW2NvXSQvLydgCisgICAgICBlY2hvIGNoZWNraW5nIGZvciBzaHV0ZG93bl8kbmFtZSBpbiAkZnVsbG5hbWUKKyAgICAgIGlmIGdyZXAgInNodXRkb3duXyRuYW1lIiAkZnVsbG5hbWUgOyB0aGVuCisgICAgICAgIGVjaG8gIiAgc2h1dGRvd25fJHtuYW1lfSgpOyIgPj4gJHRtcGZpbGUKKyAgICAgIGZpCisgICAgICBpPWBleHByICRpIC0gMWAKKyAgICBkb25lCisKKyAgICAjIGZpbmlzaCBmaWxlCisgICAgY2F0ID4+ICR0bXBmaWxlIDw8RU9GCisKKyAgLyogc2h1dGRvd24gdGhlIGFnZW50IGxpYnJhcnkgKi8KKyAgc2h1dGRvd25fYWdlbnQoKTsKICAgU09DS19DTEVBTlVQOwogICBleGl0KDApOwogfQotCiBFT0YKICAgICAgIGlmIHRlc3QgIiQ/IiAhPSAwIC1vICEgLWYgIiR0bXBmaWxlIiA7IHRoZW4KICAgICAgICAgZWNobyAiQWNrLiAgQ2FuJ3QgY3JlYXRlICR0bXBmaWxlLiIKQEAgLTY1OSwxMCArNTk2LDEwIEBACiAgICAgICBlY2hvICJydW5uaW5nOiAkY21kIgogICAgICAgYCRjbWRgCiAgICAgICBpZiB0ZXN0ICJ4JG5vcm0iICE9ICJ4MSIgOyB0aGVuCi0gICAgICAgIGVjaG8gInJlbW92aW5nIHRoZSB0bXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgorICAgICAgICBlY2hvICJyZW1vdmluZyB0aGUgdGVtcG9yYXJ5IGNvZGUgZmlsZTogJHRtcGZpbGUiCiAgICAgICAgIHJtIC1mICR0bXBmaWxlCiAgICAgICBlbHNlCi0gICAgICAgIGVjaG8gImxlYXZpbmcgdGhlIHRtcG9yYXJ5IGNvZGUgZmlsZTogJHRtcGZpbGUiCisgICAgICAgIGVjaG8gImxlYXZpbmcgdGhlIHRlbXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgLWYgJG91dG5hbWUgOyB0aGVuCiAgICAgICAgIGVjaG8gInN1YmFnZW50IHByb2dyYW0gJG91dG5hbWUgY3JlYXRlZCIKQEAgLTY5Myw4ICs2MzAsOSBAQAogICBlY2hvICIiCiAgIGVjaG8gIiAgU05NUCBTZXR1cCBjb21tYW5kczoiCiAgIGVjaG8gIiIKLSAgZWNobyAiICAgIC0tY3JlYXRlLXNubXB2My11c2VyIFstcm9dIFstQSBhdXRocGFzc10gWy1YIHByaXZwYXNzXSIKLSAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgIFstYSBNRDV8U0hBXSBbLXggREVTfEFFU10gW3VzZXJuYW1lXSIKKyAgZWNobyAiICAgIC0tY3JlYXRlLXNubXB2My11c2VyIGNyZWF0ZXMgYSBTTk1QdjMgdXNlciBpbiBOZXQtU05NUCBjb25maWcgZmlsZS4iCisgIGVjaG8gIiAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgLS1oZWxwIGZvciBsaXN0IG9mIgorICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWQgb3B0aW9ucy4iCiAgIGVjaG8gIiIKICAgZWNobyAiICBUaGVzZSBvcHRpb25zIHByb2R1Y2UgdGhlIHZhcmlvdXMgY29tcGlsYXRpb24gZmxhZ3MgbmVlZGVkIHdoZW4iCiAgIGVjaG8gIiAgYnVpbGRpbmcgZXh0ZXJuYWwgU05NUCBhcHBsaWNhdGlvbnM6IgpkaWZmIC0tZ2l0IGEvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4gYi9uZXQtc25tcC1jcmVhdGUtdjMtdXNlci5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDM1MDA5Ci0tLSAvZGV2L251bGwKKysrIGIvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4KQEAgLTAsMCArMSwxNjggQEAKKyMhL2Jpbi9zaAorIworIyAkSWQkCisjCisjIHRoaXMgc2hlbGwgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIGFkZCBuZXcgU05NUHYzIHVzZXJzCisjIHRvIE5ldC1TTk1QIGNvbmZpZyBmaWxlLgorCitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACitsaWJkaXI9QGxpYmRpckAKK2RhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKK05TQ19MREZMQUdTPSJATERGTEFHU0AiCitOU0NfSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9CitOU0NfTElCRElSPS1MJHtsaWJkaXJ9CitOU0NfTElCUz0iQExJQlNAIgorTlNDX0FHRU5UTElCUz0iQEFHRU5UTElCU0AgQFBFUkxMRE9QVFNfRk9SX0FQUFNAIgorTlNDX1BSRUZJWD0kcHJlZml4CitOU0NfRVhFQ19QUkVGSVg9JGV4ZWNfcHJlZml4CitOU0NfU1JDRElSPUBzcmNkaXJACitOU0NfSU5DRElSPSR7TlNDX1BSRUZJWH0vaW5jbHVkZQorTlNDX0JBU0VfU1VCQUdFTlRfTElCUz0iLWxuZXRzbm1wYWdlbnQgLWxuZXRzbm1waGVscGVycyAtbG5ldHNubXAiCitOU0NfQkFTRV9BR0VOVF9MSUJTPSItbG5ldHNubXBhZ2VudCAtbG5ldHNubXBoZWxwZXJzIC1sbmV0c25tcG1pYnMgLWxuZXRzbm1wIgorTlNDX1NSQ19MSUJESVJTPSJhZ2VudC8ubGlicyBzbm1wbGliLy5saWJzIGFnZW50L2hlbHBlcnMvLmxpYnMiCitOU0NfU1JDX0xJQkRFUFM9ImFnZW50Ly5saWJzL2xpYm5ldHNubXBtaWJzLmEgYWdlbnQvLmxpYnMvbGlibmV0c25tcGFnZW50LmEgYWdlbnQvaGVscGVycy8ubGlicy9saWJuZXRzbm1waGVscGVycy5hIHNubXBsaWIvLmxpYnMvbGlibmV0c25tcC5hIgorCitpZiB0ZXN0ICJ4JE5TQ19TUkNESVIiID0gInguIiA7IHRoZW4KKyAgIE5TQ19TUkNESVI9Ik5FVC1TTk1QLVNPVVJDRS1ESVIiCitmaQorCitpZiBAUFNDTURAIHwgZWdyZXAgJyBzbm1wZCAqJCcgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgICBlY2hvICJBcHBhcmVudGx5IGF0IGxlYXN0IG9uZSBzbm1wZCBkZW1vbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIgorICAgIGVjaG8gIllvdSBtdXN0IHN0b3AgdGhlbSBpbiBvcmRlciB0byB1c2UgdGhpcyBjb21tYW5kLiIKKyAgICBleGl0IDEKK2ZpCisKK0FhbGdvcml0aG09Ik1ENSIKK1hhbGdvcml0aG09IkRFUyIKK3Rva2VuPXJ3dXNlcgorCit3aGlsZSB0ZXN0ICJ4JGRvbmUiID0gIngiIC1hICJ4JDEiICE9ICJ4IiAtYSAieCR1c2FnZSIgIT0gInh5ZXMiOyBkbworY2FzZSAiJDEiIGluCisgICAgLSo9Kikgb3B0YXJnPWBlY2hvICIkMSIgfCBzZWQgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYCA7OworICAgICopIG9wdGFyZz0gOzsKK2VzYWMKKwordW5zZXQgc2hpZnRlZAorY2FzZSAkMSBpbgorICAgIC0tdmVyc2lvbnwtLXZlciopCisgICAgICBlY2hvIEBWRVJTSU9OQAorICAgICAgOzsKKyAgICAtLWhlbHApCisgICAgICB1c2FnZT0ieWVzIgorICAgICAgOzsKKworICAgIC1BfC1hKQorCXNoaWZ0CisJaWYgdGVzdCAieCQxIiA9ICJ4IiA7IHRoZW4KKwkgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhbiBhdXRoZW50aWNhdGlvbiBhbGdvcml0aG0gb3IgcGFzcyBwaHJhc2UiCisJICAgIGV4aXQgMQorCWZpCisgICAgICAgIGNhc2UgJDEgaW4KKyAgICAgICAgICAgIE1ENXxTSEEpCisJICAgIEFhbGdvcml0aG09JDEKKwkgICAgc2hpZnQKKwkgICAgOzsKKyAgICAgICAgICAgIG1kNXxzaGEpCisJICAgIEFhbGdvcml0aG09YGVjaG8gJDEgfCB0ciBhLXogQS1aYAorCSAgICBzaGlmdAorCSAgICA7OworICAgICAgICAgICAgKikKKwkgICAgYXBhc3NwaHJhc2U9JDEKKwkgICAgc2hpZnQKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIC1YfC14KQorCXNoaWZ0CisJaWYgdGVzdCAieCQxIiA9ICJ4IiA7IHRoZW4KKwkgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhbiBlbmNyeXB0aW9uIGFsZ29yaXRobSBvciBwYXNzIHBocmFzZSIKKwkgICAgZXhpdCAxCisJZmkKKyAgICAgICAgY2FzZSAkMSBpbgorICAgICAgICAgICAgREVTfEFFU3xBRVMxMjgpCisJICAgIFhhbGdvcml0aG09JDEKKwkgICAgc2hpZnQKKwkgICAgOzsKKyAgICAgICAgICAgIGRlc3xhZXN8YWVzMTI4KQorCSAgICBYYWxnb3JpdGhtPWBlY2hvICQxIHwgdHIgYS16IEEtWmAKKwkgICAgc2hpZnQKKwkgICAgOzsKKyAgICAgICAgICAgICopCisJICAgIHhwYXNzcGhyYXNlPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisJZXNhYworCTs7CisgICAgLXJvKQorICAgICAgICB0b2tlbj0icm91c2VyIgorCXNoaWZ0CisJOzsKKyAgICAtKikKKwllY2hvICJ1bmtub3duIHN1Ym9wdGlvbiB0byAkMDogJDEiCisJdXNhZ2U9eWVzCisJZG9uZT0xCisJOzsKKyAgICAqKQorICAgICAgICBkb25lPTEKKyAgICAgICAgOzsKKyAgICBlc2FjCitkb25lCisKK2lmIHRlc3QgIngkdXNhZ2UiID0gInh5ZXMiOyB0aGVuCisgICAgZWNobyAiIgorICAgIGVjaG8gIlVzYWdlOiIKKyAgICBlY2hvICIgIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIFstcm9dIFstQSBhdXRocGFzc10gWy1YIHByaXZwYXNzXSIKKyAgICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgIFstYSBNRDV8U0hBXSBbLXggREVTfEFFU10gW3VzZXJuYW1lXSIKKyAgICBlY2hvICIiCisgICAgZXhpdAorZmkKKworaWYgdGVzdCAieCQxIiA9ICJ4IiA7IHRoZW4KKyAgICBwcm9tcHQ9eWVzCisgICAgZWNobyAiRW50ZXIgYSBTTk1QdjMgdXNlciBuYW1lIHRvIGNyZWF0ZTogIgorICAgIHJlYWQgdXNlcgorZWxzZQorICAgIHVzZXI9JDEKKyAgICBzaGlmdAorZmkKK2lmIHRlc3QgIngkdXNlciIgPSAieCIgOyB0aGVuCisgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhIHVzZXIgbmFtZSIKKyAgICBleGl0IDEKK2ZpCitpZiB0ZXN0ICJ4JGFwYXNzcGhyYXNlIiA9ICJ4IiA7IHRoZW4KKyAgICBwcm9tcHQ9eWVzCisgICAgZWNobyAiRW50ZXIgYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2U6ICIKKyAgICByZWFkIGFwYXNzcGhyYXNlCitmaQoraWYgdGVzdCAieCRhcGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCisgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhbiBhdXRoZW50aWNhdGlvbiBwYXNzLXBocmFzZSIKKyAgICBleGl0IDEKK2ZpCisgICAgaWYgdGVzdCAieCRwcm9tcHQiID0gInh5ZXMiIC1hICJ4JHhwYXNzcGhyYXNlIiA9ICJ4IiA7IHRoZW4KKyAgICBlY2hvICJFbnRlciBlbmNyeXB0aW9uIHBhc3MtcGhyYXNlOiAiCisgICAgZWNobyAiICBbcHJlc3MgcmV0dXJuIHRvIHJldXNlIHRoZSBhdXRoZW50aWNhdGlvbiBwYXNzLXBocmFzZV0iCisgICAgcmVhZCB4cGFzc3BocmFzZQorZmkKK291dGRpcj0iQFBFUlNJU1RFTlRfRElSRUNUT1JZQCIKK291dGZpbGU9IiRvdXRkaXIvc25tcGQuY29uZiIKK2xpbmU9ImNyZWF0ZVVzZXIgJHVzZXIgJEFhbGdvcml0aG0gXCIkYXBhc3NwaHJhc2VcIiAkWGFsZ29yaXRobSAkeHBhc3NwaHJhc2UiCitlY2hvICJhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvICRvdXRmaWxlOiIKK2VjaG8gIiAgIiAkbGluZQorIyBpbiBjYXNlIGl0IGhhc24ndCBldmVyIGJlZW4gc3RhcnRlZCB5ZXQsIHN0YXJ0IGl0LgoraWYgdGVzdCAhIC1kICRvdXRkaXIgOyB0aGVuCisgICAgbWtkaXIgJG91dGRpcgorZmkKK2lmIHRlc3QgISAtZCAkb3V0ZmlsZSA7IHRoZW4KKyAgICB0b3VjaCAkb3V0ZmlsZQorZmkKK2VjaG8gJGxpbmUgPj4gJG91dGZpbGUKK291dGZpbGU9IkBkYXRhZGlyQC9zbm1wL3NubXBkLmNvbmYiCitsaW5lPSIkdG9rZW4gJHVzZXIiCitlY2hvICJhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvICRvdXRmaWxlOiIKK2VjaG8gIiAgIiAkbGluZQoraWYgdGVzdCAhIC1kICRvdXRmaWxlIDsgdGhlbgorICAgIHRvdWNoICRvdXRmaWxlCitmaQorZWNobyAkbGluZSA+PiAkb3V0ZmlsZQpkaWZmIC0tZ2l0IGEvcGVybC9BU04vQVNOLnBtIGIvcGVybC9BU04vQVNOLnBtCmluZGV4IDY0MzBmN2UuLjA3ODU4YWUgMTAwNjQ0Ci0tLSBhL3BlcmwvQVNOL0FTTi5wbQorKysgYi9wZXJsL0FTTi9BU04ucG0KQEAgLTY2LDcgKzY2LDcgQEAKIAlBU05fVU5TSUdORUQKIAlBU05fVU5TSUdORUQ2NAogKTsKLSRWRVJTSU9OID0gJzUuMDQwNCc7CiskVkVSU0lPTiA9ICc1LjA1MDInOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKZGlmZiAtLWdpdCBhL3BlcmwvQVNOL01ha2VmaWxlLlBMIGIvcGVybC9BU04vTWFrZWZpbGUuUEwKaW5kZXggZjg5NWE0MS4uNDU3Njc4MSAxMDA2NDQKLS0tIGEvcGVybC9BU04vTWFrZWZpbGUuUEwKKysrIGIvcGVybC9BU04vTWFrZWZpbGUuUEwKQEAgLTI4LDkgKzI4LDkgQEAKICAgICAgICAgICAgICAgICAgIAogICAgIG15ICgkc25tcF9saWIsICRzbm1wX2xsaWIsICRzZXApOwogCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTg0LDcgKzE4NCw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0gYi9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCmluZGV4IDYyNDc5NjMuLmRmM2M0YWYgMTAwNjQ0Ci0tLSBhL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0KKysrIGIvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQpAQCAtNiw3ICs2LDcgQEAKICMjICAgc2NhbGFyIHNldHM/CiAjIyAgIG11bHRpLWhvc3RzCiAKLSRBbnlEYXRhOjpTdG9yYWdlOjpWRVJTSU9OID0gJzUuMDQwNCc7CiskQW55RGF0YTo6U3RvcmFnZTo6VkVSU0lPTiA9ICc1LjA1MDInOwogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIApkaWZmIC0tZ2l0IGEvcGVybC9NYWtlZmlsZS5QTCBiL3BlcmwvTWFrZWZpbGUuUEwKaW5kZXggZjcwZjk5MS4uOTJmNWFkMiAxMDA2NDQKLS0tIGEvcGVybC9NYWtlZmlsZS5QTAorKysgYi9wZXJsL01ha2VmaWxlLlBMCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0xMTEsNyArMTExLDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9NYWtlZmlsZS5zdWJzLnBsIGIvcGVybC9NYWtlZmlsZS5zdWJzLnBsCmluZGV4IDgxN2ZiNTUuLmUzYzI1ZWYgMTAwNjQ0Ci0tLSBhL3BlcmwvTWFrZWZpbGUuc3Vicy5wbAorKysgYi9wZXJsL01ha2VmaWxlLnN1YnMucGwKQEAgLTQsNyArNCw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC04Nyw3ICs4Nyw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvT0lEL01ha2VmaWxlLlBMIGIvcGVybC9PSUQvTWFrZWZpbGUuUEwKaW5kZXggNWQ5NDMzOC4uNmJiMTYxNiAxMDA2NDQKLS0tIGEvcGVybC9PSUQvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9PSUQvTWFrZWZpbGUuUEwKQEAgLTI4LDkgKzI4LDkgQEAKICAgICB9CiAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0xODUsNyArMTg1LDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9PSUQvT0lELnBtIGIvcGVybC9PSUQvT0lELnBtCmluZGV4IDE1YjM3NzQuLmI5NDM4NzIgMTAwNjQ0Ci0tLSBhL3BlcmwvT0lEL09JRC5wbQorKysgYi9wZXJsL09JRC9PSUQucG0KQEAgLTkyLDcgKzkyLDcgQEAKIAlzbm1wX29pZF9jb21wYXJlCiAgICAgICAgIGNvbXBhcmUKICk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogc3ViIG5ldyB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL3BlcmwvT0lEL09JRC54cyBiL3BlcmwvT0lEL09JRC54cwppbmRleCA1ZDQxYzNhLi5lOWM4MzhmIDEwMDY0NAotLS0gYS9wZXJsL09JRC9PSUQueHMKKysrIGIvcGVybC9PSUQvT0lELnhzCkBAIC0yOCw3ICsyOCw3IEBACiBuc29fbmV3YXJyYXlwdHIob2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4pIAogewogICAgIG5ldHNubXBfb2lkICpSRVRWQUw7Ci0gICAgUkVUVkFMID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29pZCk7CisgICAgUkVUVkFMID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgIFJFVFZBTC0+bmFtZSA9IFJFVFZBTC0+bmFtZWJ1ZjsKICAgICBSRVRWQUwtPmxlbiA9IG5hbWVfbGVuOwogICAgIG1lbWNweShSRVRWQUwtPm5hbWUsIG5hbWUsIG5hbWVfbGVuICogc2l6ZW9mKG9pZCkpOwpAQCAtMTQ2LDcgKzE0Niw3IEBACiAgICBpbnQgaTsKICAgIGJ1ZlswXSA9ICdcMCc7CiAgICBmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKSB7Ci0Jc3ByaW50ZihidWYsIi4lbHUiLCpvYmppZCsrKTsKKwlzcHJpbnRmKGJ1ZiwgIi4lbHUiLCAqb2JqaWQrKyk7CiAJYnVmICs9IHN0cmxlbihidWYpOwogICAgfQogICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKQEAgLTE2MCwxMiArMTYwLDEzIEBACiAgICAgQ09ERToKICAgICAgICAgaWYgKGdldF90cmVlX2hlYWQoKSA9PSBOVUxMKQogICAgICAgICAgICAgbmV0c25tcF9pbml0X21pYigpOwotICAgICAgICBSRVRWQUwgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2lkKTsKKyAgICAgICAgUkVUVkFMID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgICAgICBSRVRWQUwtPm5hbWUgPSBSRVRWQUwtPm5hbWVidWY7CiAgICAgICAgIFJFVFZBTC0+bGVuID0gc2l6ZW9mKFJFVFZBTC0+bmFtZWJ1Zikvc2l6ZW9mKFJFVFZBTC0+bmFtZWJ1ZlswXSk7CiAgICAgICAgIGlmICghc25tcF9wYXJzZV9vaWQoaW5pdHN0cmluZywgKG9pZCAqKSBSRVRWQUwtPm5hbWUsICZSRVRWQUwtPmxlbikpIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDYW4ndCBwYXJzZTogJXNcbiIsIGluaXRzdHJpbmcpOwogICAgICAgICAgICAgUkVUVkFMLT5sZW4gPSAwOworICAgICAgICAgICAgZnJlZShSRVRWQUwpOwogICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgfQogICAgIE9VVFBVVDoKQEAgLTI2Niw3ICsyNjcsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgoYnVmID0gKHVfY2hhciAqKSBjYWxsb2MoYnVmX2xlbiwgMSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICgoYnVmID0gbmV0c25tcF9tYWxsb2MoYnVmX2xlbikpID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBSRVRWQUwgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI4MiwxMiArMjgzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAodHBub2RlLT5sYWJlbCArIHN0cmxlbih0cG5vZGUtPmxhYmVsKSAtIDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhYmxlIikpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHdlJ3JlIG5vdCB3aXRoaW4gYSB0YWJsZS4gIGJhZCBsb2dpYywgbGl0dGxlIGNob2ljZSAqLworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2ZyZWUoYnVmKTsKICAgICAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0cGUpIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2ZyZWUoYnVmKTsKICAgICAgICAgICAgICAgICBSRVRWQUwgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI5OCw2ICszMDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAoTlVMTCA9PQogICAgICAgICAgICAgICAgICAgICAgKHRwZSA9IGdldF90cmVlKG5hbWUsIG5hbWVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF90cmVlX2hlYWQoKSkpKSkgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2ZyZWUoYnVmKTsKICAgICAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvKiBYWFg6IGJldHRlciBlcnJvciByZWNvdmVyeSBuZWVkZWQ/ICovCiAgICAgICAgICAgICAgICAgfQpAQCAtMzIwLDEyICszMjQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgKE5VTEwgPT0KICAgICAgICAgICAgICAgICAgICAgIChpbmRleG5vZGUgPSBnZXRfdHJlZShuYW1lLCBuYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfdHJlZV9oZWFkKCkpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgLyogeHh4IG1lbSBsZWFrICovCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHZiZGF0YS50eXBlID0gbWliX3RvX2Fzbl90eXBlKGluZGV4bm9kZS0+dHlwZSk7CiAKICAgICAgICAgICAgICAgICBpZiAodmJkYXRhLnR5cGUgPT0gKHVfY2hhcikgLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLyogWFhYOiBub3QgZ29vZC4gIGhhbGYgcG9wdWxhdGVkIHN0YWNrPyAqLwogICAgICAgICAgICAgICAgIH0KQEAgLTM0Nyw5ICszNTMsOSBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLyogcG9zc2libGUgbWVtb3J5IGxlYWs6IHZiZGF0YS5kYXRhIHNob3VsZCBiZSBmcmVlZCBsYXRlciAqLwogICAgICAgICAgICAgICAgIGlmIChwYXJzZV9vbmVfb2lkX2luZGV4KCZvaWRwLCAmb2lkcF9sZW4sICZ2YmRhdGEsIDApCiAgICAgICAgICAgICAgICAgICAgICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2ZyZWUoYnVmKTsKICAgICAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTM2Myw5ICszNjksMTAgQEAKICAgICAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY192YWx1ZSgmYnVmLCAmYnVmX2xlbiwgJm91dF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgbmFtZSwgbmFtZV9sZW4sICZ2YmRhdGEpOwogKi8KLQorICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJfaW50ZXJuYWxzKCZ2YmRhdGEpOwogICAgICAgICAgICAgICAgIGF2X3B1c2gobXlyZXQsIG5ld1NWcHYoKGNoYXIgKilidWYsIG91dF9sZW4pKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ldHNubXBfZnJlZShidWYpOwogICAgICAgICAgICAgUkVUVkFMID0gbmV3UlYoKFNWICopbXlyZXQpOwogICAgICAgICB9CiAgICAgT1VUUFVUOgpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL01ha2VmaWxlLlBMIGIvcGVybC9TTk1QL01ha2VmaWxlLlBMCmluZGV4IDkyOGNiNjcuLmU2MTdjYjcgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC9NYWtlZmlsZS5QTAorKysgYi9wZXJsL1NOTVAvTWFrZWZpbGUuUEwKQEAgLTMyLDkgKzMyLDkgQEAKICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtMTI4LDcgKzEyOCw3IEBACiAgICAgbXkgKCRtaWJkaXIsICRzbm1wZCwgJHNubXB0cmFwZCk7CiAKICAgICAgICAgIyBXaW5kb3dzCi0gICAgICAgIGlmICgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSB7CisgICAgICAgIGlmICgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpIHsKICAgICAgICAgICBpZiAobGMgKCRvcHRzLT57J2luc291cmNlJ30pIGVxICJ0cnVlIikgewogICAgICAgICAgICAgJG1pYmRpciA9ICIuLi8uLi9taWJzIjsKICAgICAgICAgICAgIGlmIChsYygkb3B0cy0+eydkZWJ1Zyd9KSBlcSAidHJ1ZSIpIHsKQEAgLTE2OSw3ICsxNjksNyBAQAogCSAgICBwcm9tcHQoIlVuYWJsZSB0byBsb2NhdGUgXCJzbm1wdHJhcGRcIi4gUGxlYXNlIGVudGVyIHRoZSBwYXRoOiAiLAogCQkgICAkc25tcGRfcGF0aDEpOwogCi0gICAgICAgIGlmICgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSB7CisgICAgICAgIGlmICgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpIHsKICAgICAgICAgICAkc25tcGQgPSAkc25tcGQgLiAkc2VwIC4gInNubXBkLmV4ZSI7CiAgICAgICAgICAgJHNubXB0cmFwZCA9ICRzbm1wdHJhcGQgLiAkc2VwIC4gInNubXB0cmFwZC5leGUiOwogICAgICAgICB9CkBAIC0yMzEsNyArMjMxLDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTMxNCw3ICszMTQsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvU05NUC5wbSBiL3BlcmwvU05NUC9TTk1QLnBtCmluZGV4IGU5MTRkY2MuLmE3OWNiOTEgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC9TTk1QLnBtCisrKyBiL3BlcmwvU05NUC9TTk1QLnBtCkBAIC03LDcgKzcsNyBAQAogIyAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLgogCiBwYWNrYWdlIFNOTVA7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOyAgICMgY3VycmVudCByZWxlYXNlIHZlcnNpb24gbnVtYmVyCiskVkVSU0lPTiA9ICc1LjA1MDInOyAgICMgY3VycmVudCByZWxlYXNlIHZlcnNpb24gbnVtYmVyCiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CkBAIC00Niw2ICs0Niw4IEBACiAgICAgICAgIHNubXBfZ2V0bmV4dAogICAgICAgICBzbm1wX3NldAogICAgICAgICBzbm1wX3RyYXAKKwlTTk1QX0FQSV9UUkFESVRJT05BTAorCVNOTVBfQVBJX1NJTkdMRQogKTsKIAogc3ViIEFVVE9MT0FEIHsKQEAgLTM0OCwxMiArMzUwLDI0IEBACiAgICAgJHNlc3MtPnRyYXAoQF8pOwogfQogCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorIyBQcmVzZXJ2ZXMgdGhlIGFiaWxpdHkgdG8gY2FsbCBNYWluTG9vcCgpIHdpdGggbm8gYXJncyBzbyB3ZSBkb24ndCAKKyMgYnJlYWsgb2xkIGNvZGUKKyMKKyMgQWx0ZXJuYXRlbHksIE1haW5Mb29wKCkgY291bGQgYmUgY2FsbGVkIGFzIGFuIG9iamVjdCBtZXRob2QsIAorIyAoICRzZXNzLT5NYWluTG9vcCgpICkgLCBzbyB0aGF0ICRzZWxmIHdpbmRzIHVwIGluIEBfLiAgVGhlbiBpdCB3b3VsZCAKKyMgYmUgbW9yZSBsaWtlIDoKKyMgbXkgJHNlbGYgPSBzaGlmdDsKKyMgLi4uLiAKKyMgU05NUDo6X21haW5fbG9vcCguLi4uLi4sICRzZWxmLT57U2Vzc1B0cn0pOworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKIHN1YiBNYWluTG9vcCB7CisgICAgbXkgJHNzID0gc2hpZnQgaWYoJlNOTVA6Ol9hcGlfbW9kZSgpID09IFNOTVA6OlNOTVBfQVBJX1NJTkdMRSgpKTsKICAgICBteSAkdGltZSA9IHNoaWZ0OwogICAgIG15ICRjYWxsYmFjayA9IHNoaWZ0OwogICAgIG15ICR0aW1lX3NlYyA9ICgkdGltZSA/IGludCAkdGltZSA6IDApOwogICAgIG15ICR0aW1lX3VzZWMgPSAoJHRpbWUgPyBpbnQoKCR0aW1lLSR0aW1lX3NlYykqMTAwMDAwMCkgOiAwKTsKLSAgICBTTk1QOjpfbWFpbl9sb29wKCR0aW1lX3NlYywkdGltZV91c2VjLCRjYWxsYmFjayk7CisgICAgU05NUDo6X21haW5fbG9vcCgkdGltZV9zZWMsJHRpbWVfdXNlYywkY2FsbGJhY2ssKGRlZmluZWQoJHNzKSA/ICRzcy0+e1Nlc3NQdHJ9IDogKCkpKTsKIH0KIAogc3ViIGZpbmlzaCB7CkBAIC01MTcsNyArNTMxLDcgQEAKICAgICAgICAkdGhpcy0+e0NvbnRleHR9IHx8PSAKIAkgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpuZXRzbm1wX2RzX2dldF9zdHJpbmcoTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJSQVJZX0lEKCksIAogCQkgICAgICAgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpORVRTTk1QX0RTX0xJQl9DT05URVhUKCkpIHx8ICcnOwotICAgICAgICR0aGlzLT57QXV0aFByb3RvfSB8fD0gJ0RFRkFVTFQnOyAjIGRlZmF1bHRzIHRvIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdAorICAgICAgICR0aGlzLT57QXV0aFByb3RvfSB8fD0gJ0RFRkFVTFQnOyAjIHVzZSB0aGUgbGlicmFyeSdzIGRlZmF1bHQKICAgICAgICAkdGhpcy0+e0F1dGhQYXNzfSB8fD0KICAgICAgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpuZXRzbm1wX2RzX2dldF9zdHJpbmcoTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJSQVJZX0lEKCksIAogCQkgICAgIE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCX0FVVEhQQVNTUEhSQVNFKCkpIHx8CkBAIC01MjksNyArNTQzLDcgQEAKICAgICAgICAkdGhpcy0+e0F1dGhMb2NhbGl6ZWRLZXl9IHx8PSAnJzsKICAgICAgICAkdGhpcy0+e1ByaXZMb2NhbGl6ZWRLZXl9IHx8PSAnJzsKIAotICAgICAgICR0aGlzLT57UHJpdlByb3RvfSB8fD0gJ0RFRkFVTFQnOyAgIyBkZWZhdWx0cyB0byBodGUgbGlicmFyeSdzIGRlZmF1bHQKKyAgICAgICAkdGhpcy0+e1ByaXZQcm90b30gfHw9ICdERUZBVUxUJzsgICMgdXNlIHRoZSBsaWJyYXJ5J3MgZGVmYXVsdAogICAgICAgICR0aGlzLT57UHJpdlBhc3N9IHx8PQogICAgICAgIE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Om5ldHNubXBfZHNfZ2V0X3N0cmluZyhOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpORVRTTk1QX0RTX0xJQlJBUllfSUQoKSwgCiAJCSAgICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJfUFJJVlBBU1NQSFJBU0UoKSkgfHwKQEAgLTcxNCw3ICs3MjgsNyBAQAogCSAgICBpZiAoJHBhcnNlX2luZGV4ZXMpIHsKIAkJIyBnZXQgaW5kZXhlcwogCQlteSBAaW5kZXhlcyA9Ci0JCSAgQHskU05NUDo6TUlCeyR0ZXh0bm9kZX17J2NoaWxkcmVuJ31bMF17J2luZGV4ZXMnfSB8fCBbXSB9OworCQkgIEB7JFNOTVA6Ok1JQnskdGV4dG5vZGV9eydjaGlsZHJlbid9WzBdeydpbmRleGVzJ30gfHwgW119OwogCQkjIHF1aWNrIHRyYW5zbGF0ZSBpbnRvIGEgaGFzaAogCQltYXAgeyAkaW5kZXhlc3skX30gPSAxOyB9IEBpbmRleGVzOwogCSAgICB9CkBAIC0xMzY3LDYgKzEzODEsNyBAQAogICAgICBwYXJlbnQgPT4gMCwgICAjIHBhcmVudCBub2RlCiAgICAgIGNoaWxkcmVuID0+IDAsICMgYXJyYXkgcmVmZXJlbmNlIG9mIGNoaWxkcmVuIG5vZGVzCiAgICAgIGluZGV4ZXMgPT4gMCwgICMgcmV0dXJucyBhcnJheSBvZiBjb2x1bW4gbGFiZWxzCisgICAgIGltcGxpZWQgPT4gMCwgICMgYm9vbGVhbjogaXMgdGhlIGxhc3QgaW5kZXggSU1QTElFRAogICAgICB2YXJiaW5kcyA9PiAwLCAjIHJldHVybnMgYXJyYXkgb2YgdHJhcC9ub3RpZmljYXRpb24gdmFyYmluZHMKICAgICAgbmV4dE5vZGUgPT4gMCwgIyBuZXh0IGxleGljbyBub2RlIChCVUchIGRvZXMgbm90IHJldHVybiBpbiBsZXhpY28gb3JkZXIpCiAgICAgIHR5cGUgPT4gMCwgICAgICMgcmV0dXJucyBzaW1wbGUgdHlwZSAoc2VlIGdldFR5cGUgZm9yIHZhbHVlcykKQEAgLTE4ODIsNyArMTg5Nyw3IEBACiAKIE5vdGUgMjogY2FsbGJhY2sgc3VwcG9ydCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgU05NUCBtb2R1bGUgdmVyc2lvbgogNS4wNCBhbmQgYWJvdmUuICBUbyB0ZXN0IGZvciB0aGlzIGluIGNvZGUgaW50ZW5kaW5nIHRvIHN1cHBvcnQgYm90aAotdmVyc2lvbnMgcHJpb3IgdG8gNS4wNCBhbmQgYW5kIDUuMDQgYW5kIHVwLCB0aGUgZm9sbG93aW5nIHNob3VsZCB3b3JrOgordmVyc2lvbnMgcHJpb3IgdG8gNS4wNCBhbmQgNS4wNCBhbmQgdXAsIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHdvcms6CiAKICAgaWYgKCRyZXNwb25zZSA9ICRzZXNzLT5nZXR0YWJsZSgnaWZUYWJsZScsIGNhbGxiYWNrID0+IFwmbXlfc3ViKSkgewogICAgICAgIyBnb3QgYSByZXNwb25zZSwgZ2V0dGFibGUgZG9lc24ndCBzdXBwb3J0IGNhbGxiYWNrCkBAIC0yMzE1LDYgKzIzMzAsMTQgQEAKIAogcmV0dXJucyB0aGUgUkVGRVJFTkNFIGNsYXVzZQogCis9aXRlbSBpbmRleGVzCisKK3JldHVybnMgdGhlIG9iamVjdHMgaW4gdGhlIElOREVYIGNsYXVzZQorCis9aXRlbSBpbXBsaWVkCisKK3JldHVybnMgdHJ1ZSBpZiB0aGUgbGFzdCBvYmplY3QgaW4gdGhlIElOREVYIGlzIElNUExJRUQKKwogPWJhY2sKIAogPWhlYWQxIE1JQiBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9TTk1QLnhzIGIvcGVybC9TTk1QL1NOTVAueHMKaW5kZXggOTAyNDBhMS4uMzYxY2E1OCAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL1NOTVAueHMKKysrIGIvcGVybC9TTk1QL1NOTVAueHMKQEAgLTU5LDE2ICs1OSw2IEBACiAjZGVmaW5lIEdfVk9JRCBHX0RJU0NBUkQKICNlbmRpZgogCi0jaWZkZWYgV0lOMzIKLSNkZWZpbmUgU09DS19TVEFSVFVQIHdpbnNvY2tfc3RhcnR1cCgpCi0jZGVmaW5lIFNPQ0tfQ0xFQU5VUCB3aW5zb2NrX2NsZWFudXAoKQotI2RlZmluZSBzdHJjYXNlY21wIF9zdHJpY21wCi0jZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAotI2Vsc2UKLSNkZWZpbmUgU09DS19TVEFSVFVQCi0jZGVmaW5lIFNPQ0tfQ0xFQU5VUAotI2VuZGlmCi0KICNpbmNsdWRlICJwZXJsc25tcC5oIgogCiAjZGVmaW5lIFNVQ0NFU1MgMQpAQCAtNzYsNiArNjYsOSBAQAogCiAjZGVmaW5lIFpFUk9fQlVUX1RSVUUgIjAgYnV0IHRydWUiCiAKKyNkZWZpbmUgU05NUF9BUElfVFJBRElUSU9OQUwgMAorI2RlZmluZSBTTk1QX0FQSV9TSU5HTEUgMQorCiAjZGVmaW5lIFZBUkJJTkRfVEFHX0YgMAogI2RlZmluZSBWQVJCSU5EX0lJRF9GIDEKICNkZWZpbmUgVkFSQklORF9WQUxfRiAyCkBAIC05NSw2ICs4OCw5IEBACiAvKiBJbnRlcm5hbCBmbGFnIHRvIGRldGVybWluZSBzbm1wX21haW5fbG9vcCgpIHNob3VsZCByZXR1cm4gYWZ0ZXIgY2FsbGJhY2sgKi8KIHN0YXRpYyBpbnQgbWFpbmxvb3BfZmluaXNoID0gMDsKIAorLyogSW50ZXJuYWwgZmxhZyB0byBkZXRlcm1pbmUgd2hpY2ggQVBJIHdlJ3JlIHVzaW5nICovCitzdGF0aWMgaW50IGFwaV9tb2RlID0gU05NUF9BUElfVFJBRElUSU9OQUw7CisKIC8qIHRoZXNlIHNob3VsZCBiZSBwYXJ0IG9mIHRyYW5zZm9ybV9vaWRzLmggPyAqLwogI2RlZmluZSBVU01fQVVUSF9QUk9UT19NRDVfTEVOIDEwCiAjZGVmaW5lIFVTTV9BVVRIX1BST1RPX1NIQV9MRU4gMTAKQEAgLTExMiw3ICsxMDgsNiBAQAogCiBzdGF0aWMgdm9pZCBfX3JlY2FsY190aW1lb3V0IF8oKHN0cnVjdCB0aW1ldmFsKixzdHJ1Y3QgdGltZXZhbCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsKixzdHJ1Y3QgdGltZXZhbCosIGludCogKSk7Ci1zdGF0aWMgaW5fYWRkcl90IF9fcGFyc2VfYWRkcmVzcyBfKChjaGFyKikpOwogc3RhdGljIGludCBfX2lzX251bWVyaWNfb2lkIF8oKGNoYXIqKSk7CiBzdGF0aWMgaW50IF9faXNfbGVhZiBfKChzdHJ1Y3QgdHJlZSopKTsKIHN0YXRpYyBpbnQgX190cmFuc2xhdGVfYXBwbF90eXBlIF8oKGNoYXIqKSk7CkBAIC0xODYsNiArMTgxLDkgQEAKIHN0YXRpYyBpbnQgX2J1bGt3YWxrX2FzeW5jX2NiIF8oKGludCBvcCwgU25tcFNlc3Npb24gKnNzLCBpbnQgcmVxaWQsCiAJCQkJICAgICBuZXRzbm1wX3BkdSAqcGR1LCB2b2lkICpjb250ZXh0X3B0cikpOwogCisvKiBQcm90b3R5cGUgZm9yIGVycm9yIGhhbmRsZXIgKi8KK3ZvaWQgc25tcF9yZXR1cm5fZXJyKCBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzcywgU1YgKmVycl9zdHIsIFNWICplcnJfbnVtLCBTViAqZXJyX2luZCApOworCiAvKiBTdHJ1Y3R1cmUgdG8gaG9sZCB2YWxpZCBjb250ZXh0IHNlc3Npb25zLiAqLwogc3RydWN0IHZhbGlkX2NvbnRleHRzIHsKICAgIHdhbGtfY29udGV4dAkqKnZhbGlkOwkvKiBBcnJheSBvZiB2YWxpZCB3YWxrX2NvbnRleHQgcG9pbnRlcnMuICAgICovCkBAIC0yMDksNyArMjA3LDYgQEAKIAl9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKIAogY2hhcglfZGVidWd4WzEwMjRdOwkvKiBTcGFjZSB0byBzcHJpbnRmKCkgaW50byAtIHVzZWQgYnkgc3ByaW50X29iamlkKCkuICovCi0jZGVmaW5lIERCRENMKHgpIHgKIAogLyogd3JhcHBlciBhcm91bmQgc25wcmludF9vYmppZCB0byBzbnByaW50X29iamlkIHRvIHJldHVybiB0aGUgcG9pbnRlciAKICAgIGluc3RlYWQgb2YgbGVuZ3RoICovCkBAIC0yMjAsNiArMjE3LDcgQEAKICAgcmV0dXJuIF9kZWJ1Z3g7CiB9CiAgCisjZGVmaW5lIERCRENMKHgpIHgKICNlbHNlCS8qIERFQlVHR0lORyAqLwogI2RlZmluZSBEQkRDTCh4KSAKICNkZWZpbmUgREJPVVQKQEAgLTI5NSwyNiArMjkzLDYgQEAKICAgIH0KIH0KIAotc3RhdGljIGluX2FkZHJfdAotX19wYXJzZV9hZGRyZXNzKGFkZHJlc3MpCi1jaGFyICphZGRyZXNzOwotewotICAgIGluX2FkZHJfdCBhZGRyOwotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzYWRkcjsKLSAgICBzdHJ1Y3QgaG9zdGVudCAqaHA7Ci0KLSAgICBpZiAoKGFkZHIgPSBpbmV0X2FkZHIoYWRkcmVzcykpICE9IC0xKQotCXJldHVybiBhZGRyOwotICAgIGhwID0gZ2V0aG9zdGJ5bmFtZShhZGRyZXNzKTsKLSAgICBpZiAoaHAgPT0gTlVMTCl7Ci0gICAgICAgIHJldHVybiAoLTEpOyAvKiBlcnJvciB2YWx1ZSAqLwotICAgIH0gZWxzZSB7Ci0JbWVtY3B5KCZzYWRkci5zaW5fYWRkciwgaHAtPmhfYWRkciwgaHAtPmhfbGVuZ3RoKTsKLQlyZXR1cm4gc2FkZHIuc2luX2FkZHIuc19hZGRyOwotICAgIH0KLQotfQotCiBzdGF0aWMgaW50CiBfX2lzX251bWVyaWNfb2lkIChvaWRzdHIpCiBjaGFyKiBvaWRzdHI7CkBAIC01ODUsNyArNTYzLDcgQEAKICAgIGludCBpOwogICAgYnVmWzBdID0gJ1wwJzsKICAgIGZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHsKLQlzcHJpbnRmKGJ1ZiwiLiVsdSIsKm9iamlkKyspOworCXNwcmludGYoYnVmLCAiLiVsdSIsICpvYmppZCsrKTsKIAlidWYgKz0gc3RybGVuKGJ1Zik7CiAgICB9CiAgICByZXR1cm4gU1VDQ0VTUzsKQEAgLTc3OSwxMSArNzU3LDEzIEBACiAgICAgICAgICAgIGljcCA9IGxjcDsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKCFmb3VuZF9sYWJlbCAmJiBpc2FscGhhKChpbnQpKmxjcCkpIGZvdW5kX2xhYmVsID0gMTsKKyAgICAgIGlmICghZm91bmRfbGFiZWwgJiYgaXNhbHBoYSgodW5zaWduZWQgY2hhcikqbGNwKSkgZm91bmRfbGFiZWwgPSAxOwogICAgICAgbGNwLS07CiAgICB9CiAKLSAgIGlmICghZm91bmRfbGFiZWwgfHwgKCFpc2RpZ2l0KChpbnQpKihpY3ArMSkpICYmIChmbGFnICYgRkFJTF9PTl9OVUxMX0lJRCkpKQorICAgaWYgKCFmb3VuZF9sYWJlbAorICAgICAgIHx8ICgoaWNwICsgMSA+PSBuYW1lICsgbGVuIHx8ICFpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSooaWNwKzEpKSkKKyAgICAgICAgICAgJiYgKGZsYWcgJiBGQUlMX09OX05VTExfSUlEKSkpCiAgICAgICByZXR1cm4oRkFJTFVSRSk7CiAKICAgIGlmIChmbGFnICYgTk9OX0xFQUZfTkFNRSkgeyAvKiBkb250IGtub3cgd2hlcmUgdG8gc3RhcnQgaW5zdGFuY2UgaWQgKi8KQEAgLTk2MSw3ICs5NDEsNyBAQAogCiAgICBpZiAoIXNvaWRfc3RyIHx8ICEqc29pZF9zdHIpIHJldHVybiBTVUNDRVNTOy8qIHN1Y2Nlc3NmdWxseSBhZGRlZCBub3RoaW5nICovCiAgICBpZiAoKnNvaWRfc3RyID09ICcuJykgc29pZF9zdHIrKzsKLSAgIHNvaWRfYnVmID0gc3RyZHVwKHNvaWRfc3RyKTsKKyAgIHNvaWRfYnVmID0gbmV0c25tcF9zdHJkdXAoc29pZF9zdHIpOwogICAgaWYgKCFzb2lkX2J1ZikKICAgICAgICByZXR1cm4gRkFJTFVSRTsKICAgIGNwID0gc3RydG9rX3Ioc29pZF9idWYsIi4iLCZzdCk7CkBAIC05NzAsNyArOTUwLDcgQEAKICAgICAgLyogZG9pZF9hcnJbKCpkb2lkX2Fycl9sZW4pKytdID0gIGF0b2koY3ApOyAqLwogICAgICBjcCA9IHN0cnRva19yKE5VTEwsIi4iLCZzdCk7CiAgICB9Ci0gICBmcmVlKHNvaWRfYnVmKTsKKyAgIG5ldHNubXBfZnJlZShzb2lkX2J1Zik7CiAgICByZXR1cm4oU1VDQ0VTUyk7CiB9CiAKQEAgLTk5MSwyNyArOTcxLDI2IEBACiAgICAgaW50IHJldCA9IFNVQ0NFU1M7CiAKICAgICBpZiAocGR1LT52YXJpYWJsZXMgPT0gTlVMTCl7Ci0JcGR1LT52YXJpYWJsZXMgPSB2YXJzID0KLSAgICAgICAgICAgKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKWNhbGxvYygxLHNpemVvZihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpKTsKKwlwZHUtPnZhcmlhYmxlcyA9IHZhcnMKKyAgICAgICAgICAgID0gbmV0c25tcF9jYWxsb2MoMSwgc2l6ZW9mKG5ldHNubXBfdmFyaWFibGVfbGlzdCkpOwogICAgIH0gZWxzZSB7CiAJZm9yKHZhcnMgPSBwZHUtPnZhcmlhYmxlczsKICAgICAgICAgICAgIHZhcnMtPm5leHRfdmFyaWFibGU7CiAgICAgICAgICAgICB2YXJzID0gdmFycy0+bmV4dF92YXJpYWJsZSkKIAkgICAgLypFWElUKi87Ci0JdmFycy0+bmV4dF92YXJpYWJsZSA9Ci0gICAgICAgICAgIChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiljYWxsb2MoMSxzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CisJdmFycy0+bmV4dF92YXJpYWJsZSA9IG5ldHNubXBfY2FsbG9jKDEsIHNpemVvZihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpKTsKIAl2YXJzID0gdmFycy0+bmV4dF92YXJpYWJsZTsKICAgICB9CiAKICAgICB2YXJzLT5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKLSAgICB2YXJzLT5uYW1lID0gKG9pZCAqKW1hbGxvYyhuYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKKyAgICB2YXJzLT5uYW1lID0gbmV0c25tcF9tYWxsb2MobmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CiAgICAgbWVtY3B5KChjaGFyICopdmFycy0+bmFtZSwgKGNoYXIgKiluYW1lLCBuYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKICAgICB2YXJzLT5uYW1lX2xlbmd0aCA9IG5hbWVfbGVuZ3RoOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgY2FzZSBUWVBFX0lOVEVHRVI6CiAgICAgICBjYXNlIFRZUEVfSU5URUdFUjMyOgogICAgICAgICB2YXJzLT50eXBlID0gQVNOX0lOVEVHRVI7Ci0gICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gKGxvbmcgKiltYWxsb2Moc2l6ZW9mKGxvbmcpKTsKKyAgICAgICAgdmFycy0+dmFsLmludGVnZXIgPSBuZXRzbm1wX21hbGxvYyhzaXplb2YobG9uZykpOwogICAgICAgICBpZiAodmFsKQogICAgICAgICAgICAgKih2YXJzLT52YWwuaW50ZWdlcikgPSBzdHJ0b2wodmFsLE5VTEwsMCk7CiAgICAgICAgIGVsc2UgewpAQCAtMTAzNCw3ICsxMDEzLDcgQEAKICAgICAgIGNhc2UgVFlQRV9VSU5URUdFUjoKICAgICAgICAgdmFycy0+dHlwZSA9IEFTTl9VSU5URUdFUjsKIGFzX3VpbnQ6Ci0gICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gKGxvbmcgKiltYWxsb2Moc2l6ZW9mKGxvbmcpKTsKKyAgICAgICAgdmFycy0+dmFsLmludGVnZXIgPSBuZXRzbm1wX21hbGxvYyhzaXplb2YobG9uZykpOwogICAgICAgICBpZiAodmFsKQogICAgICAgICAgICAgc3NjYW5mKHZhbCwiJWx1Iix2YXJzLT52YWwuaW50ZWdlcik7CiAgICAgICAgIGVsc2UgewpAQCAtMTA1NSwyMCArMTAzNCwyMCBAQAogICAgICAgY2FzZSBUWVBFX09QQVFVRToKICAgICAgICAgdmFycy0+dHlwZSA9IEFTTl9PQ1RFVF9TVFI7CiBhc19vY3Q6Ci0gICAgICAgIHZhcnMtPnZhbC5zdHJpbmcgPSAodV9jaGFyICopbWFsbG9jKGxlbik7CisgICAgICAgIHZhcnMtPnZhbC5zdHJpbmcgPSBuZXRzbm1wX21hbGxvYyhsZW4pOwogICAgICAgICB2YXJzLT52YWxfbGVuID0gbGVuOwogICAgICAgICBpZiAodmFsICYmIGxlbikKICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPnZhbC5zdHJpbmcsIHZhbCwgbGVuKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXQgPSBGQUlMVVJFOwotICAgICAgICAgICAgdmFycy0+dmFsLnN0cmluZyA9ICh1X2NoYXIqKXN0cmR1cCgiIik7CisgICAgICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gKHVfY2hhciAqKSBuZXRzbm1wX3N0cmR1cCgiIik7CiAgICAgICAgICAgICB2YXJzLT52YWxfbGVuID0gMDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBUWVBFX0lQQUREUjoKICAgICAgICAgdmFycy0+dHlwZSA9IEFTTl9JUEFERFJFU1M7Ci0gICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gKGxvbmcgKiltYWxsb2Moc2l6ZW9mKGluX2FkZHJfdCkpOworICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IG5ldHNubXBfbWFsbG9jKHNpemVvZihpbl9hZGRyX3QpKTsKICAgICAgICAgaWYgKHZhbCkKICAgICAgICAgICAgICooKGluX2FkZHJfdCAqKXZhcnMtPnZhbC5pbnRlZ2VyKSA9IGluZXRfYWRkcih2YWwpOwogICAgICAgICBlbHNlIHsKQEAgLTEwODgsNyArMTA2Nyw3IEBACiAJICAgIHJldCA9IEZBSUxVUkU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB2YXJzLT52YWxfbGVuICo9IHNpemVvZihvaWQpOwotICAgICAgICAgICAgdmFycy0+dmFsLm9iamlkID0gKG9pZCAqKW1hbGxvYyh2YXJzLT52YWxfbGVuKTsKKyAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IG5ldHNubXBfbWFsbG9jKHZhcnMtPnZhbF9sZW4pOwogICAgICAgICAgICAgbWVtY3B5KChjaGFyICopdmFycy0+dmFsLm9iamlkLCAoY2hhciAqKW9pZGJ1ZiwgdmFycy0+dmFsX2xlbik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMTIwLDggKzEwOTksMTIgQEAKICAgIGxvbmcgY29tbWFuZCA9IHBkdS0+Y29tbWFuZDsKICAgICpyZXNwb25zZSA9IE5VTEw7CiByZXRyeToKLQotICAgc3RhdHVzID0gc25tcF9zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCXsKKwkJc3RhdHVzID0gc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsIHJlc3BvbnNlKTsKKwl9IGVsc2UgeworCQlzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsIHJlc3BvbnNlKTsKKwl9OwogCiAgICBpZiAoKCpyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHN0YXR1cyA9IFNUQVRfRVJST1I7CiAKQEAgLTExNTgsMTAgKzExNDEsMTAgQEAKICAgICAgICAgICAgIC8qIGluIFNOTVB2MmMsIFNOTVB2MnUsIFNOTVB2MiosIGFuZCBTTk1QdjMgUERVcyAqLwogICAgICAgICAgICAgY2FzZSBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOgogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgIHN2X2NhdHB2KGVycl9zdHJfc3YsCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc25tcF9lcnJzdHJpbmcoKCpyZXNwb25zZSktPmVycnN0YXQpKTsKLSAgICAgICAgICAgICAgIHN2X3NldGl2KGVycl9udW1fc3YsICgqcmVzcG9uc2UpLT5lcnJzdGF0KTsKLQkgICAgICAgc3Zfc2V0aXYoZXJyX2luZF9zdiwgKCpyZXNwb25zZSktPmVycmluZGV4KTsKKwkJCQlzdl9jYXRwdihlcnJfc3RyX3N2LAorCQkJCQkoY2hhciopc25tcF9lcnJzdHJpbmcoKCpyZXNwb25zZSktPmVycnN0YXQpKTsKKwkJCQlzdl9zZXRpdihlcnJfbnVtX3N2LCAoKnJlc3BvbnNlKS0+ZXJyc3RhdCk7CisJCQkJc3Zfc2V0aXYoZXJyX2luZF9zdiwgKCpyZXNwb25zZSktPmVycmluZGV4KTsKICAgICAgICAgICAgICAgIHN0YXR1cyA9ICgqcmVzcG9uc2UpLT5lcnJzdGF0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAJIH0KQEAgLTExNjksMTMgKzExNTIsMTIgQEAKIAogICAgICAgY2FzZSBTVEFUX1RJTUVPVVQ6CiAgICAgICBjYXNlIFNUQVRfRVJST1I6Ci0gICAgICAgICAgc3ZfY2F0cHYoZXJyX3N0cl9zdiwgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgc3Zfc2V0aXYoZXJyX251bV9zdiwgc3MtPnNfc25tcF9lcnJubyk7CisJICAgICBzbm1wX3JldHVybl9lcnIoc3MsIGVycl9zdHJfc3YsIGVycl9udW1fc3YsIGVycl9pbmRfc3YpOwogICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQ6CisJICAgICBzbm1wX3JldHVybl9lcnIoc3MsIGVycl9zdHJfc3YsIGVycl9udW1fc3YsIGVycl9pbmRfc3YpOwogICAgICAgICAgc3ZfY2F0cHYoZXJyX3N0cl9zdiwgInNlbmRfc3luY19wZHU6IHVua25vd24gc3RhdHVzIik7Ci0gICAgICAgICBzdl9zZXRpdihlcnJfbnVtX3N2LCBzcy0+c19zbm1wX2Vycm5vKTsKICAgICAgICAgIGJyZWFrOwogICAgfQogCkBAIC0xMjQ4LDcgKzEyMzAsMTIgQEAKICAgICAgICAgcmVwbHlfcGR1LT5jb21tYW5kID0gU05NUF9NU0dfUkVTUE9OU0U7CiAgICAgICAgIHJlcGx5X3BkdS0+cmVxaWQgPSBwZHUtPnJlcWlkOwogICAgICAgICByZXBseV9wZHUtPmVycnN0YXQgPSByZXBseV9wZHUtPmVycmluZGV4ID0gMDsKLSAgICAgICAgc25tcF9zZW5kKHNzLCByZXBseV9wZHUpOworCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwl7CisgICAgICAgIAlzbm1wX3Nlc3Nfc2VuZChzcywgcmVwbHlfcGR1KTsKKwl9IGVsc2UgeworCSAgICAgICAgc25tcF9zZW5kKHNzLCByZXBseV9wZHUpOworCX0KICAgICAgIH0gZWxzZSB7CiAgICAgICAgIHdhcm4oIkNvdWxkbid0IGNsb25lIFBEVSBmb3IgaW5mb3JtIHJlc3BvbnNlIik7CiAgICAgICB9CkBAIC0xMjY2LDcgKzEyNTMsNyBAQAogCWNwID0gdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAogCQkJCSAgcGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGgpOwogCWF2X3B1c2godHJhcGxpc3QsIG5ld1NWcHYoY3AsIHN0cmxlbihjcCkpKTsKLQlmcmVlKGNwKTsKKwluZXRzbm1wX2ZyZWUoY3ApOwogICAgICAgfSBlbHNlIHsKIAkvKiAgVGhpcyBzaG91bGRuJ3QgZXZlciBoYXBwZW47IGV2ZXJ5IHNlc3Npb24gaGFzIGEgdHJhbnNwb3J0LiAgKi8KIAlhdl9wdXNoKHRyYXBsaXN0LCBuZXdTVnB2KCIiLCAwKSk7CkBAIC0xODMzLDEzICsxODIwLDE3IEBACiAgICAqKiBzbm1wX2FzeW5jX3NlbmQoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXFpZCBvbiBzdWNjZXNzLCAwIG9uIGZhaWx1cmUuCiAgICAqLwogICAgaWYgKFN2VFJVRShjb250ZXh0LT5wZXJsX2NiKSkgewotICAgICAgcmVxaWQgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX2J1bGt3YWxrX2FzeW5jX2NiLCAodm9pZCAqKWNvbnRleHQpOworICAgIGlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKyAgICB7CisgICAgIHJlcWlkID0gc25tcF9zZXNzX2FzeW5jX3NlbmQoc3MsIHBkdSwgX2J1bGt3YWxrX2FzeW5jX2NiLCAodm9pZCAqKWNvbnRleHQpOworICAgIH0gZWxzZSB7CisgICAgIHJlcWlkID0gc25tcF9hc3luY19zZW5kKHNzLCBwZHUsIF9idWxrd2Fsa19hc3luY19jYiwgKHZvaWQgKiljb250ZXh0KTsKKyAgICB9CiAKICAgICAgIERCUFJUKDIsKERCT1VUICJidWxrd2Fsa19zZW5kX3BkdSgpOiBzbm1wX2FzeW5jX3NlbmQgPT4gMHglMDhYXG4iLCByZXFpZCkpOwogCiAgICAgICBpZiAocmVxaWQgPT0gMCkgewotCSBzdl9zZXRwdigqZXJyX3N0cl9zdnAsIChjaGFyKilzbm1wX2FwaV9lcnJzdHJpbmcoc3MtPnNfc25tcF9lcnJubykpOwotCSBzdl9zZXRpdigqZXJyX251bV9zdnAsIHNzLT5zX3NubXBfZXJybm8pOworCSBzbm1wX3JldHVybl9lcnIoc3MsICplcnJfbnVtX3N2cCwgKmVycl9pbmRfc3ZwLCAqZXJyX3N0cl9zdnApOwogCSBnb3RvIGVycjsKICAgICAgIH0KIApAQCAtMjQ1Nyw2ICsyNDQ4LDggQEAKIAlURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBTTk1QX0RFRkFVTFRfVElNRU9VVCk7CiAJVEVTVF9DT05TVEFOVDIodmFsdWUsIG5hbWUsIFNOTVBfREVGQVVMVF9WRVJTSU9OLAogICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OKTsKKwlURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBTTk1QX0FQSV9TSU5HTEUpOworCVRFU1RfQ09OU1RBTlQodmFsdWUsIG5hbWUsIFNOTVBfQVBJX1RSQURJVElPTkFMKTsKIAlicmVhazsKICAgICBjYXNlICdYJzoKICAgICAgICAgICAgIGdvdG8gbm90X3RoZXJlOwpAQCAtMjQ3MSw2ICsyNDY0LDQ5IEBACiAgICAgcmV0dXJuIEVOT0VOVDsKIH0KIAorLyogCisgIFNpbmNlIHNfc25tcF9lcnJubyBjYW4ndCBiZSB0cnVzdGVkIHdpdGggU2luZ2xlIFNlc3Npb24sIHRoaXMgY2FsbHMgZWl0aGVyCisgIHNubXBfZXJyb3Igb3Igc25tcF9zZXNzX2Vycm9yIHRvIHBvcHVsYXRlIEVycm9yU3RyLEVycm9yTnVtLCBhbmQgRXJyb3JJbmQKKyAgaW4gU05NUDo6U2Vzc2lvbiBvYmplY3RzCisqLwordm9pZCBzbm1wX3JldHVybl9lcnIoIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnNzLCBTViAqZXJyX3N0ciwgU1YgKmVycl9udW0sIFNWICplcnJfaW5kICkKK3sKKwlpbnQgZXJyOworCWludCBsaWJlcnI7CisJY2hhciAqZXJyc3RyOworCWlmKHNzID09IE5VTEwpCisJCXJldHVybjsKKwlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJeworCQlzbm1wX3Nlc3NfZXJyb3Ioc3MsICZlcnIsICZsaWJlcnIsICZlcnJzdHIpOworCX0gZWxzZSB7CisJCXNubXBfZXJyb3Ioc3MsICZlcnIsICZsaWJlcnIsICZlcnJzdHIpOworCX0KKwlzdl9jYXRwdihlcnJfc3RyLCBlcnJzdHIpOworCXN2X3NldGl2KGVycl9udW0sIGxpYmVycik7CisJc3Zfc2V0aXYoZXJyX2luZCwgZXJyKTsKKwluZXRzbm1wX2ZyZWUoZXJyc3RyKTsKK30KKworCisvKiAKKyAgaW50IHNubXBfYXBpX21vZGUoIGludCBtb2RlICkgCisgIFJldHVybnMgb3Igc2V0cyBzdGF0aWMgaW50IGFwaV9tb2RlIGZvciByZWZlcmVuY2UgYnkgZnVuY3Rpb25zIHRvIGRldGVybWluZQorICB3aGV0aGVyIHRvIHVzZSBUcmFkaXRpb25hbCAobm9uLXRocmVhZHNhZmUpIG9yIFNpbmdsZS1TZXNzaW9uICh0aHJlYWRzYWZlKQorICBTTk1QIEFQSSBjYWxscy4KKyAKKyAgQ2FsbCB3aXRoIChpbnQpTlVMTCB0byByZXR1cm4gdGhlIGN1cnJlbnQgbW9kZSwgb3Igd2l0aCBTTk1QX0FQSV9UUkFESVRJT05BTAorICBvciBTTk1QX0FQSV9TSU5HTEUgdG8gc2V0IHRoZSBjdXJyZW50IG1vZGUuICAoZGVmaW5lZCBhYm92ZSkKKyAKKyAgcG0gc2lkZSBjYWxsIGRlZmF1bHRzIHRvIChpbnQpTlVMTAorKi8KK2ludCBzbm1wX2FwaV9tb2RlKCBpbnQgbW9kZSApCit7CisJaWYgKG1vZGUgPT0gMCkKKwkJcmV0dXJuIGFwaV9tb2RlOworCWFwaV9tb2RlID0gbW9kZTsKKwlyZXR1cm4gYXBpX21vZGU7Cit9CiAKIE1PRFVMRSA9IFNOTVAJCVBBQ0tBR0UgPSBTTk1QCQlQUkVGSVggPSBzbm1wCiAKQEAgLTI1MDAsNiArMjUzNiwxMyBAQAogICAgIENPREU6CiAgICAgICAgIF9fbGlicmFyaWVzX2luaXQoYXBwbmFtZSk7CiAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorIyBQZXJsIGNhbGwgZGVmYXVsdHMgdG8gKGludClOVUxMIHdoZW4gZ2l2ZW4gbm8gYXJncywgc28gaXQgd2lsbCByZXR1cm4KKyMgdGhlIGN1cnJlbnQgYXBpX21vZGUgdmFsdWVzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraW50IAorc25tcF9hcGlfbW9kZShtb2RlPTApCisJaW50IG1vZGUKIAogU25tcFNlc3Npb24gKgogc25tcF9uZXdfc2Vzc2lvbih2ZXJzaW9uLCBjb21tdW5pdHksIHBlZXIsIGxwb3J0LCByZXRyaWVzLCB0aW1lb3V0KQpAQCAtMjU0NSw3ICsyNTg4LDEyIEBACiAgICAgICAgICAgIHNlc3Npb24udGltZW91dCA9IHRpbWVvdXQ7IC8qIDEwMDAwMDBMICovCiAgICAgICAgICAgIHNlc3Npb24uYXV0aGVudGljYXRvciA9IE5VTEw7CiAKLSAgICAgICAgICAgc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworCSAgIGlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkgICB7CisJICAgICAgICAgICBzcyA9IHNubXBfc2Vzc19vcGVuKCZzZXNzaW9uKTsKKwkgICB9IGVsc2UgeworCQkgICBzcyA9IHNubXBfb3Blbigmc2Vzc2lvbik7CisJICAgfQogCiAgICAgICAgICAgIGlmIChzcyA9PSBOVUxMKSB7CiAJICAgICAgaWYgKHZlcmJvc2UpIHdhcm4oImVycm9yOnNubXBfbmV3X3Nlc3Npb246IENvdWxkbid0IG9wZW4gU05NUCBzZXNzaW9uIik7CkBAIC0yNTk3LDcgKzI2NDUsNyBAQAogICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogCSAgIH0KIAotCSAgIHNlc3Npb24ucGVlcm5hbWUgPSBzdHJkdXAocGVlcik7CisJICAgc2Vzc2lvbi5wZWVybmFtZSA9IHBlZXI7CiAgICAgICAgICAgIHNlc3Npb24ucmV0cmllcyA9IHJldHJpZXM7IC8qIDUgKi8KICAgICAgICAgICAgc2Vzc2lvbi50aW1lb3V0ID0gdGltZW91dDsgLyogMTAwMDAwMEwgKi8KICAgICAgICAgICAgc2Vzc2lvbi5hdXRoZW50aWNhdG9yID0gTlVMTDsKQEAgLTI3MTQsMTQgKzI3NjIsMjQgQEAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICBzcyA9IHNubXBfb3Blbigmc2Vzc2lvbik7CisJICAgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSAgIHsKKwkgICAgICAgICAgIHNzID0gc25tcF9zZXNzX29wZW4oJnNlc3Npb24pOworCSAgIH0gZWxzZSB7CisJCSAgIHNzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKwkgICB9CiAKICAgICAgICAgICAgaWYgKHNzID09IE5VTEwpIHsKIAkgICAgICBpZiAodmVyYm9zZSkgd2FybigiZXJyb3I6c25tcF9uZXdfdjNfc2Vzc2lvbjpDb3VsZG4ndCBvcGVuIFNOTVAgc2Vzc2lvbiIpOwogICAgICAgICAgICB9CiAgICAgICAgIGVuZDoKICAgICAgICAgICAgUkVUVkFMID0gc3M7Ci0JICAgZnJlZSAoc2Vzc2lvbi5jb250ZXh0RW5naW5lSUQpOworCSAgIG5ldHNubXBfZnJlZShzZXNzaW9uLnNlY3VyaXR5UHJpdkxvY2FsS2V5KTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eVByaXZQcm90byk7CisJICAgbmV0c25tcF9mcmVlKHNlc3Npb24uc2VjdXJpdHlBdXRoTG9jYWxLZXkpOworCSAgIG5ldHNubXBfZnJlZShzZXNzaW9uLnNlY3VyaXR5QXV0aFByb3RvKTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5jb250ZXh0RW5naW5lSUQpOworCSAgIG5ldHNubXBfZnJlZShzZXNzaW9uLnNlY3VyaXR5RW5naW5lSUQpOwogCX0KICAgICAgICAgT1VUUFVUOgogICAgICAgICBSRVRWQUwKQEAgLTI3NjgsOCArMjgyNiw4IEBACiAJICAgfQogICAgICAgICAgICAvKiBXQVJOSU5HIExFQUtBR0UgYnV0IEkgY2FudCBmcmVlIGxpYiBtZW1vcnkgdW5kZXIgd2luMzIgKi8KICAgICAgICAgICAgc3MtPmNvbW11bml0eV9sZW4gPSBzdHJsZW4oKGNoYXIgKiljb21tdW5pdHkpOwotICAgICAgICAgICBzcy0+Y29tbXVuaXR5ID0gKHVfY2hhciAqKXN0cmR1cChjb21tdW5pdHkpOwotCSAgIHNzLT5wZWVybmFtZSA9IHN0cmR1cChwZWVyKTsKKyAgICAgICAgICAgc3MtPmNvbW11bml0eSA9ICh1X2NoYXIgKiluZXRzbm1wX3N0cmR1cChjb21tdW5pdHkpOworCSAgIHNzLT5wZWVybmFtZSA9IG5ldHNubXBfc3RyZHVwKHBlZXIpOwogCSAgIHNzLT5sb2NhbF9wb3J0ID0gbHBvcnQ7CiAgICAgICAgICAgIHNzLT5yZXRyaWVzID0gcmV0cmllczsgLyogNSAqLwogICAgICAgICAgICBzcy0+dGltZW91dCA9IHRpbWVvdXQ7IC8qIDEwMDAwMDBMICovCkBAIC0zMDExLDE1ICszMDY5LDE5IEBACiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnBlcmxfY2IgPSBuZXdTVnN2KHBlcmxfY2FsbGJhY2spOwogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5zZXNzX3JlZiA9IG5ld1JWX2luYyhTdlJWKHNlc3NfcmVmKSk7CiAKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfc2Vzc19hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil4c19jYl9kYXRhKTsKKwkJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil4c19jYl9kYXRhKTsKKwkJfQogICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdihzdGF0dXMpKSk7IC8qIHB1c2ggdGhlIHJlcWlkPz8gKi8KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOwotICAgICAgICAgICAgICAgICAgICBzdl9jYXRwdigqZXJyX3N0cl9zdnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilzbm1wX2FwaV9lcnJzdHJpbmcoc3MtPnNfc25tcF9lcnJubykpOwotICAgICAgICAgICAgICAgICAgICBzdl9zZXRpdigqZXJyX251bV9zdnAsIHNzLT5zX3NubXBfZXJybm8pOworCQkJCQlzbm1wX3JldHVybl9lcnIoc3MsICplcnJfc3RyX3N2cCwgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnApOwogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoJnN2X3VuZGVmKTsKICAgICAgICAgICAgICAgICAgfQogCQkgZ290byBkb25lOwpAQCAtMzE5NCwxNSArMzI1NiwxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdTVnN2KHNlc3NfcmVmKTsKIAorCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKwkJIHN0YXR1cyA9IHNubXBfc2Vzc19hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKKwkJCQkJICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoc3RhdHVzKSkpOyAvKiBwdXNoIHRoZSByZXFpZD8/ICovCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgICAgICAgc3ZfY2F0cHYoKmVycl9zdHJfc3ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkgIAkgICAgc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX251bV9zdnAsICplcnJfaW5kX3N2cCwgKmVycl9zdHJfc3ZwKTsgIAogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoJnN2X3VuZGVmKTsKICAgICAgICAgICAgICAgICAgfQogCQkgZ290byBkb25lOwpAQCAtMzQzMSwxNSArMzQ5NywxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdTVnN2KHNlc3NfcmVmKTsKIAorCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKyAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9zZXNzX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJCQkJCXNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcygmc3ZfdW5kZWYpOwogICAgICAgICAgICAgICAgICB9CiAJCSBnb3RvIGRvbmU7CkBAIC0zNjY5LDE1ICszNzM5LDE5IEBACiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnBlcmxfY2IgPSBuZXdTVnN2KHBlcmxfY2FsbGJhY2spOwogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5zZXNzX3JlZiA9IG5ld1NWc3Yoc2Vzc19yZWYpOwogCisJCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkJeworICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoc3RhdHVzKSkpOyAvKiBwdXNoIHRoZSByZXFpZD8/ICovCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgICAgICAgc3ZfY2F0cHYoKmVycl9zdHJfc3ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkJCQkJc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX251bV9zdnAsICplcnJfaW5kX3N2cCwgKmVycl9zdHJfc3ZwKTsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7CiAgICAgICAgICAgICAgICAgIH0KIAkJIGdvdG8gZG9uZTsKQEAgLTQwMjgsNyArNDEwMiw3IEBACiAJICAgICAgfQogCiAJICAgICAgLyogU2VudCBva2F5Li4uICBSZXR1cm4gdGhlIHJlcXVlc3QgSUQgaW4gJ3BkdScgYXMgYW4gU3ZJVi4gKi8KLQkgICAgICBEQlBSVCgxLChEQk9VVCAiT2theSwgcmVxdWVzdCBpZCBpcyAlcFxuIiwgcGR1KSk7CisJICAgICAgREJQUlQoMSwoREJPVVQgIk9rYXksIHJlcXVlc3QgaWQgaXMgJWxkXG4iLCAobG9uZykoaW50cHRyX3QpcGR1KSk7CiAvKgkgICAgICBYU1JFVFVSTl9JVigoaW50cHRyX3QpcGR1KTsgKi8KIAkgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KChJVilwZHUpKSk7CiAJICAgICAgWFNSRVRVUk4oMSk7CkBAIC00MjA4LDcgKzQyODIsNyBAQAogICAgICAgICAgICAgICB9IC8qIGZvciBhbGwgdGhlIHZhcnMgKi8KICAgICAgICAgICAgICAgfQogCi0JICAgICAgcGR1LT5lbnRlcnByaXNlID0gKG9pZCAqKW1hbGxvYyggTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisJICAgICAgcGR1LT5lbnRlcnByaXNlID0gKG9pZCAqKW5ldHNubXBfbWFsbG9jKE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOwogICAgICAgICAgICAgICB0cCA9IF9fdGFnMm9pZChlbnRlcnByaXNlLE5VTEwsIHBkdS0+ZW50ZXJwcmlzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBkdS0+ZW50ZXJwcmlzZV9sZW5ndGgsIE5VTEwsIGJlc3RfZ3Vlc3MpOwogICAJICAgICAgaWYgKHBkdS0+ZW50ZXJwcmlzZV9sZW5ndGggPT0gMCkgewpAQCAtNDIxOSwxMiArNDI5MywxMiBAQAogCQkgIGFnZW50LWFkZHJlc3MgZmllbGQgdG8gdGhhdC4gIE90aGVyd2lzZSBzZXQgaXQgdG8KIAkJICBvdXIgYWRkcmVzcy4gICovCiAgICAgICAgICAgICAgIGlmIChhZ2VudCAmJiBzdHJsZW4oYWdlbnQpKSB7Ci0gICAgICAgICAgICAgICAgIGlmIChfX3BhcnNlX2FkZHJlc3MoYWdlbnQpID09IC0xICYmIHZlcmJvc2UpIHsKLQkJICAgd2FybigiZXJyb3I6dHJhcDppbnZhbGlkIGFnZW50IGFkZHJlc3M6ICVzIiwgYWdlbnQpOwotCQkgICBnb3RvIGVycjsKLSAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLQkJICAgKigoaW5fYWRkcl90ICopcGR1LT5hZ2VudF9hZGRyKSA9IF9fcGFyc2VfYWRkcmVzcyhhZ2VudCk7Ci0JCSB9CisgICAgICAgICAgICAgICAgIGlmICgwID4gbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0KGFnZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5fYWRkcl90ICopcGR1LT5hZ2VudF9hZGRyKSl7CisgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCJlcnJvcjp0cmFwOmludmFsaWQgYWdlbnQgYWRkcmVzczogJXMiLCBhZ2VudCk7CisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgKigoaW5fYWRkcl90ICopcGR1LT5hZ2VudF9hZGRyKSA9IGdldF9teWFkZHIoKTsKICAgICAgICAgICAgICAgfQpAQCAtNDIzMiw5ICs0MzA2LDE0IEBACiAgICAgICAgICAgICAgIHBkdS0+c3BlY2lmaWNfdHlwZSA9IHNwZWNpZmljOwogICAgICAgICAgICAgICBwZHUtPnRpbWUgPSB1cHRpbWU7CiAKLSAgICAgICAgICAgICAgaWYgKHNubXBfc2VuZChzcywgcGR1KSA9PSAwKSB7CisJICAgICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJICAgICB7CisJCWlmKHNubXBfc2Vzc19zZW5kKHNzLHBkdSkgPT0gMCkKKwkJCXNubXBfZnJlZV9wZHUocGR1KTsKKwkgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgCiAJICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOwotICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnB2KFpFUk9fQlVUX1RSVUUsMCkpKTsKICAgICAgICAgICAgfSBlbHNlIHsKIGVycjoKQEAgLTQzNjUsOSArNDQ0NCwxNCBAQAogICAgICAgICAgICAgICAgICB9IC8qIGlmIHZhcl9yZWYgaXMgb2sgKi8KICAgICAgICAgICAgICAgfSAvKiBmb3IgYWxsIHRoZSB2YXJzICovCiAKLSAgICAgICAgICAgICAgaWYgKHNubXBfc2VuZChzcywgcGR1KSA9PSAwKSB7CisJICAgICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJICAgICB7CisgICAgICAgICAgICAgIGlmIChzbm1wX3Nlc3Nfc2VuZChzcywgcGR1KSA9PSAwKQogCSAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgfQorCSAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgaWYgKHNubXBfc2VuZChzcywgcGR1KSA9PSAwKSAKKwkgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7CisgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWcHYoWkVST19CVVRfVFJVRSwwKSkpOwogICAgICAgICAgICB9IGVsc2UgewpAQCAtNDUxMSwxNSArNDU5NSwxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdSVl9pbmMoU3ZSVihzZXNzX3JlZikpOwogCisJCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkJeworICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoc3RhdHVzKSkpOyAvKiBwdXNoIHRoZSByZXFpZD8/ICovCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgICAgICAgc3ZfY2F0cHYoKmVycl9zdHJfc3ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkJCQkJc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX251bV9zdnAsICplcnJfaW5kX3N2cCwgKmVycl9zdHJfc3ZwKTsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7CiAgICAgICAgICAgICAgICAgIH0KIAkJIGdvdG8gZG9uZTsKQEAgLTQ3NzUsMTEgKzQ4NjMsMTggQEAKIAl9CiAKIAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE5vdGU6IHNzPShTbm1wU2Vzc2lvbiopTlVMTCBpcyBzbyAmU05NUDo6TWFpbkxvb3AoKSBjYW4gc3RpbGwgYmUgY2FsbGVkIAorIyB3aXRob3V0IGEgc2VzcyBoYW5kbGVyIGFyZ3VtZW50LCB0aGlzIHdheSBJJ20gbm90IGJyZWFraW5nIGFueW9uZSdzIG9sZCBjb2RlCisjCisjIHNlZSBNYWluTG9vcCgpIGluIFNOTVAucG0gZm9yIG1vcmUgZGV0YWlscworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB2b2lkCi1zbm1wX21haW5fbG9vcCh0aW1lb3V0X3NlYyx0aW1lb3V0X3VzZWMscGVybF9jYWxsYmFjaykKK3NubXBfbWFpbl9sb29wKHRpbWVvdXRfc2VjLHRpbWVvdXRfdXNlYyxwZXJsX2NhbGxiYWNrLHNzPShTbm1wU2Vzc2lvbiopTlVMTCkKIAlpbnQgCXRpbWVvdXRfc2VjCiAJaW50IAl0aW1lb3V0X3VzZWMKIAlTViAqCXBlcmxfY2FsbGJhY2sKKwlTbm1wU2Vzc2lvbiAqc3MKIAlDT0RFOgogCXsKICAgICAgICAgaW50IG51bWZkcywgZmRfY291bnQ7CkBAIC00NzkxLDcgKzQ4ODYsNiBAQAogICAgICAgICBpbnQgYmxvY2s7CiAJU1YgKmNiOwogCi0KICAJbWFpbmxvb3BfZmluaXNoID0gMDsKIAogCWl0dnAgPSAmaW50ZXJ2YWw7CkBAIC00ODA5LDcgKzQ5MDMsMTIgQEAKICAgICAgICAgICAgYmxvY2sgPSAxOwogICAgICAgICAgICB0dnAgPSAmdGltZV92YWw7CiAgICAgICAgICAgIHRpbWVyY2xlYXIodHZwKTsKKwkgIGlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkgIHsKKyAgICAgICAgICAgc25tcF9zZXNzX3NlbGVjdF9pbmZvKHNzLCZudW1mZHMsICZmZHNldCwgdHZwLCAmYmxvY2spOworCSAgfSBlbHNlIHsKICAgICAgICAgICAgc25tcF9zZWxlY3RfaW5mbygmbnVtZmRzLCAmZmRzZXQsIHR2cCwgJmJsb2NrKTsKKwkgIH0KICAgICAgICAgICAgX19yZWNhbGNfdGltZW91dCh0dnAsY3R2cCxsdHZwLGl0dnAsJmJsb2NrKTsKICAgICAgICAgICAgIyBwcmludGYoInByZS1zZWxlY3Q6IG51bWZkcyA9ICVsZCwgYmxvY2sgPSAlbGRcbiIsIG51bWZkcywgYmxvY2spOwogICAgICAgICAgICBpZiAoYmxvY2sgPT0gMSkgdHZwID0gTlVMTDsgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCkBAIC00ODE4LDcgKzQ5MTcsMTIgQEAKICAgICAgICAgICAgaWYgKGZkX2NvdW50ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBFTlRFUjsKICAgICAgICAgICAgICAgICAgICAgICAgU0FWRVRNUFM7Ci0gICAgICAgICAgICAgIHNubXBfcmVhZCgmZmRzZXQpOworCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKwkJICBzbm1wX3Nlc3NfcmVhZChzcywgJmZkc2V0KTsKKwkJfSBlbHNlIHsKKyAgICAgICAgICAgICAgCSAgc25tcF9yZWFkKCZmZHNldCk7CisJCX0KICAgICAgICAgICAgICAgICAgICAgICAgRlJFRVRNUFM7CiAgICAgICAgICAgICAgICAgICAgICAgIExFQVZFOwogCkBAIC00ODI3LDcgKzQ5MzEsMTIgQEAKIAkJIFNQQUdBSU47CiAJCSBFTlRFUjsKIAkJIFNBVkVUTVBTOworCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKwkJc25tcF9zZXNzX3RpbWVvdXQoIHNzICk7CisJCX0gZWxzZSB7IAogICAgICAgICAgICAgICAgICBzbm1wX3RpbWVvdXQoKTsKKwkJfQogICAgICAgICAgICAgICAgICBpZiAoIXRpbWVyaXNzZXQoY3R2cCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFN2VFJVRShwZXJsX2NhbGxiYWNrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvKiBzdl8ybW9ydGFsKHBlcmxfY2FsbGJhY2spOyAqLwpAQCAtNTA0NSw5ICs1MTU0LDcgQEAKIAkgICAgICAgICAgLyogd2UgbXVzdCBiZSBsb29raW5nIGF0IGRlc2NyaXB0aW9uICovCiAgICAgICAgICAgICAgICAgIHN2X3NldHB2KHJldCx0cC0+ZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAnaSc6IC8qIGluZGV4ZXMgKi8KLSAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAoImluZGV4ZXMiLCBrZXksIHN0cmxlbihrZXkpKSkgYnJlYWs7Ci0gICAgICAgICAgICAgICAgIGluZGV4X2F2ID0gbmV3QVYoKTsKKyAgICAgICAgICAgICAgY2FzZSAnaSc6IC8qIGluZGV4ZXMsIGltcGxpZWQgKi8KICAgICAgICAgICAgICAgICAgaWYgKHRwLT5hdWdtZW50cykgewogIAkgICAgICAgICAgICAgY2xlYXJfdHJlZV9mbGFncyhnZXRfdHJlZV9oZWFkKCkpOyAKICAgICAgICAgICAgICAgICAgICAgIHRwdG1wID0gZmluZF9iZXN0X3RyZWVfbm9kZSh0cC0+YXVnbWVudHMsIGdldF90cmVlX2hlYWQoKSwgTlVMTCk7CkBAIC01MDU3LDYgKzUxNjQsMTkgQEAKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHRwdG1wID0gdHA7CiAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgaWYgKHN0cmNtcCgiaW1wbGllZCIsIGtleSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgLyogb25seSB0aGUgbGFzdCBpbmRleCBjYW4gYmUgaW1wbGllZCAqLworICAgICAgICAgICAgICAgICAgICAgaW50IGlzaW1wbGllZCA9IDA7CisgICAgICAgICAgICAgICAgICAgICBpZiAodHB0bXAgJiYgdHB0bXAtPmluZGV4ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaXA9dHB0bXAtPmluZGV4ZXM7IGlwLT5uZXh0OyBpcCA9IGlwLT5uZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW1wbGllZCA9IGlwLT5pc2ltcGxpZWQ7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBzdl9zZXRpdihyZXQsIGlzaW1wbGllZCk7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBpZiAoc3RybmNtcCgiaW5kZXhlcyIsIGtleSwgc3RybGVuKGtleSkpKSBicmVhazsKKyAgICAgICAgICAgICAgICAgaW5kZXhfYXYgPSBuZXdBVigpOwogICAgICAgICAgICAgICAgICBpZiAodHB0bXApCiAgICAgICAgICAgICAgICAgICAgICBmb3IoaXA9dHB0bXAtPmluZGV4ZXM7IGlwICE9IE5VTEw7IGlwID0gaXAtPm5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBhdl9wdXNoKGluZGV4X2F2LG5ld1NWcHYoKGlwLT5pbGFiZWwpLHN0cmxlbihpcC0+aWxhYmVsKSkpOwpAQCAtNTIzOCw2ICs1MzU4LDE0IEBACiAJU25tcFNlc3Npb24gKnNlc3NfcHRyCiAJQ09ERToKIAl7CisJaWYoc2Vzc19wdHIgIT0gTlVMTCkKKwl7CisgCSBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJIHsKKyAgICAgICAgICAgc25tcF9zZXNzX2Nsb3NlKCBzZXNzX3B0ciApOworCSB9IGVsc2UgeyAKICAgICAgICAgICAgc25tcF9jbG9zZSggc2Vzc19wdHIgKTsKKwkgfQorCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC90L3N0YXJ0YWdlbnQucGwgYi9wZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsCmluZGV4IDk1Y2QzOGUuLjNlOTJjMTIgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC90L3N0YXJ0YWdlbnQucGwKKysrIGIvcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbApAQCAtMzksNDMgKzM5LDUwIEBACiAgIHJlcXVpcmUgV2luMzI6OlByb2Nlc3M7CiB9CiAKLXN1YiBzbm1wdGVzdF9jbGVhbnVwIHsKLSAgICBzbGVlcCAxOyAjIHN0cmFuZ2VseSB3ZSBuZWVkIHRvIHdhaXQgZm9yIHBpZCBmaWxlcyB0byBhcHBlYXIgPz8KLSAgICBpZiAoKC1lICJ0L3NubXBkLnBpZCIpICYmICgtciAidC9zbm1wZC5waWQiKSkgewotICAgICAgICAjd2FybiAiXG5TdG9wcGluZyBhZ2VudHMgZm9yIHRlc3Qgc2NyaXB0ICQwXG4iOwotICAgICAgICAjIE1ha2luZyBzdXJlIHRoYXQgYW55IHJ1bm5pbmcgYWdlbnRzIGFyZSBraWxsZWQuCi0JIyB3YXJuICJraWxsaW5nIHNubXBkOiIsIGBjYXQgdC9zbm1wZC5waWRgLCAiXG4iOwotICAgICAgICBpZiAoJF5PICF+IC93aW4zMi9pKSB7Ci0gICAgICAgICAgc3lzdGVtICJraWxsIGBjYXQgdC9zbm1wZC5waWRgID4gL2Rldi9udWxsIDI+JjEiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIG9wZW4oSCwgIjx0L3NubXBkLnBpZCIpOwotICAgICAgICAgIG15ICRwaWQgPSAoPEg+KTsKLSAgICAgICAgICBjbG9zZSAoSCk7Ci0gICAgICAgICAgaWYgKCRwaWQgPiAwKSB7Ci0gICAgICAgICAgICBXaW4zMjo6UHJvY2Vzczo6S2lsbFByb2Nlc3MoJHBpZCwgMCkKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQl1bmxpbmsgInQvc25tcGQucGlkIjsKK3N1YiBydW5fYXN5bmMgeworICBteSAoJHBpZGZpbGUsICRjbWQsIEBhcmdzKSA9IEBfOworICBpZiAoLXIgIiRjbWQiIGFuZCAteCAiJGNtZCIpIHsKKyAgICBpZiAoJF5PID1+IC93aW4zMi9pKSB7CisgICAgICAkY21kID1+IHMvXC8vXFwvZzsKKyAgICAgIHN5c3RlbSAic3RhcnQgXCIkY21kXCIgL21pbiBjbWQgL2MgXCIkY21kIEBhcmdzIDI+JjFcIiI7CisgICAgfSBlbHNlIHsKKyAgICAgIHN5c3RlbSAiJGNtZCBAYXJncyAyPiYxIjsKICAgICB9Ci0gICAgaWYgKCgtZSAidC9zbm1wdHJhcGQucGlkIikgJiYgKC1yICJ0L3NubXB0cmFwZC5waWQiKSkgewotICAgICAgICAjIE1ha2luZyBzdXJlIHRoYXQgYW55IHJ1bm5pbmcgYWdlbnRzIGFyZSBraWxsZWQuCi0JIyB3YXJuICJraWxsaW5nIHNubXB0cmFwOiIsIGBjYXQgdC9zbm1wdHJhcGQucGlkYCwgIlxuIjsKLSAgICAgICAgaWYgKCReTyAhfiAvd2luMzIvaSkgewotICAgICAgICAgIHN5c3RlbSAia2lsbCBgY2F0IHQvc25tcHRyYXBkLnBpZGAgPiAvZGV2L251bGwgMj4mMSI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgb3BlbihILCAiPHQvc25tcHRyYXBkLnBpZCIpOwotICAgICAgICAgIG15ICRwaWQgPSAoPEg+KTsKLSAgICAgICAgICBjbG9zZSAoSCk7Ci0gICAgICAgICAgaWYgKCRwaWQgPiAwKSB7Ci0gICAgICAgICAgICBXaW4zMjo6UHJvY2Vzczo6S2lsbFByb2Nlc3MoJHBpZCwgMCkKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgICAKLQl1bmxpbmsgInQvc25tcHRyYXBkLnBpZCI7CisgICAgIyBXYWl0IGF0IG1vc3QgdGhyZWUgc2Vjb25kcyBmb3IgdGhlIHBpZCBmaWxlIHRvIGFwcGVhci4KKyAgICBmb3IgKCRpID0gMDsgKCRpIDwgMykgJiYgISAoLXIgIiRwaWRmaWxlIik7ICsrJGkpIHsKKyAgICAgIHNsZWVwIDE7CiAgICAgfQorICB9IGVsc2UgeworICAgIHdhcm4gIkNvdWxkbid0IHJ1biAkY21kXG4iOworICB9CiB9CisKK3N1YiBzbm1wdGVzdF9jbGVhbnVwIHsKKyAga2lsbF9ieV9waWRfZmlsZSgidC9zbm1wZC5waWQiKTsKKyAgdW5saW5rKCJ0L3NubXBkLnBpZCIpOworICBraWxsX2J5X3BpZF9maWxlKCJ0L3NubXB0cmFwZC5waWQiKTsKKyAgdW5saW5rKCJ0L3NubXB0cmFwZC5waWQiKTsKK30KKworc3ViIGtpbGxfYnlfcGlkX2ZpbGUgeworICBpZiAoKC1lICIkX1swXSIpICYmICgtciAiJF9bMF0iKSkgeworICAgIGlmICgkXk8gIX4gL3dpbjMyL2kpIHsKKyAgICAgICMgVW5peCBvciBXaW5kb3dzICsgQ3lnd2luLgorICAgICAgc3lzdGVtICJraWxsIGBjYXQgJF9bMF1gID4gL2Rldi9udWxsIDI+JjEiOworICAgIH0gZWxzZSB7CisgICAgICAjIFdpbmRvd3MgKyBNU1ZDIG9yIFdpbmRvd3MgKyBNaW5HVy4KKyAgICAgIG9wZW4oSCwgIjwkX1swXSIpOworICAgICAgbXkgJHBpZCA9ICg8SD4pOworICAgICAgY2xvc2UgKEgpOworICAgICAgaWYgKCRwaWQgPiAwKSB7CisgICAgICAgIFdpbjMyOjpQcm9jZXNzOjpLaWxsUHJvY2VzcygkcGlkLCAwKQorICAgICAgfQorICAgIH0KKyAgfQorfQorCisKKyMgU3RvcCBhbnkgcHJvY2Vzc2VzIHN0YXJ0ZWQgZHVyaW5nIGEgcHJldmlvdXMgdGVzdC4KIHNubXB0ZXN0X2NsZWFudXAoKTsKIAogI09wZW4gdGhlIHNubXB0ZXN0LmNtZCBmaWxlIGFuZCBnZXQgdGhlIGluZm8KQEAgLTk4LDQ4ICsxMDUsMjEgQEAKICAgZGllICgiQ291bGQgbm90IHN0YXJ0IGFnZW50LiBDb3VsZG4ndCBmaW5kIHNubXB0ZXN0LmNtZCBmaWxlXG4iKTsKIH0KIAorIyBTdGFydCBzbm1wZCBhbmQgc25tcHRyYXBkLgorCiAjd2FybiAiXG5TdGFydGluZyBhZ2VudHMgZm9yIHRlc3Qgc2NyaXB0ICQwXG4iOwogCi1pZiAoJF5PICF+IC93aW4zMi9pKSB7Ci0gICMgVW5peAotICBpZiAoJHNubXBkX2NtZCkgewotICAgIGlmICgtciAkc25tcGRfY21kIGFuZCAteCAkc25tcGRfY21kKSB7Ci0gICAgICAkYmFzZWRpciA9IGBwd2RgOwotICAgICAgY2hvbXAgJGJhc2VkaXI7Ci0gICAgICBzeXN0ZW0gIiRzbm1wZF9jbWQgLXIgLUxmIHQvc25tcHRlc3QubG9nIC1NKyRtaWJkaXIgLUMgLWMgJGJhc2VkaXIvdC9zbm1wdGVzdC5jb25mIC1wICRiYXNlZGlyL3Qvc25tcGQucGlkICR7YWdlbnRfaG9zdH06JHthZ2VudF9wb3J0fSA+IC9kZXYvbnVsbCAyPiYxIjsKLSAgICB9IGVsc2UgewotICAgICAgd2FybigiQ291bGRuJ3QgcnVuIHNubXBkXG4iKTsKLSAgICB9Ci0gIH0KLSAgaWYgKCRzbm1wdHJhcGRfY21kKSB7Ci0gICAgaWYgKC1yICRzbm1wdHJhcGRfY21kIGFuZCAteCAkc25tcHRyYXBkX2NtZCkgewotICAgICAgc3lzdGVtICIkc25tcHRyYXBkX2NtZCAtcCB0L3NubXB0cmFwZC5waWQgLU0rJG1pYmRpciAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLUMgJHthZ2VudF9ob3N0fToke3RyYXBfcG9ydH0gPiAvZGV2L251bGwgMj4mMSI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHdhcm4oIkNvdWxkbid0IHJ1biBzbm1wdHJhcGRcbiIpOwotICAgIH0KLSAgfQorbXkgJHNjcmlwdG5hbWUgPSAic25tcHRlc3QiOworaWYgKCQwID1+IC9edFtcL1xcXSguKilcLnQkLykgeworICAkc2NyaXB0bmFtZSA9ICQxOwogfQotZWxzZSB7Ci0gICMgV2luZG93cwotICBpZiAoJHNubXBkX2NtZCkgewotICAgICAgaWYgKC1yICRzbm1wZF9jbWQpIHsKLSAgICAgICAgI3ByaW50IFNUREVSUiAic3RhcnQgXCJTTk1QRFwiIC9taW4gXCIkc25tcGRfY21kXCIgLXIgLUxmIHQvc25tcHRlc3QubG9nIC1DIC1jIHQvc25tcHRlc3QuY29uZiAtcCB0L3NubXBkLnBpZCAkYWdlbnRfcG9ydCA+IG51bFxuIjsKLSAgICAgIHN5c3RlbSAic3RhcnQgXCJTTk1QRFwiIC9taW4gXCIkc25tcGRfY21kXCIgLXIgLUxmIHQvc25tcHRlc3QubG9nIC1DIC1jIHQvc25tcHRlc3QuY29uZiAtcCB0L3NubXBkLnBpZCAkYWdlbnRfcG9ydCA+IG51bCI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHdhcm4oIkNvdWxkbid0IHJ1biBzbm1wZFxuIik7Ci0gICAgfQotICB9Ci0gIGlmICgkc25tcHRyYXBkX2NtZCkgewotICAgIGlmICgtciAkc25tcHRyYXBkX2NtZCkgewotICAgICAgI3ByaW50IFNUREVSUiAic3RhcnQgL21pbiBcIlNOTVBUUkFQRFwiIFwiJHNubXB0cmFwZF9jbWRcIiAtTGYgdC9zbm1wdHJhcGR0ZXN0LmxvZyAtcCB0L3NubXB0cmFwZC5waWQgLUMgLWMgdC9zbm1wdGVzdC5jb25mICR0cmFwX3BvcnQgPiBudWxcbiI7Ci0gICAgICBzeXN0ZW0gInN0YXJ0IC9taW4gXCJTTk1QVFJBUERcIiBcIiRzbm1wdHJhcGRfY21kXCIgLUxmIHQvc25tcHRyYXBkdGVzdC5sb2cgLXAgdC9zbm1wdHJhcGQucGlkIC1DIC1jIHQvc25tcHRlc3QuY29uZiAkdHJhcF9wb3J0ID4gbnVsIjsKLSAgICB9IGVsc2UgewotICAgICAgd2FybigiQ291bGRuJ3QgcnVuIHNubXB0cmFwZFxuIik7Ci0gICAgfQotICB9Ci0gIHNsZWVwIDI7ICMgR2l2ZSBwcm9ncmFtcyB0aW1lIHRvIHN0YXJ0CiAKLX0gCitpZiAoJHNubXBkX2NtZCkgeworICBydW5fYXN5bmMoInQvc25tcGQucGlkIiwgIiRzbm1wZF9jbWQiLCAiLXIgLWQgLUxmIHQvc25tcGQtJHNjcmlwdG5hbWUubG9nIC1NKyRtaWJkaXIgLUMgLWMgdC9zbm1wdGVzdC5jb25mIC1wIHQvc25tcGQucGlkICR7YWdlbnRfaG9zdH06JHthZ2VudF9wb3J0fSA+dC9zbm1wZC0kc2NyaXB0bmFtZS5zdGRlcnIiKTsKK30KK2lmICgkc25tcHRyYXBkX2NtZCkgeworICBydW5fYXN5bmMoInQvc25tcHRyYXBkLnBpZCIsICIkc25tcHRyYXBkX2NtZCIsICItZCAtTGYgdC9zbm1wdHJhcGQtJHNjcmlwdG5hbWUubG9nIC1wIHQvc25tcHRyYXBkLnBpZCAtTSskbWliZGlyIC1DIC1jIHQvc25tcHRlc3QuY29uZiAtQyAke2FnZW50X2hvc3R9OiR7dHJhcF9wb3J0fSA+dC9zbm1wdHJhcGQtJHNjcmlwdG5hbWUuc3RkZXJyIik7Cit9CiAKIDE7CiAKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMIGIvcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwKaW5kZXggNWM5NDYzYS4uNGJjZjJhNCAxMDA2NDQKLS0tIGEvcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwKQEAgLTU3LDkgKzU3LDkgQEAKICAgICB9CiAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgZWxzZSB7CiAJJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwogCSRQYXJhbXN7J0xERExGTEFHUyd9ID0gIiRDb25maWd7bGRkbGZsYWdzfSAiIC4gYCRvcHRzLT57J25zY29uZmlnJ30gLS1sZGZsYWdzYDsKLQkkUGFyYW1zeydMSUJTJ30gPSAnLWxuZXRzbm1wdHJhcGQgLWxuZXRzbm1wYWdlbnQgLWxuZXRzbm1wJzsKKwkkUGFyYW1zeydMSUJTJ30gPSAnLWxuZXRzbm1wdHJhcGQgJyAuIGAkb3B0cy0+eyduc2NvbmZpZyd9IC0tYmFzZS1hZ2VudC1saWJzYDsKIAljaG9tcCgkUGFyYW1zeydMSUJTJ30pOwogCWlmICghJEVOVnsnTkVUU05NUF9DQ0ZMQUdTJ30pIHsKIAkgICAgJFBhcmFtc3snQ0NGTEFHUyd9ID0gYCRvcHRzLT57J25zY29uZmlnJ30gLS1jZmxhZ3NgOwpAQCAtMTQyLDcgKzE0Miw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0yMjUsNyArMjI1LDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCmluZGV4IDNhNTQyNWQuLmYwMTJkYTUgMTAwNjQ0Ci0tLSBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbQorKysgYi9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KQEAgLTQ3LDcgKzQ3LDcgQEAKIAlORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIKICk7CiAKLSRWRVJTSU9OID0gJzUuMDQwNCc7CiskVkVSU0lPTiA9ICc1LjA1MDInOwogCiAjIHN1YiBuZXcgewogIyAgICAgbXkgJHR5cGUgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54cyBiL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54cwppbmRleCA4NzEzZWZkLi5hNGZjMTM2IDEwMDY0NAotLS0gYS9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMKKysrIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzCkBAIC05OSw3ICs5OSw3IEBACiAgICAgICAgIGNoYXIgKnRzdHIgPSB0cmFuc3BvcnQtPmZfZm10YWRkcih0cmFuc3BvcnQsIHBkdS0+dHJhbnNwb3J0X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CiAgICAgICAgIFNUT1JFUERVcygicmVjZWl2ZWRmcm9tIiwgdHN0cik7Ci0gICAgICAgIGZyZWUodHN0cik7CisgICAgICAgIG5ldHNubXBfZnJlZSh0c3RyKTsKICAgICB9CiAKIApAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgZm9yKHZiID0gcGR1LT52YXJpYWJsZXM7IHZiOyB2YiA9IHZiLT5uZXh0X3ZhcmlhYmxlKSB7CiAKICAgICAgICAgLyogZ2V0IHRoZSBvaWQgKi8KLSAgICAgICAgbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9vaWQpOworICAgICAgICBvID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgICAgICBvLT5uYW1lID0gby0+bmFtZWJ1ZjsKICAgICAgICAgby0+bGVuID0gdmItPm5hbWVfbGVuZ3RoOwogICAgICAgICBtZW1jcHkoby0+bmFtZSwgdmItPm5hbWUsIHZiLT5uYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQAogCiAgICAgICAgIGF2X3B1c2godmJhLHRtcGFycmF5W2ldKTsKICAgICAgICAgYXZfcHVzaCh2YmEsbmV3U1Zwdm4oKGNoYXIgKikgb3V0YnVmLCBvb19sZW4pKTsKLSAgICAgICAgZnJlZShvdXRidWYpOworICAgICAgICBuZXRzbm1wX2ZyZWUob3V0YnVmKTsKICAgICAgICAgYXZfcHVzaCh2YmEsbmV3U1Zpdih2Yi0+dHlwZSkpOwogICAgICAgICBhdl9wdXNoKHZhcmJpbmRzLCAoU1YgKikgbmV3UlZfbm9pbmMoKFNWICopIHZiYSkpOwogICAgIH0KQEAgLTIxNCw3ICsyMTQsNyBAQAogCVNWICpydiA9IFBPUHM7CiAKIAlpZiAoU3ZUWVBFKHJ2KSAhPSBTVnRfSVYpIHsKLQkgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiIHBlcmwgY2FsbGJhY2sgZnVuY3Rpb24gJXAgcmV0dXJuZWQgYSBzY2FsYXIgb2YgdHlwZSAlZCBpbnN0ZWFkIG9mIGFuIGludGVnZXIsIGFzc3VtaW5nICVkIChORVRTTk1QVFJBUERfSEFORExFUl9PSylcbiIsIHBjYWxsYmFjaywgU3ZUWVBFKHJ2KSwgTkVUU05NUFRSQVBEX0hBTkRMRVJfT0spOworCSAgc25tcF9sb2coTE9HX1dBUk5JTkcsICIgcGVybCBjYWxsYmFjayBmdW5jdGlvbiAlcCByZXR1cm5lZCBhIHNjYWxhciBvZiB0eXBlICVsdSBpbnN0ZWFkIG9mIGFuIGludGVnZXIsIGFzc3VtaW5nICVkIChORVRTTk1QVFJBUERfSEFORExFUl9PSylcbiIsIHBjYWxsYmFjaywgKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHJ2KSwgTkVUU05NUFRSQVBEX0hBTkRMRVJfT0spOwogCX0KIAllbHNlIHsKIAkgIGludCBydmkgPSAoSVYpU3ZJVngocnYpOwpAQCAtMzAwLDcgKzMwMCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKGhhbmRsZXIpIHsKLSAgICAgICAgICAgICAgICBjYl9kYXRhID0gU05NUF9NQUxMT0NfVFlQRURFRih0cmFwZF9jYl9kYXRhKTsKKyAgICAgICAgICAgICAgICBjYl9kYXRhID0gbWFsbG9jKHNpemVvZih0cmFwZF9jYl9kYXRhKSk7CiAgICAgICAgICAgICAgICAgY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybGNhbGxiYWNrKTsKICAgICAgICAgICAgICAgICBoYW5kbGVyLT5oYW5kbGVyX2RhdGEgPSBjYl9kYXRhOwogICAgICAgICAgICAgICAgIGhhbmRsZXItPmF1dGh0eXBlcyA9ICgxIDw8IFZBQ01fVklFV19FWEVDVVRFKTsKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvTWFrZWZpbGUuUEwgYi9wZXJsL2FnZW50L01ha2VmaWxlLlBMCmluZGV4IGI0YjM1OGEuLmIyZTNiZDggMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9hZ2VudC9NYWtlZmlsZS5QTApAQCAtMzAsOSArMzAsOSBAQAogICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTkyLDcgKzE5Miw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTCBiL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTAppbmRleCAzYTRmMjAwLi40ODgxNWI2IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9hZ2VudC9TdXBwb3J0L01ha2VmaWxlLlBMCkBAIC0yOSw5ICsyOSw5IEBACiAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKICAgICAgICRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsJCi0gICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCI7CisgICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCAtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC1EX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIjsKICAgICAgICRzZXAgPSAnXFwnOwogICAgICAgJHNubXBfbGliX2ZpbGUgPSAnbmV0c25tcC5saWInOwogICAgICAgJHNubXBfbGlua19saWIgPSAnbmV0c25tcCc7CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE4NCw3ICsxODQsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSBiL3BlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtCmluZGV4IGRhOGM3N2UuLjg4YmVlZWQgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtCisrKyBiL3BlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtCkBAIC0yNiw3ICsyNiw3IEBACiBASVNBICAgICAgID0gcXcoRXhwb3J0ZXIgZ2V0TGVhZik7CiBARVhQT1JUICAgID0gcXcocmVnaXN0ZXJBZ2VudCBnZXRPaWRFbGVtZW50IHNldE9pZEVsZW1lbnQpOwogQEVYUE9SVF9PSyA9IHF3KCk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvYWdlbnQucG0gYi9wZXJsL2FnZW50L2FnZW50LnBtCmluZGV4IDYxOGEyYzYuLjUzMDc3MmUgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvYWdlbnQucG0KKysrIGIvcGVybC9hZ2VudC9hZ2VudC5wbQpAQCAtODcsNyArODcsNyBAQAogCVNOTVBfRVJSX0FVVEhPUklaQVRJT05FUlJPUgogCVNOTVBfRVJSX05PVFdSSVRBQkxFCiApOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpAQCAtNDkwLDYgKzQ5MCwyMCBAQAogCiAJJHJlcXVlc3QtPnNldFJlcGVhdCg1KTsKIAorICAgIGdldFNvdXJjZUlwICgpCisKKwlHZXRzIHRoZSBJUHY0IGFkZHJlc3Mgb2YgdGhlIGRldmljZSBtYWtpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIGhhbmRsZXIuCisKKwl1c2UgU29ja2V0OworCXByaW50ICJTb3VyY2U6ICIsIGluZXRfbnRvYSgkcmVxdWVzdC0+Z2V0U291cmNlSXAoKSksICJcbiI7CisKKyAgICBnZXREZXN0SXAgKCkKKworCUdldHMgdGhlIElQdjQgYWRkcmVzcyBvZiB0aGUgZGVzdGluYXRpb24gdGhhdCB0aGUgcmVxdWVzdCB3YXMgc2VudCB0by4KKworCXVzZSBTb2NrZXQ7CisJcHJpbnQgIkRlc3RpbmF0aW9uOiAiLCBpbmV0X250b2EoJHJlcXVlc3QtPmdldERlc3RJcCgpKSwgIlxuIjsKKwogPWhlYWQxIE1PREVTCiAKIAlNT0RFX0dFVApkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9hZ2VudC54cyBiL3BlcmwvYWdlbnQvYWdlbnQueHMKaW5kZXggNTYwNmMzYy4uYWI3N2M3NSAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9hZ2VudC54cworKysgYi9wZXJsL2FnZW50L2FnZW50LnhzCkBAIC0xOSw2ICsxOSwxMiBAQAogCiB0eXBlZGVmIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKk5ldFNOTVBfX2FnZW50X19uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uOwogCisvKiBDb3BpZWQgZnJvbSBzbm1wVURQRG9tYWluLmMgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfdWRwX2FkZHJfcGFpcl9zIHsKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7CisJc3RydWN0IGluX2FkZHIgbG9jYWxfYWRkcjsKK30gbmV0c25tcF91ZHBfYWRkcl9wYWlyOworCiB0eXBlZGVmIHN0cnVjdCBoYW5kbGVyX2NiX2RhdGFfcyB7CiAgICBTViAqcGVybF9jYjsKIH0gaGFuZGxlcl9jYl9kYXRhOwpAQCAtMjM4LDYgKzI0NCwxMSBAQAogaW50CiBpbml0X2FnZW50KG5hbWUpCiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgQ09ERToKKyAgICAgICAgU09DS19TVEFSVFVQOworICAgICAgICBSRVRWQUwgPSBpbml0X2FnZW50KG5hbWUpOworICAgIE9VVFBVVDoKKyAgICAgICAgUkVUVkFMCiAKIHZvaWQKIGluaXRfc25tcChuYW1lKQpAQCAtMjczLDcgKzI4NCw3IEBACiAgICAgICAgIGlmICgwKQogICAgICAgICAgICAgcHJpbnRmKCJtZSA9ICVwXG4iLCBtZSk7CiAgICAgICAgIHN0cmluZ3B0ciA9IFN2UFYodmFsdWUsIHN0cmluZ2xlbik7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsIHN0cmluZ3B0ciApOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMiLCBzdHJpbmdwdHIgKTsKICAgICB9CiAKIApAQCAtMzEzLDcgKzMyNCwxNCBAQAogdm9pZAogbnNhaHJfREVTVFJPWShyZWdpbmZvKQogCW5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8KKyAgICBQUkVJTklUOgorICAgICAgICBoYW5kbGVyX2NiX2RhdGEgKmNiX2RhdGE7CiAgICAgQ09ERToKKyAgICAgICAgaWYgKHJlZ2luZm8gJiYgcmVnaW5mby0+aGFuZGxlciAmJiByZWdpbmZvLT5oYW5kbGVyLT5teXZvaWQpIHsKKwkgICAgY2JfZGF0YSA9IChoYW5kbGVyX2NiX2RhdGEgKikgKHJlZ2luZm8tPmhhbmRsZXItPm15dm9pZCk7CisJICAgIFN2UkVGQ05UX2RlYyhjYl9kYXRhLT5wZXJsX2NiKTsKKwkgICAgZnJlZShjYl9kYXRhKTsKKyAgICAgICAgfQogCW5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWdpbmZvKTsKIAogaW50CkBAIC0zNjQsNyArMzgyLDcgQEAKICAgICAgICAgUFVTSE1BUksoU1ApOwogICAgICAgICByZWdpbmZvID0gKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKikgU3ZJVihTdlJWKG1lKSk7CiAKLSAgICAgICAgbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9vaWQpOworICAgICAgICBvID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgICAgICBvLT5uYW1lID0gby0+bmFtZWJ1ZjsKICAgICAgICAgby0+bGVuID0gcmVnaW5mby0+cm9vdG9pZF9sZW47CiAgICAgICAgIG1lbWNweShvLT5uYW1lLCByZWdpbmZvLT5yb290b2lkLApAQCAtNDAzLDcgKzQyMSw3IEBACiAgICAgICAgIFBVU0hNQVJLKFNQKTsKICAgICAgICAgcmVxdWVzdCA9IChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKSBTdklWKFN2UlYobWUpKTsKIAotICAgICAgICBvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29pZCk7CisgICAgICAgIG8gPSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfb2lkKSk7CiAgICAgICAgIG8tPm5hbWUgPSBvLT5uYW1lYnVmOwogICAgICAgICBvLT5sZW4gPSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoOwogICAgICAgICBtZW1jcHkoby0+bmFtZSwgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lLApAQCAtNDMzLDcgKzQ1MSw3IEBACiAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OwogICAgICAgICBDT0RFOgogICAgICAgICByZXF1ZXN0ID0gKG5ldHNubXBfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOwotICAgICAgICBSRVRWQUwgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2lkKTsKKyAgICAgICAgUkVUVkFMID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgICAgICBSRVRWQUwtPm5hbWUgPSBSRVRWQUwtPm5hbWVidWY7CiAgICAgICAgIFJFVFZBTC0+bGVuID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aDsKICAgICAgICAgbWVtY3B5KFJFVFZBTC0+bmFtZSwgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lLApAQCAtNDYzLDE5ICs0ODEsMTkgQEAKICAgICAgICAgcmVxdWVzdCA9IChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKSBTdklWKFN2UlYobWUpKTsKICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLT50eXBlPW5ld3ZhbHVlOwogCi1jaGFyICoKK1NWICoKIG5hcmlfZ2V0VmFsdWUobWUpCiAgICAgICAgIFNWICptZTsKICAgICBQUkVJTklUOgotICAgICAgICB1X2NoYXIgYnVmWzEwMjRdIDsKLSAgICAgICAgdV9jaGFyICpvaWRidWYgPSBidWYgOwotICAgICAgICBzaXplX3Qgb2JfbGVuID0gMTAyNCwgb29fbGVuID0gMDsKKyAgICAgICAgY2hhciAqb3V0YnVmID0gTlVMTDsKKyAgICAgICAgc2l6ZV90IG9iX2xlbiA9IDAsIG9vX2xlbiA9IDA7CiAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OwogICAgIENPREU6CiAgICAgICAgIHJlcXVlc3QgPSAobmV0c25tcF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7Ci0Jc3ByaW50X3JlYWxsb2NfYnlfdHlwZSgmb2lkYnVmLCAmb2JfbGVuLCAmb29fbGVuLCAwLAorCXNwcmludF9yZWFsbG9jX2J5X3R5cGUoKHVfY2hhciAqKikgJm91dGJ1ZiwgJm9iX2xlbiwgJm9vX2xlbiwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsIDAsIDAsIDApOwotICAgICAgICBSRVRWQUwgPSAoY2hhciAqKSBvaWRidWY7IC8qIG1lbSBsZWFrICovCisgICAgICAgIFJFVFZBTCA9IG5ld1NWcHYob3V0YnVmLCAwKTsKKwluZXRzbm1wX2ZyZWUob3V0YnVmKTsKICAgICBPVVRQVVQ6CiAgICAgICAgIFJFVFZBTAogCkBAIC02MjAsOCArNjM4LDggQEAKIAkJICBicmVhazsKIAkgICAgICB9CiAJICAgICAgZWxzZSB7Ci0JCXNubXBfbG9nKExPR19FUlIsICJOb24taW50ZWdlciB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSU5URUdFUjogdHlwZSB3YXMgJWRcbiIsCi0JCQlTdlRZUEUodmFsdWUpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1pbnRlZ2VyIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9JTlRFR0VSOiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKIAkJYnJlYWs7CiAJICAgICAgfQpAQCAtNjU2LDggKzY3NCw4IEBACiAJCSAgYnJlYWs7CiAJICAgICAgfQogCSAgICAgIGVsc2UgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXVuc2lnbmVkLWludGVnZXIgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX1VOU0lHTkVEL0FTTl9DT1VOVEVSL0FTTl9USU1FVElDS1M6IHR5cGUgd2FzICVkXG4iLAotCQkJU3ZUWVBFKHZhbHVlKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJOb24tdW5zaWduZWQtaW50ZWdlciB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fVU5TSUdORUQvQVNOX0NPVU5URVIvQVNOX1RJTUVUSUNLUzogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTY2Nyw0NyArNjg1LDQwIEBACiAJICAgICAgaWYgKChTdlRZUEUodmFsdWUpID09IFNWdF9JVikgfHwgKFN2VFlQRSh2YWx1ZSkgPT0gU1Z0X1BWTUcpKSB7CiAJCSAgLyogR29vZCAtIGdvdCBhIHJlYWwgb25lIChvciBhIGJsZXNzZWQgc2NhbGFyIHdoaWNoIHdlIGhhdmUgdG8gaG9wZSB3aWxsIHR1cm4gb3V0IE9LKSAqLwogCQkgIHVsbHRtcCA9IFN2SVYodmFsdWUpOwotCQkgIGM2NC5oaWdoID0gKHVpbnQzMl90KSh1bGx0bXAgPj4gMzIpOwotCQkgIGM2NC5sb3cgID0gKHVpbnQzMl90KXVsbHRtcDsKLSAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsICh1X2NoYXIpdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJmM2NCwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKTsKIAkJICBSRVRWQUwgPSAxOwotCQkgIGJyZWFrOwogCSAgICAgIH0KIAkgICAgICBlbHNlIGlmIChTdlBPS3AodmFsdWUpKSB7CiAJICAgICAgICAgIC8qIE1pZ2h0IGJlIE9LIC0gZ290IGEgc3RyaW5nLCBzbyB0cnkgdG8gY29udmVydCBpdCwgYWxsb3dpbmcgYmFzZSAxMCwgb2N0YWwsIGFuZCBoZXggZm9ybXMgKi8KIAkgICAgICAgICAgc3RyaW5ncHRyID0gU3ZQVih2YWx1ZSwgc3RyaW5nbGVuKTsKLSNpZiBkZWZpbmVkKFdJTjMyKQotCQkgIHVsbHRtcCA9IHN0cnRvdWwoICBzdHJpbmdwdHIsIE5VTEwsIDAgKTsKLSNlbHNlCisJICAgICAgICAgIGVycm5vID0gMDsKIAkJICB1bGx0bXAgPSBzdHJ0b3VsbCggc3RyaW5ncHRyLCBOVUxMLCAwICk7Ci0jZW5kaWYKLQkJICBpZiAoZXJybm8gPT0gRUlOVkFMKSB7Ci0JCSAgCXNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gbnVtYmVyIGluIHNldFZhbHVlOiAnJXMnIiwgc3RyaW5ncHRyKTsKLQkJCVJFVFZBTCA9IDA7Ci0JCQlicmVhazsKLQkJICB9CisJCSAgaWYgKGVycm5vICE9IDApIHsKKwkJICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBudW1iZXIgaW4gc2V0VmFsdWU6ICclcyciLCBzdHJpbmdwdHIpOworCQkgICAgICBSRVRWQUwgPSAwOworCQkgIH0gZWxzZQogCi0JCSAgYzY0LmhpZ2ggPSAodWludDMyX3QpKHVsbHRtcCA+PiAzMik7Ci0JCSAgYzY0LmxvdyAgPSAodWludDMyX3QpdWxsdG1wOwotICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgKHVfY2hhcil0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmYzY0LCBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCkpOwotCQkgIFJFVFZBTCA9IDE7Ci0JCSAgYnJlYWs7CisJCSAgICAgIFJFVFZBTCA9IDE7CiAJICAgICAgfQogCSAgICAgIGVsc2UgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXVuc2lnbmVkLWludGVnZXIgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0NPVU5URVI2NDogdHlwZSB3YXMgJWRcbiIsCi0JCQlTdlRZUEUodmFsdWUpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi11bnNpZ25lZC1pbnRlZ2VyIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9DT1VOVEVSNjQ6IHR5cGUgd2FzICVsdVxuIiwKKwkJCSh1bnNpZ25lZCBsb25nKVN2VFlQRSh2YWx1ZSkpOwogCQlSRVRWQUwgPSAwOwotCQlicmVhazsKIAkgICAgICB9CisJICAgICAgaWYgKFJFVFZBTCkgeworCQkgIGM2NC5oaWdoID0gKHVpbnQzMl90KSh1bGx0bXAgPj4gMzIpOworCQkgIGM2NC5sb3cgID0gKHVpbnQzMl90KSh1bGx0bXAgPj4gMCk7CisJCSAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgKHVfY2hhcil0eXBlLAorCQkJCSAgICAgKHVfY2hhciAqKSAmYzY0LCBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCkpOworCSAgICAgIH0KKwkgICAgICBicmVhazsKIAogICAgICAgICAgIGNhc2UgQVNOX09DVEVUX1NUUjoKICAgICAgICAgICBjYXNlIEFTTl9CSVRfU1RSOgorICAgICAgICAgIGNhc2UgQVNOX09QQVFVRToKIAkgICAgICAvKiBDaGVjayB0aGF0IHdlIGhhdmUgYmVlbiBwYXNzZWQgc29tZXRoaW5nIHdpdGggYSBzdHJpbmcgdmFsdWUgKG9yIGEgYmxlc3NlZCBzY2FsYXIpICovCiAJICAgICAgaWYgKCFTdlBPS3AodmFsdWUpICYmIChTdlRZUEUodmFsdWUpICE9IFNWdF9QVk1HKSkgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fT0NURVRfU1RSL0FTTl9CSVRfU1RSOiB0eXBlIHdhcyAlZFxuIiwKLQkJCVN2VFlQRSh2YWx1ZSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fT0NURVRfU1RSL0FTTl9CSVRfU1RSOiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKIAkJYnJlYWs7CiAJICAgICAgfQpAQCAtNzMzLDggKzc0NCw4IEBACiAKIAkgICAgICAvKiBDaGVjayB0aGF0IHdlIGhhdmUgYmVlbiBwYXNzZWQgc29tZXRoaW5nIHdpdGggYSBzdHJpbmcgdmFsdWUgKG9yIGEgYmxlc3NlZCBzY2FsYXIpICovCiAJICAgICAgaWYgKCFTdlBPS3AodmFsdWUpICYmIChTdlRZUEUodmFsdWUpICE9IFNWdF9QVk1HKSkgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSVBBRERSRVNTOiB0eXBlIHdhcyAlZFxuIiwKLQkJCVN2VFlQRSh2YWx1ZSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSVBBRERSRVNTOiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKIAkJYnJlYWs7CiAJICAgICAgfQpAQCAtNzQ3LDcgKzc1OCw3IEBACiAKIAkgICAgICAjIFNhbml0eSBjaGVjayBvbiBhZGRyZXNzIGxlbmd0aAogCSAgICAgIGlmICgoc3RyaW5nbGVuICE9IDQpICYmIChzdHJpbmdsZW4gIT0gMTYpKSB7Ci0JICAgICAgCQlzbm1wX2xvZyhMT0dfRVJSLCAiSVAgYWRkcmVzcyBvZiAlZCBieXRlcyBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSVBBRERSRVNTXG4iLCBzdHJpbmdsZW4pOworCSAgICAgIAkJc25tcF9sb2coTE9HX0VSUiwgIklQIGFkZHJlc3Mgb2YgJSIgTkVUU05NUF9QUkl6ICJkIGJ5dGVzIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9JUEFERFJFU1NcbiIsIHN0cmluZ2xlbik7CiAJCQlSRVRWQUwgPSAwOwogCQkJYnJlYWs7CiAJICAgICAgfQpAQCAtNzYwLDggKzc3MSw4IEBACiAgICAgICAgICAgY2FzZSBBU05fT0JKRUNUX0lEOgogCSAgICAgIC8qIENoZWNrIHRoYXQgd2UgaGF2ZSBiZWVuIHBhc3NlZCBzb21ldGhpbmcgd2l0aCBhIHN0cmluZyB2YWx1ZSAob3IgYSBibGVzc2VkIHNjYWxhcikgKi8KIAkgICAgICBpZiAoIVN2UE9LcCh2YWx1ZSkgJiYgKFN2VFlQRSh2YWx1ZSkgIT0gU1Z0X1BWTUcpKSB7Ci0JCXNubXBfbG9nKExPR19FUlIsICJOb24tc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9PQkpFQ1RfSUQ6IHR5cGUgd2FzICVkXG4iLAotCQkJU3ZUWVBFKHZhbHVlKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJOb24tc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9PQkpFQ1RfSUQ6IHR5cGUgd2FzICVsdVxuIiwKKwkJCSh1bnNpZ25lZCBsb25nKVN2VFlQRSh2YWx1ZSkpOwogCQlSRVRWQUwgPSAwOwogCQlicmVhazsKIAkgICAgICB9CkBAIC04NTEsNiArODYyLDQ4IEBACiAKIE1PRFVMRSA9IE5ldFNOTVA6OmFnZW50ICBQQUNLQUdFID0gTmV0U05NUDo6YWdlbnQ6Om5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvIFBSRUZJWCA9IG5hcnFpXwogCisKK1NWICoKK25hcnFpX2dldFNvdXJjZUlwKG1lKQorICAgICAgICBTViAqbWU7CisgICAgUFJFSU5JVDoKKyAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm87CisJc3RydWN0IG5ldHNubXBfdWRwX2FkZHJfcGFpcl9zICphZGRyX3BhaXI7CisJc3RydWN0IHNvY2thZGRyX2luICpmcm9tOworICAgICAgICBTViAqcmFyZzsKKworICAgIENPREU6CisgICAgICAgIHJlcWluZm8gPSAobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7CisKKyAgICAgICAgLyogWFhYOiB0cmFuc3BvcnQtc3BlY2lmaWM6IFVEUC9JUHY0IG9ubHkhICovCisJYWRkcl9wYWlyID0gKHN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyAqKSAocmVxaW5mby0+YXNwLT5wZHUtPnRyYW5zcG9ydF9kYXRhKTsKKwlmcm9tID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOworICAgICAgICByYXJnID0gbmV3U1ZwdigoY29uc3QgY2hhciAqKSgmZnJvbS0+c2luX2FkZHIuc19hZGRyKSwgc2l6ZW9mKGZyb20tPnNpbl9hZGRyLnNfYWRkcikpOworICAgICAgICBSRVRWQUwgPSByYXJnOworICAgIE9VVFBVVDoKKyAgICAgICAgUkVUVkFMCisKKworU1YgKgorbmFycWlfZ2V0RGVzdElwKG1lKQorICAgICAgICBTViAqbWU7CisgICAgUFJFSU5JVDoKKyAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm87CisJc3RydWN0IG5ldHNubXBfdWRwX2FkZHJfcGFpcl9zICphZGRyX3BhaXI7CisJc3RydWN0IGluX2FkZHIgKnRvOworICAgICAgICBTViAqcmFyZzsKKworICAgIENPREU6CisgICAgICAgIHJlcWluZm8gPSAobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7CisKKyAgICAgICAgLyogWFhYOiB0cmFuc3BvcnQtc3BlY2lmaWM6IFVEUC9JUHY0IG9ubHkhICovCisJYWRkcl9wYWlyID0gKHN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyAqKSAocmVxaW5mby0+YXNwLT5wZHUtPnRyYW5zcG9ydF9kYXRhKTsKKwl0byA9IChzdHJ1Y3QgaW5fYWRkciAqKSAmKGFkZHJfcGFpci0+bG9jYWxfYWRkcik7CisgICAgICAgIHJhcmcgPSBuZXdTVnB2KChjb25zdCBjaGFyICopKCZ0by0+c19hZGRyKSwgc2l6ZW9mKHRvLT5zX2FkZHIpKTsKKyAgICAgICAgUkVUVkFMID0gcmFyZzsKKyAgICBPVVRQVVQ6CisgICAgICAgIFJFVFZBTAorCiBpbnQKIG5hcnFpX2dldE1vZGUobWUpCiAgICAgICAgIFNWICptZTsKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTAppbmRleCA2N2Q1ZmYwLi5lZDY0ODNhIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCkBAIC0yNCw5ICsyNCw5IEBACiAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtOTYsNyArOTYsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTc5LDcgKzE3OSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtIGIvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KaW5kZXggYTc2YzM2Yi4uOWI1NjhlYyAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KKysrIGIvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KQEAgLTk2LDcgKzk2LDcgQEAKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVQRUFUUwogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfTUFYX0dFVEJVTEtSRVNQT05TRVMKICk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCkBAIC0yMTksNDMgKzIxOSw2IEBACiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9DQUNIRV9USU1FT1VUCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9WRVJTSU9OCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9TRUNMRVZFTAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfTUFYX0dFVEJVTEtSRVBFQVRTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9NQVhfR0VUQlVMS1JFU1BPTlNFUwotCi0KLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1ZFUkJPU0UKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1JPTEUKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX05PX1JPT1RfQUNDRVNTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfTUFTVEVSCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9RVUlUX0lNTUVESUFURUxZCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ESVNBQkxFX1BFUkwKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX05PX0NPTk5FQ1RJT05fV0FSTklOR1MKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0xFQVZFX1BJREZJTEUKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX05PX0NBQ0hJTkcKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1NUUklDVF9ESVNNQU4KLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0RPTlRfUkVUQUlOX05PVElGSUNBVElPTlMKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0RPTlRfTE9HX1RDUFdSQVBQRVJTX0NPTk5FQ1RTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9QUk9HTkFNRQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLRVQKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1BPUlRTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9TRUNOQU1FCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9QRVJMX0lOSVRfRklMRQotCQkJCSAgIE5FVFNOTVBfRFNfU01VWF9TT0NLRVQKLQkJCQkgICBORVRTTk1QX0RTX05PVElGX0xPR19DVFgKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0ZMQUdTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9QSU5HX0lOVEVSVkFMCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfVElNRU9VVAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1JFVFJJRVMKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19QRVJNCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9YX0RJUl9QRVJNCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tfVVNFUgotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLX0dST1VQCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9DQUNIRV9USU1FT1VUCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9WRVJTSU9OCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9TRUNMRVZFTAogCiAKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1ZFUkJPU0UKZGlmZiAtLWdpdCBhL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCBiL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTAppbmRleCA1NDk5NmFiLi43YzY3MWI4IDEwMDY0NAotLS0gYS9wZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCkBAIC0yMyw5ICsyMyw5IEBACiAgICAgfSAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtOTUsNyArOTUsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTc4LDcgKzE3OCw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtIGIvcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KaW5kZXggODI4YmJkYi4uMWFmN2YwYyAxMDA2NDQKLS0tIGEvcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KKysrIGIvcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0KQEAgLTIwMCw3ICsyMDAsNyBAQAogCQkJCSAgIE5FVFNOTVBfRFNfTElCX0tTTV9TRVJWSUNFX05BTUUKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9TQlNNX0xPQ0FMX1BXRAogKTsKLSRWRVJTSU9OID0gJzUuMDQwNCc7CiskVkVSU0lPTiA9ICc1LjA1MDInOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKZGlmZiAtLWdpdCBhL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsIGIvcGVybC9kZWZhdWx0X3N0b3JlL3Rlc3QucGwKaW5kZXggOTMwY2E4Yy4uYjQyOWM2YiAxMDA2NDQKLS0tIGEvcGVybC9kZWZhdWx0X3N0b3JlL3Rlc3QucGwKKysrIGIvcGVybC9kZWZhdWx0X3N0b3JlL3Rlc3QucGwKQEAgLTEwLDcgKzEwLDcgQEAKIAogCSV0ZXN0cyA9ICggCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19NQVhfSURTIiAgICAgICAgICAgICAgICAgICAgID0+IDMsCi0gICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19NQVhfU1VCSURTIiAgICAgICAgICAgICAgICAgID0+IDQwLAorICAgICAgICAgICAgICAgICAgIk5FVFNOTVBfRFNfTUFYX1NVQklEUyIgICAgICAgICAgICAgICAgICA9PiA0OCwKICAgICAgICAgICAgICAgICAgICJORVRTTk1QX0RTX0xJQlJBUllfSUQiICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICJORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lEIiAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICJORVRTTk1QX0RTX1RPS0VOX0lEIiAgICAgICAgICAgICAgICAgICAgPT4gMiwKZGlmZiAtLWdpdCBhL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMgYi9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jCmluZGV4IDNhOTA0YTYuLjdmYzc0ZGMgMTAwNjQ0Ci0tLSBhL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMKKysrIGIvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYwpAQCAtNjU4LDYgKzY1OCw5IEBACiAJbmV3bmFtZV9sZW4gPSBNQVhfT0lEX0xFTjsKIAlpZiAocmVhZF9vYmppZCh0YWcsIG5ld25hbWUsICZuZXduYW1lX2xlbikpIHsJLyogbG9uZyBuYW1lICovCiAJICBydHAgPSB0cCA9IGdldF90cmVlKG5ld25hbWUsIG5ld25hbWVfbGVuLCBnZXRfdHJlZV9oZWFkKCkpOworCX0gZWxzZSB7CisJICAvKiBmYWlsZWQgdG8gcGFyc2UgdGhlIE9JRCAqLworCSAgbmV3bmFtZV9sZW4gPSAwOwogCX0KICAgICAgIH0KICAgICAgIGVsc2UgewpAQCAtNzU4LDggKzc2MSw3IEBACiAgICAgfQogCiAgICAgdmFycy0+bmV4dF92YXJpYWJsZSA9IE5VTEw7Ci0gICAgdmFycy0+bmFtZSA9IChvaWQgKiltYWxsb2MobmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7Ci0gICAgbWVtY3B5KChjaGFyICopdmFycy0+bmFtZSwgKGNoYXIgKiluYW1lLCBuYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKKyAgICB2YXJzLT5uYW1lID0gc25tcF9kdXBsaWNhdGVfb2JqaWQobmFtZSwgbmFtZV9sZW5ndGgpOwogICAgIHZhcnMtPm5hbWVfbGVuZ3RoID0gbmFtZV9sZW5ndGg7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICBjYXNlIFRZUEVfSU5URUdFUjoKQEAgLTg0NSw5ICs4NDcsOCBAQAogICAgICAgICAgICAgdmFycy0+dmFsLm9iamlkID0gTlVMTDsKIAkgICAgcmV0ID0gRkFJTFVSRTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IHNubXBfZHVwbGljYXRlX29iamlkKG9pZGJ1ZiwgdmFycy0+dmFsX2xlbik7CiAgICAgICAgICAgICB2YXJzLT52YWxfbGVuICo9IHNpemVvZihvaWQpOwotICAgICAgICAgICAgdmFycy0+dmFsLm9iamlkID0gKG9pZCAqKW1hbGxvYyh2YXJzLT52YWxfbGVuKTsKLSAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPnZhbC5vYmppZCwgKGNoYXIgKilvaWRidWYsIHZhcnMtPnZhbF9sZW4pOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC04ODYsNyArODg3LDkgQEAKIAogcmV0cnk6CiAKLSAgIHN0YXR1cyA9IHNubXBfc3luY2hfcmVzcG9uc2Uoc3MsIHBkdSwgcmVzcG9uc2UpOworICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgc3RhdHVzID0gc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsIHJlc3BvbnNlKTsKKyAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgIGlmICgoKnJlc3BvbnNlID09IE5VTEwpICYmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSkgc3RhdHVzID0gU1RBVF9FUlJPUjsKIApAQCAtMTEwNCw2ICsxMTA3LDggQEAKIAogICBfX2xpYnJhcmllc19pbml0KCJweXRob24iKTsKIAorICBzbm1wX3Nlc3NfaW5pdCgmc2Vzc2lvbik7CisKICAgc2Vzc2lvbi52ZXJzaW9uID0gLTE7CiAjaWZuZGVmIERJU0FCTEVfU05NUFYxCiAgIGlmICh2ZXJzaW9uID09IDEpIHsKQEAgLTExMzIsNyArMTEzNyw3IEBACiAgIHNlc3Npb24udGltZW91dCA9IHRpbWVvdXQ7IC8qIDEwMDAwMDBMICovCiAgIHNlc3Npb24uYXV0aGVudGljYXRvciA9IE5VTEw7CiAKLSAgc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworICBzcyA9IHNubXBfc2Vzc19vcGVuKCZzZXNzaW9uKTsKIAogICBpZiAoc3MgPT0gTlVMTCkgewogICAgIGlmICh2ZXJib3NlKSAKQEAgLTEzMDIsNyArMTMwNyw3IEBACiAKICAgc3MgPSAoU25tcFNlc3Npb24gKilweV9uZXRzbm1wX2F0dHJfdm9pZF9wdHIoc2Vzc2lvbiwgInNlc3NfcHRyIik7CiAKLSAgc25tcF9jbG9zZShzcyk7CisgIHNubXBfc2Vzc19jbG9zZShzcyk7CiAgIHJldHVybiAoUHlfQnVpbGRWYWx1ZSgiIikpOwogfQogCkBAIC0xNDkyLDEwICsxNDk3LDE2IEBACiAJcHlfbmV0c25tcF9hdHRyX3NldF9zdHJpbmcodmFyYmluZCwgInZhbCIsIChjaGFyICopIHN0cl9idWYsIGxlbik7CiAKIAkvKiBzYXZlIGluIHJldHVybiB0dXBsZSBhcyB3ZWxsICovCi0JUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgdmFybGlzdF9pbmQsIAotCQkJKGxlbiA/IFB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSA6Ci0JCQkgUHlfQnVpbGRWYWx1ZSgiIikpKTsKLQorCWlmICgodHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykgfHwKKwkJCSh0eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUKSB8fAorCQkJKHR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSkpIHsKKwkJLyogVHJhbnNsYXRlIGVycm9yIHRvIE5vbmUgKi8KKwkJUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgdmFybGlzdF9pbmQsIAorCQkJUHlfQnVpbGRWYWx1ZSgiIikpOworCX0gZWxzZSB7CisJCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLAorCQkJUHlfQnVpbGRWYWx1ZSgicyMiLCBzdHJfYnVmLCBsZW4pKTsKKwl9CiAJUHlfREVDUkVGKHZhcmJpbmQpOwogICAgICAgfSBlbHNlIHsKIAlwcmludGYoIm5ldHNubXBfZ2V0OiBiYWQgdmFyYmluZCAoJWQpXG4iLCB2YXJsaXN0X2luZCk7CkBAIC0xNzA2LDEwICsxNzE3LDE2IEBACiAJcHlfbmV0c25tcF9hdHRyX3NldF9zdHJpbmcodmFyYmluZCwgInZhbCIsIChjaGFyICopIHN0cl9idWYsIGxlbik7CiAKIAkvKiBzYXZlIGluIHJldHVybiB0dXBsZSBhcyB3ZWxsICovCi0JUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgdmFybGlzdF9pbmQsIAotCQkJKGxlbiA/IFB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSA6Ci0JCQkgUHlfQnVpbGRWYWx1ZSgiIikpKTsKLQorCWlmICgodHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykgfHwKKwkJCSh0eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUKSB8fAorCQkJKHR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSkpIHsKKwkJLyogVHJhbnNsYXRlIGVycm9yIHRvIE5vbmUgKi8KKwkJUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgdmFybGlzdF9pbmQsIAorCQkJUHlfQnVpbGRWYWx1ZSgiIikpOworCX0gZWxzZSB7CisJCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLAorCQkJUHlfQnVpbGRWYWx1ZSgicyMiLCBzdHJfYnVmLCBsZW4pKTsKKwl9CiAJUHlfREVDUkVGKHZhcmJpbmQpOwogICAgICAgfSBlbHNlIHsKIAlwcmludGYoIm5ldHNubXBfZ2V0bmV4dDogYmFkIHZhcmJpbmQgKCVkKVxuIiwgdmFybGlzdF9pbmQpOwpAQCAtMTk2OSwxMSArMTk4Niw4IEBACiAgICAgCSAgLyogc2F2ZSBpbiByZXR1cm4gdHVwbGUgYXMgd2VsbCAqLwogCSAgLyogc2F2ZSBpbiByZXR1cm4gdHVwbGUgYXMgd2VsbCAtIHN0ZWFscyByZWYgKi8KIAkgIF9QeVR1cGxlX1Jlc2l6ZSgmdmFsX3R1cGxlLCByZXN1bHRfY291bnQrMSk7Ci0JICBQeVR1cGxlX1NldEl0ZW0odmFsX3R1cGxlLCByZXN1bHRfY291bnQrKywgCi0JCQkgIChsZW4gPyBQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikgOgotCQkJICAgUHlfQnVpbGRWYWx1ZSgiIikpKTsKLSAgICAgICAgICAgIAotCisJICBQeVR1cGxlX1NldEl0ZW0odmFsX3R1cGxlLCByZXN1bHRfY291bnQrKywKKwkJCVB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSk7CiAgICAgICAgICAgfSBlbHNlIHsKIAkgICAgLyogUmV0dXJuIE5vbmUgZm9yIHRoaXMgdmFyaWFibGUuICovCiAgICAgICAgICAgICBfUHlUdXBsZV9SZXNpemUoJnZhbF90dXBsZSwgcmVzdWx0X2NvdW50KzEpOwpAQCAtMjM0NSw2ICsyMzU5LDEwIEBACiAJICBzbm1wX2ZyZWVfcGR1KHBkdSk7CiAJICBnb3RvIGRvbmU7CiAJfQorCW1lbXNldCh0bXBfdmFsX3N0ciwgMCwgc2l6ZW9mKHRtcF92YWxfc3RyKSk7CisgICAgICAgIGlmICggdG1wbGVuID49IHNpemVvZih0bXBfdmFsX3N0cikpIHsKKyAgICAgICAgICAgIHRtcGxlbiA9IHNpemVvZih0bXBfdmFsX3N0ciktMTsKKyAgICAgICAgfQogCW1lbWNweSh0bXBfdmFsX3N0ciwgdmFsLCB0bXBsZW4pOwogCWlmICh0eXBlPT1UWVBFX0lOVEVHRVIgJiYgdXNlX2VudW1zICYmIHRwICYmIHRwLT5lbnVtcykgewogCSAgZm9yKGVwID0gdHAtPmVudW1zOyBlcDsgZXAgPSBlcC0+bmV4dCkgewpkaWZmIC0tZ2l0IGEvc2Vkc2NyaXB0LmluIGIvc2Vkc2NyaXB0LmluCmluZGV4IGFlZGY3YjguLjc4MTRjZTkgMTAwNjQ0Ci0tLSBhL3NlZHNjcmlwdC5pbgorKysgYi9zZWRzY3JpcHQuaW4KQEAgLTEwNiw0ICsxMDYsNCBAQAogCiBzI1BSRU1PVkVNRVNDTUQjUFNDTUQjZwogcyNBUkVNT1ZFTUVHRU5UWF9TT0NLRVQjQUdFTlRYX1NPQ0tFVCNnCi1zL1ZFUlNJT05JTkZPLzUuNC4zLnByZTEvZworcyNOUkVNT1ZFTUVFVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4jTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTiNnCmRpZmYgLS1naXQgYS9zbm1wbGliL01ha2VmaWxlLmRlcGVuZCBiL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCmluZGV4IGNhYzY1MTAuLjZjMDg4ZjEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCisrKyBiL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCkBAIC03LDEzICs3LDMwIEBACiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTIyLDkgKzM5LDcgQEAKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMzMsMjEgKzQ4LDQwIEBACiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtNTYsOSArOTAsNyBAQAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC03NiwzMiArMTA4LDE0IEBACiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEyLDExICsxMjYsMzEgQEAKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTM5LDYgKzE3Myw3NCBAQAogLi9jbXVfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vY211X2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2NtdV9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xNDYsMzIgKzI0OCwxNCBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xODIsMTAgKzI2NiwzMSBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMDQsNzIgKzMwOSw2IEBACiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbnVsbC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0yNzgsMzIgKzMxNywxNCBAQAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzE0LDExICszMzUsMzEgQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNDQsMzIgKzM4NSwxNCBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM4MCwxMSArNDAzLDMxIEBACiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQxMCwzMiArNDUzLDE0IEBACiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ0NiwxMSArNDcxLDMxIEBACiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00NzYsMzIgKzUyMSwxNCBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01MTIsMTAgKzUzOSwzMSBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01MzksMTQgKzU4NywzMyBAQAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC01NjEsOSArNjI4LDcgQEAKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNTczLDYgKzYzOCw3NCBAQAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2Rpcl91dGlscy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTU4MSwzMiArNzE0LDE0IEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjE3LDExICs3MzIsMzEgQEAKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjQwLDQwICs3NzUsMjAgQEAKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjg0LDEwICs3OTksMzEgQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzA3LDM4ICs4NDMsODQgQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTc0NywxOSArOTI5LDM0IEBACiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC03NjgsOSArOTY1LDcgQEAKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNzgzLDIwICs5NzgsNjYgQEAKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTgwNSw5ICsxMDQ2LDcgQEAKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtODE4LDMzICsxMDU3LDQzIEBACiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtODU2LDE5ICsxMTA1LDMyIEBACiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTg4Miw5ICsxMTQ0LDcgQEAKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtODkzLDQ3ICsxMTUzLDIwIEBACiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9tdF9zdXBwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTk0NCwxMCArMTE3NywzMSBAQAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC05NjYsMTkgKzEyMjAsMzIgQEAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC05OTMsOSArMTI2MCw3IEBACiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTEwMDQsMjcgKzEyNjksMzcgQEAKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vcGtjcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9wa2NzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3BrY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9wa2NzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vcGtjcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xMDM5LDkgKzEzMTQsNyBAQAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xMDUxLDIyICsxMzI0LDMzIEBACiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0xMDc1LDkgKzEzNTksNyBAQAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xMDg4LDU1ICsxMzcwLDM5IEBACiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtMTE0NSwyMjkgKzE0MTEsMzYgQEAKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBQUw1UFZDRG9tYWluLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1RERG9tYWluLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTEzODIsOSArMTQ1NSw3IEBACiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTEzOTQsMjAgKzE0NjUsODggQEAKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE0MjIsOSArMTU2MSw3IEBACiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE0MzQsMzEgKzE1NzEsNDIgQEAKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2FwaS5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTE0NjcsOSArMTYxNSw3IEBACiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE0NzksNDMgKzE2MjUsMTU0IEBACiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tZDUuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtMTUzMCw5ICsxNzg3LDcgQEAKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTU0MiwxNiArMTc5Nyw3MiBAQAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wRFRMU1VEUERvbWFpbi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTU2MiwyMCArMTg3MywxMjkgQEAKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wa3NtLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE1OTAsOSArMjAxMCw3IEBACiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE2MDIsMjAgKzIwMjAsMTAwIEBACiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE2MzAsOSArMjEyOCw3IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE2NDIsMjYgKzIxMzgsMzkgQEAKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtMTY3Niw5ICsyMTg1LDcgQEAKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTY4OSw0MiArMjE5NiwxOSBAQAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggc25tcHNtX2luaXQuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTczNSwxMSArMjIxOSwzMSBAQAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE3NTcsMjAgKzIyNjEsMTY3IEBACiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNTSERvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTVEREb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtMTc3OSw5ICsyNDMwLDcgQEAKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTc5MSw4MCArMjQ0MCwxNzQgQEAKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE4NzksOSArMjYyMiw3IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE4OTYsMjIgKzI2MzcsMzQgQEAKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtMTkyNiw5ICsyNjc5LDcgQEAKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTk0Myw3NCArMjY5NCw3MSBAQAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NucHJpbnRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NucHJpbnRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NucHJpbnRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25wcmludGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zdHJ0b2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RydG9sLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RydG9sLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc3RydG9sLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cnRvdWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3RydG91bC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zdHJ0b3VsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RydG91bC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N0cnRvdWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTIwMTksOSArMjc2Nyw3IEBACiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTIwMzIsNDAgKzI3NzgsMjMgQEAKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMDc2LDExICsyODA1LDMxIEBACiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMDk5LDM5ICsyODQ4LDE3IEBACiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTIxNDIsMTAgKzI4NjksMzEgQEAKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjE2NiwxOSArMjkxNCwzMiBAQAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXh0X3V0aWxzLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtMjE4Nyw5ICsyOTQ4LDcgQEAKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMjE5OCwyMiArMjk1NywxNyBAQAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCkBAIC0yMjI1LDI3ICsyOTc5LDQ2IEBACiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCmRpZmYgLS1naXQgYS9zbm1wbGliL01ha2VmaWxlLmluIGIvc25tcGxpYi9NYWtlZmlsZS5pbgppbmRleCAzNGUzMGU2Li5hZmQ1NjI0IDEwMDY0NAotLS0gYS9zbm1wbGliL01ha2VmaWxlLmluCisrKyBiL3NubXBsaWIvTWFrZWZpbGUuaW4KQEAgLTU1LDYgKzU1LDcgQEAKIAlmYWN0b3J5LmggXAogCWRhdGFfbGlzdC5oIFwKIAlkZWZhdWx0X3N0b3JlLmggXAorCWRpcl91dGlscy5oIFwKIAlmZF9ldmVudF9tYW5hZ2VyLmggXAogCWZpbGVfdXRpbHMuaCBcCiAJaW50NjQuaCBcCkBAIC02Nyw2ICs2OCw3IEBACiAJc25tcC5oIFwKIAlzbm1wX2FsYXJtLmggXAogCXNubXBfYXBpLmggXAorCWxhcmdlX2ZkX3NldC5oIFwKIAlzbm1wX2Fzc2VydC5oIFwKIAlzbm1wX2NsaWVudC5oIFwKIAlzbm1wX2RlYnVnLmggXApAQCAtODAsNiArODIsNyBAQAogCXRleHRfdXRpbHMuaCBcCiAJdG9vbHMuaCBcCiAJdHJhbnNmb3JtX29pZHMuaCBcCisJdHlwZXMuaCBcCiAgICAgICAgIGNtdV9jb21wYXQuaCBcCiAgICAgICAgIGdldG9wdC5oIFwKICAgICAgICAgbGNkX3RpbWUuaCBcCkBAIC0xMTEsNiArMTE0LDcgQEAKIAlzY2FwaS5oCQlcCiAJc25tcF9hbGFybS5oCVwKIAlzbm1wX2FwaS5oCVwKKwlsYXJnZV9mZF9zZXQuaAlcCiAJc25tcF9jbGllbnQuaAlcCiAJc25tcF9kZWJ1Zy5oCVwKIAlzbm1wLmgJCVwKQEAgLTEzNCwxMCArMTM4LDExIEBACiAjIFRoaW5ncyB0byBidWlsZAogIwogQ1NSQ1M9CXNubXBfY2xpZW50LmMgbWliLmMgcGFyc2UuYyBzbm1wX2FwaS5jIHNubXAuYyAJCVwKKwlsYXJnZV9mZF9zZXQuYwkJCQkJCVwKIAlzbm1wX2F1dGguYyBhc24xLmMgbWQ1LmMgc25tcF9wYXJzZV9hcmdzLmMJCVwKIAlzeXN0ZW0uYyB2YWNtLmMgaW50NjQuYyByZWFkX2NvbmZpZy5jIHBrY3MuYwkJXAogCXNubXBfZGVidWcuYyB0b29scy5jICBzbm1wX2xvZ2dpbmcuYyB0ZXh0X3V0aWxzLmMJXAotCXNubXB2My5jIGxjZF90aW1lLmMga2V5dG9vbHMuYyBmaWxlX3V0aWxzLmMJCVwKKwlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgZmlsZV91dGlscy5jIGRpcl91dGlscy5jIFwKIAlzY2FwaS5jIGNhbGxiYWNrLmMgZGVmYXVsdF9zdG9yZS5jIHNubXBfYWxhcm0uYwkJXAogCWRhdGFfbGlzdC5jIG9pZF9zdGFzaC5jIGZkX2V2ZW50X21hbmFnZXIuYyAJCVwKIAltdF9zdXBwb3J0LmMgc25tcF9lbnVtLmMgc25tcC10Yy5jIHNubXBfc2VydmljZS5jCVwKQEAgLTE0NiwxMyArMTUxLDE0IEBACiAJc25tcF9zZWNtb2QuYyBAc2VjdXJpdHlfc3JjX2xpc3RAIHNubXBfdmVyc2lvbi5jICAgICAgICBcCiAJY2hlY2tfdmFyYmluZC5jIGNvbnRhaW5lci5jIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYwlcCiAJY29udGFpbmVyX251bGwuYyBjb250YWluZXJfbGlzdF9zc2xsLmMgY29udGFpbmVyX2l0ZXJhdG9yLmMgXAotCWNtdV9jb21wYXQuYyB1Y2RfY29tcGF0LmMgQG90aGVyX3NyY19saXN0QAorCWNtdV9jb21wYXQuYyB1Y2RfY29tcGF0LmMgc25tcF9vcGVuc3NsLmMgQG90aGVyX3NyY19saXN0QAogCiBPQkpTPQlzbm1wX2NsaWVudC5vIG1pYi5vIHBhcnNlLm8gc25tcF9hcGkubyBzbm1wLm8gCQlcCisJbGFyZ2VfZmRfc2V0Lm8JCQkJCQlcCiAJc25tcF9hdXRoLm8gYXNuMS5vIG1kNS5vIHNubXBfcGFyc2VfYXJncy5vCQlcCiAJc3lzdGVtLm8gdmFjbS5vIGludDY0Lm8gcmVhZF9jb25maWcubyBwa2NzLm8gCQlcCiAJc25tcF9kZWJ1Zy5vIHRvb2xzLm8gIHNubXBfbG9nZ2luZy5vIHRleHRfdXRpbHMubwlcCi0Jc25tcHYzLm8gbGNkX3RpbWUubyBrZXl0b29scy5vIGZpbGVfdXRpbHMubwkJXAorCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyBmaWxlX3V0aWxzLm8gZGlyX3V0aWxzLm8gXAogCXNjYXBpLm8gY2FsbGJhY2subyBkZWZhdWx0X3N0b3JlLm8gc25tcF9hbGFybS5vCQlcCiAJZGF0YV9saXN0Lm8gb2lkX3N0YXNoLm8gZmRfZXZlbnRfbWFuYWdlci5vCQlcCiAJbXRfc3VwcG9ydC5vIHNubXBfZW51bS5vIHNubXAtdGMubyBzbm1wX3NlcnZpY2UubwlcCkBAIC0xNjEsMTMgKzE2NywxNCBAQAogCXNubXBfc2VjbW9kLm8gQHNlY3VyaXR5X29ial9saXN0QCBzbm1wX3ZlcnNpb24ubyAgICAgICAgXAogCWNoZWNrX3ZhcmJpbmQubyBjb250YWluZXIubyBjb250YWluZXJfYmluYXJ5X2FycmF5Lm8JXAogCWNvbnRhaW5lcl9udWxsLm8gY29udGFpbmVyX2xpc3Rfc3NsbC5vIGNvbnRhaW5lcl9pdGVyYXRvci5vIFwKLQljbXVfY29tcGF0Lm8gdWNkX2NvbXBhdC5vIEBvdGhlcl9vYmpzX2xpc3RACisJY211X2NvbXBhdC5vIHVjZF9jb21wYXQubyBzbm1wX29wZW5zc2wubyBAb3RoZXJfb2Jqc19saXN0QAogCiBMT0JKUz0Jc25tcF9jbGllbnQubG8gbWliLmxvIHBhcnNlLmxvIHNubXBfYXBpLmxvIHNubXAubG8gCVwKKwlsYXJnZV9mZF9zZXQubG8JCQkJCQlcCiAJc25tcF9hdXRoLmxvIGFzbjEubG8gbWQ1LmxvIHNubXBfcGFyc2VfYXJncy5sbwkJXAogCXN5c3RlbS5sbyB2YWNtLmxvIGludDY0LmxvIHJlYWRfY29uZmlnLmxvIHBrY3MubG8JXAogCXNubXBfZGVidWcubG8gdG9vbHMubG8gIHNubXBfbG9nZ2luZy5sbwkgdGV4dF91dGlscy5sbwlcCi0Jc25tcHYzLmxvIGxjZF90aW1lLmxvIGtleXRvb2xzLmxvIGZpbGVfdXRpbHMubG8JCVwKKwlzbm1wdjMubG8gbGNkX3RpbWUubG8ga2V5dG9vbHMubG8gZmlsZV91dGlscy5sbyBkaXJfdXRpbHMubG8gXAogCXNjYXBpLmxvIGNhbGxiYWNrLmxvIGRlZmF1bHRfc3RvcmUubG8gc25tcF9hbGFybS5sbwkJXAogCWRhdGFfbGlzdC5sbyBvaWRfc3Rhc2gubG8gZmRfZXZlbnRfbWFuYWdlci5sbwkJXAogCW10X3N1cHBvcnQubG8gc25tcF9lbnVtLmxvIHNubXAtdGMubG8gc25tcF9zZXJ2aWNlLmxvCVwKQEAgLTE3Niw3ICsxODMsNyBAQAogCXNubXBfc2VjbW9kLmxvIEBzZWN1cml0eV9sb2JqX2xpc3RAIHNubXBfdmVyc2lvbi5sbyAgICAgICBcCiAJY2hlY2tfdmFyYmluZC5sbyBjb250YWluZXIubG8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbwlcCiAJY29udGFpbmVyX251bGwubG8gY29udGFpbmVyX2xpc3Rfc3NsbC5sbyBjb250YWluZXJfaXRlcmF0b3IubG8gXAotCWNtdV9jb21wYXQubG8gdWNkX2NvbXBhdC5sbyBAb3RoZXJfbG9ianNfbGlzdEAKKwljbXVfY29tcGF0LmxvIHVjZF9jb21wYXQubG8gc25tcF9vcGVuc3NsLmxvIEBvdGhlcl9sb2Jqc19saXN0QAogCiAjIGp1c3QgaW4gY2FzZSBzb21lb25lIHdhbnRzIHRvIHJlbW92ZSBsaWJ0b29sLCBjaGFuZ2UgdGhpcyB0byBPQkpTLgogVE9CSlM9JChMT0JKUykKQEAgLTE4OCwxMSArMTk1LDExIEBACiAKICMgaG93IHRvIGJ1aWxkIHRoZSBsaWJyYXJpZXMuCiBsaWJuZXRzbm1wLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKTogICAgJChUT0JKUykKLQkkKExJQl9MRF9DTUQpICRAICQoVE9CSlMpICQoTERGTEFHUykgQExORVRTTk1QTElCU0AKKwkkKExJQl9MRF9DTUQpICRAIEBMRF9OT19VTkRFRklORURAICQoVE9CSlMpICQoTERGTEFHUykgQExORVRTTk1QTElCU0AKIAkkKFJBTkxJQikgJEAKIAogbGlic25tcC4kKExJQl9FWFRFTlNJT04pJChMSUJfVkVSU0lPTik6ICAgICQoVE9CSlMpCi0JJChMSUJfTERfQ01EKSAkQCAkKFRPQkpTKSAkKExERkxBR1MpIEBMTkVUU05NUExJQlNACisJJChMSUJfTERfQ01EKSAkQCBATERfTk9fVU5ERUZJTkVEQCAkKFRPQkpTKSAkKExERkxBR1MpIEBMTkVUU05NUExJQlNACiAJJChSQU5MSUIpICRACiAKICMKZGlmZiAtLWdpdCBhL3NubXBsaWIvYXNuMS5jIGIvc25tcGxpYi9hc24xLmMKaW5kZXggMjM0NmU2Yy4uZjk2MzJlZiAxMDA2NDQKLS0tIGEvc25tcGxpYi9hc24xLmMKKysrIGIvc25tcGxpYi9hc24xLmMKQEAgLTI1MSw2ICsyNTEsMjQgQEAKIH0KIAogLyoqCisgKiBAaW50ZXJuYWwKKyAqIG91dHB1dCBhbiBlcnJvciBmb3IgYSB3cm9uZyB0eXBlCisgKiAKKyAqIEBwYXJhbSBzdHIgICAgICAgIGVycm9yIHN0cmluZworICogQHBhcmFtIHdyb25ndHlwZSAgd3JvbmcgdHlwZQorICovCitzdGF0aWMKKyAgICB2b2lkCitfYXNuX3R5cGVfZXJyKGNvbnN0IGNoYXIgKnN0ciwgaW50IHdyb25ndHlwZSkKK3sKKyAgICBjaGFyICAgICAgICAgICAgZWJ1ZlsxMjhdOworCisgICAgc25wcmludGYoZWJ1Ziwgc2l6ZW9mKGVidWYpLCAiJXMgdHlwZSAlZCIsIHN0ciwgd3Jvbmd0eXBlKTsKKyAgICBlYnVmWyBzaXplb2YoZWJ1ZiktMSBdID0gMDsKKyAgICBFUlJPUl9NU0coZWJ1Zik7Cit9CisKKy8qKgogICogQGludGVybmFsIAogICogb3V0cHV0IGFuIGVycm9yIGZvciBhIHdyb25nIGxlbmd0aAogICogCkBAIC00ODIsMTIgKzUwMCwxNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgKnR5cGUgPSAqYnVmcCsrOworICAgIGlmICgqdHlwZSAhPSBBU05fSU5URUdFUikgeworICAgICAgICBfYXNuX3R5cGVfZXJyKGVycnByZSwgKnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBidWZwID0gYXNuX3BhcnNlX2xlbmd0aChidWZwLCAmYXNuX2xlbmd0aCk7CiAgICAgaWYgKF9hc25fcGFyc2VfbGVuZ3RoX2NoZWNrCiAgICAgICAgIChlcnJwcmUsIGJ1ZnAsIGRhdGEsIGFzbl9sZW5ndGgsICpkYXRhbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoKHNpemVfdCkgYXNuX2xlbmd0aCA+IGludHNpemUpIHsKKyAgICBpZiAoKHNpemVfdCkgYXNuX2xlbmd0aCA+IGludHNpemUgfHwgKGludCkgYXNuX2xlbmd0aCA9PSAwKSB7CiAgICAgICAgIF9hc25fbGVuZ3RoX2VycihlcnJwcmUsIChzaXplX3QpIGFzbl9sZW5ndGgsIGludHNpemUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MDMsNyArNTI2LDcgQEAKIAogICAgIENIRUNLX09WRVJGTE9XX1ModmFsdWUsMSk7CiAKLSAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBJbnRlZ2VyOlx0JWxkICgweCUuMlgpXG4iLCB2YWx1ZSwgdmFsdWUpKTsKKyAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBJbnRlZ2VyOlx0JWxkICgweCUuMmxYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CiAKICAgICAqaW50cCA9IHZhbHVlOwogICAgIHJldHVybiBidWZwOwpAQCAtNTQ5LDEyICs1NzIsMTcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgICp0eXBlID0gKmJ1ZnArKzsKKyAgICBpZiAoKnR5cGUgIT0gQVNOX0NPVU5URVIgJiYgKnR5cGUgIT0gQVNOX0dBVUdFICYmICp0eXBlICE9IEFTTl9USU1FVElDS1MKKyAgICAgICAgICAgICYmICp0eXBlICE9IEFTTl9VSU5URUdFUikgeworICAgICAgICBfYXNuX3R5cGVfZXJyKGVycnByZSwgKnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgYnVmcCA9IGFzbl9wYXJzZV9sZW5ndGgoYnVmcCwgJmFzbl9sZW5ndGgpOwogICAgIGlmIChfYXNuX3BhcnNlX2xlbmd0aF9jaGVjawogICAgICAgICAoZXJycHJlLCBidWZwLCBkYXRhLCBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCgoaW50KSBhc25fbGVuZ3RoID4gKGludHNpemUgKyAxKSkgfHwKKyAgICBpZiAoKChpbnQpIGFzbl9sZW5ndGggPiAoaW50c2l6ZSArIDEpKSB8fCAoKGludCkgYXNuX2xlbmd0aCA9PSAwKSB8fAogICAgICAgICAoKChpbnQpIGFzbl9sZW5ndGggPT0gaW50c2l6ZSArIDEpICYmICpidWZwICE9IDB4MDApKSB7CiAgICAgICAgIF9hc25fbGVuZ3RoX2VycihlcnJwcmUsIChzaXplX3QpIGFzbl9sZW5ndGgsIGludHNpemUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU3MCw3ICs1OTgsNyBAQAogCiAgICAgQ0hFQ0tfT1ZFUkZMT1dfVSh2YWx1ZSwyKTsKIAotICAgIERFQlVHTVNHKCgiZHVtcHZfcmVjdiIsICIgIFVJbnRlZ2VyOlx0JWxkICgweCUuMlgpXG4iLCB2YWx1ZSwgdmFsdWUpKTsKKyAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBVSW50ZWdlcjpcdCVsZCAoMHglLjJsWClcbiIsIHZhbHVlLCB2YWx1ZSkpOwogCiAgICAgKmludHAgPSB2YWx1ZTsKICAgICByZXR1cm4gYnVmcDsKQEAgLTY0OSw3ICs2NzcsNyBAQAogICAgICAgICBpbnRlZ2VyIDw8PSA4OwogICAgIH0KICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsIGluaXRkYXRhcCwgZGF0YSAtIGluaXRkYXRhcCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgKmludHAsICppbnRwKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJsWClcbiIsICppbnRwLCAqaW50cCkpOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC03NDUsNyArNzczLDcgQEAKICAgICAgICAgaW50ZWdlciA8PD0gODsKICAgICB9CiAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCBpbml0ZGF0YXAsIGRhdGEgLSBpbml0ZGF0YXApOwotICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIFVJbnRlZ2VyOlx0JWxkICgweCUuMlgpXG4iLCAqaW50cCwgKmludHApKTsKKyAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBVSW50ZWdlcjpcdCVsZCAoMHglLjJsWClcbiIsICppbnRwLCAqaW50cCkpOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC03ODgsNiArODE2LDEyIEBACiAgICAgdV9sb25nICAgICAgICAgIGFzbl9sZW5ndGg7CiAKICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9PQ1RFVF9TVFIgJiYgKnR5cGUgIT0gQVNOX0lQQUREUkVTUyAmJiAqdHlwZSAhPSBBU05fT1BBUVVFCisgICAgICAgICAgICAmJiAqdHlwZSAhPSBBU05fTlNBUCkgeworICAgICAgICBfYXNuX3R5cGVfZXJyKGVycnByZSwgKnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBidWZwID0gYXNuX3BhcnNlX2xlbmd0aChidWZwLCAmYXNuX2xlbmd0aCk7CiAgICAgaWYgKF9hc25fcGFyc2VfbGVuZ3RoX2NoZWNrCiAgICAgICAgIChlcnJwcmUsIGJ1ZnAsIGRhdGEsIGFzbl9sZW5ndGgsICpkYXRhbGVuZ3RoKSkgewpAQCAtMTI4Niw2ICsxMzIwLDcgQEAKICAgICAgICAgICAgICAgICBzaXplX3QgKiBkYXRhbGVuZ3RoLAogICAgICAgICAgICAgICAgIHVfY2hhciAqIHR5cGUsIG9pZCAqIG9iamlkLCBzaXplX3QgKiBvYmppZGxlbmd0aCkKIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqZXJycHJlID0gInBhcnNlIG9iamlkIjsKICAgICAvKgogICAgICAqIEFTTi4xIG9iamlkIDo6PSAweDA2IGFzbmxlbmd0aCBzdWJpZGVudGlmaWVyIHtzdWJpZGVudGlmaWVyfSoKICAgICAgKiBzdWJpZGVudGlmaWVyIDo6PSB7bGVhZGluZ2J5dGV9KiBsYXN0Ynl0ZQpAQCAtMTMwMCw2ICsxMzM1LDEwIEBACiAgICAgc2l6ZV90ICAgICAgICAgIG9yaWdpbmFsX2xlbmd0aCA9ICpvYmppZGxlbmd0aDsKIAogICAgICp0eXBlID0gKmJ1ZnArKzsKKyAgICBpZiAoKnR5cGUgIT0gQVNOX09CSkVDVF9JRCkgeworICAgICAgICBfYXNuX3R5cGVfZXJyKGVycnByZSwgKnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgYnVmcCA9IGFzbl9wYXJzZV9sZW5ndGgoYnVmcCwgJmFzbl9sZW5ndGgpOwogICAgIGlmIChfYXNuX3BhcnNlX2xlbmd0aF9jaGVjaygicGFyc2Ugb2JqaWQiLCBidWZwLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpCkBAIC0xNjY5LDYgKzE3MDgsMTAgQEAKICAgICB1X2xvbmcgICAgICAgICAgYXNuX2xlbmd0aDsKIAogICAgICp0eXBlID0gKmJ1ZnArKzsKKyAgICBpZiAoKnR5cGUgIT0gQVNOX0JJVF9TVFIpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGJ1ZnAgPSBhc25fcGFyc2VfbGVuZ3RoKGJ1ZnAsICZhc25fbGVuZ3RoKTsKICAgICBpZiAoX2Fzbl9wYXJzZV9sZW5ndGhfY2hlY2soZXJycHJlLCBidWZwLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpCkBAIC0xNzg5LDYgKzE4MzIsMTQgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgICp0eXBlID0gKmJ1ZnArKzsKKyAgICBpZiAoKnR5cGUgIT0gQVNOX0NPVU5URVI2NAorI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUworICAgICAgICAgICAgJiYgKnR5cGUgIT0gQVNOX09QQVFVRQorI2VuZGlmCisgICAgICAgICAgICApIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGJ1ZnAgPSBhc25fcGFyc2VfbGVuZ3RoKGJ1ZnAsICZhc25fbGVuZ3RoKTsKICAgICBpZiAoX2Fzbl9wYXJzZV9sZW5ndGhfY2hlY2sKICAgICAgICAgKGVycnByZSwgYnVmcCwgZGF0YSwgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQpAQCAtMTk4OCw3ICsyMDM5LDcgQEAKICAgICBERUJVR0lGKCJkdW1wdl9zZW5kIikgewogICAgICAgICBjaGFyICAgICAgICAgICAgaTY0YnVmW0k2NENIQVJTWiArIDFdOwogICAgICAgICBwcmludFU2NChpNjRidWYsIGNwKTsKLSAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgaTY0YnVmKSk7CisgICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIlcyIsIGk2NGJ1ZikpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTIyMjQsNiArMjI3NSw3IEBACiAgICAgICAgICAgICAgICAgc2l6ZV90ICogZGF0YWxlbmd0aCwKICAgICAgICAgICAgICAgICB1X2NoYXIgKiB0eXBlLCBmbG9hdCAqZmxvYXRwLCBzaXplX3QgZmxvYXRzaXplKQogeworICAgIHN0YXRpYyBjb25zdCBjaGFyICplcnJwcmUgPSAicGFyc2UgZmxvYXQiOwogICAgIHJlZ2lzdGVyIHVfY2hhciAqYnVmcCA9IGRhdGE7CiAgICAgdV9sb25nICAgICAgICAgIGFzbl9sZW5ndGg7CiAgICAgdW5pb24gewpAQCAtMjI2NCw2ICsyMzE2LDExIEBACiAgICAgICAgICp0eXBlID0gQVNOX09QQVFVRV9GTE9BVDsKICAgICB9CiAKKyAgICBpZiAoKnR5cGUgIT0gQVNOX09QQVFVRV9GTE9BVCkgeworICAgICAgICBfYXNuX3R5cGVfZXJyKGVycnByZSwgKnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBpZiAoYXNuX2xlbmd0aCAhPSBzaXplb2YoZmxvYXQpKSB7CiAgICAgICAgIF9hc25fc2l6ZV9lcnIoInBhcnNlIHNlcSBmbG9hdCIsIGFzbl9sZW5ndGgsIHNpemVvZihmbG9hdCkpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzODksNiArMjQ0Niw3IEBACiAgICAgICAgICAgICAgICAgIHNpemVfdCAqIGRhdGFsZW5ndGgsCiAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHR5cGUsIGRvdWJsZSAqZG91YmxlcCwgc2l6ZV90IGRvdWJsZXNpemUpCiB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmVycnByZSA9ICJwYXJzZSBkb3VibGUiOwogICAgIHJlZ2lzdGVyIHVfY2hhciAqYnVmcCA9IGRhdGE7CiAgICAgdV9sb25nICAgICAgICAgIGFzbl9sZW5ndGg7CiAgICAgbG9uZyAgICAgICAgICAgIHRtcDsKQEAgLTI0MzEsNiArMjQ4OSwxMSBAQAogICAgICAgICAqdHlwZSA9IEFTTl9PUEFRVUVfRE9VQkxFOwogICAgIH0KIAorICAgIGlmICgqdHlwZSAhPSBBU05fT1BBUVVFX0RPVUJMRSkgeworICAgICAgICBfYXNuX3R5cGVfZXJyKGVycnByZSwgKnR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBpZiAoYXNuX2xlbmd0aCAhPSBzaXplb2YoZG91YmxlKSkgewogICAgICAgICBfYXNuX3NpemVfZXJyKCJwYXJzZSBzZXEgZG91YmxlIiwgYXNuX2xlbmd0aCwgc2l6ZW9mKGRvdWJsZSkpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI1NTcsMTUgKzI2MjAsMTYgQEAKICAgICBpZiAocGt0ICE9IE5VTEwgJiYgcGt0X2xlbiAhPSBOVUxMKSB7CiAgICAgICAgIHNpemVfdCAgICAgICAgICBvbGRfcGt0X2xlbiA9ICpwa3RfbGVuOwogCi0gICAgICAgIERFQlVHTVNHVEwoKCJhc25fcmVhbGxvYyIsICIgb2xkX3BrdCAlMDhwLCBvbGRfcGt0X2xlbiAlMDh4XG4iLAotICAgICAgICAgICAgICAgICAgICAqcGt0LCBvbGRfcGt0X2xlbikpOworICAgICAgICBERUJVR01TR1RMKCgiYXNuX3JlYWxsb2MiLCAiIG9sZF9wa3QgJThwLCBvbGRfcGt0X2xlbiAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICpwa3QsICh1bnNpZ25lZCBsb25nKW9sZF9wa3RfbGVuKSk7CiAKICAgICAgICAgaWYgKHNubXBfcmVhbGxvYyhwa3QsIHBrdF9sZW4pKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiYXNuX3JlYWxsb2MiLCAiIG5ld19wa3QgJTA4cCwgbmV3X3BrdF9sZW4gJTA4eFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICpwa3QsICpwa3RfbGVuKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYXNuX3JlYWxsb2MiLCAiIG5ld19wa3QgJThwLCBuZXdfcGt0X2xlbiAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAqcGt0LCAodW5zaWduZWQgbG9uZykqcGt0X2xlbikpOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgbWVtbW92ZSglMDhwICsgJTA4eCwgJTA4cCwgJTA4eClcbiIsICpwa3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAoKnBrdF9sZW4gLSBvbGRfcGt0X2xlbiksICpwa3QsIG9sZF9wa3RfbGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAiIG1lbW1vdmUoJThwICsgJTA4eCwgJThwLCAlMDh4KVxuIiwKKwkJCSpwa3QsICh1bnNpZ25lZCkoKnBrdF9sZW4gLSBvbGRfcGt0X2xlbiksCisJCQkqcGt0LCAodW5zaWduZWQpb2xkX3BrdF9sZW4pKTsKICAgICAgICAgICAgIG1lbW1vdmUoKnBrdCArICgqcGt0X2xlbiAtIG9sZF9wa3RfbGVuKSwgKnBrdCwgb2xkX3BrdF9sZW4pOwogICAgICAgICAgICAgbWVtc2V0KCpwa3QsIChpbnQpICcgJywgKnBrdF9sZW4gLSBvbGRfcGt0X2xlbik7CiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTI3NTYsNyArMjgyMCw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsICgqcGt0ICsgKnBrdF9sZW4gLSAqb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqb2Zmc2V0IC0gc3RhcnRfb2Zmc2V0KSk7Ci0gICAgICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBJbnRlZ2VyOlx0JWxkICgweCUuMlgpXG4iLCAqaW50cCwKKyAgICAgICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIEludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCAqaW50cCwKICAgICAgICAgICAgICAgICAgICAgICAqaW50cCkpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KQEAgLTI5MDksNyArMjk3Myw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsICgqcGt0ICsgKnBrdF9sZW4gLSAqb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqb2Zmc2V0IC0gc3RhcnRfb2Zmc2V0KSk7Ci0gICAgICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBVSW50ZWdlcjpcdCVsdSAoMHglLjJYKVxuIiwgKmludHAsCisgICAgICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBVSW50ZWdlcjpcdCVsdSAoMHglLjJsWClcbiIsICppbnRwLAogICAgICAgICAgICAgICAgICAgICAgICppbnRwKSk7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXIuYyBiL3NubXBsaWIvY29udGFpbmVyLmMKaW5kZXggMDhhNGM2My4uYjU2NDQxZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXIuYworKysgYi9zbm1wbGliL2NvbnRhaW5lci5jCkBAIC0xLDMgKzEsMTMgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KQEAgLTcxLDEwICs4MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJzb3J0ZWRfc2luZ2x5X2xpbmtlZF9saXN0IikpOwogCiAgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXJfd2l0aF9jb21wYXJlCisgICAgICAgICgiY3N0cmluZyIsIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJiaW5hcnlfYXJyYXkiKSwKKyAgICAgICAgIG5ldHNubXBfY29tcGFyZV9kaXJlY3RfY3N0cmluZyk7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3Rlcl93aXRoX2NvbXBhcmUKICAgICAgICAgKCJzdHJpbmciLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCiAgICAgICAgICBuZXRzbm1wX2NvbXBhcmVfY3N0cmluZyk7CiAgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXJfd2l0aF9jb21wYXJlCi0gICAgICAgICgic3RyaW5nOmJpbmFyeV9hcnJheSIsIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJiaW5hcnlfYXJyYXkiKSwKKyAgICAgICAgKCJzdHJpbmdfYmluYXJ5X2FycmF5IiwgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZhY3RvcnkoImJpbmFyeV9hcnJheSIpLAogICAgICAgICAgbmV0c25tcF9jb21wYXJlX2NzdHJpbmcpOwogCiB9CkBAIC0zMjMsNyArMzM3LDggQEAKICAgICAgICAgcmMyID0geC0+cmVtb3ZlKHgsayk7CiAgICAgICAgIC8qKiBpZ25vcmUgcmVtb3ZlIGVycm9ycyBpZiB0aGVyZSBpcyBhIGZpbHRlciBpbiBwbGFjZSAqLwogICAgICAgICBpZiAoKHJjMikgJiYgKE5VTEwgPT0geC0+aW5zZXJ0X2ZpbHRlcikpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciByZW1vdmUgKCVkKVxuIiwgcmMyKTsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciAnJXMnIHJlbW92ZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiLCByYzIpOwogICAgICAgICAgICAgcmMgPSByYzI7CiAgICAgICAgIH0KICAgICAgICAgeCA9IHgtPnByZXY7CkBAIC0zNDUsMTIgKzM2MCwxNSBAQAogICAgICAgICB4ID0geC0+bmV4dDsKICAgICB3aGlsZSh4KSB7CiAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICp0bXA7CisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgIHRtcCA9IHgtPnByZXY7CisgICAgICAgIG5hbWUgPSB4LT5jb250YWluZXJfbmFtZTsKICAgICAgICAgaWYgKE5VTEwgIT0geC0+Y29udGFpbmVyX25hbWUpCiAgICAgICAgICAgICBTTk1QX0ZSRUUoeC0+Y29udGFpbmVyX25hbWUpOwogICAgICAgICByYzIgPSB4LT5jZnJlZSh4KTsKICAgICAgICAgaWYgKHJjMikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyIGNmcmVlICglZClcbiIsIHJjMik7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBjZnJlZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgbmFtZSA/IG5hbWUgOiAiIiwgcmMyKTsKICAgICAgICAgICAgIHJjID0gcmMyOwogICAgICAgICB9CiAgICAgICAgIHggPSB0bXA7CkBAIC00OTUsNiArNTEzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgc3RybGVuKCgoY29uc3QgY29udGFpbmVyX3R5cGUqKXJocyktPm5hbWUpKTsKIH0KIAoraW50CituZXRzbm1wX2NvbXBhcmVfZGlyZWN0X2NzdHJpbmcoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKK3sKKyAgICByZXR1cm4gc3RyY21wKChjb25zdCBjaGFyKilsaHMsIChjb25zdCBjaGFyKilyaHMpOworfQorCiAvKgogICogY29tcGFyZSB0d28gbWVtb3J5IGJ1ZmZlcnMKICAqCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYyBiL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCmluZGV4IDQzZWZjNGIuLjdkMTFjMzcgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCkBAIC0yMzIsNyArMjMyLDcgQEAKICAgICAgKiBpZiB0aGVyZSBpcyBubyBkYXRhLCByZXR1cm4gTlVMTDsKICAgICAgKi8KICAgICBpZiAoIXQtPmNvdW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKgogICAgICAqIGlmIHRoZSB0YWJsZSBpcyBkaXJ0eSwgc29ydCBpdC4KQEAgLTI0NSw3ICsyNDUsNyBAQAogICAgICAqLwogICAgIGlmIChrZXkpIHsKICAgICAgICAgaWYgKChpbmRleCA9IGJpbmFyeV9zZWFyY2goa2V5LCBjLCBleGFjdCkpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gdC0+ZGF0YVtpbmRleF07CkBAIC0zMzYsOCArMzM2LDggQEAKIG5ldHNubXBfYmluYXJ5X2FycmF5X2luc2VydChuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqZW50cnkpCiB7CiAgICAgYmluYXJ5X2FycmF5X3RhYmxlICp0ID0gKGJpbmFyeV9hcnJheV90YWJsZSopYy0+Y29udGFpbmVyX2RhdGE7Ci0gICAgaW50ICAgICAgICAgICAgIG5ld19tYXgsIG5ld19zaXplOwotICAgIGNoYXIgICAgICAgICAgICpuZXdfZGF0YTsgICAvKiBVc2VkIGZvciAqIGEpIGV4dGVuZGluZyB0aGUgZGF0YSB0YWJsZQorICAgIGludCAgICAgICAgICAgICBuZXdfbWF4OworICAgIHZvaWQgICAgICAgICAgICpuZXdfZGF0YTsgICAvKiBVc2VkIGZvciAqIGEpIGV4dGVuZGluZyB0aGUgZGF0YSB0YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqIGIpIHRoZSBuZXh0IGVudHJ5IHRvIHVzZSAqLwogICAgIC8qCiAgICAgICogY2hlY2sgZm9yIGR1cGxpY2F0ZXMKQEAgLTM2MSwxNCArMzYxLDEzIEBACiAgICAgICAgIGlmIChuZXdfbWF4ID09IDApCiAgICAgICAgICAgICBuZXdfbWF4ID0gMTA7ICAgICAgIC8qIFN0YXJ0IHdpdGggMTAgZW50cmllcyAqLwogCi0gICAgICAgIG5ld19zaXplID0gbmV3X21heCAqIHQtPmRhdGFfc2l6ZTsKLSAgICAgICAgbmV3X2RhdGEgPSAoY2hhciAqKSByZWFsbG9jKHQtPmRhdGEsIG5ld19zaXplKTsKKyAgICAgICAgbmV3X2RhdGEgPSAodm9pZCAqKSBjYWxsb2MobmV3X21heCwgdC0+ZGF0YV9zaXplKTsKICAgICAgICAgaWYgKG5ld19kYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaW50IG9sZF9zaXplID0gdC0+bWF4X3NpemUgKiB0LT5kYXRhX3NpemU7Ci0gICAgICAgICAgICBpbnQgY291bnQgPSBuZXdfc2l6ZSAtIG9sZF9zaXplOwotICAgICAgICAgICAgbWVtc2V0KCZuZXdfZGF0YVtvbGRfc2l6ZV0sIDB4MCwgY291bnQpOworCisgICAgICAgIGlmICh0LT5kYXRhKSB7CisgICAgICAgICAgICBtZW1jcHkobmV3X2RhdGEsIHQtPmRhdGEsIHQtPm1heF9zaXplICogdC0+ZGF0YV9zaXplKTsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh0LT5kYXRhKTsKICAgICAgICAgfQogICAgICAgICB0LT5kYXRhID0gKHZvaWQqKiluZXdfZGF0YTsKICAgICAgICAgdC0+bWF4X3NpemUgPSBuZXdfbWF4OwpAQCAtNDM0LDcgKzQzMyw3IEBACiAgICAgICogaWYgdGhlcmUgaXMgbm8gZGF0YSwgcmV0dXJuIE5VTEw7CiAgICAgICovCiAgICAgaWYgKCF0LT5jb3VudCB8fCAha2V5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKgogICAgICAqIGlmIHRoZSB0YWJsZSBpcyBkaXJ0eSwgc29ydCBpdC4KQEAgLTQ0Nyw3ICs0NDYsNyBAQAogICAgICAqLwogICAgIHN0YXJ0ID0gZW5kID0gYmluYXJ5X3NlYXJjaF9mb3Jfc3RhcnQoKG5ldHNubXBfaW5kZXggKilrZXksIGMpOwogICAgIGlmIChzdGFydCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChpID0gc3RhcnQgKyAxOyBpIDwgdC0+Y291bnQ7ICsraSkgewogICAgICAgICBpZiAoMCAhPSBjLT5uY29tcGFyZSh0LT5kYXRhW2ldLCBrZXkpKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMgYi9zbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYwppbmRleCA4NzgyZmQwLi4xNGE2YTcyIDEwMDY0NAotLS0gYS9zbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYwpAQCAtNDQsNiArNDQsMTUgQEAKIAogfSBzbF9jb250YWluZXI7CiAKK3R5cGVkZWYgc3RydWN0IHNzbGxfaXRlcmF0b3JfcyB7CisgICAgbmV0c25tcF9pdGVyYXRvciBiYXNlOworIAorICAgIHNsX25vZGUgICAgICAgICAqcG9zOworICAgIHNsX25vZGUgICAgICAgICAqbGFzdDsKK30gc3NsbF9pdGVyYXRvcjsKKworc3RhdGljIG5ldHNubXBfaXRlcmF0b3IgKl9zc2xsX2l0ZXJhdG9yX2dldChuZXRzbm1wX2NvbnRhaW5lciAqYyk7CisKIAogc3RhdGljIHZvaWQgKgogX2dldChuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqa2V5LCBpbnQgZXhhY3QpCkBAIC04NSwxMiArOTQsMTMgQEAKICAqCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogX3NzbGxfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqYykKIHsKICAgICBpZihjKSB7CiAgICAgICAgIGZyZWUoYyk7CiAgICAgfQorICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCAqCkBAIC0xMjUsNiArMTM1LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG5ld19ub2RlLT5kYXRhID0gTkVUU05NUF9SRU1PVkVfQ09OU1Qodm9pZCAqLCBkYXRhKTsKICAgICArK3NsLT5jb3VudDsKKyAgICArK2MtPnN5bmM7CiAKICAgICAvKgogICAgICAqIGZpcnN0IG5vZGU/CkBAIC0yMjMsNiArMjM0LDcgQEAKICAgICAgKi8KICAgICBmcmVlKGN1cnIpOwogICAgIC0tc2wtPmNvdW50OworICAgICsrYy0+c3luYzsKICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTI3OCw2ICsyOTAsNyBAQAogICAgIH0KICAgICBzbC0+aGVhZCA9IE5VTEw7CiAgICAgc2wtPmNvdW50ID0gMDsKKyAgICArK2MtPnN5bmM7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0yOTcsNyArMzEwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgc2wtPmMuY2ZyZWUgPSAobmV0c25tcF9jb250YWluZXJfcmMqKV9zc2xsX2ZyZWU7CisgICAgc2wtPmMuY2ZyZWUgPSBfc3NsbF9mcmVlOwogICAgICAgICAKICAgICBzbC0+Yy5nZXRfc2l6ZSA9IF9zc2xsX3NpemU7CiAgICAgc2wtPmMuaW5pdCA9IE5VTEw7CkBAIC0zMDYsNyArMzE5LDcgQEAKICAgICBzbC0+Yy5maW5kID0gX3NzbGxfZmluZDsKICAgICBzbC0+Yy5maW5kX25leHQgPSBfc3NsbF9maW5kX25leHQ7CiAgICAgc2wtPmMuZ2V0X3N1YnNldCA9IE5VTEw7Ci0gICAgc2wtPmMuZ2V0X2l0ZXJhdG9yID0gTlVMTDsKKyAgICBzbC0+Yy5nZXRfaXRlcmF0b3IgPV9zc2xsX2l0ZXJhdG9yX2dldDsKICAgICBzbC0+Yy5mb3JfZWFjaCA9IF9zc2xsX2Zvcl9lYWNoOwogICAgIHNsLT5jLmNsZWFyID0gX3NzbGxfY2xlYXI7CiAKQEAgLTM5MSwzICs0MDQsMTU0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZpZm9fZmFjdG9yeSgpKTsKIH0KIAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGl0ZXJhdG9yCisgKgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgc2xfY29udGFpbmVyICoKK19zc2xsX2l0MmNvbnQoc3NsbF9pdGVyYXRvciAqaXQpCit7CisgICAgaWYoTlVMTCA9PSBpdCkgeworICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGl0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYoTlVMTCA9PSBpdC0+YmFzZS5jb250YWluZXIpIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpdC0+YmFzZS5jb250YWluZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZihpdC0+YmFzZS5jb250YWluZXItPnN5bmMgIT0gaXQtPmJhc2Uuc3luYykgeworICAgICAgICBERUJVR01TR1RMKCgiY29udGFpbmVyOml0ZXJhdG9yIiwgIm91dCBvZiBzeW5jXG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoc2xfY29udGFpbmVyICopaXQtPmJhc2UuY29udGFpbmVyOworfQorCitzdGF0aWMgdm9pZCAqCitfc3NsbF9pdGVyYXRvcl9jdXJyKHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIHNsX2NvbnRhaW5lciAqdCA9IF9zc2xsX2l0MmNvbnQoaXQpOworICAgIGlmICgoTlVMTCA9PSB0KSB8fCAoTlVMTCA9PSBpdC0+cG9zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gaXQtPnBvcy0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfZmlyc3Qoc3NsbF9pdGVyYXRvciAqaXQpCit7CisgICAgc2xfY29udGFpbmVyICp0ID0gX3NzbGxfaXQyY29udChpdCk7CisgICAgaWYgKChOVUxMID09IHQpIHx8IChOVUxMID09IHQtPmhlYWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiB0LT5oZWFkLT5kYXRhOworfQorCitzdGF0aWMgdm9pZCAqCitfc3NsbF9pdGVyYXRvcl9uZXh0KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIHNsX2NvbnRhaW5lciAqdCA9IF9zc2xsX2l0MmNvbnQoaXQpOworICAgIGlmICgoTlVMTCA9PSB0KSB8fCAoTlVMTCA9PSBpdC0+cG9zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpdC0+cG9zID0gaXQtPnBvcy0+bmV4dDsKKyAgICBpZiAoTlVMTCA9PSBpdC0+cG9zKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBpdC0+cG9zLT5kYXRhOworfQorCitzdGF0aWMgdm9pZCAqCitfc3NsbF9pdGVyYXRvcl9sYXN0KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIHNsX25vZGUgICAgICAqbjsKKyAgICBzbF9jb250YWluZXIgKnQgPSBfc3NsbF9pdDJjb250KGl0KTsKKyAgICBpZihOVUxMID09IHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIAorICAgIGlmIChpdC0+bGFzdCkKKyAgICAgICAgcmV0dXJuIGl0LT5sYXN0OworCisgICAgbiA9IGl0LT5wb3MgPyBpdC0+cG9zIDogdC0+aGVhZDsKKyAgICBpZiAoTlVMTCA9PSBuKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHdoaWxlKG4tPm5leHQpCisgICAgICAgIG4gPSBuLT5uZXh0OworCisgICAgaWYgKE5VTEwgPT0gbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpdC0+bGFzdCA9IG47CisKKyAgICByZXR1cm4gaXQtPmxhc3QtPmRhdGE7Cit9CisKK3N0YXRpYyBpbnQKK19zc2xsX2l0ZXJhdG9yX3Jlc2V0KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIHNsX2NvbnRhaW5lciAqdDsKKworICAgIC8qKiBjYW4ndCB1c2UgaXQyY29uZiBjdXogd2UgbWlnaHQgYmUgb3V0IG9mIHN5bmMgKi8KKyAgICBpZihOVUxMID09IGl0KSB7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZihOVUxMID09IGl0LT5iYXNlLmNvbnRhaW5lcikgeworICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGl0LT5iYXNlLmNvbnRhaW5lcik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB0ID0gKHNsX2NvbnRhaW5lciAqKWl0LT5iYXNlLmNvbnRhaW5lcjsKKyAgICBpZihOVUxMID09IHQpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGl0LT5sYXN0ID0gTlVMTDsKKyAgICBpdC0+cG9zID0gdC0+aGVhZDsKKworICAgIC8qCisgICAgICogc2F2ZSBzeW5jIGNvdW50LCB0byBtYWtlIHN1cmUgY29udGFpbmVyIGRvZXNuJ3QgY2hhbmdlIHdoaWxlCisgICAgICogaXRlcmF0b3IgaXMgaW4gdXNlLgorICAgICAqLworICAgIGl0LT5iYXNlLnN5bmMgPSBpdC0+YmFzZS5jb250YWluZXItPnN5bmM7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX3NzbGxfaXRlcmF0b3JfcmVsZWFzZShuZXRzbm1wX2l0ZXJhdG9yICppdCkKK3sKKyAgICBmcmVlKGl0KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgbmV0c25tcF9pdGVyYXRvciAqCitfc3NsbF9pdGVyYXRvcl9nZXQobmV0c25tcF9jb250YWluZXIgKmMpCit7CisgICAgc3NsbF9pdGVyYXRvciogaXQ7CisKKyAgICBpZihOVUxMID09IGMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXQgPSBTTk1QX01BTExPQ19UWVBFREVGKHNzbGxfaXRlcmF0b3IpOworICAgIGlmKE5VTEwgPT0gaXQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXQtPmJhc2UuY29udGFpbmVyID0gYzsKKyAgICAKKyAgICBpdC0+YmFzZS5maXJzdCA9IChuZXRzbm1wX2l0ZXJhdG9yX3J0biopX3NzbGxfaXRlcmF0b3JfZmlyc3Q7CisgICAgaXQtPmJhc2UubmV4dCA9IChuZXRzbm1wX2l0ZXJhdG9yX3J0biopX3NzbGxfaXRlcmF0b3JfbmV4dDsKKyAgICBpdC0+YmFzZS5jdXJyID0gKG5ldHNubXBfaXRlcmF0b3JfcnRuKilfc3NsbF9pdGVyYXRvcl9jdXJyOworICAgIGl0LT5iYXNlLmxhc3QgPSAobmV0c25tcF9pdGVyYXRvcl9ydG4qKV9zc2xsX2l0ZXJhdG9yX2xhc3Q7CisgICAgaXQtPmJhc2UucmVzZXQgPSAobmV0c25tcF9pdGVyYXRvcl9yYyopX3NzbGxfaXRlcmF0b3JfcmVzZXQ7CisgICAgaXQtPmJhc2UucmVsZWFzZSA9IChuZXRzbm1wX2l0ZXJhdG9yX3JjKilfc3NsbF9pdGVyYXRvcl9yZWxlYXNlOworCisgICAgKHZvaWQpX3NzbGxfaXRlcmF0b3JfcmVzZXQoaXQpOworCisgICAgcmV0dXJuIChuZXRzbm1wX2l0ZXJhdG9yICopaXQ7Cit9CmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMgYi9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMKaW5kZXggMTAwODJhZi4uMDRjY2EyMSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfbnVsbC5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX251bGwuYwpAQCAtMTU2LDcgKzE1Niw3IEBACiAgICAgYy0+ZmluZCA9IF9udWxsX2ZpbmQ7CiAgICAgYy0+ZmluZF9uZXh0ID0gX251bGxfZmluZF9uZXh0OwogICAgIGMtPmdldF9zdWJzZXQgPSBfbnVsbF9nZXRfc3Vic2V0OwotICAgIGMtPmdldF9pdGVyYXRvciA9IDA7IC8qIF9udWxsX2l0ZXJhdG9yOyAqLworICAgIGMtPmdldF9pdGVyYXRvciA9IE5VTEw7IC8qIF9udWxsX2l0ZXJhdG9yOyAqLwogICAgIGMtPmZvcl9lYWNoID0gX251bGxfZm9yX2VhY2g7CiAgICAgYy0+Y2xlYXIgPSBfbnVsbF9jbGVhcjsKICAgICAgICAKZGlmZiAtLWdpdCBhL3NubXBsaWIvZGF0YV9saXN0LmMgYi9zbm1wbGliL2RhdGFfbGlzdC5jCmluZGV4IDAxYTdkMmMuLjgxODg1OTggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZGF0YV9saXN0LmMKKysrIGIvc25tcGxpYi9kYXRhX2xpc3QuYwpAQCAtNiwxMyArNiw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAotLyoKLSAqIHByb3RvdHlwZXMKLSAqLwotTkVUU05NUF9JTkxJTkUgdm9pZAotbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUobmV0c25tcF9kYXRhX2xpc3QgKipoZWFkLCBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSk7Ci0KLQogLyoqIEBkZWZncm91cCBkYXRhX2xpc3QgZ2VuZXJpYyBsaW5rZWQtbGlzdCBkYXRhIGhhbmRsaW5nIHdpdGggYSBzdHJpbmcgYXMgYSBrZXkuCiAgKiBAaW5ncm91cCBsaWJyYXJ5CiAgKiBAewpAQCAtNjksOCArNjIsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBub2RlLT5uYW1lID0gc3RyZHVwKG5hbWUpOwogICAgIGlmICghbm9kZS0+bmFtZSkgewotICAgICAgZnJlZShub2RlKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmcmVlKG5vZGUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbm9kZS0+ZGF0YSA9IGRhdGE7CiAgICAgbm9kZS0+ZnJlZV9mdW5jID0gYmVlcjsKQEAgLTc4LDE4ICs3MSw2IEBACiB9CiAKIC8qKiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdAotICogQG5vdGUgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUgaXMgcHJlZmVycmVkCi0gKiBAcGFyYW0gaGVhZCBhIHBvaW50ZXIgdG8gdGhlIGhlYWQgbm9kZSBvZiBhIGRhdGFfbGlzdAotICogQHBhcmFtIG5vZGUgYSBub2RlIHRvIHN0YXNoIGluIHRoZSBkYXRhX2xpc3QKLSAqLwotLyoqICAqLwotTkVUU05NUF9JTkxJTkUgdm9pZAotbmV0c25tcF9hZGRfbGlzdF9kYXRhKG5ldHNubXBfZGF0YV9saXN0ICoqaGVhZCwgbmV0c25tcF9kYXRhX2xpc3QgKm5vZGUpCi17Ci0gICAgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUoaGVhZCwgbm9kZSk7Ci19Ci0KLS8qKiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdAogICogQHBhcmFtIGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKICAqIEBwYXJhbSBub2RlIGEgbm9kZSB0byBzdGFzaCBpbiB0aGUgZGF0YV9saXN0CiAgKi8KQEAgLTEzMSw2ICsxMTIsMTggQEAKIH0KIAogLyoqIGFkZHMgZGF0YSB0byBhIGRhdGFsaXN0CisgKiBAbm90ZSBuZXRzbm1wX2RhdGFfbGlzdF9hZGRfbm9kZSBpcyBwcmVmZXJyZWQKKyAqIEBwYXJhbSBoZWFkIGEgcG9pbnRlciB0byB0aGUgaGVhZCBub2RlIG9mIGEgZGF0YV9saXN0CisgKiBAcGFyYW0gbm9kZSBhIG5vZGUgdG8gc3Rhc2ggaW4gdGhlIGRhdGFfbGlzdAorICovCisvKiogICovCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2FkZF9saXN0X2RhdGEobmV0c25tcF9kYXRhX2xpc3QgKipoZWFkLCBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSkKK3sKKyAgICBuZXRzbm1wX2RhdGFfbGlzdF9hZGRfbm9kZShoZWFkLCBub2RlKTsKK30KKworLyoqIGFkZHMgZGF0YSB0byBhIGRhdGFsaXN0CiAgKiBAcGFyYW0gaGVhZCBhIHBvaW50ZXIgdG8gdGhlIGhlYWQgbm9kZSBvZiBhIGRhdGFfbGlzdAogICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIG5vZGUgdG8gY2FjaGUgdGhlIGRhdGEuCiAgKiBAcGFyYW0gZGF0YSB0aGUgZGF0YSB0byBiZSBzdG9yZWQgdW5kZXIgdGhhdCBuYW1lCmRpZmYgLS1naXQgYS9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYyBiL3NubXBsaWIvZGVmYXVsdF9zdG9yZS5jCmluZGV4IDhlOTQwNTcuLjliZmQyMjggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZGVmYXVsdF9zdG9yZS5jCisrKyBiL3NubXBsaWIvZGVmYXVsdF9zdG9yZS5jCkBAIC0zMjQsNyArMzI0LDcgQEAKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIAotICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2RzX3NldF92b2lkIiwgIlNldHRpbmcgJXM6JWQgPSAleFxuIiwKKyAgICBERUJVR01TR1RMKCgibmV0c25tcF9kc19zZXRfdm9pZCIsICJTZXR0aW5nICVzOiVkID0gJXBcbiIsCiAgICAgICAgICAgICAgICAgc3RvcmVzW3N0b3JlaWRdLCB3aGljaCwgdmFsdWUpKTsKIAogICAgIG5ldHNubXBfZHNfdm9pZHNbc3RvcmVpZF1bd2hpY2hdID0gdmFsdWU7CkBAIC00NDIsMTAgKzQ0MiwxNCBAQAogCiAgICAgaWYgKG5ldHNubXBfZHNfY29uZmlncyA9PSBOVUxMKSB7CiAgICAgICAgIG5ldHNubXBfZHNfY29uZmlncyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kc19yZWFkX2NvbmZpZyk7CisgICAgICAgIGlmIChuZXRzbm1wX2RzX2NvbmZpZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgZHJzcCA9IG5ldHNubXBfZHNfY29uZmlnczsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGRyc3AgPSBuZXRzbm1wX2RzX2NvbmZpZ3M7IGRyc3AtPm5leHQgIT0gTlVMTDsgZHJzcCA9IGRyc3AtPm5leHQpOwogICAgICAgICBkcnNwLT5uZXh0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2RzX3JlYWRfY29uZmlnKTsKKyAgICAgICAgaWYgKGRyc3AtPm5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgZHJzcCA9IGRyc3AtPm5leHQ7CiAgICAgfQogCkBAIC00ODgsMTAgKzQ5MiwxNCBAQAogCiAgICAgaWYgKG5ldHNubXBfZHNfY29uZmlncyA9PSBOVUxMKSB7CiAgICAgICAgIG5ldHNubXBfZHNfY29uZmlncyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kc19yZWFkX2NvbmZpZyk7CisgICAgICAgIGlmIChuZXRzbm1wX2RzX2NvbmZpZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgZHJzcCA9IG5ldHNubXBfZHNfY29uZmlnczsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGRyc3AgPSBuZXRzbm1wX2RzX2NvbmZpZ3M7IGRyc3AtPm5leHQgIT0gTlVMTDsgZHJzcCA9IGRyc3AtPm5leHQpOwogICAgICAgICBkcnNwLT5uZXh0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2RzX3JlYWRfY29uZmlnKTsKKyAgICAgICAgaWYgKGRyc3AtPm5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgZHJzcCA9IGRyc3AtPm5leHQ7CiAgICAgfQogCkBAIC01MjIsNyArNTMwLDcgQEAKIH0KIAogdm9pZAotbmV0c25tcF9kc19zaHV0ZG93bigpCituZXRzbm1wX2RzX3NodXRkb3duKHZvaWQpCiB7CiAgICAgbmV0c25tcF9kc19yZWFkX2NvbmZpZyAqZHJzcDsKICAgICBpbnQgICAgICAgICAgICAgaSwgajsKZGlmZiAtLWdpdCBhL3NubXBsaWIvZGlyX3V0aWxzLmMgYi9zbm1wbGliL2Rpcl91dGlscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDNjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL2Rpcl91dGlscy5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmIEhBVkVfU1RETElCX0gKKyMgICBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyMgICBpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RSSU5HX0gKKyMgICBpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjICBpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIEhBVkVfTElNSVRTX0gKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0RJUkVOVF9ICisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBIQVZFX0RNQUxMT0NfSAorIyAgaW5jbHVkZSA8ZG1hbGxvYy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaD4KKworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX3JlYWQobmV0c25tcF9jb250YWluZXIgKnVzZXJfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGlybmFtZSwgdV9pbnQgZmxhZ3MpCit7CisgICAgRElSICAgICAgICAgICAgICAgKmRpcjsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gdXNlcl9jb250YWluZXI7CisgICAgc3RydWN0IGRpcmVudCAgICAgKmZpbGU7CisgICAgY2hhciAgICAgICAgICAgICAgIHBhdGhbUEFUSF9NQVhdOworICAgIHVfY2hhciAgICAgICAgICAgICBkaXJuYW1lX2xlbjsKKyAgICBpbnQgICAgICAgICAgICAgICAgcmM7CisjaWYgIShkZWZpbmVkKEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUpICYmIGRlZmluZWQoRFRfRElSKSkgJiYgZGVmaW5lZChTX0lTRElSKQorICAgIHN0cnVjdCBzdGF0ICAgICAgICBzdGF0YnVmOworI2VuZGlmCisKKyAgICBERUJVR01TR1RMKCgiZGlyZWN0b3J5OmNvbnRhaW5lciIsICJyZWFkaW5nICVzXG4iLCBkaXJuYW1lKSk7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgY29udGFpbmVyLCBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiZGlyZWN0b3J5X2NvbnRhaW5lcjpjc3RyaW5nIik7CisgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJkaXJlY3RvcnkgY29udGFpbmVyIik7CisgICAgICAgIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0KGNvbnRhaW5lciwgMSwgQ09OVEFJTkVSX0tFWV9VTlNPUlRFRCk7CisgICAgfQorCisgICAgZGlyID0gb3BlbmRpcihkaXJuYW1lKTsKKyAgICBpZiAoTlVMTCA9PSBkaXIpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRpcmVjdG9yeTpjb250YWluZXIiLCAiICBub3QgYSBkaXJcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoqIGNvcHkgZGlybmFtZSBpbnRvIHBhdGggKi8KKyAgICBkaXJuYW1lX2xlbiA9IHN0cmxlbihkaXJuYW1lKTsKKyAgICBzdHJsY3B5KHBhdGgsIGRpcm5hbWUsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKChkaXJuYW1lX2xlbiArIDIpID4gc2l6ZW9mKHBhdGgpKSB7CisgICAgICAgIC8qKiBub3QgZW5vdWdoIHJvb20gZm9yIGZpbGVzICovCisgICAgICAgIGNsb3NlZGlyKGRpcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwYXRoW2Rpcm5hbWVfbGVuXSA9ICcvJzsKKyAgICBwYXRoWysrZGlybmFtZV9sZW5dID0gJ1wwJzsKKworICAgIC8qKiBpdGVyYXRlIG92ZXIgZGlyICovCisgICAgd2hpbGUgKChmaWxlID0gcmVhZGRpcihkaXIpKSkgeworCisgICAgICAgIGlmICgoZmlsZS0+ZF9uYW1lID09IE5VTEwpIHx8IChmaWxlLT5kX25hbWVbMF0gPT0gMCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiogc2tpcCAnLicgYW5kICcuLicgKi8KKyAgICAgICAgaWYgKChmaWxlLT5kX25hbWVbMF0gPT0gJy4nKSAmJgorICAgICAgICAgICAgKChmaWxlLT5kX25hbWVbMV0gPT0gMCkgfHwKKyAgICAgICAgICAgICAoKGZpbGUtPmRfbmFtZVsxXSA9PSAnLicpICYmICgoZmlsZS0+ZF9uYW1lWzJdID09IDApKSkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc3RybGNweSgmcGF0aFtkaXJuYW1lX2xlbl0sIGZpbGUtPmRfbmFtZSwgc2l6ZW9mKHBhdGgpIC0gZGlybmFtZV9sZW4pOworICAgICAgICBERUJVR01TR1RMKCgiOTpkaXJlY3Rvcnk6Y29udGFpbmVyIiwgIiAgZm91bmQgJXNcbiIsIHBhdGgpKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUpICYmIGRlZmluZWQoRFRfRElSKQorICAgICAgICBpZiAoKGZpbGUtPmRfdHlwZSA9PSBEVF9ESVIpICYmIChmbGFncyAmIE5FVFNOTVBfRElSX1JFQ1VSU0UpKSB7CisjZWxpZiBkZWZpbmVkKFNfSVNESVIpCisgICAgICAgIGlmICgoZmxhZ3MgJiBORVRTTk1QX0RJUl9SRUNVUlNFKSAmJiAoc3RhdChmaWxlLT5kX25hbWUsICZzdGF0YnVmKSAhPSAwKSAmJiAoU19JU0RJUihzdGF0YnVmLnN0X21vZGUpKSkgeworI2Vsc2UKKyAgICAgICAgaWYgKGZsYWdzICYgTkVUU05NUF9ESVJfUkVDVVJTRSkgeworI2VuZGlmCisgICAgICAgICAgICAvKiogeHh4IGFkZCB0aGUgZGlyIGFzIHdlbGw/IG5vdCBmb3Igbm93Li4gbWF5YmUgYW5vdGhlciBmbGFnPyAqLworICAgICAgICAgICAgbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX3JlYWQoY29udGFpbmVyLCBwYXRoLCBmbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaGFyICpkdXAgPSBzdHJkdXAocGF0aCk7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBkdXApIHsKKyAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJzdHJkdXAgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZHVwKTsKKyAgICAgICAgICAgIGlmICgtMSA9PSByYyApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiZGlyZWN0b3J5OmNvbnRhaW5lciIsICIgIGVyciBhZGRpbmcgJXNcbiIsIHBhdGgpKTsKKyAgICAgICAgICAgICAgICBmcmVlKGR1cCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbG9zZWRpcihkaXIpOworCisgICAgREVCVUdNU0dUTCgoImRpcmVjdG9yeTpjb250YWluZXIiLCAiICBjb250YWluZXIgbm93IGhhcyAlZCBpdGVtc1xuIiwKKyAgICAgICAgICAgICAgICAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAKKyAgICByZXR1cm4gY29udGFpbmVyOworfQorCit2b2lkCituZXRzbm1wX2RpcmVjdG9yeV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQoreworICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsIG5ldHNubXBfY29udGFpbmVyX3NpbXBsZV9mcmVlLCBOVUxMKTsKKyAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMgYi9zbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYwppbmRleCBjODFjZmRlLi5hZTk5YzA0IDEwMDY0NAotLS0gYS9zbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYworKysgYi9zbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYwpAQCAtNyw2ICs3LDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oPgorCisKIGludCAgICAgZXh0ZXJuYWxfcmVhZGZkW05VTV9FWFRFUk5BTF9GRFNdLCAgIGV4dGVybmFsX3JlYWRmZGxlbiAgID0gMDsKIGludCAgICAgZXh0ZXJuYWxfd3JpdGVmZFtOVU1fRVhURVJOQUxfRkRTXSwgIGV4dGVybmFsX3dyaXRlZmRsZW4gID0gMDsKIGludCAgICAgZXh0ZXJuYWxfZXhjZXB0ZmRbTlVNX0VYVEVSTkFMX0ZEU10sIGV4dGVybmFsX2V4Y2VwdGZkbGVuID0gMDsKQEAgLTE1OSwyMiArMTYyLDU1IEBACiAgKi8KIHZvaWQgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvKGludCAqbnVtZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzKQogeworICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBscmVhZGZkczsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbHdyaXRlZmRzOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBsZXhjZXB0ZmRzOworCisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxyZWFkZmRzLCBGRF9TRVRTSVpFKTsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbHdyaXRlZmRzLCBGRF9TRVRTSVpFKTsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbGV4Y2VwdGZkcywgRkRfU0VUU0laRSk7CisKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxyZWFkZmRzLCByZWFkZmRzKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmx3cml0ZWZkcywgd3JpdGVmZHMpOworICBuZXRzbm1wX2NvcHlfZmRfc2V0X3RvX2xhcmdlX2ZkX3NldCgmbGV4Y2VwdGZkcywgZXhjZXB0ZmRzKTsKKworICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKG51bWZkcywgJmxyZWFkZmRzLCAmbHdyaXRlZmRzLCAmbGV4Y2VwdGZkcyk7CisKKyAgaWYgKG5ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KHJlYWRmZHMsICZscmVhZGZkcykgPCAwCisgICAgICB8fCBuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldCh3cml0ZWZkcywgJmx3cml0ZWZkcykgPCAwCisgICAgICB8fCBuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChleGNlcHRmZHMsICZsZXhjZXB0ZmRzKSA8IDApCisgIHsKKyAgICBzbm1wX2xvZyhMT0dfRVJSLAorCSAgICAgIlVzZSBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKCkgZm9yIHByb2Nlc3NpbmciCisJICAgICAiIGxhcmdlIGZpbGUgZGVzY3JpcHRvcnMiKTsKKyAgfQorCisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmxyZWFkZmRzKTsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmbHdyaXRlZmRzKTsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmbGV4Y2VwdGZkcyk7Cit9CisKK3ZvaWQgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMihpbnQgKm51bWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcykKK3sKICAgaW50IGk7CiAKICAgZXh0ZXJuYWxfZmRfdW5yZWdpc3RlcmVkID0gMDsKIAogICBmb3IgKGkgPSAwOyBpIDwgZXh0ZXJuYWxfcmVhZGZkbGVuOyBpKyspIHsKLSAgICBGRF9TRVQoZXh0ZXJuYWxfcmVhZGZkW2ldLCByZWFkZmRzKTsKKyAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChleHRlcm5hbF9yZWFkZmRbaV0sIHJlYWRmZHMpOwogICAgIGlmIChleHRlcm5hbF9yZWFkZmRbaV0gPj0gKm51bWZkcykKICAgICAgICpudW1mZHMgPSBleHRlcm5hbF9yZWFkZmRbaV0gKyAxOwogICB9CiAgIGZvciAoaSA9IDA7IGkgPCBleHRlcm5hbF93cml0ZWZkbGVuOyBpKyspIHsKLSAgICBGRF9TRVQoZXh0ZXJuYWxfd3JpdGVmZFtpXSwgd3JpdGVmZHMpOworICAgIE5FVFNOTVBfTEFSR0VfRkRfU0VUKGV4dGVybmFsX3dyaXRlZmRbaV0sIHdyaXRlZmRzKTsKICAgICBpZiAoZXh0ZXJuYWxfd3JpdGVmZFtpXSA+PSAqbnVtZmRzKQogICAgICAgKm51bWZkcyA9IGV4dGVybmFsX3dyaXRlZmRbaV0gKyAxOwogICB9CiAgIGZvciAoaSA9IDA7IGkgPCBleHRlcm5hbF9leGNlcHRmZGxlbjsgaSsrKSB7Ci0gICAgRkRfU0VUKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpOworICAgIE5FVFNOTVBfTEFSR0VfRkRfU0VUKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpOwogICAgIGlmIChleHRlcm5hbF9leGNlcHRmZFtpXSA+PSAqbnVtZmRzKQogICAgICAgKm51bWZkcyA9IGV4dGVybmFsX2V4Y2VwdGZkW2ldICsgMTsKICAgfQpAQCAtMTg1LDM3ICsyMjEsNzAgQEAKICAqLwogdm9pZCBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cyhpbnQgKmNvdW50LCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzKQogeworICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBscmVhZGZkczsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbHdyaXRlZmRzOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBsZXhjZXB0ZmRzOworCisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxyZWFkZmRzLCBGRF9TRVRTSVpFKTsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbHdyaXRlZmRzLCBGRF9TRVRTSVpFKTsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbGV4Y2VwdGZkcywgRkRfU0VUU0laRSk7CisKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxyZWFkZmRzLCByZWFkZmRzKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmx3cml0ZWZkcywgd3JpdGVmZHMpOworICBuZXRzbm1wX2NvcHlfZmRfc2V0X3RvX2xhcmdlX2ZkX3NldCgmbGV4Y2VwdGZkcywgZXhjZXB0ZmRzKTsKKworICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoY291bnQsICZscmVhZGZkcywgJmx3cml0ZWZkcywgJmxleGNlcHRmZHMpOworCisgIGlmIChuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChyZWFkZmRzLCAmbHJlYWRmZHMpIDwgMAorICAgICAgfHwgbmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQod3JpdGVmZHMsICAmbHdyaXRlZmRzKSA8IDAKKyAgICAgIHx8IG5ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KGV4Y2VwdGZkcywgJmxleGNlcHRmZHMpIDwgMCkKKyAgeworICAgIHNubXBfbG9nKExPR19FUlIsCisJICAgICAiVXNlIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzMigpIGZvciBwcm9jZXNzaW5nIgorCSAgICAgIiBsYXJnZSBmaWxlIGRlc2NyaXB0b3JzIik7CisgIH0KKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZscmVhZGZkcyk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmx3cml0ZWZkcyk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmxleGNlcHRmZHMpOworfQorCit2b2lkIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzMihpbnQgKmNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzKQorewogICBpbnQgaTsKICAgZm9yIChpID0gMDsKICAgICAgICAqY291bnQgJiYgKGkgPCBleHRlcm5hbF9yZWFkZmRsZW4pICYmICFleHRlcm5hbF9mZF91bnJlZ2lzdGVyZWQ7IGkrKykgewotICAgICAgaWYgKEZEX0lTU0VUKGV4dGVybmFsX3JlYWRmZFtpXSwgcmVhZGZkcykpIHsKKyAgICAgIGlmIChORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKGV4dGVybmFsX3JlYWRmZFtpXSwgcmVhZGZkcykpIHsKICAgICAgICAgICBERUJVR01TR1RMKCgiZmRfZXZlbnRfbWFuYWdlcjpuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cyIsIAogICAgICAgICAgICAgICAgICAgICAgInJlYWRmZFslZF0gPSAlZFxuIiwgaSwgZXh0ZXJuYWxfcmVhZGZkW2ldKSk7CiAgICAgICAgICAgZXh0ZXJuYWxfcmVhZGZkZnVuY1tpXSAoZXh0ZXJuYWxfcmVhZGZkW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3JlYWRmZF9kYXRhW2ldKTsKLSAgICAgICAgICBGRF9DTFIoZXh0ZXJuYWxfcmVhZGZkW2ldLCByZWFkZmRzKTsKKyAgICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX0NMUihleHRlcm5hbF9yZWFkZmRbaV0sIHJlYWRmZHMpOwogICAgICAgICAgICgqY291bnQpLS07CiAgICAgICB9CiAgIH0KICAgZm9yIChpID0gMDsKICAgICAgICAqY291bnQgJiYgKGkgPCBleHRlcm5hbF93cml0ZWZkbGVuKSAmJiAhZXh0ZXJuYWxfZmRfdW5yZWdpc3RlcmVkOyBpKyspIHsKLSAgICAgIGlmIChGRF9JU1NFVChleHRlcm5hbF93cml0ZWZkW2ldLCB3cml0ZWZkcykpIHsKKyAgICAgIGlmIChORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKGV4dGVybmFsX3dyaXRlZmRbaV0sIHdyaXRlZmRzKSkgewogICAgICAgICAgIERFQlVHTVNHVEwoKCJmZF9ldmVudF9tYW5hZ2VyOm5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAid3JpdGVmZFslZF0gPSAlZFxuIiwgaSwgZXh0ZXJuYWxfd3JpdGVmZFtpXSkpOwogICAgICAgICAgIGV4dGVybmFsX3dyaXRlZmRmdW5jW2ldIChleHRlcm5hbF93cml0ZWZkW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF93cml0ZWZkX2RhdGFbaV0pOwotICAgICAgICAgIEZEX0NMUihleHRlcm5hbF93cml0ZWZkW2ldLCB3cml0ZWZkcyk7CisgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9DTFIoZXh0ZXJuYWxfd3JpdGVmZFtpXSwgd3JpdGVmZHMpOwogICAgICAgICAgICgqY291bnQpLS07CiAgICAgICB9CiAgIH0KICAgZm9yIChpID0gMDsKICAgICAgICAqY291bnQgJiYgKGkgPCBleHRlcm5hbF9leGNlcHRmZGxlbikgJiYgIWV4dGVybmFsX2ZkX3VucmVnaXN0ZXJlZDsgaSsrKSB7Ci0gICAgICBpZiAoRkRfSVNTRVQoZXh0ZXJuYWxfZXhjZXB0ZmRbaV0sIGV4Y2VwdGZkcykpIHsKKyAgICAgIGlmIChORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpKSB7CiAgICAgICAgICAgREVCVUdNU0dUTCgoImZkX2V2ZW50X21hbmFnZXI6bmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMiLCAKICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRmZFslZF0gPSAlZFxuIiwgaSwgZXh0ZXJuYWxfZXhjZXB0ZmRbaV0pKTsKICAgICAgICAgICBleHRlcm5hbF9leGNlcHRmZGZ1bmNbaV0gKGV4dGVybmFsX2V4Y2VwdGZkW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfZXhjZXB0ZmRfZGF0YVtpXSk7Ci0gICAgICAgICAgRkRfQ0xSKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpOworICAgICAgICAgIE5FVFNOTVBfTEFSR0VfRkRfQ0xSKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpOwogICAgICAgICAgICgqY291bnQpLS07CiAgICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvZmlsZV91dGlscy5jIGIvc25tcGxpYi9maWxlX3V0aWxzLmMKaW5kZXggOGY3ZmI2YS4uOWYxOWIzNiAxMDA2NDQKLS0tIGEvc25tcGxpYi9maWxlX3V0aWxzLmMKKysrIGIvc25tcGxpYi9maWxlX3V0aWxzLmMKQEAgLTE2MSw3ICsxNjEsNyBAQAogICAgICAgICBmaWxlaS0+ZmQgPSBvcGVuKGZpbGVpLT5uYW1lLCBmaWxlaS0+ZnNfZmxhZ3MsIGZpbGVpLT5tb2RlKTsKIAogICAgIGlmIChmaWxlaS0+ZmQgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBvcGVuaW5nICVzICglZClcbiIsIGZpbGVpLT5uYW1lLCBlcnJubyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2ZpbGUiLCAiZXJyb3Igb3BlbmluZyAlcyAoJWQpXG4iLCBmaWxlaS0+bmFtZSwgZXJybm8pKTsKICAgICB9CiAKICAgICAvKgpAQCAtMjAwLDcgKzIwMCw3IEBACiAgICAgICovCiAgICAgcmMgPSBjbG9zZShmaWxlaS0+ZmQpOwogICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNsb3NpbmcgJXMgKCVkKVxuIiwgZmlsZWktPm5hbWUsIGVycm5vKTsKKyAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfZmlsZSIsICJlcnJvciBjbG9zaW5nICVzICglZClcbiIsIGZpbGVpLT5uYW1lLCBlcnJubykpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGZpbGVpLT5mZCA9IC0xOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9pbmV0X3B0b24uYyBiL3NubXBsaWIvaW5ldF9wdG9uLmMKaW5kZXggMGEwM2E4Zi4uOGI1YzcxZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9pbmV0X3B0b24uYworKysgYi9zbm1wbGliL2luZXRfcHRvbi5jCkBAIC01Miw5ICs1Miw2IEBACiAjaWZuZGVmIElOVDE2U1oKICNkZWZpbmUJSU5UMTZTWgkJMgogI2VuZGlmCi0gIC8qCi0gICAqIEVuZCBvZiBOZXQtU05NUCBXaW4zMiBhZGRpdGlvbnMKLSAgICovCiAKICNpZm5kZWYgSU5BRERSU1oKICNkZWZpbmUJSU5BRERSU1oJNApkaWZmIC0tZ2l0IGEvc25tcGxpYi9pbnQ2NC5jIGIvc25tcGxpYi9pbnQ2NC5jCmluZGV4IGVhNTY2NzMuLmE4MTc4ZjEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvaW50NjQuYworKysgYi9zbm1wbGliL2ludDY0LmMKQEAgLTI2Niw3ICsyNjYsNyBAQAogICAgIGlmKCAoTlVMTCA9PSBvbGRfdmFsKSB8fCAoTlVMTCA9PSBuZXdfdmFsKSApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIERFQlVHTVNHVEwoKCI5OmM2NDpjaGVja193cmFwIiwgImNoZWNrIHdyYXAgMHglMHguMHglMHggMHglMHguMHglMHhcbiIsCisgICAgREVCVUdNU0dUTCgoIjk6YzY0OmNoZWNrX3dyYXAiLCAiY2hlY2sgd3JhcCAweCUwbHguMHglMGx4IDB4JTBseC4weCUwbHhcbiIsCiAgICAgICAgICAgICAgICAgb2xkX3ZhbC0+aGlnaCwgb2xkX3ZhbC0+bG93LCBuZXdfdmFsLT5oaWdoLCBuZXdfdmFsLT5sb3cpKTsKICAgICAKICAgICAvKgpAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAgaWYgKChOVUxMID09IG5lZWRfd3JhcF9jaGVjaykgfHwgKDAgIT0gKm5lZWRfd3JhcF9jaGVjaykpIHsKICAgICAgICAgcmMgPSBuZXRzbm1wX2M2NF9jaGVja19mb3JfMzJiaXRfd3JhcChvbGRfcHJldl92YWwsbmV3X3ZhbCwgMSk7CiAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImM2NCAzMiBiaXQgY2hlY2sgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJjNjQiLCIzMiBiaXQgY2hlY2sgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNzUsNyArMzc1LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGlmICgocHJldl92YWwtPmxvdyAhPSBuZXdfdmFsLT5sb3cpIHx8CiAgICAgICAgICAgICAocHJldl92YWwtPmhpZ2ggIT0gbmV3X3ZhbC0+aGlnaCkpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ld1xuIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYzY0IiwgImxvb2tzIGxpa2UgYSA2NGJpdCB3cmFwLCBidXQgcHJldiE9bmV3XG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gLTI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoTlVMTCAhPSBuZWVkX3dyYXBfY2hlY2spCmRpZmYgLS1naXQgYS9zbm1wbGliL2tleXRvb2xzLmMgYi9zbm1wbGliL2tleXRvb2xzLmMKaW5kZXggYWE2YTcxMi4uNzcwMzBiZCAxMDA2NDQKLS0tIGEvc25tcGxpYi9rZXl0b29scy5jCisrKyBiL3NubXBsaWIva2V5dG9vbHMuYwpAQCAtMTM3LDE2ICsxMzcsMTkgQEAKICAgICBjdHggPSBFVlBfTURfQ1RYX2NyZWF0ZSgpOwogI2Vsc2UKICAgICBjdHggPSBtYWxsb2Moc2l6ZW9mKCpjdHgpKTsKLSAgICBFVlBfTURfQ1RYX2luaXQoY3R4KTsKKyAgICBpZiAoIUVWUF9NRF9DVFhfaW5pdChjdHgpKQorICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAjZW5kaWYKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQotICAgIGlmIChJU1RSQU5TRk9STShoYXNodHlwZSwgSE1BQ01ENUF1dGgpKQotICAgICAgICBFVlBfRGlnZXN0SW5pdChjdHgsIEVWUF9tZDUoKSk7Ci0gICAgZWxzZQorICAgIGlmIChJU1RSQU5TRk9STShoYXNodHlwZSwgSE1BQ01ENUF1dGgpKSB7CisgICAgICAgIGlmICghRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfbWQ1KCkpKQorICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGlmIChJU1RSQU5TRk9STShoYXNodHlwZSwgSE1BQ1NIQTFBdXRoKSkKLSAgICAgICAgRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfc2hhMSgpKTsKLSAgICBlbHNlCisgICAgICAgIGlmIChJU1RSQU5TRk9STShoYXNodHlwZSwgSE1BQ1NIQTFBdXRoKSkgeworICAgICAgICAgICAgaWYgKCFFVlBfRGlnZXN0SW5pdChjdHgsIEVWUF9zaGExKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgIFFVSVRGVU4oU05NUEVSUl9HRU5FUlIsIGdlbmVyYXRlX0t1X3F1aXQpOwogI2Vsc2UKICAgICBNRGJlZ2luKCZNRCk7CmRpZmYgLS1naXQgYS9zbm1wbGliL2xhcmdlX2ZkX3NldC5jIGIvc25tcGxpYi9sYXJnZV9mZF9zZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTZjOTIwCi0tLSAvZGV2L251bGwKKysrIGIvc25tcGxpYi9sYXJnZV9mZF9zZXQuYwpAQCAtMCwwICsxLDI2MyBAQAorLyoqCisgKiBAZmlsZSBsYXJnZV9mZF9zZXQuYworICoKKyAqIEBicmllZiBNYWNybydzIGFuZCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGlvbiBvZiBsYXJnZSBmaWxlIGRlc2NyaXB0b3Igc2V0cy4KKyAqLworCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+IC8qIG1lbXNldCgpLCB3aGljaCBpcyBpbnZva2VkIGJ5IEZEX1pFUk8oKSAqLworCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1dJTlNPQ0tfSAorI2luY2x1ZGUgPHdpbnNvY2suaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0Lmg+CisKKworI2lmICFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKworI2RlZmluZSBMRkRfU0VUKG4sIHApICAgIEZEX1NFVChuLCBwKQorI2RlZmluZSBMRkRfQ0xSKG4sIHApICAgIEZEX0NMUihuLCBwKQorI2RlZmluZSBMRkRfSVNTRVQobiwgcCkgIEZEX0lTU0VUKG4sIHApCisKK3ZvaWQKK25ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIHVuc2lnbmVkICAgICAgICBpOworCisgICAgbmV0c25tcF9hc3NlcnQoZmQgIT0gSU5WQUxJRF9TT0NLRVQpOworCisgICAgaWYgKGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50ID09IGZkc2V0LT5sZnNfc2V0c2l6ZSkKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCAyICogKGZkc2V0LT5sZnNfc2V0c2l6ZSArIDEpKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBmZHNldC0+bGZzX3NldC5mZF9jb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChmZHNldC0+bGZzX3NldC5mZF9hcnJheVtpXSA9PSAoU09DS0VUKSAoZmQpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGkgPT0gZmRzZXQtPmxmc19zZXQuZmRfY291bnQKKyAgICAgICAgJiYgZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPCBmZHNldC0+bGZzX3NldHNpemUpIHsKKyAgICAgICAgZmRzZXQtPmxmc19zZXQuZmRfY291bnQrKzsKKyAgICAgICAgZmRzZXQtPmxmc19zZXQuZmRfYXJyYXlbaV0gPSBmZDsKKyAgICB9Cit9CisKK3ZvaWQKK25ldHNubXBfbGFyZ2VfZmRfY2xyKFNPQ0tFVCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKiBmZHNldCkKK3sKKyAgICB1bnNpZ25lZCAgICAgICAgaTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGZkICE9IElOVkFMSURfU09DS0VUKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBmZHNldC0+bGZzX3NldC5mZF9jb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChmZHNldC0+bGZzX3NldC5mZF9hcnJheVtpXSA9PSBmZCkgeworICAgICAgICAgICAgd2hpbGUgKGkgPCBmZHNldC0+bGZzX3NldC5mZF9jb3VudCAtIDEpIHsKKyAgICAgICAgICAgICAgICBmZHNldC0+bGZzX3NldC5mZF9hcnJheVtpXSA9CisgICAgICAgICAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2kgKyAxXTsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmZHNldC0+bGZzX3NldC5mZF9jb3VudC0tOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludAorbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIHVuc2lnbmVkIGludCAgICBpOworCisgICAgbmV0c25tcF9hc3NlcnQoZmQgIT0gSU5WQUxJRF9TT0NLRVQpOworCisgICAgZm9yIChpID0gMDsgaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID09IGZkKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisjZWxzZQorCisvKgorICogUmVjZW50IHZlcnNpb25zIG9mIGdsaWJjIHRyaWdnZXIgYWJvcnQoKSBpZiBGRF9TRVQoKSwgRkRfQ0xSKCkgb3IKKyAqIEZEX0lTU0VUKCkgaXMgaW52b2tlZCB3aXRoIG4gPj0gRkRfU0VUU0laRS4gSGVuY2UgdGhlc2UgcmVwbGFjZW1lbnQgbWFjcm9zLgorICovCisjZGVmaW5lIExGRF9TRVQobiwgcCkgICAgKChwKS0+ZmRzX2JpdHNbKG4pL05GREJJVFNdIHw9ICAoMVVMTCA8PCAoKG4pICUgTkZEQklUUykpKQorI2RlZmluZSBMRkRfQ0xSKG4sIHApICAgICgocCktPmZkc19iaXRzWyhuKS9ORkRCSVRTXSAmPSB+KDFVTEwgPDwgKChuKSAlIE5GREJJVFMpKSkKKyNkZWZpbmUgTEZEX0lTU0VUKG4sIHApICAoKHApLT5mZHNfYml0c1sobikvTkZEQklUU10gJiAgICgxVUxMIDw8ICgobikgJSBORkRCSVRTKSkpCisKK3ZvaWQKK25ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIG5ldHNubXBfYXNzZXJ0KGZkID49IDApOworCisgICAgd2hpbGUgKGZkID49IChpbnQpZmRzZXQtPmxmc19zZXRzaXplKQorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoZmRzZXQsIDIgKiAoZmRzZXQtPmxmc19zZXRzaXplICsgMSkpOworCisgICAgTEZEX1NFVChmZCwgZmRzZXQtPmxmc19zZXRwdHIpOworfQorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX2NscihpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9hc3NlcnQoZmQgPj0gMCk7CisKKyAgICBpZiAoKHVuc2lnbmVkKWZkIDwgZmRzZXQtPmxmc19zZXRzaXplKQorICAgICAgICBMRkRfQ0xSKGZkLCBmZHNldC0+bGZzX3NldHB0cik7Cit9CisKK2ludAorbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIG5ldHNubXBfYXNzZXJ0KGZkID49IDApOworCisgICAgcmV0dXJuICgodW5zaWduZWQpZmQgPCBmZHNldC0+bGZzX3NldHNpemUgJiYKKyAgICAgICAgICAgIExGRF9JU1NFVChmZCwgZmRzZXQtPmxmc19zZXRwdHIpKTsKK30KKworI2VuZGlmCisKK3ZvaWQKK25ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQobmV0c25tcF9sYXJnZV9mZF9zZXQgKiBmZHNldCwgaW50IHNldHNpemUpCit7CisgICAgZmRzZXQtPmxmc19zZXRzaXplID0gMDsKKyAgICBmZHNldC0+bGZzX3NldHB0ciAgPSBOVUxMOworI2lmICFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKyAgICBmZHNldC0+bGZzX3NldC5mZF9jb3VudCA9IDA7CisjZW5kaWYKKyAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoZmRzZXQsIHNldHNpemUpOworfQorCitpbnQKK25ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICp3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCkKK3sKKyNpZiBkZWZpbmVkKGN5Z3dpbikgfHwgIWRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisgICAgLyogQml0LXNldCByZXByZXNlbnRhdGlvbjogbWFrZSBzdXJlIGFsbCBmZHMgaGF2ZSBhdCBsZWFzdCBzaXplICdudW1mZHMnLiAqLworICAgIGlmIChyZWFkZmRzICYmIHJlYWRmZHMtPmxmc19zZXRzaXplIDwgbnVtZmRzKQorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUocmVhZGZkcywgbnVtZmRzKTsKKyAgICBpZiAod3JpdGVmZHMgJiYgd3JpdGVmZHMtPmxmc19zZXRzaXplIDwgbnVtZmRzKQorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUod3JpdGVmZHMsIG51bWZkcyk7CisgICAgaWYgKGV4Y2VwdGZkcyAmJiBleGNlcHRmZHMtPmxmc19zZXRzaXplIDwgbnVtZmRzKQorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoZXhjZXB0ZmRzLCBudW1mZHMpOworI2Vsc2UKKyAgICAvKiBBcnJheSByZXByZXNlbnRhdGlvbjogbm8gcmVzaXppbmcgaXMgbmVjZXNzYXJ5LiAqLworI2VuZGlmCisKKyAgICByZXR1cm4gc2VsZWN0KG51bWZkcywKKyAgICAgICAgICAgIHJlYWRmZHMgPyByZWFkZmRzLT5sZnNfc2V0cHRyIDogTlVMTCwKKyAgICAgICAgICAgIHdyaXRlZmRzID8gd3JpdGVmZHMtPmxmc19zZXRwdHIgOiBOVUxMLAorICAgICAgICAgICAgZXhjZXB0ZmRzID8gZXhjZXB0ZmRzLT5sZnNfc2V0cHRyIDogTlVMTCwKKyAgICAgICAgICAgIHRpbWVvdXQpOworfQorCitpbnQKK25ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZShuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0LCBpbnQgc2V0c2l6ZSkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZmRfc2V0X2J5dGVzOworCisgICAgaWYgKGZkc2V0LT5sZnNfc2V0c2l6ZSA9PSBzZXRzaXplKQorICAgICAgICBnb3RvIHN1Y2Nlc3M7CisKKyAgICBpZiAoc2V0c2l6ZSA+IEZEX1NFVFNJWkUpIHsKKyAgICAgICAgZmRfc2V0X2J5dGVzID0gTkVUU05NUF9GRF9TRVRfQllURVMoc2V0c2l6ZSk7CisgICAgICAgIGlmIChmZHNldC0+bGZzX3NldHNpemUgPiBGRF9TRVRTSVpFKSB7CisgICAgICAgICAgICBmZHNldC0+bGZzX3NldHB0ciA9IHJlYWxsb2MoZmRzZXQtPmxmc19zZXRwdHIsIGZkX3NldF9ieXRlcyk7CisgICAgICAgICAgICBpZiAoIWZkc2V0LT5sZnNfc2V0cHRyKQorICAgICAgICAgICAgICAgIGdvdG8gb3V0X29mX21lbTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0cHRyID0gbWFsbG9jKGZkX3NldF9ieXRlcyk7CisgICAgICAgICAgICBpZiAoIWZkc2V0LT5sZnNfc2V0cHRyKQorICAgICAgICAgICAgICAgIGdvdG8gb3V0X29mX21lbTsKKyAgICAgICAgICAgICpmZHNldC0+bGZzX3NldHB0ciA9IGZkc2V0LT5sZnNfc2V0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZkc2V0LT5sZnNfc2V0c2l6ZSA+IEZEX1NFVFNJWkUpIHsKKyAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0ID0gKmZkc2V0LT5sZnNfc2V0cHRyOworICAgICAgICAgICAgZnJlZShmZHNldC0+bGZzX3NldHB0cik7CisgICAgICAgIH0KKyAgICAgICAgZmRzZXQtPmxmc19zZXRwdHIgPSAmZmRzZXQtPmxmc19zZXQ7CisgICAgfQorCisjaWYgZGVmaW5lZChjeWd3aW4pIHx8ICFkZWZpbmVkKEhBVkVfV0lOU09DS19IKQorICAgIC8qCisgICAgICogVW5peDogd2hlbiBlbmxhcmdpbmcsIGNsZWFyIHRoZSBmaWxlIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gdGhlCisgICAgICogcmVzaXplZCAqZmRzZXQgYnV0IHRoYXQgd2VyZSBub3QgZGVmaW5lZCBpbiB0aGUgb3JpZ2luYWwgKmZkc2V0LgorICAgICAqLworICAgIGlmICggZmRzZXQtPmxmc19zZXRzaXplID09IDAgJiYgc2V0c2l6ZSA9PSBGRF9TRVRTSVpFICkgeworICAgICAgICAvKiBJbiB0aGlzIGNhc2Ugd2UgY2FuIHVzZSB0aGUgT1MncyBGRF9aRVJPICovCisgICAgICAgIEZEX1pFUk8oZmRzZXQtPmxmc19zZXRwdHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCAgICAgICAgICAgICBpOworCisgICAgICAgIGZvciAoaSA9IGZkc2V0LT5sZnNfc2V0c2l6ZTsgaSA8IHNldHNpemU7IGkrKykKKyAgICAgICAgICAgIExGRF9DTFIoaSwgZmRzZXQtPmxmc19zZXRwdHIpOworICAgIH0KKyNlbmRpZgorCisgICAgZmRzZXQtPmxmc19zZXRzaXplID0gc2V0c2l6ZTsKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisgICAgaWYgKHNldHNpemUgPCBmZHNldC0+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==